wobble - 2007.05.21: muscovy ducklings at my work

'blog > search

Search Chir.ag 'Blog


Search Results

Search text: "software" found in 95 'blog entries.

Tech Things I was wrong aboutSun, 29th Nov '20, 11:25 pm::

For centuries, people have made predictions on what the world will be like decades and centuries into the future. I am a lot more interested in 5-10 year predictions than 20-50-100 year ones because the former are more actionable. Like many others, I could easily see that streaming services were going to take over the world and that nearly everyone was going to have a smart phone. Nothing worth bragging about as it was pretty obvious since 2005 unless something went terribly wrong.

What fascinates me are the things that I was wrong about 5-10 years ago, not because I lost money or respect over it (trust me, I care for neither of those) but because it means I was imagining a different world than the one we live in now. It means that today when I see 5-10 years into the future, I could be similarly wrong and it is best that I take some time to look back and alter my underlying assumptions that turned out to be wrong.

1. Bandwidth: I grew up with 28kbps and 56kbps dial-up connection and personally experienced the jumps to DSL, then cable modem, and right into the 2G, 3G, 4G/LTE speeds. And now I manage fiber and cloud networks at 5-10gbps daily. So you would think that someone in my place would be optimistic about there always being enough bandwidth in the future. But turns out I am not. At each of these stages, I could not foresee things getting any faster and instead spent my time optimizing and building for the current speed. While this sounds like a bad thing, it actually works in my favor in day-to-day work situations because it makes me build things that work fast now, not after everyone upgrades to 5G. However, if I was more "futuristic" in my thinking, I would build things for the future. So when 7G comes, my bandwidth-hog 3D video-streaming game-simulation app will be just what people try out first.

2. Video Streaming: Tagging along with my bandwidth shortsightedness, has been my ever pessimistic view on how much video streaming will really be possible. I always thought Netflix wouldn't be able to support streaming a hundred million streams simultaneously so they will come up with alternatives like P2P streaming, DVR-style recording/downloading, custom devices with terabytes of storage etc. But instead they did something that just blew my mind because of how plainly logical it was - they worked with major ISPs and put Netflix servers right on the ISPs internal network and wrote code that cached the most commonly viewed streams. This means that when I click 'Play' on my TV to watch a popular Netflix show, the file is coming to me straight from my ISP's building in my city a few miles away, not across the Internet from New York or California.

3. Compression: I was wrong about how limited the video quality would be too, as I watch nearly everything in 1080p and some 4K today. Compression has continued to blow my mind at how great things look and how small lossy video/audio files are. Sure, nothing beats 70mm film in theory but I can barely see any blurriness or distortion when watching a YouTube video on my phone. Even now I scoff at 8K videos, who needs that! But based on how wrong I have been in the past, within a few years I will surely be annoyed when the 8K stream I'm watching on my virtual glasses hiccups a bit. All of this is made possible due to the insane level of compression thanks to literal geniuses in math, signal processing, and computer science.

4. Battery vs. Phone Weight: I have absolutely been wrong about this and I still don't know why the world doesn't see it my way. My phone is thin and light enough. Even when it's brand new, the battery barely lasts 8 hours. Just make the damn phone thicker and give me a 3-7 day battery! Stop making the screen bigger. But turns out I was wrong. People want thin, light phones that they have to charge 3x a day. Literally every person I know connects their phone to charge the moment they sit down for an hour. I'm not saying I thought batteries would be better by now. I thought people would realize that long battery life was worth the excess weight. But turns out I'm wrong.

5. A.I.: I'm still every pessimistic about strong or general AI i.e. computers with human-level intelligence or beyond (super AI). I don't think that's happening any time soon. I was also always optimistic about weak or narrow AI that has a very specific task like image recognition or text to speech. What I could never imagine was that throwing a data-center's worth of computing resources into a narrow AI can actually make it perform close to a general AI for most purposes. In simpler words, while we don't have a magical smart AI genie, we have really good software that can translate between languages, and if we make that software learn the entirety of everything ever posted on the Internet, the resulting AI will not only be great at translating between languages but it will also be capable of translating between languages it has never seen before. It will also be capable of writing new text in any language, like news reports, based on a few key inputs. This isn't necessary strong AI but for all intents and purposes, it is good enough. If you've read a stock market summary of the day in the last 5 years, it's AI.

6. Bluetooth: I was more optimistic on this than reality turned out to be. I thought we would have better alternatives to crappy Bluetooth by now. Turns out we don't. I don't even want to get into why because it is just 500 pages of depressing.

7. Social Media: I easily saw where Twitter and Facebook were going to end up and the reality is not too far off from my expectations. I am not surprised with walled gardens and information bubbles etc. That was only natural. What I am surprised about is how easily you can still live without them. I don't use LinkedIn, Facebook, Twitter, Instagram, TikTok or any number of cool social media apps. I still read and infrequently post on reddit and watch some of my favorite science/tech channels on YouTube regularly. However, I've easily gone weeks without so much as looking at reddit and I signed up to watch my YouTube creators on Nebula for $5/mo. Literally nothing in my life is going to change if any or all of these social media sites went away instantly today. I might have some more time to kill and maybe will read more. I am utterly shocked that something hasn't compelled me to start using them like kids school programs or neighborhood or medical community chat. As relieved as I am to say all this today, I am also still pretty pessimistic for the future. I'm fairly certain there will be a time when I absolutely will have to sign up for some social media site just to go about my life. Note that I don't hate them or anything. I just don't have the time or energy to maintain an online presence beyond this blog.

8. Remote Desktops: I was more optimistic on this too than what really transpired. I thought by now, we would all have an individual "computer" in the cloud that we'd pay $5-10/mo for and it would have all of our files and software that we could access from any computer, phone, TV etc. I thought may be a small token or app on our phone would make any computer/monitor into a full-blown desktop with all of our data. Technically this is absolutely possible today and it was possible 10-15 years ago too. I just thought it would be common. So if a friend came over, they would just connect to their remote desktop on our living room TV and show vacation photos. Instead, people text each other entire movies (hello #1-3 above) or "cast" their phone to a Android/iOS device connected to the TV. The latter technically mirrors my original vision but the phone is the source of the data, not a gateway to the cloud server, so it's not the same. I think if you are in the Apple ecosystem, there are some signs of going this way with AppleTV playing your iCloud photos/videos, sharing your purchased apps/games with family members etc. However, it's all connecting to computers that Apple controls and manages, not you.

9. Self-driving automobiles: I still can't believe we have these and that they work in most environmental conditions. I also can't believe that they are not already the standard in every new car. I thought it would take forever to have cars that drive on their own. Or rather, the whole world would need to install magnets or sensors underneath every road and highway so trucks and cars would detect them and stay in the proper lane. Instead Narrow A.I. (#5 above) got so good at image recognition and depth perception that it can drive cars and identify road markers in real-time. Totally blows my mind. I also thought that the moment one car company came out with self-driving cars, it would be just a few years before every new car would self-drive because that's the best way to ensure safety and remain competitive. But instead every company is selling a few self-driving features like lane-keep and adaptive cruise control in their higher-end models while completely skipping on these for their economy class. I get why they do this because of costs but I thought consumer demand would necessitate these safety features. Nope, I'm wrong for now.

10. Video Conferencing: COVID-19 did more for video conferencing in 2 months than tech advocates did in 20 years. There is literally no way I could have predicted every person with a laptop or phone totally being ok with multi-hour Zoom sessions. Sure, there is still a lot of room for improvement but my 5 year old spends 4 hours each weekday on MS Teams video conferencing with his classmates and teacher in virtual school. That is amazing!

I'm sure I have many other current assumptions about the future that will be proven wrong eventually but for now I am just happy that many of my pessimistic predictions turned out wrong. I am glad Netflix can do 4K on a thin, light cellphone that can also educate my kid during a pandemic. I think I'm going to spend some time on what I believe the upcoming 5-10 years in technology will be like and maybe come up with ideas on how I can create tools for that future instead of just making things for immediate use today.

Positive interactionsThu, 10th Oct '19, 12:20 pm::

There is no better feeling than interacting with people who know what they're doing. I often have to contact companies for help with software issues and usually, that involves creating online tickets, filling out detailed forms, going through multiple levels of customer service tiers until I finally reach someone who knows the software well. Sometimes I never even get that far and just give up. But every now and then, I end up working directly with the person who made the software and it can absolutely make my day.

Many years ago I ended up buying a few licenses for Bvckup2 software for work. Backups are a big deal and I cannot afford to have them fail. Ever. But when you have hundreds of users, computers, and tens of millions of files, backups can be a nightmare. There are a thousand different pieces of software that take files from one computer and put them on another. Every use case has a different tool that works the best. For my case, Bvckup2 beats every alternative. I know this sounds like a paid ad but I'm just a happy customer. I've been getting my daily 'Bvckup2 completed successfully' emails for years now and I could not be more satisfied. However, every now and then it fails because of some new issue. Today it was me trying to backup a single file over 2TB to the cloud. No matter what I tried, the backup software kept erroring out.

So I just emailed Alex, the developer of Bvckup2, shared with him some of the log files, and he emailed me the exact changes I need to make to the configuration to fix the issue. This seems like such a simple problem-troubleshoot-solution process but I cannot even begin to describe how rare such an occurrence is for me. I currently have multiple tickets open with a software documentation company, a payroll processing company, a cloud storage provider, a network security firm, and a ton of smaller IT vendors. I swear if each of these companies had an 'Alex' working for them that I could email, I would save so much time each week.

I hope that whenever people interact with me for IT issues, they get the same experience but of course, for complex issues it is not always possible. So whether it is Alex who writes backup software, or Bud who fixed my leaking pool, it is always a wonderful feeling to work with people who know what they're doing.

Then I saw her faceFri, 27th Oct '17, 10:45 pm::

Exactly ten years ago on this day I first laid my eyes on the woman who would become my wife. I wrote about that day long ago when I was but a young man. Today was the first time in years that I re-read that entry and it feels like I wrote it yesterday. So much has happened in the past decade since this beautiful woman walked into my life and all I can think of is how much more life Juliet and I still have to experience together. As we raise our son Naveen, we hope that someday he can have a couple of siblings to play with. We want to go to Galapagos to see the giant tortoises and see wild lemurs in Madagascar. We hope to have a real homestead someday where we'll raise a dozen dwarf goats with the help of our kids. And maybe one summer I will drive around the country with the whole family in a big RV.

Looking back, almost all of our wishes and dreams have already come true. She graduated at the top of her MS class, I became a work-from-home software consultant, we bought a nice house in a good neighborhood, climbed up a glacier in Alaska, found a great school for Naveen, and most of all, have supported each other through our toughest days. Now that I think about it, the only pending item on my wish-list is getting a high-pressure rain-shower in master bath. Pretty sure I'll check it off some time in the next ten years.

It was quite a coincidence that I even remembered today was the exact day. We were watching the new season of Stranger Things and during a scene shot in a cabin I turned to her to bring up our past trip to the Smoky Mountains. Maybe it was the lighting or how her hair just slightly covered her face but my mind suddenly flashed back to the very moment I first saw her a decade ago. If someone had told me that day that exactly ten years later I would be watching a scary show with her after we put our son to bed, I would have laughed at how ridiculous that sounded while secretly hoping for all of it to come true.

And then I saw her face. All of it had indeed come true.

Building an awesome home surveillance systemTue, 1st Apr '14, 12:10 am::

During the first year of moving into our house, we focused on function: fix what's broken, replace what can't be fixed, and make everything work as best as possible. The second year we focused on necessary furnishing and organization: bedroom sets, dining table, floor mats and so on. The third year we're splitting the upgrades - Juliet's in charge of paintings and decor and I'm geeking out on home automation and surveillance. I'm quite happy with the technical decisions I've made so far and would like to share what's worked for me:

Home Network: The cheapest, easiest, and most reliable way of controlling all the different systems in your home is over the good ol' LAN. Since every system in my house was going to be controlled via the LAN, the first thing I did was buy a powerful router: Netgear WNDR4500. In addition to having 4 Gigabit ports, the WNDR4500 supports dual band WiFi at 2.4ghz (usually 802.11g - good: long range, every WiFi device supports it; bad: all your neighbors use it, microwaves interfere with it) and 5ghz (usually 802.11n - good: better speed, less noise; bad: shorter range, only supported on latest devices). Connected to the router is my cable modem, couple of TP-LINK Gigabit switches and a TP-LINK Gigabit Power-Over-Ethernet (PoE) switch. If you want a solid home network, make sure all your core switches support 10/100/1000mbps and only use CAT5e or CAT6 cables. All my wired devices are connected to the TP-LINK Gigabit switches. The TP-LINK Gigabit PoE switch is connected to all of my wireless access points.

Wireless Access Points: Even though my router has very good WiFi connectivity, it does not cover my entire house and definitely not the yard. We installed four EnGenius EAP600 units around the house and porch so that almost every corner of my house gets blanketed with perfect signal strength. The EAP600 gets power from the Ethernet so mounting it on the ceiling is a very simple step if you have easy attic access. The best thing about EAP600 is that in addition to supporting dual-band WiFi at 2.4ghz and 5ghz, it supports band steering, "a technology that detects whether or not the wireless client is dual-band capable, and if it is, it will push the client to connect to the less congested 5GHz network." This means my iPad and laptops that support 5ghz automatically connect on that frequency while my older devices continue to work on 2.4ghz. The best part is that there is a single wireless network (SSID) to connect to. Having a good wireless network is necessary if you want to view the surveillance videos from anywhere in the house on any device.

Devices: Speaking of devices, I am absolutely in love with my iPad Mini Retina and highly recommend it as the remote control for your entire house. I find the regular iPad too bulky and the iPhone/iPod too small to operate. I can't speak for or against any Android or Windows tablets as I don't know if the software I use is available on those platforms. As for the hardware to record my 12 camera feeds, I went with something unconventional - an Acer Travelmate P6 laptop that was on sale! I set it up to never go to sleep, operate with the lid closed, and removed all unnecessary software since it was going to use a lot of CPU/RAM 24/7. Believe it or not, a modern laptop with Core i3 and Gigabit Ethernet is more than capable of recording 12+ cameras. Best part is I can hide the laptop somewhere inconspicuous for added security and not worry about it being a target itself. Only problem with a laptop is storage. While 500 GB ought to be enough for a week's worth of video for 4 cameras, it barely records two days worth from my 12 cameras.

Storage: I attached the Acer laptop to my Synology DS211J NAS. I cannot profess my love for the Synology brand enough. I've bought, setup, maintained, and troubleshooted probably 30 different brands of network-attached-storage devices in the last decade and absolutely NOTHING comes even close in performance, price, quality, and robustness to Synology - not even products 3-5x more expensive. Even the low-end DS211J version is very reliable and works great for home backups, media sharing, and in this case, recording video footage. Pop-in a couple of 2TB drives, create a shared folder, map the shared folder in Windows, and drive S: is now ready to store two weeks of videos!

Software: Before I arrived at the current laptop, storage, and software solution, I spent months trying out various software (both free and commercial) and hardware (plug PCs, mini PCs, even VMs). My requirements were pretty fixed from the start: (1) Must work on iPad and iPhone (2) Must work from inside and outside the house (3) Must support at least 12 cameras (4) Cost under $500 in software/device licenses (5) Must allow real-time video and easy playback of recorded footage. While I came across many different solutions, the one that worked best is the free-for-personal-use video monitoring software Genius Vision NVR. It only took minutes to install on the Acer laptop and barely 30 minutes to configure to record all footage from all 12 cameras. It has companion apps for the iPad and iPhone and has decent security to make sure nobody can access my cameras without the right credentials. When adding the cameras to Genius, make sure you name each camera channel properly because there's no way to change them later and the iOS apps automatically sort the cameras based on the channel name. Since you cannot rearrange the cameras on the iOS apps, you really want to get the order correct beforehand. I prefixed my camera channels with 01, 02 etc. to get my desired sort order. Once Genius was configured properly, I opened a random port on my WNDR4500 firewall and made it point to the laptop's IP and Genius port 3557. On the iPad and our iPhones, I added two NVRs (a) At Home (b) Away from Home. The At Home connection points to the internal LAN IP of the Acer and Away from Home points to my WAN IP. Since my ISP rarely changes that, it is not a big deal for me to update that if necessary. I could've used a dynamic DNS service but oddly enough, most of the popular ones are no longer free and the ones that are, I don't know well enough to trust.

Video Surveillance - IP Cameras: Having used many different IP cameras in the past, I knew this was going to be difficult. I wanted 12 identical cameras that worked perfectly in day and night, in full brightness and pitch dark. Nearly all of my cameras face East or West and so it was critical that as daylight fades away the infrared mode kick in automatically and vice versa at sunrise. Additionally I wanted outdoor PoE cameras that could handle moderate rain, high humidity and temperature changes. Weeks of research led me to try out Dahua IPC-HFW2100 (IP66) and I can honestly say that I am pleasantly surprised at how well they work and meet all of my requirements. I must add that configuring them was a pain times twelve and that without this Amazon review, I would not have been able to setup the RTSP stream necessary for Genius Vision NVR. Make sure you get an IP camera that supports NTP and point it to pool.ntp.org or another NTP server so that you never have to worry about the camera's internal clock, which is usually displayed on every stream. If you setup the camera to overlay the current time on the stream, you can immediately tell if any camera stream is frozen by just looking at the on-screen clock.

PoE Switch: I highly recommend getting PoE cameras so that you only need a single cable to the camera instead of power adapter and electric sockets everywhere. In terms of performance and reliability, PoE will always beat WiFi + power adapter. Problem with PoE is that the switches are usually expensive. Most PoE switches with 8 ports only have 4 PoE ports. I did not want to buy 3-4 PoE switches and instead got a BV Tech 16 port / 100Mb PoE switch. I was originally quiet worried about having just a single 100 Megabit cable connect all of my 12 cameras but believe it or not, it has worked quiet well. Even if all of my cameras are streaming at 4Mb/s, that is still under 50Mb/s, well below the theoretical capacity of a 100Mb switch. The best part is that since this device has individual switches to turn on/off the power to each port, I can use it to reboot any camera without unplugging the Ethernet cable.

It has taken me a good six months to plan, budget, purchase, test, and deploy all of the above and finally I feel content with it. I would like to setup Genius Vision NVR to record on motion detection instead of bulk 24/7 recording but that will take a lot of tweaking for each camera. Regardless, we now have a system that we can access from anywhere in the world and it works as well as any professionally installed solution that would cost 4x as much.

Other than the surveillance project, I've also replaced all of our regular A/C thermostats with CyberStat WiFi thermostats that Juliet and I can control from our phones. No more wondering if we left the bedroom heating on while we go on a weekend trip - we can check it and change it from anywhere with Internet access! Next up, I'm thinking of installing electric switches that can be controlled from the Internet and of course in person. And then some day, I plan on writing an algorithm to control colored LED lights in our living room based on a variety of factors.

Bank Error in Your FavorSat, 8th Dec '12, 1:20 pm::

It's a gorgeous winter day here in Florida. Perfect weather, sunny skies, and best of all, someone else made a mistake in my favor. I went to the county services to file some paperwork and they made a mistake. Since they could not reverse the transaction, they offered to provide me two future services at no charge. Now I don't go around looking for free deals or figure out ways to beat the system; not worth the effort in most cases. But I do appreciate those "Bank Error in Your Favor. Collect $200" instances because more often than not, the error is not in my favor and I have to waste a lot of time correcting someone else's fault.

On the topic of fault, having written quite a few business software applications, I have a tremendous amount of empathy for clerical workers and customer service personnel. Not just because they have to face irate customers and frantic callers on a daily basis but rather because their fault is not usually theirs. I do not blame the clerk today for processing my paperwork incorrectly when she clicked A instead of B. All humans make mistakes. I fault the developers of the system who do not provide her a way to fix the mistake by reversing the transaction with minimal effort.

In defense of the developers, it is not always easy to build an "undo" transaction in every system and there is a significant cost associated with reversing entries that have already been posted. Instead of having just two types of transactions "purchase" and "sales", you now need two more - "purchase return" and "sales return". If you were selling ID tags with serial numbers, now you need "undo issue" and "undo payment" transactions. These additional types of transactions have to be included in every screen, journal, table, and report, increasing the cost of development.

Since I have yet to come across a software development project with infinite budget, usually the features that get cut are the ones that would help reverse human errors. Instead of paying for an expensive undo button, administrators prefer to provide additional training to the users so they do not make mistakes. But humans always make mistakes. And when they cannot fix it, the feeling of helplessness causes low morale, irritability, and overall loss in productivity. If you see a long line and stressed out customer service personnel, be nice to them because the fault is most likely not entirely theirs, even when they type 3 instead of 2.

Getting nostalgicFri, 28th Sep '12, 4:15 pm::

I like to get nostalgic often, not because I miss good ol' days but because I want to refresh my memory. If you never look back to the past, the memories will slowly fade away. Every time I recollect something from the past, I strengthen my memory of it and can recall it again in the future with ease. The problem with refreshing memories of wonderful forgotten experiences is that they are already forgotten! How do you recall that which you don't remember you once experienced?

I've noticed that I start to remember long-forgotten events precisely when I am making new memorable events. Last week I went to a conference where the host used a handheld Tibetan Singing Bowl to beckon the audience and it reminded me of a trip to Darjeeling that I took with my family over fifteen years ago where I got to play these bowls myself. We even bought a bell that you could play by brushing the striker around the circumference instead of hitting the metal. A couple of months ago I was setting up our new bunny cage and I had an instant flashback to 1991, when I volunteered at my boarding school to clean the bunny cage, so I could avoid mandatory early morning lectures.

Obviously not all forgotten memories are wondrous stories of glorious times had. Sometimes as I'm falling asleep, my brain starts flashing Chirag's Top 100 Most Embarrassing Moments videos, from the time I broke my dad's friend's accounting software system to the time I told another kayaker that I've been paddling for years and promptly flipped over in the middle of the ocean. My brain (and sometimes my wife) does a phenomenal job at making sure I never forget these unflattering moments. That's why I actively try to remember the other times when I didn't make a complete fool of myself so that when I grow old, my past won't seem like a series of gaffes and uncomfortably silent moments.

Surgery and ProgrammingFri, 14th Sep '12, 1:10 pm::

If you've ever wondered what life is like in the Mehta household, it is sort of like this video: Doctor and Ice Cream Tester.

After watching the video, Juliet immediately changed her daily "Honey! I'm home!" greeting. Now she comes home after a long day of hard-work doing surgeries and asks me, "How was your day at the ice-cream factory?" Cracks me up each time, especially since it's mostly true. I sit on my sofa with my legs up, typing code away all day - sometimes making things red and green in Excel, sometimes making rectangles more rounded. And yet every other day she'll hear me complain about everything from restrictive software licenses and DRM to crappy Internet connection and the never-ending torrent of user errors.

She just pats me on the head and says "Wow! They ran out of Strawberry flavor? That must be torture..."

Hammer vs. ScrewdriverMon, 5th Dec '11, 12:42 am::

I don't understand why techies judge each other on their choice of platforms. I took part in the Global Day of Code Retreat 2011 yesterday and spent 8 exciting hours programming in various languages with lots of different programmers. It was a great learning experience but I was constantly jeered at for using a "toy" Macbook Air instead of a "real" Windows or Linux laptop. At other times when I've carried a Windows laptop, I've been treated like I was a corporate sellout and not a true programmer.

I love the look on their faces when I tell them I manage 80 Windows boxes, 30 Windows servers, 20 Linux servers, and write software for Windows, Linux, and Macs on a daily basis. I program user-friendly front-ends and heavy-duty backends. I make web apps and I make desktop apps. I make mobile software and I make browser extensions. I write code that talks to databases and I write code that talks to hardware. I deploy to Arduino and I deploy to Amazon/AWS. I go down to bitblt'ing and I go up beyond design patterns. I use Excel and I use LibreOffice. I use vi(m) and I use emacs. I use IDEs and I use text-editors. I code in CoffeeScript and I code in C. I write VBA macros and I write Lisp macros. I use GUI and I use command-line.

I simply use the best tool for the job. Without context, every tool, language, software, and platform choice can be deemed unwise or inefficient. No good can come out of mocking someone for coding in PHP instead of Python or using Blackberry instead of Android. I try to learn every single thing I can because even if in the end I decide not to code in Ruby for now, I can walk away knowing what it would be perfect for and what it wouldn't be appropriate for.

Making a product demoSat, 12th Nov '11, 11:55 am::

I'm making a product demo for KType and wanted to study some examples of well-designed demos before I got started. I'm looking for products that aren't straight-forward (buy plane tickets on your phone) but rather have slightly difficult to explain concepts (home media server that provides playlist sharing and wifi media-streaming without DRM issues). I want to learn how they've taken a complex idea and managed to explain the core concept in a few dialogs or slides.

KType is one of the many software projects out there to help people with speech disabilities. Saying that it "helps people with speech disabilities communicate better" doesn't really drive home the point. There are a hundred apps and devices that try to do the same. What sets it apart is that it is built for unsteady hands and works well even when the user has difficulty in using the iPad touchscreen. In addition to the tons of neat features (make your own keyboard, intelligent suggestions/word-completion), KType is simple enough that anyone can customize it. It is easy for me to write a paragraph extolling the virtues and features of KType but it is really difficult to compress that down to 60-90 seconds of digestible, non-boring video.

After going through hundreds of demos, here are some that I liked for one reason or another (please excuse the lack of capitalization/spelling in my raw notes below):

ipad-app demos:
early edition - http://vimeo.com/30786501
paperlinked - http://vimeo.com/15369816
qwiki - http://vimeo.com/22633007
flying books - http://vimeo.com/25833596

media-sharing/viewing:
goab - http://vimeo.com/21386019
soundcloud - http://vimeo.com/31084756
reader - http://vimeo.com/27194571
sugarsync - SugarSync - Access All Your Data Anytime.
mediarover - MediaRover Product Demo
boxee - Boxee - Media Center

software-as-a-service:
emailcenter - http://www.emailcenterpro.com/video.php
appointment+ - Appointment-Plus Product Demo

big-company:
salesforce - Salesforce.com: Sales Cloud Demo
cisco click - Give a Click to Change the World
ms crm - Microsoft CRM Product Demo

accessibility:
iportal morse - iPortal Accessibility demo
my first aac - My First AAC Demo

actual use:
ebay - eBay iPad App Demo Video
mixrank - MixRank Overview
exacqvision - exacqVision iPad app

Wed, 31st Aug '11, 3:54 am::

It has been almost a year since I took a long walk to determine the course for the rest of my life and I feel it's time for some retrospection. Last year, I decided to leave my promising job as the Director of IT at a fast-growing pharmaceutical manufacturing company in Florida so I could work on KType full-time. KType is my independent and self-funded research project to improve communication for people with speech & motor disabilities by creating low-cost, customizable software and hardware tools.

Giving up a rising career at a growing company was no easy decision for me and a part of me will always wonder what if I hadn't taken the road-less-traveled-by. When I started working on KType, Juliet was studying hard for her final semester at graduate school, we had tons of debt and barely any savings, and I had absolutely no idea if KType could even be built with the requirements I had in mind. A year later, Juliet is now a surgical PA having graduated at the top of her class, we have paid down our debt considerably and even saved a little, and I have a fully-functional KType prototype that I'm excited to have potential users try out very soon.

Though I am constantly making progress, I know I still have a long way to go. The primary goal of the KType project is to help others communicate and I feel disappointed in myself to say that despite a year's worth of R&D, I still haven't helped improve anyone's life yet. But that's going to change now. Over the next few weeks, I will reach out to local hospitals, special-needs schools, and nursing homes to find potential users for KType. Last year I resolved to make KType. This year I resolve to share KType.

To say that I am extremely nervous about all of this is an understatement. But if I can help even one person, I will consider KType to be a success. If you know someone who cannot speak nor type because of paralysis, injuries, ALS, cerebral palsy, muscle spasms, or other neurological causes, please feel free to contact me.

Wed, 10th Aug '11, 11:46 am::

I just had to sign some PDF documents and send them back to a software vendor. I hate the entire process of printing, signing, scanning, and emailing or faxing so I decided to find the easiest and most reliable way to do it online. After an hour of searching, signing up for various online services, and testing out their PDF-signing tools, I have to say HelloFax.com wins hands-down.

I had a scan of my real signature on my computer so that made the process easier but HelloFax lets you create signatures using a mouse or email a photo of your signature from your phone. I signed up for the free account, uploaded the PDF, uploaded my signature, placed the signature on the document appropriately, typed today's date & my name, and clicked "I'm done!" HelloFax instantly emailed me the signed PDF and I emailed it back to the company. The entire process took just a few minutes and did not cost me anything. I would have most certainly paid them $1/fax had I needed to use fax instead of email today.

Officially releasing ZetaBee.comThu, 17th Mar '11, 12:40 pm::

I have been working on my side-project ZetaBee.com for slightly over a year now. Over the years I've made a lot of websites and software but they were all built from scratch each time. The idea behind ZetaBee was that I would make lots of small but useful apps under a single site so I don't have to recreate features like user management, shopping cart, billing, and secure access over and over again. So far, I've made three apps in ZetaBee and yesterday I shared them online.

I received tons of useful feedback but more importantly, I got a lot of encouragement to keep working on these in the future. I'm working on KType full-time but whenever I need a break, I add a feature or two on ZetaBee. Working independently on any project for months on end isn't easy and certainly makes you wonder if what you're doing is actually useful to others or just a waste of time. I'm really happy that others found ZetaBee useful.

I use all three ZetaBee apps myself and only created them because nobody else had made something similar that I could have used instead. My personal favorite is Text because I use it to plan every single thing in my life. It's also pretty secure so I don't have to worry about anyone getting a hold of my personal notes and world-domination-plans. I recommend you check out the demo and play around it with yourself to see if it would work for you or not.

What next?Wed, 19th Jan '11, 8:15 pm::

Last year was pretty stressful and around December I decided to slow things down for a bit. So after Juliet graduated, we did some traveling, caught up on missed TV shows, and partied like it was 1899. Suffice to say, I can't handle so much happiness and have thus decided to put an end to my carefree existence immediately!

I have two personal goals for 2011: (1) Make KType work and (2) Kayak 52 miles in the Suwannee River Challenge. I haven't worked on KType in over 3 weeks and am dying to get it up and running. The kayak ultramarathon is in October and I've started training for it. Though I prefer not to blabber about things I haven't done yet, I can't resist mentioning that I'm very excited about both of these because I feel they will complement each other very well. Kayaking will be a healthy break from multi-day programming sessions and I'll have plenty of time to think about KType when I'm out on a river for six straight hours.

Earlier today Juliet mentioned that she has one goal right now and that is to get a good job as a Physician Assistant in St. Petersburg / Clearwater / Tampa Bay area, preferably in the areas of Dermatology, OB/GYN, or Oncology. But she wondered what her next goal would be. I'm just as curious to find out. Like me, she is fueled by challenges and always wants to do something new, exciting, and unexpected. I told her that's the best part of my life - the uncertainty of it all.

Unlike most people I know, I will never be content with knowing exactly how my life will play out in 5-10-15 years. The world offers far too many adventures that keep me from sticking to decade-long plans. I like one-year plans because those I can make a schedule for. KType is different because it's more of an academic pursuit than a software project. I'm completely uncertain of what lies ahead for me career-wise and haven't given much thought to it. And that's the way I like it.

Sat, 11th Dec '10, 1:50 pm::

This 'blog entry is being written on a laptop that is physically in India while I am sitting on my sofa in US. I'm remotely logged into my mom's new laptop so I can customize it just for her. Her laptop was loaded with so much crapware that it was unusable. Despite having 2GB of RAM and a fast CPU it was crawling. I used Skype's screen-sharing option to see what she was seeing and got her to install TeamViewer.

Once we got TeamViewer working, I took over and for the past 4 hours have been removing crap from her laptop and installing some useful applications. TeamViewer doesn't require you to create an account or give out your email. Download software at both ends, enter the remote PC's ID & pin and you're good to go. I highly recommend it for fixing family PCs.

KType & LifeTue, 16th Nov '10, 7:05 pm::

I have been working nearly full-time on KType for a couple of weeks now and things are finally starting to take shape. If you're unfamiliar, KType is my research project to build software/hardware tools for improving communication for people with disabilities. For the past 6-8 months, I've been talking about it to everyone I know and I'm glad that things are coming together now. I bought a Mac Mini two weeks ago, spent the past week learning how to program iPads, and finally created the initial design of the KType iPad app. Check out the screenshots. I am nowhere close to being done but I know I'm slowly getting there.

As part of my research project, I'm maintaining a wiki at ktype.net and updating it with anything useful that I come across. I have a basic reference page with links to news articles and products about assistive technologies. Over the next few months, I will be post detailed case notes as I work with my potential end-users. Now that things are moving at a good pace, I will post regular updates.

I know I've barely started working on KType but just getting to this point in my life where I can put a good 40-50 hours a week into such a project has been a challenge. People thought I was stupid when I told them that I was planning to quit my job so I could work full-time on a multi-year research project that will not get me a degree, money, or fame. And when I explained that I intended to drop out of a prestigious MBA program so I could work on this 8-10 hours a day out of my house, they thought I had gone insane. Of course, once I talked about the project goals, applications, and end-users, I got a lot of support from everyone.

The real difficulty about KType is everything that is NOT KType. Programming and computers are easy. Life is hard. Just because I'm working on KType doesn't mean I don't have to worry about family, pets, house, cars, mortgage, bills, and taxes anymore. In fact, my money-related nightmares have quadrupled since July. I have been using my cashflow application diligently to plan our spending and thankfully so far, things look good. Giving up my job meant giving up on a stable middle-class lifestyle in exchange for financial uncertainty. Once Juliet gets a job next year, I will worry less, though I doubt I'll ever stop.

Not knowing our future financial situation means not being able to plan the big changes in life, something that I love doing. We want to buy a bigger house so my parents can come stay with us whenever they want, for as long as they want. In the current housing market, I doubt I'll be able to sell my house easily so we might end up renting it out for a few years, which comes with its own set of responsibilities. Juliet and I want to start our own family and while I am ready for it personally, I don't know if and when we'll be able to afford her student loans, two houses, and a baby or two on top of everything else.

What I'm trying to say here is that life's going on as usual. I'm working on something I truly love while doing my best to take care of everything else. It's tough but worth it. I have a wonderful partner who understands my dreams and supports my decisions even if it means postponing someone of our plans. As my favorite Doctor says, allons-y!

Starting KTypeFri, 17th Sep '10, 12:05 am::

For some time now, I've been looking for a good way to build a system to help people with speech/neurological disabilities communicate better and tonight, I found it. After my cousin Keval from Mumbai got in an accident over six years ago, he lost his voice and motor skills. Over the years, he has gained some control over his right hand but it is not enough for him to type on a keyboard or use a mouse. It appeared from some videos that my sister sent me last year that he might be able to use a touchscreen to push digital buttons so I decided to look into developing a software/hardware system customized for him.

I created a rudimentary on-screen keyboard that helped guess what he was trying to type, a "smart" version of the T9 typing-mode on cellphones. I called it KType and it used Google's AutoSuggest feature to "guess" what the next word or phrase would be. That it was a good idea was confirmed when I recently ran across Google Scribe - a simple demo that works on the same principle (and uses the same Google data-source) as KType but offers a different user-interface.

I sat with Keval for many hours during my recent trip to India to try and figure out what kind of system would work for him. Last month, I met a friend's brother who has a neurological disorder that prevents him from speaking and makes motor control very difficult. I know I shouldn't extrapolate too much from just two people's requirements but I know that if I am able to make something that works for both, it will most certainly work for a hundred others, as there are many people who have problems speaking and using general-purpose electronic devices to communicate. With all of this in mind, I started to build a list of requirements for the hardware and software platforms that I will use for the next generation of KType.

The hardware I need to use will:

  1. Be cheap and affordable: After all, health-care is expensive as it is. No need to make software that only runs on $10,000 machines. Maximum hardware cost: $1000, prefer to be: under $500, sweet-spot: sub $300.
  2. Be available throughout the world: If not immediately, then within a year or two at most. No NASA rocket parts, only commodity hardware.
  3. Have a touchscreen: It can be used as the primary input or as the configuration panel.
  4. Have good audio out: Will be required for text-to-speech.
  5. Be connected: Wireless required, Bluetooth highly desired.
  6. Integrate with other devices: I may need the ability to integrate with joysticks, hardware push buttons, HDMI monitors, and other I/O devices.
  7. Run on battery and for many hours: So the user can be mobile.
  8. Easy to reset: 9 out of 10 errors should be fixable by turning the device off and on again.
  9. Relatively easy to program: This is very important for me because I don't have five years to code patiently. I want to give a working KType device to Keval yesterday.

The software I need to use will:

  1. Be free from licensing issues: I want everyone to use KType without any restrictions.
  2. Work on multiple hardware devices: I want to write once, deploy anywhere. I am not building a high-performance, finely-optimized video game. I just want to make code that works and is stable, even if it's not "perfect".
  3. Allow users to update to latest version: I don't want to manually upgrade all the devices. Ever.
  4. Perform low-level hardware-functions is necessary: If I want to create a wireless network between my selected hardware device and a webcam, the end-user shouldn't have to deal with complex configuration. I want the ability to create an ad-hoc wireless network dynamically in code.
  5. Exist today in usable form: I'm not going to wait for Apple, Google, Microsoft, or Adobe to release their latest and greatest SDK before I can start coding. I need to get started right away.
  6. Be fast: While initially I'll do simple things like easy-to-use on-screen keyboard, I have plans to do some very CPU-intensive processing in the future. So I can't really develop in QBasic.
  7. Have an extensive set of libraries: I don't want to reinvent the wheel. I want to use the most advanced wheel freely available today.
  8. Not be a fad (i.e. be around for a while): I plan on working on KType for the foreseeable future. I can't start to code it in Erlang and find that the flavor of the day is Clojure or Ruby. Last thing I want to do is a complete rewrite. So the software platform I decide to use, better be around for a long time.

Having mulled these requirements over and over in my mind for the past few months, I was starting to get disappointed that I couldn't find a viable software/hardware solution. While the Apple iPad definitely met most of my hardware requirements, programming for it in Obj-C hardly fulfilled my software requirements. Finally tonight, I came across AirPlay - a software development system that will let me write code in C/C++ and run it on a variety of hardware devices, including the iPhone, iPad, and Android devices. Though AirPlay may not meet every single software requirement immediately, with the iPad expected to get some competition in the coming months from the likes of Samsung Galaxy Tab and Archos Tablets, I think making a cross-platform software that would work on any of these devices will be the best solution for me and my users.

I started to play around with AirPlay tonight and I'm definitely excited. My iPad is setup and ready to be programmed. Can't wait!

The walk of my lifeFri, 3rd Sep '10, 12:40 pm::

I took a long walk by myself today. I had been waiting for this walk all my life and it was everything I ever thought it would be. Most people plan for success, many plan for happiness, and the rest plan for difficult-to-achieve goals. I took a long walk to plan for balance and self-actualization. Now that I'm not working full-time, there are too many things I can make myself busy with. Most of the things I want to do are computer-related and if my past-experience is any indication, they will bring me temporary excitement, momentary fame, and years of bug-fixes, feature-requests, and unpaid tech-support emails. In short, every new project I pick up comes with life-long baggage and even though I love these little things, they prevent me from doing the big things I really want.

I began my walk with the goal of simplifying my life while still enabling me to do everything I want guilt-free. This includes lots of computer things, family-time, exercise, kayaking, self-improvement, and social commitments. After an hour of pondering, I came up with a weekly schedule that will be nearly identical every day:

My daily chores would fit between 6am-7am and 7pm-11pm. All my interesting projects would be during 8am-6pm. Once a month, I will reevaluate my open projects and make changes to my schedule as needed. As of right now, I have prior commitments for Monday and Wednesday, at least till the end of this year. This leaves five days where I can do anything I want during the day. These five days were the most difficult to allocate. While I'd love to spend all of my time working on cool web apps like most of my projects or ZetaBee, I came to a realization that this is a never-ending, never-finished list. These projects have brought me immense joy and experience but have also taken up a lot of my free time in the past.

Additionally, these projects also conflict with my nature adventures. I want to go kayaking all day or hike a long swampy trail without feeling guilty that I'm not working on x-y-z. Then there is a big issue of getting in The Zone, "a phrase used by software developers to mean the ultimate level of mental focus." Working on six different projects in the same week basically means you don't get in the zone for any of them - too much distraction and shallow focus. I want the ability to get in the zone so I can do something with absolute concentration and utmost dedication.

My solution is to split the projects into (a) ONE-BIG-PROJECT and (b) everything else. The one-big-project is what I'll work on during Thursday-Sunday so I can get in the zone. Everything else goes to my "Too-Much Tuesdays" bucket. Every Tuesday, I will get to pick what I want to do that day. If I need to work extra on a project because of prior commitments, I can do that. If I want to go kayaking, hiking, or just have a Star-Trek movie marathon, I can do that. If I want to take a day-trip with Juliet, I can do that.

My goal is to stick to my weekly schedule without fail and push anything that would prevent me from staying on track to the Tuesday bucket. This will free me from guilt, distractions, and unnecessary busy-work so that I can work on my one-big-project for days on end. For the foreseeable future, my one-big-project will be KType. KType will be a mix of software & hardware to help people with disabilities communicate better. I'm certain that I will be writing a lot more about it in the coming days.

To make sure I stick to my schedule, I'm now tracking my time using Toggl.com. If it works well for me, I will write about my experience and methodology. Personally, I've never been too obsessive about following a routine and as long as I stick to my general schedule, I'll be more than happy. The goal here is to not stick to schedules but to create new, useful tools that help others. The weekly schedule, time tracking tool, and all these plans are just to make sure I don't go off-track, broke, or lazy.

Sun, 21st Feb '10, 6:05 pm::

The tiles are done! The entire house looks so much better now. I'll try to post some pictures soon. If you are in the St. Petersburg / Tampa Bay area and need tiles or flooring done at a very good price, call up Michael from MCG & Associates. Mike's entire crew was awesome and did a fantastic job.

In addition to getting new tiles, we rearranged almost every room and gave away a lot of my old furniture. The baker's rack, kitchen table + chairs, kitty post, a small sofa, and tons of smaller things are now gone. This makes the house more spacious and now we can have a guest bed setup in the office room. Now we have to get all the rooms except the bedroom painted, the bathroom renovated, and give away a lot more stuff (old clothes, computer equipment etc.)

Last few weeks I've been so busy with school and this week is no different. I still have three more weeks to go before the semester is over. Since we're going to India in May-June, I don't think I'll be able to take summer classes. So in my free time, I think I'll work on some software projects that I have been thinking of for a while. I'll share more once I get started.

Tue, 12th Jan '10, 11:55 pm::

I grew up playing with Lego and similar building-block toys but once I fell in love with software, I pretty much forgot that I could tinker with hardware too. For about two decades now I've been writing code to make computers do whatever I want them to do. Meanwhile my opinion of hardware has been that it is a failure-prone black-box that my beloved software needs to run on. If I could program tomatoes and watermelons to send email, share photos, and add numbers, I would throw away all my personal computers and go grocery shopping immediately. But since I am unable to do that as of yet, I will do the next best thing and start playing with building-blocks and hardware again.

A lot has changed in the past decade in the world of hobbyist hardware. There is a whole ecosystem now surrounding a tiny computer called Arduino that costs only $30. Arduino lets anyone write small programs that can interact with the world using sensors and motors to make things happen in rea-life. No matter how smart my code is on a regular computer, the most effect it can have on the real-world is to send an automated text-message or make a loud noise unless I buy some expensive hardware. Arduino can let me turn on/off LED lights, measure room temperature, detect infrared light, turn on/off motors, and much more. Basically, now my Lego toys can cheaply become tiny machines or robots and the best part is that I still get to write software to make it all work together.

I'm still waiting for my Arduino to arrive and already have an idea for my first, second, and third projects. The good thing is that being a beginner in this field, I get to learn a lot of new things in a very short span of time. After you have been working in a field for a decade or more, coming across new things becomes a rare event. It's not everyday that I hear about a revolutionary programming language or database system. But a tiny $30 PC that can inform me when my cats enter the kitchen? That's revolutionary!

Feeling like a kidFri, 24th Jul '09, 12:30 am::

For the first time in many years, I feel like a kid discovering how a computer works. I had been so busy with making websites, software, and applications for others that I forgot what it was like to just learn and explore like I once used to. I've spent the past decade worrying so much about clients, projects, and deadlines that whenever I had to learn something new, I rushed in, learned the bare essentials, and then got back to finishing the project. I never took a day or a week to just fiddle with new things. All I cared about was building something useful that did whatever the users wanted. While that seems quite productive initially, over time I started to lose the passion I had for computers, mainly because everything felt dull and boring because everything had predetermined specifications and deadlines. In a way, it limited the scope of my knowledge and skills by pushing me towards familiar, proven tracks.

I haven't been working on any major computer projects at home for a few months now and was having a hard time NOT working on something. The habit of constantly building something for others has become a chronic addiction. How can I sit around watching TV or spend 12 hours a Saturday training for my marathon instead of writing code? The feeling of "I should be doing X instead of Y" is one of the most guilt-ridden, debilitating experiences that an ambitious person can face. However, I also believe that all work and no play makes even the most interesting activities suck. How can I make something useful when all I care about is making something useful?

When I look back to see all the fun things I've made, I either made them when someone either asked me directly or when I was sitting around fiddling with something else. It's been a while since I've made random little things while playing around. Tonight I spent some time toying with Processing.js. It looks quite interesting. There are a million other neat projects that people around the world are working on. From a new database system to programmable art, there are so many things I want to learn about for the sake of learning instead of using them as tools for specific work-orders or turning them into full-blown business proposals. I'm excited!

Tue, 10th Feb '09, 8:25 am::

I value leisure more than almost any important activity or task. My inner-lazy would rather not do something than do it. I would rather sit around and think about cheaper ways to make a GPS locator for missing cats than to actually go out and do it. I would rather spend all Saturday laying down in the hammock, watching birds fly across the sky above me, than work on even the most interesting projects.

And so that is exactly what I haven't been doing for the past eight months. Currently, the things that occupy my time are: My full-time job (45-50 hours per week), Masters college (16-24 hours per week), SCHED (12-16 hours per week). That's an average of 80 hours of work and school per week. I started working on a new hardware/software project last month to help my cousin Keval communicate better using a data glove. While I only spend 8-12 hours per week on this project, I need to spend closer to 16-20 hours per week to make significant progress and hopefully in a month, I will be able to. Add to that about 10 hours per week of house chores, pet care, paying bills, and immigration paperwork. Did I mention I have a wife who I love to spend time with? So add about 2-4 hours of wifey time on weeknights and 12-16 hours on weekends, and I'm at about 30 hours per week. This brings me to 90 work/study/projects + 10 chores + 30 wifey hours = 130 hours per week of doing stuff.

There are 7 * 24 = 168 hours per week and I'm booked for 125-130 of them. This leaves me with about 40 hours to sleep, shave, and shower or in other words, less than six hours per day to rest and take care of myself. I would rather just chill and do nothing for all 24 but then that would be too easy. My life's probably going to be like this for the next two years after which I will take a few years easy to reprioritize my goals and ambitions. Until then, it's slaving away all day with barely any sleep.

Of course, I love all of the things I do on a daily basis in the big-picture sense. School is tough but I am learning so much. Work is just as demanding but I'm building cool new tools to help manage and grow the business. SCHED is growing faster than anyone anticipated and we're getting a lot of good feedback so it's wonderful to make new features that users love. Juliet's very understanding and supportive of all of my commitments so the few hours each day we do get to spend together, I get to just sit back and relax. I really have nothing to complain other than the fact that I miss having time to go kayaking.

Mon, 8th Sep '08, 7:45 am::

I had a pretty busy weekend. On Friday, Juliet and I went to see Tropic Thunder (one word review: hilarious) and then went to Tampa to hang out with her school friends at a bar/nightclub. Early morning Saturday (that would be about 11am), we signed up for a joint bank account. I can't believe I procrastinated so long to get that done. That brings me to the main activity of my weekend, a new application I'm still working on called untodos that learns about your personality and helps you manage your todo list based on your quirks. If every person is unique and quirky, then why does every task planning software treat us all the same? untodos learns about your personality and tries to assist you in better managing your life todos. It won't replace Outlook and complex calendaring software for everyone but I know it will help me sort out the tons of things I have to do in life. It's not fully done yet but do let me know what you think of it so far. It's completely functional and usable, just doesn't have the "smart" features yet. You are welcome to check it out for yourself and sign up for a free account.

Amidst all the programming, we also watched Spiderman 3, played with the gliders, had lots of yummy foods, and just sat in the Florida room for hours watching the turtles, and talked about life in general. Our lives are exhausting but good. I just have to make sure I don't lose sight of the good things while chasing the important ones. Hopefully, untodos will help me with that.

I'm not famousWed, 3rd Sep '08, 7:05 am::

Someone on reddit asked, "How are you famous?" As I expected, most people started listing their best accomplishments or personal anecdotes of importance. I thought I'd chime in with some of the cool things I've done over the years that got some media attention. It was while listing my accomplishments did I realize how trifling they were in the grand scheme of things.

I've had an article written solely about me on WSJ.com last year and was on the front-page of wired.com (with my pic) for about three days earlier this year. I've had newspaper and magazine articles written about me since age 16. One of my websites was reviewed on G4TV. My apps have been showcased in magazines all over the world, from Germany to Philippines.

Yet I don't consider myself famous, because I'm really not. Internet-fame is different from real fame. Internet-famous people have their own Wiki pages. Famous people have their own villas in France. We often forget there is a distinction between the two, especially when discussing it online. It has less to do with the amount of money you make and more to do with long-term personal relationships you build.

People with a website and an audience often forget that their audience is in a constant state of flux, just yearning to stumble upon something interesting and entertaining, be it via unconventional 'blog posts, established news outlets, or even email forwards. The fact that you have a daily readership of 20,000 or even 350,000 means nothing if the relationships stop at the keyboard. Of the millions who have downloaded my software over the past decade, there is exactly one person I consider a real friend. The rest were users who sent me valuable feedback.

Instead of making applications and websites that millions come across, I could have volunteered at a local charity and touched the hearts of just two people. That would be twice the number of real, long-lasting connections I've made in a decade spent writing code online. However, this doesn't mean I regret any of this. I will continue to make useful and useless applications for all to see and click around. I will try harder to come up with more interesting ideas to waste people's time in the hope that my little website makes someone's day. What I will stop doing is assuming that just because I am internet-famous, I am indeed famous or have done anything significant to impact the lives of many. Linus and Guido have, I haven't. I still have a lot to accomplish. As Shakespeare wrote, "Why, then the world's mine oyster, which I with sword will open."

Tue, 19th Aug '08, 6:00 pm::

I've been pretty busy past 10 days. My MBA program is starting this Friday and Juliet's MS program already started last Thursday. I just bought all of the books for my program from Amazon and some other sites. I've been busy last seven days moving over twenty websites from my old host to a new one as part of my financial organization plans. I will be so busy with my work and school that I won't have much time for web designing or much else.

I don't know what it is about getting married that makes a guy want to setup a kickass home-theater system but finally I have a nice setup. My 51" HD TV is now connected to Pinnacle ShowCenter 250HD that plays all the music, videos, and movies I have on my computer wirelessly without any special setup or software purchase. I now have an HD-DVR with 200+ channels on FiOS TV. And then there's Juliet's DVD/VCR player too. I realize I am doing almost everything I made fun of when others did it but somehow this all feels pretty good.

We bought a nice cage for the sugar gliders. The sugar gliders will be arriving pretty soon too. Once they're settled in, I will take lots of pics and share. I have a lot more website stuff to finish now. Next update will hopefully be from my new server. If it all works as planned, nobody will notice anything.

Mon, 18th Feb '08, 12:05 am::

My first HD video is finally online after hours of editing: Kayaking down the Chassahowitzka River. Click on the 'Full' button for the highest resolution. I'd say even after just one video, I have learnt a lot of things that will make my next video better.

Ten things I learnt after my first nature/documentary-style video:

  1. Dont talk about useless stuff i.e. keep mumbling to a minimum.
  2. Take slow, long shots. Preferably move instead of just panning.
  3. Don't zoom. Instead, take a clip, stop, zoom, take another clip.
  4. If you said something wrong, retake entire clip.
  5. Make sure there are no annoying noises in the background. Dubbing takes a lot more effort.
  6. Feel free to take multiple shots of the same thing.
  7. Don't even bother to shoot scenes you will edit out anyway, like four blurry minutes of sea gulls flying around.
  8. Don't turn 180 degrees unless it is shaded in all directions because the sun will mess with the lighting.
  9. Dont make girly motions with hands no matter how secure you are in your manliness.
  10. Speak more clearly, slowly, and do not start EVERY SINGLE SENTENCE with "So..."

I'd say my next video will definitely be more interesting. I am more than satisfied with the quality and performance of my new $200 Kodak Z812IS. I believe in upgrading my equipment when I truly outgrow it. For now, there is no camera in the world that can improve my video editing skills. Nor will any video editing software help me with impromptu dialog delivery. I used a trial version of Sony Vegas to edit the 70+ Quicktime H.264 movie clips that my camera shoots to natively and if my next video editing session goes well, I will certainly buy the software. Video editing is fun!

Advertising AnnoyancesFri, 8th Feb '08, 10:20 pm::

There are a lot of things about advertising that annoy me but usually I shrug them off as necessary evils in a consumption-centric society. Advertising increases sales, ramps up production volumes, helps industries benefit from economies of scale, and usually raises the standard of living for everyone involved in the supply chain. However, there are more than a few products and marketing shticks that solely exist to insult and infuriate me and every person smarter than a potato. The fact that people actually buy these products in droves only reinforces my pet theory that humans evolved from dodos. Here are a few of my advertising annoyances, with my biggest one at the last:

  • Water with low-calories: Let's get this straight. Water has ZERO calories. If water has calories, it's not water - it's either juice, lemonade, or really dirty water. So those Propel ads promising healthier water are as much a load of junk as the spam emails for v1Agr@. Either drink water or drink fresh juice. There is no "healthy" water.
  • Seasonal Marketing: This is one of those absolutely necessary evils because you can't really sell diamonds on Halloween or snow shovels in summer but there is nothing more annoying than seeing one jewelry ad after another, each trying to prove that there is no love without diamonds and gold. Similarly, this being the season for filing taxes, every tax software ad claims that by using their service, I will get a refund check so big my friends will stand by in amazement as if I won a lottery. Stop treating me like I am stupid.
  • Prepaid cards: Paying companies 100% of your own money in advance for a debit card that you or someone else can use in only a select few places, while being subject to transaction fees, monthly fees, and expiration dates is one of the stupidest things you can do with your money. It's not a "gift card." It's an "I don't know what to buy you so instead of giving you cash that you can readily use to buy what you want, I'm going to force you to go to Macy's within next 30 days" card. As if this wasn't stupid enough, the tax preparation companies this year have come out with the "novel" concept of offering you the option to get your tax refund not as a check, bank deposit, or cash but as a debit card issued by them.
  • Non-native accents for local products: If you're selling chocolate made in Switzerland, I can see how a narrator with a European accent would lend credibility to the sales pitch. What I loathe is the use of a British accent to give an aura of elegance to a bottle of shampoo made in Tennessee. Conversely, stop trying to overdo the native accents for local products to show how American your products are. I'm looking at you every-Ford-GM-truck-ad-ever-made.
  • Green-Green-Green: Who doesn't like saving the environment? We humans have the audacity to pretend like we can "save" a planet with mass of 6 trillion-trillion kgs (that is six followed by twenty-four zeros) while we cannot even figure out an affordable way to harness solar power. Yet every company is now trying to be green. When a company goes "green" what they are really saying is that "from now on, as we continue to plunder the natural resources of a geological area like we have been for the past two centuries, we will print lots of pamphlets and brochures to show you exactly what used to be here so you can feel less guilty about buying our products." Read the rest of my anti-green-bandwagon diatribe.

Sun, 23rd Sep '07, 9:10 pm::

It's 2007 and computer hardware is still the bane of my existence. Like a good little nerd, I spent the entire Friday night and most of Saturday setting up a computer to hook up to my TV. I had the whole setup ready and was about to sit back and watch the latest episode of IT Crowd when the computer crashed. I spent two hours trying to isolate the problem and turns out the motherboard is dead. It's an old server motherboard that can't be replaced for cheap so now I have to find another computer. I love software but I truly hate the hardware it has to run on. It's like loving the brains but being repulsed by the body. Kinda like online dating.

On building leak-proof systemsSun, 19th Aug '07, 6:35 am::

I am an ardent follower of world news. Be it politics, science, business, or pop culture, I am keen to hear and understand the situation regardless of the scale or my distance from the incident. I could be reading the tactics of the Recording Industry Association of America, the hostility of environmental groups towards nuclear power stations, or the Chinese threats to liquidate their US currency holdings, I have noticed certain human elements at play in every locale. To name a few, (1) greed, (2) ignorance, (3) inflexibility, and (4) irrationality are commonly at play in the prime issues of local and global conflicts.

As residents of a civilized society that is at most a single crisis away from savagery and barbarism, we have constructed innumerable social systems to keep all of us functional and urbane. As we have a justice system in place to ensure murder and theft is discouraged, we have banking systems to regulate the institutions that promote growth by enabling mass savings and investments, namely banks. Then we have school systems that dictate what a student of age nine should read and which math problems the student should be able to solve by age twelve. Add to that the laws on aviation, the rules of alpine skiing, the regulations on equipment sterilization for medical purposes, the age of consent laws that are different in every geographic region, and the code of ethics for international journalists in war zones, and we come to a very complex world to legally function in. While all of us break a few rules, most of us follow most of the rules. We stick to the rules quite well indeed. After all, who wants to be hauled away to prison, get fired from the job, be disqualified from the race, or be banned from the Saturday morning gardening club? That's the stuff news is made out of.

News is but a glorified portrayal of the leaks in the system. From stories about school shootings in suburban communities to suicide bombings in the Middle East, from stock market crashes in Europe to polar bear habitat loss in the Arctic, the purpose of news is to highlight the cracks in the long-standing systems we have in place, thereby making all of us think "somebody needs to fix this!" Your local station will cover the story of the bottling plant near your house that is dumping industrial waste into your scenic lake. Similarly, the national news networks will break the story of accidents happening across the country as long as a hole in the system can be pinpointed. Story of a bridge collapse is about the breakdown of construction regulation, infrastructure budgeting, and political earmarks. News of a molested child is to decry the deviation from moral conduct, social decency, and parental expectations. Watching the news is like watching a beautiful painting being ripped to shreds, one knife-slash at a time.

The keen observers of news notice that when the news isn't broadcasting the leaks in the system, that in itself is a sign of the larger leak in the system, whereby the fourth estate is found to be in bed with the governing bodies. It doesn't take long before the traditionally free, uncensored media becomes an extension of the ruling party and helps dictate the edicts of the rulers by publicizing propaganda as facts. Regardless of when the common man realizes the system is breaking down, every system we have designed thus far will eventually break down; an overbearing side-effect of the human element at play.

Without getting into personal characteristics of specific individuals, we know that humans are morally sound and unsound, sharing and selfish, considerate and rude, amicable and violent. Depending on the situation, these characteristics could be found in the same individual or entire organizations and even countries. We also know that most people would do whatever is necessary to benefit themselves and their groups. However, doing so often inconveniences other groups and breaks the rules of the system. Keep in mind, the system could be foreign exchange markets or the restaurant tip jar where some people are bound to twist the rules to help themselves while others are compelled to help others by giving up some of their own share.

The study of Game theory discusses possible outcomes of conflicts that occur between different agents. "In strategic games, agents choose strategies which will maximize their return, given the strategies the other agents choose." While each situation needs a specific application of game theory to work well and give appropriate results, there are more underlying assumptions in real-life than the simple "maximize personal return" hypothesis that traditional game theory considers.

If our goal is to design a leak-proof system, we have to know the foundation on which it will be built. Considering that a leak-proof solution to a specific system involving humans could be reduced to any other system involving humans and thus have the ability to eliminate world hunger, poverty, environmental disasters, territorial wars, road rage, and long lines at the grocery store, I presume that the desire to come up with such a solution is global and intimately human. Once we have a list of the human flaws, our eventual goal should be to recreate everything such that the most amount of good comes out, despite everything bad that will certainly happen. In other words, we wish to devise a solution to every problem in the guaranteed presence of Murphy's Law.

The strongest of human characteristics is greed or the desire to maximize personal benefit. We all want good things to happen to us. Be it money, praise, passion, or enlightenment, we want more of what we feel is good. Some of us, very rarely all of us, will break the rules to help ourselves at the expense of others. The harm caused to others, be it publicly visible or remain anonymous, some percentage of the population will abuse the trust put upon their shoulders. A system that expects every person to be completely faithful and trustworthy will thus certainly fail. This is why billions of dollars in monetary aid go missing as soon as they hit African governments' bank accounts. Our entire concept of charity expects the kind, altruistic people to trust strangers in power to help strangers in need. The amount of charity that reaches the ones in need is thus inversely proportional to the amount of human greed. We cannot easily reduce the amount of greed so what we should do, is minimize our reliance on honesty for a system to work.

How would one change a system to reduce dishonesty? Take the example of construction contract bids, i.e. tenders. If a local government wants a bridge built and wants to maximize public benefit, it can appear to do so by asking for anonymous bids from construction companies and selecting the bid with the lowest cost. However, that will not maximize public benefit as a construction company can drastically undercut their asking price by using inferior material that can cause the entire bridge to fail in years. So a better solution is to stipulate that the contract will be awarded to the second lowest bid. Now the company cannot quote a price so low that they will assuredly win, thus encouraging all the bidders to give more realistic cost estimates. There is certainly a loophole in this system too, as a company can simply put in a very low bid as before and have another sister company bid even lower. Thus they can ensure the lowest bid and the second lowest bid. The real-life solution to this has been mired in volumes of government regulations preventing this exact scenario, along with millions of possible underhanded tricks. Nevertheless, this entire system is built upon the citizens entrusting the local government to trust a construction company, and thus is subject to every single bit of greed faced by the aforementioned charity donations by altruistic individuals to African nations. The true solution is to minimize the reliance on greed. For the local government, it might be in the best public interest, even though more expensive, to award the contract to the median bidder as that value is much more difficult to game. To help the developing nations, developed nations can make larger contributions in the form of education, access to better healthcare, enabling free trade, and building infrastructure instead of simply wiring billions to unmonitored bank accounts.

This brings us to another powerful human lacking, inadequate knowledge. Call it ignorance, lack of education, or just plain stupidity, a system will succumb to idiocy without relent. Thus any system that expects all parties to be educated and fully understand the consequences of their actions, will be prone to failure. Information Economics deals with information asymmetry where one party has more information than the other and tries to devise "fair" solutions to such problems. However, there are numerous problems where having more information is not always as large of a benefit as one might assume. Take driving on the highways for instance. If people would just stop driving like idiots, there would be far fewer fatalities. In spite of the many experienced drivers, the few poor drivers can ruin it for every single driver on the road in a matter of seconds. To minimize fatalities, we have numerous laws in place to minimize idiocy - from limits on alcohol content within the blood stream to minimum age rules for various driving privileges. Note that while all attempts are made to discourage bad drivers from driving, the system still relies on people being good drivers and hence prone to accidents. A futuristic solution to this problem could be automated driving where you would punch in your destination and the car would drive itself. What amazes me is that such a system, which can cost a lot initially but completely eliminate accidents by inebriated or inexperienced drivers, is possible to put into place in the near future yet very few care about it. Though the automated driving software itself would never be perfect, it would improve with time, as most automated systems do. Put in a backup system with fail-safe mechanism and personal transportation can be a thousand-fold safer. So why is it not in place yet? That's the third deep-seated human defect, aversion to change or inflexibility.

Most working systems are designed with the foresight that they are not immune to abuse and hence expect timely changes to be incorporated to ensure consistent functioning. A good example is the US Constitution that was adopted over two hundred years ago and has had twenty-seven amendments to date. Even though constitutional amendments seek to maximize public benefit and limit abuse of power, nearly every amendment was met with vehement opposition, be it the 13th amendment that abolished slavery or the 19th amendment that gave equal voting rights to women - people just don't want things to change, even if it is for the greater good. While such an important set of rules supported by a strong central government can indeed work, it is nevertheless difficult to bring about changes because various segments of population have vested interests in maintaining the status quo. The ones in power strive to remain in power. Any system that requires new rules to be created in order to prevent abuse will fail when the new rules have to be approved and enforced by the same bodies that are abusing the system or benefiting from the underlying asymmetries. The US Constitution thus defined three branches, Legislative, Executive, and Judicial, each of which had specific and limited powers. The system would work as long as all the branches worked independently of each other and maintained a system of checks and balances to ensure no single branch abused its powers. The entire system will be prone to failure if the executive branch manages to incapacitate the judicial branch by planting personnel in key positions who refuse to prosecute members of the executive branch under any circumstances, especially if at least half the legislative branch is under the influence of executive branch. Alas, I can offer no instantaneous solution to such a dilemma, primarily because of the tremendously powerful vested interests that are averse to any changes away from the status quo.

In addition to greed, lack of information, and aversion to change, in almost all clashes, there are ingrained human emotions at play, often irrational at face-value and based more on belief and less on logic. How do you create a better healthcare system if religious beliefs dictate surgery is immoral and therefore to be avoided? While this may seem like a minor, inconsequential blemish in the human psyche, a system that requires everyone to make rational decisions will indeed fail when a considerable percentage of the population does not make the rational decision. The fundamental basis of microeconomics, political science, as well as sociology is rational choice theory, which assumes that "individuals choose the best action according to stable preference functions and constraints facing them," that is, people will weigh the different options and pick the ones that they can afford to derive the most benefit from. While "proponents of rational choice models do not claim that a model's assumptions are a full description of reality," when trying to construct and deploy actual systems in real life, we need the assumption to be true, otherwise the system that relies on rational choices, will fail. In theory, rational choice is easier to describe. If I get a less strenuous job with more pay and higher level of job satisfaction, it would be a rational choice for me to switch, unless I had other reasons to stay in my current position, like better scope of advancement in the future. Irrationality can also be rationalized in this sense by noting that if the new job was in Colorado and I love all states that begin with the letter C and end with the letter O, I can derive a higher level of satisfaction by moving there. Realistically speaking, that's a pretty irrational reason to move, but it can still be supported by a loose application of rational choice theory. In practice though, the very definition of rational is subject to debate. What is rational and obvious to one set of people may seem irrational and delirious to another. Who are we to legislate whether someone's belief in surgery being immoral is rational or not, they certainly think it's rational.

Think of any problem in your life, family, company, community, society, country, or even the entire world. Our solution to solve problems has always been to put carefully crafted systems in place. Remember that all systems will be met with (1) human greed, (2) ignorance, (3) inflexibility, and (4) irrationality. Now try to solve your problem WITHOUT requiring any of these four human conditions to be solved first. The perfect solution would be one that bypasses these limitations i.e. does not rely on solving any of them first. The scale of the problem is inconsequential for I believe that if you can solve the problem of neighbors with loud, booming speakers without giving them anything in exchange, without educating them on the virtues of silence, without providing them with headphones, or without making them truly understand how their careless behavior is affecting your emotional well-being, I can expand your solution to bring about world peace. Calling the cops on them won't be a good solution as they are already aware of their loudness and ignore it, thereby proving they are selfish and ignorant of others' concerns. It is possible to bring about world peace by enriching the needy, educating the masses, encouraging development growth and change, and eliminating aspects of fundamentalism and irrationality from the human personality. We can reduce and minimize pollution the same way, by discouraging corporate greed that favors cheaper dumping methods instead of costlier waste-management, explaining the long-term ill-effects of pollution, replacing fossil-fuels by renewable sources of energy, and minimizing the spread of extravagantly polluting devices like oversized vehicles for personal use.

The bright side to this dismal discourse is that not every problem requires all four aspects of human condition to be solved. Bringing about gender and racial equality required changes to social norms and eradication of irrational intolerance but barely had anything to do with human greed. Consequently, even if we can't eliminate human greed or educate every person, we can still solve a lot of problems. Education in itself is a problem, and the education system can be improved by social changes that promote intellectualism instead of wealth or power. Problems in education cannot be fixed by trying to provide more rigorous education or making promises of monetary or political grandeur.

If you see a problem, identify which of the four human deficiencies you are up against and try to tackle each of them individually, instead of calling for a patchwork of remedies that is akin to putting a bandage on an organ failure. If you ever feel ambitious and philosophical enough, go ahead and try to come up with a leak-proof system for resolving human struggles that does not rely on any of the four human shortcomings to be solved first. A Nobel peace prize would be the least you would deserve.

I win, so I am better than youThu, 8th Mar '07, 8:15 am::

A funny contradiction has been happening to me over time and only now am I starting to realize it. I find that the older I get, the more time I feel I have. One would think that as you grow older, you have less and less time to achieve what you want, yet I feel quite the opposite. When I was fifteen, I was always running out of time. Everything had to happen NOW. There was no time to waste. It's now or never! At twenty-six, other than committed deadlines, time doesn't really bother me. There are so many things I want to do and I feel I'm on the right path. I've found some sort of balance between impatience and procrastination. Even when I wrote about patience, I did not know how that came about, other than inheriting my mother's patient attitude.

While reading The Future of Leisure That Never Arrived, I realized what is missing from my life today that overwhelmed my being ten years ago - competition. I don't compete. There is absolutely no competition in my life. At age fifteen, I competed in more activities than I can remember, from soccer, volleyball, athletics, to violin, theater, and aero-modeling (that's making model planes that can fly, not mile-high modeling). Today, I create. I sit back, take my time, and make whatever I want. I build things I want and at my pace. Nobody else is doing what I'm doing any more. There are no standards to measure my worth by.

The void of competition is not some happenstance. It is completely intentional, albeit indirect. I have chosen to not involve myself in activities where the sole purpose is to win by being better than others. While competition in kids fosters development and personal growth, I find that competition among adults simply regresses communal advancement. I learnt a lot about my strengths and weaknesses when I practiced months on end for music competitions as a teenager. However, by spending three hours a day on my yard to make my lawn greener than my neighbor's, I'd pretty much be wasting my time. My time would be better spent making new things instead of proving I AM BETTER!

What makes the world a better place: A bunch of adults that study for months to get the highest score in mySAP-ERP certification so the winner gets a new laptop and a bonus, or the bunch of them working together or on their own projects to actually make software that help others? Having decided that I'd rather build things than run rat-races, my life has become quite different. I know many people that are winning their selective rat-races, and not just eking out a living. Yet they find their lives miserable and often whine about having no leisure. I know many folks that instead build things and they are generally the most interesting people because despite having twenty-six ongoing projects, they are always interested in learning new things and figuring out how to make something else.

Exceptions to the competition rule is when competing professionally is all you do, i.e. sports professionals, athletes, and the ilk. These are the people that, by doing their very best, actually push the human boundaries on what can be done. If I could run a mile under 3:50, I would and my respect goes to those that can. However, this kind of competition is different from forcing your daughter to get better grades than your brother-in-law's kid. People think that by pushing kids to compete non-stop, the kids will learn to win in life. No, they will learn to win in competitions. Then they will compete for that promotion and then that client account. Next thing they know, they have no time for anything, except of course, pushing their own kids to be the best basketball player and the best pianist in their class.

Thankfully, I competed out of my own volition and not parental or peer pressure. Consequently, I found it easy to get out of the competitions without a loss of self-worth. I never measured how good I am by how many people I'm better than. I do measure how good I am by what I make and how does it make the world slightly better.

Of course, everything has side-effects and my lack of competitiveness has its own repercussions. The fact that I refuse to compete in anything seeps into my private life, especially dating habits. I simply won't compete with other guys for a girl's attention. I won't. I don't care how great you are but if you expect me to prove myself better than the four other guys you're eying, have a nice day and a good life. I'm pretty sure if I wanted to compete and win, I could. But I won't. I'd rather be valued on my absolute merits than some relative edge I might gain over others momentarily.

So who's up for a little kayaking this weekend? I'll race you across the Bay to Tampa and back!

Bring back VaudevilleSun, 4th Feb '07, 10:40 am::

If debauchery was illegal, the cast members of Thee Vaude Villians would be serving life sentences. Last night my buddy Nathaniel from Tampa came over and we drove to see the Burlesque Company perform at Chiq. Vaudeville is "a style of multi-act theater which flourished in North America from the 1880s through the 1920s. An evening's schedule of performances (or 'bill') could run the gamut from acrobats to mathematicians, from song-and-dance duos to trick high divers." In the early twentieth century, burlesque theater, with its "origins in nineteenth century music hall entertainments and vaudeville, emerged as a populist blend of satire, performance art, and adult entertainment, that featured strip tease and broad comedy acts that derived their name from the low comedy aspects of the literary genre also known as burlesque."

Knowing the show would be quite different from the Broadway musicals and strip-joint tricks, I walked in with expectations of being mildly entertained and pleasantly amused. Boy, was I wrong! Here's part of a mission statement of sorts from the group itself:

"Throughout the history of theater, many revolutionary ideas have made their impact and become mainstays of modern entertainment. More often than not, the origins of these ideas have been diluted and forgotten as the entertainment industry drones forward. Among these casualties lies the lost art of burlesque. In these first years of the new millennium, only a relatively small number of people endeavor to keep this genre of entertainment from falling into oblivion unsung. Only these few strive to ensure that the word “burlesque” is not easily associated with stripping or the fetish scene. In fact, Thee VaudeVillains Burlesque Company’s main goal is to snatch burlesque out of the jaws of fetishists and bring back all the forgotten elements that once made this genre great. We feel it is our duty to restore the original ideals of the art form and make it shine once more. "

I say bring back vaudeville! I want to leave work at 5pm and taunt the bearded women by 6pm. I want to a see a man eat his own jaw and a woman who can crush coconuts with her bare chest. I'm tired of the puritan and the sleaze fighting over zoning law establishments and what I can or cannot see within 50 feet of a school bus stop that's less than 100 feet of a liquor store on 3rd weekends of months that end with a "Y." I say bring back the innocent burle-laden maidens! Fortunately for me, Thee Vaude Villans are right on track.

In classical vaudeville style, the show consisted of a variety of acts from story-telling and singing to contortion and satire. Saying that I was entertained is putting is mildly. A more appropriate word would be enchanted. The show lasted for over two hours not including the intermission. Nathaniel introduced me to a few cast members before their acts. It's not everyday that I'm introduced to a pretty software engineer that works on digital imaging by day and prances around on stage with feathers at night.

In a society where beautiful girls often starve themselves to become skinnier because the magazine says so, it was refreshing and in a way comforting, to see women not ashamed of their own bodies. Tall and skinny or short and curvy, as long as you can shake those legs for hours on end, you're beautiful.

Having seen the bottom of three Long Island glasses within two hours last night, I have but vague recollections of specific performances. Additionally, smoke-filled cramped rooms, which I guess were the prime seats of such shows once, are really not my thing and often give me headaches. We were too tired by the time the show ended so we parted ways. I got home, consumed lots of bread and orange juice, and went to bed. Here's to a good night out.

Wait for itSun, 28th Jan '07, 3:35 pm::

Often I look into myself and try to pick apart my personality for flaws and issues. While talking to a friend today I realized that I have one very good characteristic that very few people I know have, patience. Of all the people I know, my mother is probably the only one more patient than me, so I'm pretty sure that's where I got it from.

Why care about patience when you have instantaneous alerts on latest sports events via text-messaging? If everything is immediate in this world today, isn't asking for patience just showing that you cannot deliver smoothly? When it comes to systems, projects, products, services, and technology, yes, everything should indeed be immediate and instant. There is no reason your check-deposit should take 45 days. However, when it comes to people, personality, emotions, and society, patience is a virtue.

I want my bank-transfer to happen NOW but I will wait two months while a friend sorts out their job situation before calling me. I want to watch the latest news NOW but I will wait a year before I ask my sister about her future plans. I will also wait three years for my Masters and six years for my Post-Graduate degree some day. I am also in no hurry to get rich enough to buy some mansion on the beach or kayak down the Amazon.

This doesn't mean I'm giving up on whatever goals I have in life. I'm just enjoying today while preparing for a better tomorrow, instead of stressing out today with the hope that tomorrow might be marginally better. Patience is realizing that not everything will happen immediately, especially things that you have absolutely no control over. Once a week my family asks me the same question and my reply is "at least five-six years." If there is nothing you can do to speed things up, why waste your time wondering when it will finally happen?

One thing people have to learn about patience is that you need patience to learn. We don't have fancy DVD-to-Brain devices like the Matrix so we pretty much have to slowly learn things over time. I didn't learn programming in one night and you didn't learn playing piano in a week. Why shouldn't I wait a year before I can play a musical instrument well and why can't you wait four months before you get used to that new computer software?

Somewhere among all the rapid global communications via Transatlantic cables and real-time GPS-based shipment tracking information sent directly to your Palm Pilot and Blackberry, the lesson of "slow and steady wins the race" is being forgotten.

Mon, 10th Jul '06, 6:00 pm::

Happy B'day Daddddddy!!!!!!!

I've been trying to call India all day. No dice :( Once again my parents are going to think I forgot their b'day. It is technically impossible for me to forget anyone's b'day because I got 2 different reminder software/emails for each important occassion. Urgh.

Inspiration SchmispirationWed, 12th Apr '06, 11:20 pm::

While chatting online today, Tay mentioned something about inspiration. A lot of people love to be inspired. After all, nothing pumps more energy into your youthful ambitious bloodstream than the words of a "successful" achiever in your field. You can see what the pro has accomplished and as a rising star you want to get there faster and shine brighter. Or maybe you're not the alpha-male type. You just want to encapsulate yourself in the glowing warmth of inspiration and ascend towards the apex with a Buddhist sense of omniscient calm. After all, if they did it, so can you! And they said that repeatedly in their hour long self-realization speeches.

If you haven't figured it out yet, I don't like to be inspired. I'm not saying inspiration is good or bad, just saying if given the choice, I prefer not to be inspired. Just like wealth, hardwork, and genius, inspiration appears to be a very good measure of the potentiality of success. Clearly a person inspired to change the world has more chance of achieving that than someone who cares not one bit and has no inspiration to leave a mark on the planet. Just like how everyone who is rich is successful, how every person who works hard always wins, and how every genius is recognized for his or her intellect by the masses. Right? No, you say? I guess then inspiration isn't that good of a barometer either, is it?

Other than a momentary appreciation of self-worth and an inflated sense of personal capabilities, inspiration doesn't really do much, especially in the long term. Great, so you just watched an amazing play or read a touching autobiography. Or you went to see a famous CEO talk about how he grew his company from his garage to over 100 countries in under five years. Wow! Nobody can deny that such growth is anything short of impressive. But is it inspirational? Will you go home and realize "if he can do it, so can I?!"

Like this sarcastic Despair poster says, "If a pretty poster and a cute saying are all it takes to motivate you, you probably have a very easy job. The kind robots will be doing soon." Inspiration is just motivation to dream big. Shame on you if you did not automatically think you could turn your 5-person company to a 500-people multi-national and instead needed some guy to come in for an hour and teach you how to dream.

If going to a 30-minute seminar on financial planning inspires me to change my lifestyle entirely, I'd say I'm ashamed of how I was spending and planning money before. I should've realized it on my own that I was bad with finances instead of having someone tell me I've been wrong all my life in just half-an-hour. What I AM in favor of, is of course, education. If going to this financial planning seminar taught me how to better plan my retirement, more power to me. But if I need to go to a "Retirement-Planning Info-Meet" to realize that hey, someday I'm going to be 65 and I just might need money for food, then well, I'm a pretty stupid person to begin with.

Most people get inspired from momentary experiences. A speech, a book, a movie, a play. While I love change and always welcome something small changing my entire outlook on everything, I think if an intro-book about bio-genetics is all I need to inspire me to give up computers forever and take up bio-genetics as my new career path, then wow, where was I last ten years while the Human Genome Project sequenced the DNA?

Maybe, people will not feel the need to be inspired if they just keep their eyes open and see what's happening every single day. In today's world, you only get inspired if [a] some amazingly major breakthrough occurs (very very rarely) or [b] you have been living in a cave for years (most probably) and just realized that you can draw pictures on back of business cards and actually make money selling them!

I guess I feel the need to not be inspired for two reasons. Firstly, as I hinted above, the state of being inspired isn't very productive. There is a state of feeling excited and ambitious that IS indeed productive. If I realize I can connect my old and new database systems using a simple tool, I am not inspired, I'm simply excited and well, feeling quite ambitious about accurate data migration, because now I know I can. When I was inspired, I wanted to make the world a better place by writing an email client that worked in different Indian languages; currently nobody I know uses this software that took me months to code. When I was not-inspired, but rather just indifferent and in need of a small simple music player, I wrote one within days that well, just played music; over 2 million downloads in last six years and counting. Inspiration, big dreams, and castles in the sky haven't made me famous yet. Creating tools that make others' lives easy, help me though.

Secondly, and primarily, I like to dream my own dreams and I like to dream big. You cannot quite possibly insert your dreams into my head and somehow show me that I didn't dream big enough. That is just not possible. I've already thought of every single thing that I can quite possibly do as a human, rather as a super human. I've calculated what I need physically, mentally, and financially to climb Mt. Everest and definitely looked into forming my own Antarctic sub-station. I've thought about giving up everything I have so I can save the baby seals and I've considered spending my life travelling throug the villages of India teaching young and old about computers, math, and science. However, I'm not rushing to start work on my online digital-life-management suite or take up International Relationships to get a seat on a UN sub-committee for Economic Development of South-East Asia.

I guess you can call me uninspired and unmotivated. After all, I could potentially be doing any of the above yet I'm spending my spare time filling a big hole in my backyard every day so it stops looking like the surface of Mars. Lack of inspiration alright. I believe short of a few physical/mental limitations, pretty much anyone can do anything. Inspiration is basically you realizing that "HEY! I can do it too!" Well guess what? I've already realized that I can do anything I have my mind set on. And so can you! The sooner you realize that, the better it is. Inspiration is just a stage you have to go through to come to the best part of your life - actually doing things that you really want to do! Creating, molding, finishing. Above all, choosing. I choose to fix my backyard myself instead of helping cute little kitties at the pet shelter get their vaccines and medicines.

Right now, you too could be doing any particular thing from a selection of thousands of things that you have been inspired to do - writing songs, sketching meadows and hills, planning marketing campaigns to overthrow your competition, or joining a sports club. But instead, you chose to be here and read my blog. Why? Not because you've never had the inspiration to do something bigger, better, and nobler. But rather because given your particular situation in life, reading this 'blog entry is something you want to do. Inspiration can only tell you what you can potentially do. Freewill and choice is what actually determines what you do in life.

None of these inspiration-arousing speakers were talking about being inspired when they were struggling like you and I. They did not do whatever they did solely because someone inspired them or because they wanted to change the world. They did it and then realized, "Hey, maybe I can help inspire others to change the world like I did." I'm not the one to doubt anyone's intentions but it's like saying, "Hey! Now that I have completed this one particular crossword, let me give you all the words that I used so you can try to jam them into your own unique crossword puzzle and see if you can solve it." Then you go home all inspired because now you have words like seamlessness, fluidity, and ideation that you try to jam into every open row and column. Not gonna work. Get a dictionary and you'll have every word. The only way to win is to figure out which words you need, not which word you can force in.

In short, don't do something because you're blindly inspired to do it. Do it because that is the thing you want to do the most out of a list of million other things you can potentially do. And if that leads to success, more power to you. If it doesn't lead to success, at least you did something you wanted to do of your own volition.

Sat, 1st Apr '06, 12:05 am::

Welcome to the redecorated chir.ag 'blog! Last month I installed some pretty intelligent UI-Phase Analysis software on this 'blog that was meant to show me statistics about the type of people that read my blog - which country they are from, which brand of toothpaste they prefer, and how many times they wear a pair of socks before they wash them. One thing that surprised me was finding that the chir.ag 'blog readers are predominately male in gender with a male-to-female ratio of 98%! To correct this unbalance and to attract readers of the feminine persuasion, I've decided that I need to take major action to attract more female visitors like some famous sites are already doing it. As a first step, I'm changing the colors of this site to shades of pink. The whole site is pretty much totally pink and includes a cute-as-a-button main image! Enjoy.

Big Picture vs. Small PictureWed, 16th Nov '05, 8:00 pm::

Disclaimer: It saddens me to write this 'blog entry because I know my family will read it and won't like many parts of it. Sorry but you won't be able to use this 'blog entry to show off my success to everyone. I haven't run a marathon today and I haven't written any software this week that'll change the Internet. But it makes me happy to write this because I think it's time for a reality check for myself and for everyone that I love.

The Game: It's a little game I call Big Picture vs. Small Picture. This is not about truth vs. false. In this game everything is true for only true facts are admissible. I can testify that nothing in the following statements is even remotely false. So let's get started.

The Small Picture: Even though I have a great job in US, I hardly have any savings. I can't send any monetary gifts back home to India for my only sister's wedding in January 2006, even though my cousin in UK pretty much paid for his sister's wedding and more. In fact, I spend more money on my cats than I send back to India. Any time my relatives in US ask me to come visit them for holidays, I decline saying I'm saving up to buy tickets to India for my sister's wedding. I admit to them that if I don't save each month, I won't be able to pay for the India trip. Whenever someone suggests that I get arranged married like my sister, one of my first excuses is that I can't afford to marry. Word gets around and now, I'm officially broke in the eyes of my family & relatives.

I wasn't always "broke". In fact, three years ago back in college, I was supposed to be doing pretty well with my high-paying student job. Just earlier this year when I went to India I was even seen as what you might say... "rich!" But for some reason, not anymore.

Immediate Analysis: If you just look at the small picture, and it is in fact quite true, clearly then it would seem that I must be bad at managing money and/or I don't care enough about my family in India to chip in for even a small part of my loving sister's wedding expenses. Somewhere in the last few months I went from being pretty "well off" to living "paycheck to paycheck" and since I am in full control of my fiscal habits, I'm the one to blame. Thankfully, my parents are very understanding and have never demanded anything from me. Never ever. For this and more, I love them more than any son can. Nevertheless, it appears to all that I'm reckless and failing. Hmm. Let's look at this scenario from a different altitude.

The Big Picture: In this round, we forget all the pesky details of day-to-day life and think BIG. A little over five years ago I came to US with a dream... the ever-so-romanticized American Dream. After years of reluctance, my dad finally, at the behest of my lovely sis, told me to go forth and conquer the world. I'm sure he didn't expect me to wage military wars on the entire world, but instead wished me best of luck to achieve everything I wanted in my life. I flew in to the magical land of the United States of America all cheery-eyed and dreamy. My mom and grandma were glad that their kid was finally going to get good higher education - after all who doesn't want an esteemed PhD dork in their family?

I spent four years in Rutgers New Jersey, half of them living with my aunt and uncle who still do their best to support me whenever they can. Two bachelor degrees with highest honors later, I moved to sunny Florida for a once-in-a-lifetime chance to head the IT department of a small-but-rapidly-growing company. Now that I was finally living on my own, I could do things I've always wanted! A three-pc home-network? Check. True bachelor-style bean bags? Check. Cute little pets that my sister and I have wanted since childhood? Check! Everything's great. I go to India in April '05 and everyone is happy for me. I'm a success!

I notice real-estate prices in my area go through the roof, especially the properties near the Gulf. It's either buy now or be priced out of the housing market for decades. Having realized that without physical assets, creditors in US don't care about you at all, I pooled all my resources together for the big buy. In two short months, I bought a cute little house near the beach. Now next year when I try to consolidate my three variable-interest (eeek) student loans, banks will not reject me outright because I shall be in possession of the revered home equity.

Immediate Analysis: Big dreams necessitate disciplined efforts and uncompromising patience. It took some time but it appears to anyone that I've managed to fulfill quite a number of academic, economic, and personal goals. Overall, things are great if you ask me. No bad marriage, no expulsion from college, no criminal charges, no pending lawsuits, no housing troubles, no bad debts, no employment issues, and no chronic illnesses. I'm crossing my fingers and hoping things stay just as good. I'm one lucky son of a gun. So... if everything is this peachy, what's with the pesky details I mentioned in the small picture above? It's all about the proper focus.

a. Focus - Adjustable: You need a telescope to look at distant planets. You need an electron microscope to research how to better fabricate the carbon-nanotube fibers that strengthen the structure of the spacecraft that will get you to these distant planets. Notice the complexities between the two sentences. Dreaming, big-picture satellite viewing is simple. Even though it requires planning, experience, and wisdom, it won't get your hands messy. On the other hand, doing it, living in the nitty-gritties of actually implementing something is a dirty job. We dream in big screen but alas we live in the small picture. And the day you stop adjusting your focus is when you're stuck living a life you cannot take control of.

Very often, people, including yours truly, get so entrenched in one view, that they fail to see things for what they really are. While immediate events have immediate consequences, they also have long-term effects. How we handle situations in the short term impacts what will happen in the long term. My dad once told me that intelligence is the measure of how long does it take a person to walk into a room and understand everything that went on, is going on, and will go on. I propose a corollary that intelligence is the measure of how long it takes a person to switch from small picture to big picture and vice versa. What does this have to do with me you ask? Let's see.

b. Focus - Sticky: The problem with changing focus is that it doesn't want to change. We don't like to see things differently than we already do. It goes outside our comfort zone. You can get a new pair of running shoes today but it's so much more comfortable to spend that money on junk food and sit back & watch TV all evening instead of months of persistent training for a marathon. Notwithstanding my trifling excuses, I can buy a plane ticket to anywhere in the US today and have a great time with my family & relatives. It is so much better than putting $150/month extra towards the principal on my home mortgage. I used to be so free with my money; back in college when my primary goal was getting a degree. But I have to constantly get into the big picture view and remind myself that now I'm in the hardwork and struggle phase of life - these are the years I need to be saving up for the next phase of my life - graduate studies.

Selective Sacrifices: Nobody's saying that I need to give up on enjoying my life in order to maybe some day achieve my ambitions. If you saw me at the BBQ party at my house this weekend, you'd very well know I'm not giving up on any fun. However, I have given up on the extravagant lifestyle that I so lavishly savored during my pre-mortgage era. No more $500 impulse shopping bills and no more $100 on martinis. Just like no more cheese and pizzas till my health is back to my doctor's approved standards.

You cannot sacrifice today for tomorrow and you cannot spend everything today and have nothing for tomorrow. It's a delicate balance between the two and the sooner a person realizes this, the better. For me, a house is an investment. I was more than happy living in the 100 sq.ft. bunker in New Jersey. I don't need a mansion to keep me happy. To me, my house means that instead of spending and giving away like the young grasshoppa, I'm saving like the ant. Adhering to ancient wisdom is a GOOD™ thing.

Consequences for me: It's great that I have a house because when I decide to go for my PhD years from now and devote 5-6 years of my life to science, I will have a pool of savings I can rely on, without having to worry about food and next month's rent. Many people pursue PhDs right after their Bachelors, mostly living like poor college students throughout the course. I didn't want to. I wanted a break between BSc and PhD. I want real-world experience. I want to know that some day my research and inventions will actually make a difference. Hence, I'm glad to have a job where I face production scenarios every single day that demand novel theoretical solutions.

I've said this over a hundred times already that if I cared about money, I'd be selling plastic granules in Kolkata right now. It is a very respectful trade and many people I know back home live happily every after with their families by engaging in wholesale businesses. However, it is just... NOT ME. I'm a student of science, always was, always will be. Till the day I died I would regret the 8-10 hours a day I spent trading because that is not what I wanted to do. My problem is that while I can remind myself this on a regular basis, everyone around me forgets it. Then I get compared to my cousin in UK, whom I love dearly, but have entirely different ambitions in life from. His noble ambition, from my personal knowledge, was to provide the best standard of living for his family. He woke up each day knowing that he needs to make ends meet for his family and that it is up to him now. He is my personal hero because on an absolute scale, what he does requires a lot more dedication and perseverance than what I do.

Consequences for my family: If my parents wanted the same thing from me as my cousin, they would have made it very clear from day one that my aim in life should be to send $x to India every single month. But they didn't. They told me to get the best education I could and fulfill all of my dreams. They supported me throughout and I'm happy that they did. Yet, every now and then, people question if they did the right thing, if I am doing the right thing, if I still love my own family, if Brazil is going to win the next World Cup Soccer. People question, people talk, people raise unfounded doubts, and above all, people make mountains out of mole hills. That's what people do. And that is when things go sour. And that is why I feel so compelled to write a pretty revealing personal 'blog entry like this one to make things perfectly clear.

I feel like I've always been lucid and honest to my family and relatives, in fact, to pretty much everyone that asks me a question upfront. I never lie about serious issues though I may lie about how many girls I've kissed ;)

Honest Ramblings: I feel excited to tell my family every other day that OMG I LOVE YOU. There is nobody else in the world I love more than you guys. If something unfortunate happened tomorrow and my family needed anything, I would take the next flight to India to help out (after notifying my work of course; not gonna run away boss man! Don't worry). But I wonder, since when did I become a BAD son? I thought I was doing everything right in life - in the big picture sense. I never said I was perfect and I was pretty much pathetic during the months of August-October this year when I was down with god knows every illness known to pirates in the 1700s.

Penultimate Moanings & Whinings: It's no surprise that a single person living alone, far away from all family and friends, will get pretty down and depressive when faced with prolonged chronic illnesses that prohibit all forms of social interactions. In English, that means hell ya, I was sick, alone, and did I mention sick?! Of course, I was sad and weak. I couldn't even hang out with my friends! I'd have to be pretty crazy in the head to actually enjoy any of that. Worst of all, I spent all my savings on medical bills and ended up breaking my promise to my sister that I'll do my best to send her a small gift soon. I'm sad that I broke a promise but I'm crushed that people treat me like it's my fault that I had all these medical expenses. Ok... so I don't have an extra $1000 lying around anymore. Does that mean I'm a loser or a weak person altogether and need support from every person who walks by just to hold myself together in life? HELL NO!

The Winner: Life's a game. It's a balancing act - between truth and false, good and evil, right and wrong, big picture and small picture. Who's the winner in the match Big Picture vs. Small Picture? Neither side exactly. Only the ones who can juggle the two fluently will "win" the so-called game of life.

Sometimes, people stop juggling. If the people who love me the most, don't stand back and take a look but instead suspect my intentions, capabilities, and strength, it's gonna be an uphill climb. I can never stop loving them but I'm kind of disheartened that the ones closest to me assumed that I've somehow forgotten what's important. I don't think at this age and stage in life I have to give any explanations on why I spent $300 treating my cat's bleeding foot. I don't expect anyone to understand WHY I like my cats, but I do expect them to not to criticize me for the day to day decisions I make in my life.

It comes down to the classic "I'm old enough" debate now. I'm old enough to know what I'm doing so please stop judging, taunting, and sneaking in remarks about what I do or not do. If I'm about to make a major decision, I will always ask the people I look up to. For instance, I had a long chat with my dad late last year about buying a house. Taking his advice, I didn't buy a house then. However, I revisited the issue a few months later when my situation had changed and ended up buying a house that I realize is an even better fit for me. I'm not saying I made absolutely the most perfect decision ever (man... my roof still needs repairs). I just like to think that I made the most sensible decision given the circumstances and stood firmly by it after weighing in the positive and negative consequences. The positive consequences being that I'll build equity that will help me later in life and the negative being that I won't have lot of free money lying around every month anymore.

If you've read this far then it's only natural that I thank you for paying attention and listening to what I had to say. Know in your heart that I love you more than anything in the world and that I will do anything possible when the need be. But if there is no crisis, then why not let me pursue my dreams and have some fun on the way? And for flying spaghetti monster's sake, stop worrying about me! I'm doing pretty damn well.

PS: Please send me money. I've been eating cat food for two weeks and have no money to feed myself or my cats now.

PPS: Just kidding about the cat food. I'm still a vegetarian :)

PPPS: Don't forget the money!

Sat, 15th Oct '05, 5:35 pm::

I'm pretty excited to release a software library for people who program in PHP, called - PDFB Library. PDFB Library makes it very easy for even novice PHP programmers to generate high-quality dynamic Acrobat PDF files. The library allows you to take any PDF file, then overlay text, images, and barcodes (Code 3 of 9, Code 128, Interleaved 2 of 5, and UPC-A), and generate a new PDF dynamically. Obviously non-programmers wouldn't be interested in something like this but for programmers that have to write hundreds of lines of code just to make a decent invoice or packing slip printable, PDFB just might save a lot of time. I'm releasing it for free hoping that there'll be thousands of others like me who would benefit from it.

Mon, 30th May '05, 11:25 am::

The so-called Online "Hackers" lately have just been getting more and more retarded. I'm no hacker and have no intention of becoming one but if I wanted to seriously get into the illicit world of cracking 'n hacking, here's a few things I would do, a la The Top 100 Things I'd Do If I Ever Became An Evil Overlord:

Top xx Things I'd Do If I Ever Became An Evil Online Overlord (and growing):

  1. I would not hang out on online forums called DigitalGangsta.com, HackerzCrew.net, or anything like NetSupremeMafia.com. I would however create a forum somewhere tucked inside www.cauliflower-salads.com.
  2. I would not use the #crackersonly channel in IRC for communication. I would write a very simple software to hide messages in spam emails using Steganography and also implement some decent form of encryption.
  3. Read the full list here.

Story of my work lifeWed, 25th May '05, 8:30 pm::

Here's the story of my work-life. Some guy explains it from his point-of-view, which is quite similar to mine. This is what happens to me, and pretty much everyone else in the world involved with making enterprise software.

Every project I take up, starts with a tiny minor requirement, "Chirag, we need you to make something that'll help us pay our bills on time." Sounds so simple that a middle-school kid can do it in Excel for Mac between soccer practice and karate lessons! Just put a list of all the current bills in one sheet and type in 'Paid' next to it when you pay. It's as simple as that. But who enters the list of bills? Obviously some from the Purchasing Department. However, they don't want to make a purchase order in paper and have to maintain the list of incoming bills on computer, so obviously, the solution is to computerize the Purchase Order system also. But wait, now that we have the POs in the database, we can easily use the data to help with taking the stock of our inventory because we know what's coming in.

Now all the system needs is something that lets you deduct the stock when we make a sale. Fast-forward tons of meetings with the heads of Production, QA, Regulatory, Accounting, Sales, and of course, Management, and where do you end up at? A full-fledged inventory control system with MRP features that integrate with a live e-commerce website and provides real-time stock figures. It took a while to make but everyone's happy with the system, right? Well almost. The system does everything it promised except one thing - help us with paying our bills on time! Due to some communication gap that occured in the initial stages of design, nobody realized that we do not get billed for each Purchase Order individually, and any bill can be towards a partial PO, full PO, or multiple POs. Sorry guys, if only you had told me this before... oops!

The guy in the link above explains this all quite well. I just wanted to share my experience. And it'll only get more complex 'n confusing as our company grows. Funny thing is that I love it :) Keeps my brain sharp. Of course, just like the guy above, I am not complaining about my job. I'm just saying how and why things take so long and how the simplest thing can and often does end up being so complex. Truth is, there really isn't any ERP Zen in the world. If you ever find it, lemme know! One thing I that I do often is to understand the user needs and find out a way to simplify them instead of just doing exactly what the user wants. Kinda like this guy.

Sat, 30th Apr '05, 3:45 pm::

You know what I'm sick of? Family/relatives/friends who treat me solely like a free computer help desk! Sure, I know computers and work with them and don't mind offering important advice every now and then, but if the only time you EVER call me is when you need computer help, guess what... stop calling/emailing/IM'ing me because I don't want to hear about your broken software or hardware - especially since when you bought your crappy computer, I advised you against it and asked you to go get a good Dell with 24/7/365 tech support but you chose to save $50 instead. I AM NOT YOUR FREE HELPDESK. MOVE ON! Or maybe, once in a while, drop in and ask me how my life is going or if my trip to India was good or not. I DO NOT WANT TO TEACH YOU HOW TO BACKUP YOUR DVD DRIVES FOR THE SIXTH TIME.

Let me be clear. If I am a part of your family/friendship then I will do my best to help you out in any way I can - be it computers, helping you paint your apartment, or helping you move to your new house. I am not a bad lazy person. If you need help, feel free to call me anytime. But if 100% of your communication ONLY pertains to asking for computer help and never once have you asked me about my day, family, job, kitties, or what's new in my life, then PLEASE STOP IT. I DO NOT WANT TO TALK TO YOU EVER AGAIN. And I don't care how closely related you are to me. Thanks. That will be all.

Sat, 12th Mar '05, 10:10 pm::

Hmm.. Icky healthy food I have in my apartment or tasty unhealthy fast food from somewhere... ahhhhh decisions decisions! Actually the problem is that I'm too lazy to cook (read: heat) something and even lazier to actually drive out somewhere to get foood. I'll probably just sit and watch TV till it's time to go to bed...

Anyways, went to work today to setup a new software system. It's all done and hopefully we'll start using it soon. It's pretty cool to go to work on a weekend because everything just feels so different. It was very quiet and I got a lot of stuff done too. But then if I worked like this everyday, I'd get crazy from not having any human interaction. It's great to mingle with coworkers every weekday but once in a while, it's awesome to work without any distractions.

Tue, 15th Feb '05, 1:10 am::

Had a pretty good day today. Lotsa minor software troubles at work. Left early to get my car serviced for the first time. Even got a full carwash. Then got a haircut, picked up a bouquet of flowers and a nice bottle of wine to go see Jessica. We went to Macaroni Grill for dinner and then later chilled for a while in her apartment playing with her kitty Trixie. Had a really good time. But I'm tired 'n sleepy now. Going to bed.

Fingerprint Matching 101Sun, 13th Feb '05, 12:30 pm::

I spent yet another weekend pouring over computer algorithms. This time, it's fingerprint extraction and identification. The whole topic came up from my discussion at work. I foolishly boasted that I could design a system that will let any of the 10-15 people use any of the 10-15 computers to log on to their user account by pressing any of their 10 fingers against a little Fingerprint Scanner. So in theory, if my boss's computer was busy, he could walk up to my computer, press his finger against the fingerprint scanner and it will automatically log him into the new business software that I'm gonna make.

So of course, now that I've told everyone it's possible, it's time to figure out how. The lazy computer programmer in me wants to spend a little money, buy something like the VeriFinger Standard SDK, hook it up to one of the cheap fingerprint scanners, let it do the scanning and recognition, write a small application to manage it all, and call it a day. It won't be cheap but it'll work pretty realiably. A lot of companies around the world have done it. The mathematician in me wants to do it all myself. It's not just the thrill of writing it on my own, it's the additional features that I can add on to it. So, if you are given the task of writing a software to do all of this from scratch, how would you go about it?

It's a known fact that every individual has absolutely unique fingerprints on each of their ten (or so) digits. If you want to design something that can let anyone use any finger to log on from any computer, you need (1) software + scanner on every computer, (2) a server that has the database of every person's every finger, and (3) some way of reliably matching a finger with the correct person no matter what computer they are on. So now we can break this whole operation into two phases. The first phase is the setup phase when we add each users's fingerprint to the database. And the second phase is application phase in which we recognize the user when they press their finger against a scanner. In either phase, a fingerprint has to be read, converted to a form that can be understood by a computer, and transferred to the server. Only difference is that in the first phase it is stored on the server and in the second, it is matched against every existing fingerprint on the server.

What we have are two different operations: Extraction and Identification/Recognition/Matching. Extraction is the process by which a fingerprint is read from the scanner and specific unique qualities about the fingerprint are extracted from the image. Identification/Recognition/Matching is simply looking up the server for other fingerprints with similar unique qualities. So how and what do we extract from the scan of a fingerprint? Look at your own index finger right now or if you don't have any fingers or fingerprints, look at this image. The first thing we notice and actually don't even realize is that the lines are actually ridges and valleys. The ridges are the thick bright protruding highs and the valleys are the thin dark low-lying crevasses. It is this pattern of ridges/valleys that is different for each person's each finger.

The first thought that comes to mind is that, if this pattern is different for everyone, just store a picture of their fingerprint and match it up against the database. Storing a picture to a database is easy. But matching up a picture of a fingerprint against a database is not. How do you match? Based on what? One idea is to just overlay the scanned fingerprint on to each of the 1000 fingerprints in the database and compare each pixel - if 95% of the pixels match, we have a match. That is how the older fingerprint matching systems worked. It works decently in identifying criminals, especially if you can wait 2 hours for it to match with 1000 fingerprints. But it's not fast enough for instant identification and poses a lot of problems, like what happens if your finger is positioned slightly to the left and/or at a 5% degree angle. It wouldn't even match against your own finger with 5% margin of error. So people have moved from the picture (raster) matching techniques on to the marker (vector) matching.

Instead of matching the whole fingerprint against 1000 others, why not extract unique characteristics of each finger and store them. This is called Minutiae Matching. Look at your finger again. If you notice carefully, you can identify many types of markers where ridges end, ridges bifurcate into two ridges, three ridges form a delta etc. If we can somehow chart this information like a graph or a map, then we can store this in a database much more easily. The information stored in the database, if read in English would seem something like this - "At the center of the fingerprint is a 'delta' and 5mm away on the right is a 'bifurcation.' 7mm below the bifurcation is an 'island' and 3mm to left of the island is another bifurcation." If this information is stored in the database for my right index finger, then when I press my right index finger against a scanner, the software asks the server to match my finger against all others who have a delta near a bifurcation and must have an island. This instantly narrows down the search only to those fingers which have deltas, islands, and bifurcations. Then it looks to see if they are positioned similar to my finger.

So now the extraction problem is just to find where the ridges end, bifurcate, or form deltas and map them on a graph. It's like saying plot Singapore, Mexico City, and Cape Town on a map. Not very difficult when you look at the big picture. The algorithm to extract markers looks at every pixel and it's neighborhood pixels. If they satisfy some special characteristics then it assigns it a marker type (delta, island etc.) and stores it in the database, relative to the position of other markers on the same finger.

Now comes the hard part - matching a finger's markers against that of the 10,000 in the database. If you think about it, it's actually an age-old problem that the ancient Greeks like Ptolemy busied themselves with - finding constellations. You must've heard of the constellation Ursa Major (The Big Dipper) or my favorite Ursa Minor (The Little Dipper). Astronomers and astrologers for centuries have stood under the night sky and identified tons of constellations simply by looking up and observing. They didn't need no fancy computers or telescopes to find The Libra in the night sky. We humans have built-in pattern-matching and pattern-recognition abilities that seem so natural to us but it is near impossible to replicate these on a computer.

Given a night sky full of stars, how do you find a constellation you are looking for? You can start by looking for small groups within the constellation. Maybe two of the stars in the constellation you are looking for, are really close to each other. So scan the whole sky for two stars very close to each other. If you find such a pair of stars then look for further signs - like is there a third star directly above or below one of them but at twice the distance. Stuff like this is what we humans are really REALLY good at. You don't even realize that you are performing one of the most difficult patterm-recognition operations right now - reading text from a computer screen. After all, OCR is big business. So is recognizing sounds (especially voice), handwriting, images, and videos - things that we so easily discern and detect.

Anyways, back to recognizing fingerprints. After the extraction process, the software will have to form a constellation with all the markings on the fingerprint. In the setup phase, this is stored on the server and in the matching phase this is what is searched for in the server. Searching a constellation of markers within each of the 1000 fingerprints in the database can be done in the following way. One of the things we need to realize is that due to the randomness of the physical act of positioning a finger on a scanner, you will almost never get two exact readings. However, the marker data in the middle of the finger will be much more accurately readable than the markings on the fringes or towards the sides of the finger. So give more importance to a bifurcation in the middle of the finger than an island at the far left - after all, it could be just a normal fully-connected ridge but the person might not have pressed the finger fully on the scanner.

My extraction method would be to start towards the middle, spiral out in a clockwise direction and note the position of every marker. Note the distance between each marker and nearby ones and store it in a cyclic data format. Now search the database for only those fingers which have similar markings in the center as there is a very high probability that center readings are accurate. Then narrow down the list to only those with similar markings near the immediate area surrounding the center. Keep narrowing down the search till you have at most 5-10 fingerprints. Then just cycle through each of them and compare each of them to the reading. Leave some margin for error, take into account the rotation and position of the markers and we should have a pretty damn reliable match. If you don't account for rotation or slight movement in position, you will almost always get an incorrect reading.

Note that throughout this discussion, we have concentrated mostly on the 1:N and not the 1:1 matching. 1:N matching means that one fingerprint is compared against N (10 or 10,000 or 10 million) fingerprints to identify the person. This is mainly used for easy identification, say to let people into a Government building. 1:1 matching is used for secure authentication - that is to verify that a person really is who they say they are, say to allow you access to your own safety deposit box in your bank. The 1:N method is geared towards faster searching and the 1:1 method is geared towards more reliable matching. It is quite difficult to design an algorithm that performs equally well in both situations for you can either do it fast or do it accurately, rarely both.

Anyways, I'm still writing algorithm for the pre-extraction phase right now. Before you extract markers, you gotta convert the true-color ridges and valleys to two color lines and gaps. Using a very simple algorithm, this is what I've come up with so far. In the next few days, I should get my own fingerprint reader and then I'll improve upon this code and do more cool things with it :) If I'm successful, then maybe I'll open-source the code for scanner and recognition and make it easy for others to use it in their applications. While I'm almost positive I won't be able to make it as good as these guys, if I make it sufficiently workable, it'll certainly make them review their pricing. These people have been doing this for years and have received national awards so I don't think I'm gonna be much of a competition (neither do I care to be). After all, I've only known about fingerprint techniques for less than 24 hours now :) But it seems like the whole scientific world has been at it for ages.

I still dunno what/how I'm gonna be setting this up for my work but all I know is that I really want to. Good thing is that I can add this feature to my work software anytime so even if it takes me months that's perfectly fine. Let's see what happens first once I have a fingerprint scanner sitting on my desk.

Solving World's Greatest Mathematical ProblemsSun, 6th Feb '05, 3:05 pm::

So I spent this entire weekend trying to discover the world's first 30-digit Keith Number with no luck. It's kinda like Fibonacci Numbers. Basically, take any number and write out it's digits. Say we pick the number "123" and then write out 1,2,3. Now add all the digits up and put the sum at the end of the list. 1+2+3 = 6, so now the new list is 1,2,3,6. Now drop the first number and add the rest and put it at the end of the list again. Drop "1" and add 2+3+6 = 11. So now we have 2,3,6,11. Of course, you can keep doing this till infinity. Now the fun part happens when you pick a number like 197. Let's see: 1,9,7. Then 1+9+7 = 17. So we get 1,9,7,17. Dropping "1" and adding the rest we get 9+7+17 = 33. Drop 9 and adding 7+17+33, we get 57. Then next we get 17+33+57 = 107. Next we get 33+57+107 = 197 -> The same number we started with!

So if we get the same number as we started with, then it is a Keith Number. There are only two 3-digit Keith Numbers - 197 and 742. There are six 2-digit KNs - 14, 19, 28, 47, 61, 75. Try it for 47 -> 4,7,11,18,29,47! But it doesn't work for any other numbers. 48 -> 4,8,12,20,32,52... No "48" in this list. A few 4-digit KNs are: 1104, 1537, 2208, 2580 etc.

Keith Numbers are very rare and only about 90 of them are known. The largest known Keith Number is 988242310393860390066911414 (27-digits long). We don't even know if there are infinitely many Keith Numbers (though it seems so). There is no award or anything for finding new large Keith Numbers but there is a huge prize (and worldwide glory) for finding out a simple method for generating all Keith Numbers easily. Basically, the problem of finding Keith Numbers can be likened to solving the Knapsack Problem. Of course, if you solve the Knapsack Problem with a simple method, then you've just discovered a method for solving the P=NP problem which has a $1million award from Clay Mathematics Institute.

While I don't understand the whole P=NP problem as clearly as I want, I do understand it enough to be amazed by it. The biggest mystery in computer science right now is whether P is equal to NP or not. So what is P and NP? First of all, Computer Science (my primary major in college) is not about how to make PowerPoint presentations or write financial database software for the stock exchange. In the simplest terms, Computer Science is very much like pure Mathematics - studying problems and solving them using simple equations. Of course, if it was just solving math problems, then it would be called Math and not CompSci.

Computer Science normally deals with a different type of problems, that which involve a lot of calculation and especially estimating the time it takes to calculate. E.g., if someone gives you 10 different business cards, how do you sort them alphabetically by a person's name? Well one simple way is to put all the cards on a table and go through the list and pick out the ones that begin with A, then B, then C till you are done. You basically went through a list of 10 cards, 26 times (A to Z - 26 letters). Of course, you'd be a lot less than that, since everytime you pick a card, there's one less left in the pile. Anyways, this is a very simple sorting algorithm. Computer Science deals with sorting algorithms a lot.

Another thing is searching. If someone gives you 10 business cards and says find "Chirag Mehta." Well, you'll have to go through 10 cards at most to find mine. If it's a one-time thing then it's fine but if you often have to find a business card from a bunch of business cards, you're much better off alphabetizing them once, so that next time someone asks for "Steve Buscemi", you can directly jump to the "S" pile instead of going through all the cards. Computer Science also deals with searching and inventing better methods to find stuff from a bunch of stuff. This is why people love Google so much - it makes easy to find stuff, using their own special search methods. You just type in "flying pigs" and it looks through billions upon billions of documents to find pages which have the phrase "flying pigs" in it and returns those pages within milliseconds. Amazing isn't it!

So what does all of this have to do with P=NP problem and the million-dollar award? Well, after decades of research, computer scientists have found out that there are some problems like searching, sorting etc. whose answers can be solved within a fixed amount of time - seconds, hours, days, centuries whatever. Basically, if someone tells you to find "Chirag Mehta" from 1000 business cards, and you can read 10 a minute, it'll take you 100 minutes at most to find the card. If it was 1000 billion cards, it would take you 100 billion minutes. So the problem of searching has a fixed execution time and it can be very accurately estimated. Same goes with sorting.

However, there are tons of other problems out there, where we can't even estimate how long it's going to take to solve the problem, let alone solve the problem itself. For example, let's look at the Travelling Salesman Problem. Suppose you have to go on a business trip to 3 cities and you can go from any city to any city, what is the cheapest round-trip route that visits each city once and returns to your home city? In other words, if you live in Mumbai, and have to go to London, Beijing, and Los Angeles, what is the cheapest round-trip route that will visit each city once and end up at Mumbai? Of course, you'd need a list of all the airfares, say Mumbai to London (or back) = $100, Mumbai to Beijing = $50, Mumbai to Los Angeles = $200, London to Beijing = $50, London to Los Angeles = $100, Beijing to Los Angeles = $150. Let's assume the reverse fare is same in all the cases, so London to Mumbai equals Mumbai to London equals $100. Currently there is no way accurately find the cheapest route without going through all the combinations (Mumbai-London-Beijing-LA-Mumbai, Mumbai-Beijing-LA-London-Mumbai, Mumbai-LA-London-Beijing-Mumbai etc.)

So you think what's the big deal about having a simple computer go through all the 20-25 combinations and finding the best? Actually no big deal, until you increase the cities from 5 to 50. Or 50 to 5000. Then even the largest supercomputers in the world combined would take centuries to find the solution. Basically, there exists no way to predetermine how long it will take to solve the travelling salesman problem for x cities. We can't say if x = 5, then it'll take 5 seconds and if x = 10, it'll take 10 seconds. We can't even say if x = 5, then it'll take 25 seconds and if x = 10, it will take 100 seconds. Truth is, we don't know. Of course, if you are British Airways, you do want to know, otherwise how else are you going to schedule the flight route of 500 airplanes around 200 airports around the world? Even though the perfect solution doesn't exist, computers can do a pretty good job of going through a billion or so combinations and finding out the best routes. Yes, they cannot go through all the possible combinations, but in practical cases, going through a few million combinations results is pretty good, say as opposed to the 1950s when all the flight pattern/routing was done manually! Without the special flight-routing computers, the whole airline industry would be in chaos because nobody would be able to schedule flights between cities where there is most demand, most people, highest airfare etc.

While the airlines are using computers to plan flight routes, they are doing it as best as they possibly can, not absolutely the best. It's like me going out and asking 100 girls on a date and deciding to marry the one I think is the best. This doesn't mean she is "the one" because I did not ask the other 3 billion girls. It just means she's the best of the ones I asked. Similarly, airlines plan their flights out of the 10 billion combinations instead of the 10000000 trillion possible options. Still 10 billion is better than 100,000. And yet, it is not as good as 10000000 trillion. So there is absolutely a LOT of room for improvement.

Another similar problem called the Bin-Packing Problem, which is closely related to the Cookie-Cutter Problem. If you have 10 items and you need to pack them into 3 bins, such that no bin weighs more than 100lbs, what is the best way to do it? Of course, trial-and-error might work with 10 items and 3 bins, but what if you are the world's largest steel manufacturing company and want to make sure that you can ship the most amount of steel bars of different sizes into trucks while never putting more than 10 tons per truck and of course not overflowing any truck's container. Or if you are my mom and are making cookies. You make a big rectangle piece of dough and then use a cutter to cut fancy cookie shapes. How do you make sure you use as much of the dough as possible and not waste any? Or if you are the world's biggest cookie company and have the same problem. How do you solve it?

Turns out, there is no exact "optimal" way to solve this problem in a fixed or predictable amount of time. In other words, there is no polynomial time method to solve any of these problems. And now comes the beauty of computer science -> all of these problems, from finding Keith Numbers to Knapsack Problem, to Travelling Salesman Problem to Cookie-Cutter Problem can all be solved if even one of them is solved! Oh and the game of Minesweeper also falls into this list. So if you can find a perfect way to beat Minesweeper each time, guess what... you've just solved the world's greatest computer science problem and would most likely get the $1mllion award.

Well I've still not explained what P=NP really means. P means that the problem is easy to solve. Easy doesn't mean you can do it in your head. Easy means it is possible to do it in a fixed time, like searching, sorting etc. NP means that a solution to a problem is easy to verify. That is, if someone gives you a Keith Number, you can easily check in a specific amount of time whether it is a Keith Number or not. Or whether the flight-route from Mumbai-London-Los-Angeles-Beijing-Mumbai covers all the 3 cities and starts/ends at Mumbai. So what we don't know, is whether problems that are easy to verify can be solved easily or not. That is whether NP = P. Currently there is no known method for solving any of the problems I stated above in a fixed/predetermined amount of time.

Most scientists believe that P is not equal to NP and a lot of them believe that given the current state of knowledge in computer science and mathematics, we can't really answer this question. We need to learn a lot more and look at this P=NP problem from the different angle in order to solve it. Maybe that's where computers that work using Quantum Mechanics could help. I don't know much about Quantum Computing so I guess that I can take care of next weekend :)

Hope you enjoyed my little computer science introduction course. Oh and according to my calculations, looking for a 30-digit Keith Number involves going through about 10^30 (10 followed by 30 zeroes) numbers. Currently, I can verify over a hundred 30-digit numbers per second, about 10 million a day. That's 10^7. So it will take me 10^30/10^7 = 10^23 days to find all the 30-digit Keith Numbers. Suppose a million people join me in finding the 30-digit KNs, and 1 million computers run my software, it'll still take 10^23/10^7 = 10^16 days. Which is about twice the age of the Universe! Of course, if we involve all the 1 billion computers on this planet, and instead of doing 10 million a day, find a way to speed it up to 100 billion a day on each computer, then it'll take 10^30/10^11/10^9 = 10^10 days, which is still approximately 27 million years.

So how the hell am I gonna find a 30-digit Keith Number (if it even exists)? By pure luck :) My program just randomly generates 30 digit numbers and tests to see if they are KN or not. It has gone through about 8 million 30-digit numbers already. Of course that's like looking into a bucket of seawater from the Florida coast order to find the pearl necklace you threw into the Indian Ocean a million years ago. There's a VERY high probability that you won't find anything, but hey... who knows, you just might!

Oh and also I think there's more chance of me winning the World's Largest Powerball Lottery than finding a 30-digit Keith Number, even though I haven't even purchased a lottery ticket! But I guess it's good for my computer since it's getting some good exercise now :)

Mon, 10th Jan '05, 8:15 pm::

I am officially a dumbass. Having foolishly destroyed my keyboard a few days ago, I decided to go to WalMart after work today to get me a new keyboard. Here is the list of things I got from WalMart tonight for $120: Groceries, Wine, Toothbrush, Vitamins, Cough Drops, Kitty Litter, Kitty Food, Water, 2 Sleeping Bags, Gasoline, and a lil junk food for my friends when they come down here. Guess what I didn't get... that's right! A new keyboard! Oh well, I have 3 computers in my apartment so I'm using one from my server right now.

Anyways, things are good as usual. Work is exciting. Got a few computers to setup and a few websites + presentations to complete. After that I get to plan and develop my new awesome software.

Tue, 23rd Nov '04, 9:40 pm::

You know nothing much happens in my life when I don't 'blog. Lately it's been the same routine. Wake up, go to work, come home, play with Giga and Tera, go to bed, wake up in the middle of the night because Tera is purring RIGHT NEXT TO MY EARS, try to sleep, wake up again because Giga is licking my hands, try to sleep, rinse, repeat. But no matter what, I love it. It's been so long since I was genuinely so happy. I look forward to coming home every single day.

Anyways, last night was pretty good. My friend Jessica was going to hit the bars in Tampa with her friend Dana from Kentucky. I drove up to O'Briens and waited as the crowd slowly poured in. Not a lot of casual drinkers on a Monday night - mostly the addicts stroll in ;) Anyways, we just talked about random stuff and had drinks for hours and hours. At two we decided it was time to eat something. Went to IHop next doors and had some good midnight snack. I went to bed around 3am. Woke up at 6am with the worst headache ever! I don't think it was the three Long-Island Ice-Teas though. It was just the total lack of sleep.

So all day at work I was walking around like a zombie. I got home today at 5:30pm and went straight to bed. I took a 4 hour nap and here I am now. My whole sleep pattern is so foobared. It's hard to party and be regular at the same time... It's either I grow up and be all matured and hit the bed exact time every night OR I just live my life and go out and do stuff whenever the opportunity presents itself. Tomorrow, work ends at 12pm for Thanksgiving Vacation and hopefully the coworkers and yours truly are going to sneak into multiple movies ;) Things are great overall. I don't remember last time I was so relaxed about life in general.

Only one major news - I'm making this REALLLLLLY big software for my work starting January. It will take me 6-9 months just to write the basic modules. However, once it's in place, it'll make a BIGGGGG difference to how we operate on a day-to-day basis. There's a lot of cool things I've planned for this software. Let's see if I can create all the features... And that's the news from St. Petersburg, Florida. Back to you Alex.

Wed, 6th Oct '04, 8:45 pm::

No matter what good things I say about my job, something happens right after that tops it all. So after taking me to lunch for my birthday, today my boss and buddies Brian 'n Scott at work, decided to take me out to dinner. We went to this cute little restaurant in downtown St. Petes near the ocean-front. It was a British-India style restaurant with a wide variety of dishes on the menu. For me, it was Chana Masala. For them it was Chicken Tikka, Pasta, Salad, and Chicken Burger. We talked and chilled for about two hours and topped it off with yummy deserts - Chocolate Volcano for me :)

One of the reasons I love this job is not just the atmosphere but the real work itself. Right now I have to setup our inventory with barcodes. So here's the plan. We purchased Symbol PPT 8846 barcode scanner. It's runs WinCE 4.1 on Pocket PC x86 hardware. This tiny little device has a built in scanner, wireless ethernet card, and support for Microsoft .Net Compact Framework. It used to be that if anyone wanted to program devices like barcode scanners, remote controls etc., they would need to interface directly at the low hardware levels with the devices. Not so anymore. I can write full-fledged Visual Basic.Net or Visual C# applications that will run in the tiny 32mb ram scanner and perform all the required functions smoothly.

So basically I'm gonna have to program it in VB.Net to talk to our internal web server running WAMP (Windows, Apache, MySQL, PHP) over 802.11b network using XML. Here's what will happen: Anytime the scanner scans a barcode, it is sent to the web server that process the input and sends back an XML document which will be parsed by my VB.Net software and displayed to the user for further input. So basically, I can walk around with the device and scan random barcodes of all our inventory and simply enter the physical quantity of stock and all the computer systems will be automatically updated. This is by far one of the coolest things I've ever worked with. I can barely sleep at night because I'm thinking about what I want to program the next morning. Eight hours of coding a day is simply not enough. I want more!

Sat, 18th Sep '04, 10:50 pm::

Just got back from Orlando. Met Jeff, owner of Dilly. He's an awesome guy to chill with. Then met my long time internet buddy Derek and his girlfriend Sabrina. It was great to see both of them. After Derek's apartment was destroyed by Hurricane Frances, he decided to move to Orlando. Too bad Orlando is two hours away from me. Otherwise it'd rock to chill with these guys all the time. Anyways, really tired now. Just gonna get to bed soon. Tomorrow I have a special software to make for my dad!

Sun, 12th Sep '04, 10:00 am::

I just launced a new software + website: ChimeNote! Check it out yourself and feel free to spread the word.

Mon, 21st Jun '04, 6:15 pm::

Had my first day at work today. It was pretty good. Met a lot of new people, had lunch with my boss/client, set up my new computer, and two other computers. In the beginning my work is quite simple, just setting up a systematic environment for everyone but pretty soon I will be making some spiffy new websites, software, and systems. Now I've the whole night for myself. So let's see what I gotta do...

Fri, 9th Apr '04, 10:40 am::

I leave for the airport in a few hours. Without a car it's a long way to JFK Airport, NYC. Basically I gotta take the NJ Transit train from New Brunswick to Penn Station NYC. Then take Long Island Rail Road to Jamaica station. Finally take the AirTrain to JFK. Probably gonna cost me $50 just on the commute to and from airport. My flight's at 6:55 pm so I better leave by 1pm to be safe.

I have an exam on Monday that I haven't studied for at all. Will try to read on the flight or most probably on the return flight. Got my interview with my client on Saturday. Both of us are hoping that I join them so at the moment odds are in my favor. But let's not be too sure. His is a small but growing company that doesn't have a specific need for a software developer at the moment. However he's a forward-thinking man and told me he'll definitely have work for me in 6-7 months, just about the time I intend to join him. So everything looks good.

Wish me luck!

Tue, 2nd Mar '04, 6:40 pm::

It's not everyday that you get a phone call from a sleazy spammer. I was just filling out some forms and this random guy (apparently) from Miami, Florida calls me up. He asked about my BotBlock service, or rather how to override it. Turns out he wants to pay me "any amount you want" to make a software that can bypass the image-verification (CAPTCHA) used by TicketMaster. He told me his "competition" was overtaking him and he was willing to pay me $5,000 to make such an application. Best of all, if I was feeling lonely, he could send me a hot woman any time of the day. I politely told him, "I'm sorry Sir but I think I'll have to hang up now. Please do not call again."

The world of mafia and money launderers of the yester years used to be a world of machismo, bravado, and to a certain extent glamour. While the neighborhood mobster is mostly a thing of the past, street-corner spammers are dime a dozen and each is trying every under-handed trick to oust the other. There is nothing smooth or sauve about trying to peddle cheap sexual aids or promote low-budget vacations to islands that don't exist. I think even the spammers themselves will agree that they are almost the scum of the planet, slightly above child molestors and rapists.

Tonight I had this guy asking me if I could write a ground-breaking software (image recognition is not cakewalk) so he can hoarde tickets illegally and spam mailboxes around the world with filth. Of course I said NO! I will never EVER on any conditions do anything to promote spam. Hell I wrote BotBlock to prevent it! Come to think of it, the genius asked me how to bypass BotBlock! I wanted to say, "What the hell do you think I am??? As dumb as you???" But then, last thing I want to do is piss off a spammer who will only enjoy harassing me. So I just acted polite and hung up.

I have a decent job and a bright career to look foward to so even the slightest dealings with these tarts will taint me forever. But what about the recently laid off, newly-married programmer who has bills, loans, and rent to pay? That's the guy to watch out for. I think the blame lies not only with these slimy spammers but also with smart programmers without jobs. It's no wonder so many hackers (well crackers) are from Russia, where the minds are young and bright but their future is bleak and dark. I'm pretty certain that the spammers are already working in tandem with programmers from all over the world but I wonder if there's anything anyone can do to stop them. Well other than making better blocking and filtering software. I think I'll stick to that for now.

Back to my forms and paperwork.

Fri, 30th Jan '04, 6:30 pm::

I just spent 30 minutes walking on the snow for no apparent reason. Well there's a reason and I'll explain that later. Last 24 hours have been extremely blog-worthy. I don't remember so many different things ever happening within such a short duration. Almost every problem I had yesterday seems possible to solve now. Yesterday I went to the Goldman Sachs Internship Presentation on campus. Between 6:30 and 8:30, I got a good overview of what working in the corporate world after getting out of college could be like. While I was quite intimidated in the beginning during the DVD presentation, later after talking to the recruiters, things seemed a lot more homely. Goldman Sachs is one of the largest investment banking firms in the world and being a Computer Science and Economics major, I could either join the Technology sector or the Banking sector of the company. Obviously I'm leaning towards the tech side.

After talking to a few people from different divisions, I met with the Technology guy, who talked to me for about 25-30 minutes. While they were looking for 2nd and 3rd year college students to intern at GS over the summer, he said if my background is strong enough, I could be considered for a full-time position. At the end, I gave him a copy of my resume (or MS Word) and after getting back to my bunker, emailed him a copy just-in-case. Today I got an email from him saying I need to be more descriptive in my resume and explain which platforms and languages I used for which systems/applications. Here's a tip he gave me: "When applying for Tech-jobs, don't pay attention to the 1-2 page limitation because we want to hear EVERYTHING that you know." So now I'm going to release an Extended Edition of my resume and send it over. I wish I had read these resume tips before.

While waiting in line to talk to him for 30 minutes, another interesting thing happened. This cute 18yr old Russian girl standing behind me started talking to me. While she seemed really nice and all, in my head I kept saying "don't be distracted by a girl - you are here for a job!" After 15 minutes of polite small-talk though, she said she loved computers and wanted to get into the Technology field ever since she was a child. She doesn't party a lot and would rather read a good book or go to a museum instead. That's when sirens went off in my head. Whoa there lady! You're young, pretty, quite intelligent, like to learn new things, AND love computers? That's a first one I have to admit. During my talk with the Tech guy, she stood right by me and she asked a few questions herself. Afterwards we walked out together, she took my cell# and AIM screenname. I'm not sure if she'll ever call or IM me, but hey at least it was an interesting incident. Maybe I'll run into her on a bus sometime. But for now, all I know is her first name is Ally.

Three days ago after reading some whiny British students say how hard it is to pay tuition fees of £1,125 a year, I posted on Fark that my debt is so much more than them and the job market doesn't look good at all. After reading my post, someone emailed me to say he's hiring people with C++ experience in Texas. Now my first reaction was "haha funny" but I emailed him my resume anyway and today got a phone call from his Human Resources Dept. I have a phone interview this Monday at noon. Till about one hour ago, I wasn't too keen on this deal, till I Google'd the guy's name. That's when I got a little shock. Unless the guy who emailed me has an identical twin living in the same city and doing the same tech work, I think he is someone quite quite famous. A little bit of Googl'ing showed that he wrote this chat software and sold to Apple for $25 million! So let's see if it's the same guy or not.

And finally I met with my research advisor Prof. Dinesh Pai and he suggested a few things I could do. One of the topics I liked was sound synthesis. That is why I walked on the snow for 30 mins. Prof said that I could find a way to generate the sound that is made when a person walks on the snow. Right now when movies and video games have people walking, it's mostly recorded sound. What if I could write a software that automatically simulates the sound based on a few conditions like the type of shoes, thickness of the sole, weight of the person, amount of snow (or sand, gravels, pebbles), and the type of surface like wood, cement, concreate etc.? Well if I can actually do it, that would be awesome. Now I have about 3 months in which I can either do it or fail trying. I think I'll do it. I'm optimistic.

So that ends the eventful 24-hours. Now I wait for a few hours and will prolly go to the bars with Kat. Haven't seen her for a loooong time now.

Computer Science, Philosophy, & Quantum physicsFri, 21st Nov '03, 3:35 am::

(If you're a CS major, you should read the original article I wrote this long blog entry on. If that is too confusing, feel free to read my interpretation and extension of it.)

Here's a long article linking computer science, philosophy, and quantum physics, by Jaron Lanier. You probably haven't heard of him (I certainly didn't) but you've definitely heard one little term he coined in the 1980's, "Virtual Reality. He looks more like a English major with a Philosophy minor than a computer scientist who "co-developed the first implementations of virtual reality applications in surgical simulation, vehicle interior prototyping, virtual sets for television production, and assorted other areas." In this paper, he looks at computers from an entirely different angle than we have been used to. Computer scientists (and in turn the rest of the world) basically think of computers as a bunch of electric signals being passed over wires at a very high speed. At any given time, there's really only one thing happening on your computer. You may think you are reading this website, listening to music, moving your mouse, and chatting online at the same time, but at the lowest CPU level, only one of these programs is running for a few split nanoseconds of time and then the operations for the next software are run. The context switch happens so fast that we get a perception that everything is running at the same time, which it isn't. Just like a 30 frames per second film reel, which is composed of a small number of pictures that are played just fast enough to give us perception of motion.

Real world of course doesn't work in this way. There isn't really some smallest amount of measurable time (at least not that we can measure with the current technology). Also in real life things do happen at the same time, that is you can be driving and drinking coffee while talking on the cell phone and scratching your head. Computers can only fake this kind of multitasking and that is where the problem lies. Fifty years ago it was very easy to conceptualize computers as simple straight-forward machines that receive input and product output. This led to instantenous implementations of the mathematical models of Turing machines and the first software. Sadly that is exactly what we are doing five decades since ENIAC - giving input and getting output. That, explains Lanier, is the reason why image recognition, voice recognition, video analysis and almost every application of artificial intelligence fails to product smart, intelligent results - because the current computer architecture is built to be perfect under perfect conditions.

Think about it this way. Theoretically, if you move your mouse cursor to the left, it MUST move to the left. There is nothing written in the software code for the mouse driver to move your cursor otherwise. But mouse cursor isn't the only process running in your system. Your stupid Word document will crash the system because there was a big photograph in it and your mouse is now stuck on the right corner of the screen, refusing to move. Theoretically, the code for mouse cursor did not fail, but your operating system did, and as a result brought down the perfectly functional code for the mouse cursor. The mouse cursor code is thus written perfectly to work under only perfect conditions. The alternative to this, he offers, is to write individual pieces of code, that don't rely on perfect protocols and systems to function with high accuracy. In his own words, "Wouldn't it be nicer to have a computer that's almost completely reliable almost all the time, as opposed to one that can be hypothetically perfectly accurate, in some hypothetical ideal world other than our own, but in reality is prone to sudden, unpredictable, and often catastrophic failure in actual use?"

Now if you've used a computer for more than a week, you know that computers are NOT perfect. In reality, of course not. But in theory, the science behind computers is perfect and predictable, mainly because it is built on the logics and functions of mathematics. If you add 2 and 2, you must get 4 under all circumstances. Find me a computer on which the Windows calculator gives anything but 4 for 2+2. However, the problem he says is that on small scale, perfection is relatively easy to achieve. Making small programs that work to specifications, is easy. But making a 10 million line program that analyzes the structure of the DNA is never going to be perfect, simply because of the scale. And Microsoft Windows has 50 million lines of code! How can one expect every line to function in tandem with the other 49,999,999 lines?

One obvious solution is to write better code and reuse the same code modules. I'm sure the brains at MS have thought of that before I just said it. And surely they tried to reuse as much code as possible. Yet they end up with 50 million lines. This only means that today's computer technology requires them to write 50 million lines to accomplish what they want - to provide us with an operating system that can play music, burn cd's, run datacenters, operate critical hospital equipment, and let you sell stuff on eBay. The keyword here is "today's", because there is nothing other than the limits of current technology that restricts anyone from writing smaller more efficient code. There is no need to obey the speed of light in order to write more compact code. There is no mathematical formula which predicts that in order to accomplish 'burn a cd' operation, someone must write 30,000 lines of code. Theoretically, we could design a CD burner that knows everything there is to burning a CD and all we have to tell it, is what songs or files to burn. But instead, we use a full-fledged CD-burning software to help us burn CDs. Then when the software fails, the burn process stalls midway and the CD has to be thrown away. Sure there is error correction built into the CD burner that will avoid jitter and prevent buffer overruns, but that is a unique solution to a unique problem. According to Lanier, there really should be no need to perform error correction. The CD burner should talk to the computer and as long as the computer managed to say 'hey I'm all ok' with 99% accuracy, it should go ahead and burn the CD.

Yeah I agree this sounds just as theoretically perfect and practically useless as every marketing campaign for some quasi-revolutionary killer-app released every other day, but it's hard to deny that with the current state of technological affairs, unless something is done to reduce the complexity of code being written for large projects (think, your utility company, the telephone companies, the stock market etc.) there is only so much that computer programming will be able to accomplish. Using pseudo-smart code can let credit card companies determine if someone's credit card might have been used fraudulently, but that means they have to first write the exact code to catch it. We humans don't learn anything exactly. When I drive a car, I drive with my left hand on the left-side of the steering and right-hand on the bottom, though my driving instructor taught me to put both hands in the 10-2 position. With him as my instructor (programmer), I learnt efficient driving but made my own adjustments to function better. Given the current logic circuits and architecture of computers, it's almost impossible to build an artificial intelligence system that can adapt to the world as humans. That is why we don't have talking robots and flying cars yet. Because it is not possible to design complex systems using zeros and ones. We've gone as far as possible using fuzzy logic to mimic true quantum states. But if there's ever a next stage in computers, if computer scientists ever want to break through the bounds of for-loops, return-values, and type-casts, they'll have to think of computers VERY differently from today.

How differently would you say? Think about magna-lev trains and dog-pulled sleds. Both do the same, take you from point A to B, but on entirely different levels. Today's technology is the bullet speed train that can achieve something at a really fast pace as long as the electricity is running, the magnetic track is well maintained, the passenger-load is within specifications. The pack of huskies pulling a sled on the other hand, may be 50 times slower, but they will easily walk around a big rock on an icy terrain without being reined to do so. Today's best computer software fail to achieve that. Think about it, as breathtaking as it was, the Mars Polar Lander was barely able to move around the mildly rocky Martian surface on it's own. A two year old child can run around faster and better. Why? Because the child's brain has millions of neurons and billions of connections that work at the same time, unlike the CPU of the robot, which no matter HOW fast, will always perform one-instruction at a time.

That is why Kasparov remains undefeated by the machines. Because he can think of 10 moves at the same time, while remembering 50 different layouts from the past, while the computer can only think of each move and layout at one time, although a billion times a second. A billion is still not larger than 10 to the power of 50. Someday the computer will be fast enough, sure, but it still wouldn't be able to laugh at a blonde joke. This is, I mean, if computers and software progress in the direction they currently are (and have been for fifty years). What is needed is an entirely different perspective on algorithms to get to the next generation, otherwise we have to stick to feeling 'intelligent' for writing software that opens doors for cats.

In addition to the current state of computer science, Lanier also connects computers with philosophical ideas, like the existance of objects, something that Peter Unger did in few of his papers. At the moment, I feel obviously unqualified to analyze Lanier's philosophical theories. Hopefully someday I will be qualified enough.

Sun, 16th Nov '03, 9:30 pm::

Last night, for the first time in my life, I was stupid enough to catch a nasty virus, Parite.A. If I run into the guy who made it, trust me, I'll kill him with my bare hands. Within 2 hours it infected over 5000 executable files that I had on my computer. EVERY GODDAMNED .EXE file was infected! Since I had a full backup of my system, thankfully, I was able to restore every file. It took me about 10 hours to finish the restore. So that's how I spent my Sunday. And tomorrow everyone's gonna be like, so what did YOU do over the weekend, and I will punch them in the eye. That is how angry I am right now.

Yes, it was my mistake that I downloaded a file and ran it without checking with an anti-virus software. However, this doesn't mean I was totally negligent. Last night I was looking for a good FTP client and was randomly downloading 9-10 files at the same time. Usually I download all the files together and then run anti-virus scanner on them and then test them out. Once a month, there's a file with a virus in it, so of course, I am always careful enough. Last night however, 9 of the 10 files downloaded and I didn't realize the 10th was still downloading. I ran the anti-virus, it said every file was clean, just after the scanner ended, the 10th file finished downloading, I noticed that's a new file, so I thought lemme run the scanner on it again. And then instead of right-click, I used the left-mouse button and my system got nuked :( Yes, stuff like this happens even to the best of us. The solution is to have a virus scanner running in the background 24/7. I dunno, that's just too much pressure on my system (no matter HOW fast the system is).

Anyways, my pc is back to it's pristine perfect condition, thanks to a very recent FULL backup of EVERY FILE :) Restore process is slow though, because I need to tell it to restore only executable files and not all other files. Oh well, thus ends another barely productive weekend.

Tue, 11th Nov '03, 12:00 pm::

Last night (well till 7am this morning) I designed a new system called BotBlock that'll let anyone copy/paste a few lines of code to freely implement a fully functional CAPTCHA system. What the hell does that mean? Well basically you see, there's a LOT of form spamming going on these days. A lot of people have forms for comments/email on their site. Spammers have written software to automatically fill these forms with cheap spam advertisements. There's really no easy way to know if the form is filled by a Human or a computer.

Enter spamming-killing CAPTCHAs. These are softwares that you've probably seen if you ever tried to create a new Yahoo! account (scroll to bottom) or bought tickets from TicketMaster. The website shows you a picture of deformed text and you have to just type it in to a text box. The text is on a picture that is colored oddly or skewed so that no software can read it or recognize it - only human eyes. The bright folks at PARC also research this. So the technology always existed. What I did was make it VERY easy for anyone with basic PHP/HTML skills to use it on their site, without having to understand the whole science behind how to generate efficient images. Now, people can just go to my site, get a free username/password, copy/paste the few lines of code that generates the BotBlock image (via my server) and that's it :)

All I need is a few people to start using it and this could become very popular. You can see a demo for BotBlock here.

Sun, 26th Oct '03, 3:55 pm::

I joined this site & install their software called What Pulse that basically counts the number of keys I type. Every hour or so, it updates the stats page and tells everyone how I'm doing. So far, I'm already within the top 1000 people. But I don't think it is something that I'm gonna brag about at the club next week.

Yeah, I'm prolly going clubbin or somethin in a week or two. Haven't been out in a while... Let's see. Got CS OS exam tomorrow and have to do homework for Econ class. No rest for me. Worked on a lotta sites last night. Still have so many things to do...

Tue, 14th Oct '03, 3:15 am::

Yeah 3:15 am and I'm reading open-source software articles while listening to Schubert's Erlking and Berlioz's Symphonie Fantastique - Marche au supplice, Fourth Movement. As far as Western classical music is concerned, one of my favorite pieces is Debussy's Prélude à l'après-midi d'un faune (Prelude to the Afternoon of a Faun).

Minimalistic ProgrammingTue, 7th Oct '03, 1:00 am::

For programmers only: I'm extremely weary of the whole get-a-real-job-with-multinationals situation and have forever shunned making a resume. Now, I think I'm gonna make a resume like this one. How about... "I am a super-god high-end extremely advanced Minesweeper..." Anyways, when it comes to programming, I'd like to classify myself as a serious minimalist aimed at providing the highest usefullness/effort ratio. By the ratio I mean, I will put in enough effort to give a high level of satisfaction and then stop. I could put in twice more effort, but since the users will NOT be twice as happy from the extra effort, I don't bother. This means my work will never be 100% perfect, rather just good enough for the purpose. Perfection in my eyes is only viable when there is only one goal. If one has to work on 5 projects at the same time and achieve good results, it's best to do considerably well in each than perfect in one and intolerable in the rest.

Coming back to minimalistic programming, I have found a natural love for no-frill technologies which require the least amount of effort from the developer and the user side. I am drawn to simple php scripts and RAD languages like Visual Basic, instead of all powerful and mighty C++ or Java. Every day some new thing comes along in the IT field, a new language, a new development platform - from EJB to CORBA to SOAP to XML. I could if I really wanted, spend time to learn these tools but often I read an introductory tutorial, just to be aware how it works and then don't bother anymore. Mainly because there is no immediate use for any of these for me. Sure, object-driven databases offer a horde of features over the current relational dbs, however I hardly ever need to make a system that makes ten million queries an hour. Also I highly doubt that most people who DO use these hyped-up technologies really need them.

Yesterday a friend of mine from Newark - Arpit, came to see me with his business partners to get some idea on how to proceed with their new venture: Books for Lease. It's a good concept - why buy/sell new or used books each semester - why not just rent them for $10-15 and then return them in same condition? I might redesign the front-end for the site, which has been functional for over a year now. Other than design, I mainly explored ways by which they expand the site's usefullness by concentrating on the core concept - books for lease. While they can build in new wonderful features that only 5% of the people will use, they are better off creating custom tools that help the other 95%. That means giving up the use of pre-written packages like shopping-carts, that they purchased and write their own code to make the site work they way THEY want. It'll require a bit more effort, but the results will surpass the costs.

The most efficient programming style, lies somewhere in the middle of using tools that are very difficult to implement but very useful once in place and scripts that are really easy to write but have limited uses. They don't need EJB or Struts. But they can't get away with using pre-written packages like E-cart. They need to write some of their own code, and use the stuff that's cheaper to buy than write themselves. And I think this is where most of the IT world lies today. There are millions of websites doing business online, and from personal experience, the most successful ones are those with straight-forward systems - like Amazon and eBay. The concepts are simple, the sites are easy to use, and the back-ends are pretty run-of-the-mill too. Amazon still uses Perl! Yahoo's gonna use PHP from now on. However, Morgan Stanley uses EJBs and Struts and they definitely should. But Google doesn't need to, as it works great with Python.

Big complex technologies come and go, but the simple ones are still here - C and assembly :) Perl, PHP, and Python are going to stay for a while too. But bubye .NET and C#. Hope it goes exactly where Push-technology and Virtual Reality have gone. Here's a good article that says everything I said and more, quite beautifully: "Like any industry, the software world suffers its own fashions..." - Software Reality. Glad to see I'm not the only one who likes simple straight-forward languages and tools. Although subconsciously I'm always a bit nervous that not jumping-onto-the-bandwagon of some cool breakthrough might be a bit of a hindsight. Must admit I am risk-averse on the short run and don't get too excited at mega-world-changing-cool-corporate-tools, though hopefully in the long run, my desire to seek stability, simplicity, and balance will benefit me.

Wed, 10th Sep '03, 10:45 am::

Same old stuff. I got work from 10-4:30 and classes 6-10pm. At least the weather is good. Pretty much nothing going on in my life right now. I've got new projects @ work now that involve a lot of cool stuff like credit card processing. Gotta learn all these new systems now.

I've been trying out a new freeware lately: iRate. The software basically goes on random music artists' sites and downloads their songs. It's not a file-sharing prog, rather downloads songs over http using my rating preferences. So if I rate all the techno songs as 'Cool' and the country songs as 'Yawn', it only finds more techno songs. Best part about this is that the songs it downloads are free and legal. I don't have to worry about RIAA suing me anymore. I've already found a lot of cool songs and upcoming artists. If everybody starts using stuff like iRate, the music industry will change forever.

Thu, 4th Sep '03, 2:30 pm::

Finally after 3 years of college, I get to take a class that is actually interesting and new to me - Computer Graphics. While the course material is still unclear, we'll learn a lot of cool stuff on making software that makes 3d rendering possible. This course is not how to USE a 3D design software, it's how to MAKE it. I'm excited.

Just went to the Livington Surplus Store w/ Michele. She needed a new monitor. My buddy Chris told me they sell 17" monitors for $20! I am thinking of buying a 19" CRT and hooking it up with my 19" LCD. Desktop space will be a problem, but I'll def. get a lot more work done. Hmmm let's see...

Wed, 3rd Sep '03, 4:05 pm::

Reading Manna, a book by Marshall Brain (best known as the creator of How Stuff Works. It's an eerie book about robots, computers, and more specifically intelligent software taking over the world. I make systems that make other people's jobs easier. I've also made programs that have eliminated time-consuming human tasks. I hope I never make something like Manna. Technically it's a piece of cake, but it's effects are not so sweet. Read the book if you have the time. He's a blogger too.

Fri, 8th Aug '03, 7:20 pm::

It's Friday evening and that means creative computer time for me :) I'm trying to integrate text-to-speech into my remote and was thinking of some voice like Dr. Sbaitso from the old Creative Labs - SoundBlaster era. After failing to implement Microsoft DirectX Speech libraries, I started looking for alternatives and frankly I'm blown away. Turns out IBM has a great TTS (text-to-speech) solution that you can test online. AT&T has an even better natural voice solution that is soooo real it's astonishing. A couple of years ago they said TTS was gonna hit big. I think the technology has finally advanced now to an acceptable level. I wouldn't mind hearing my news spoken by Rich and frankly Claire sounds creepily like Madeline Albright. Oh and they even have Anjali talking with an Indian accent! Of course I still have to find a good TTS library for my remote software. Hmmm.

Fri, 27th Jun '03, 2:10 am::

I have now begun to trust the octopus, in other words, I'm now using PopFile spam blocking proxy-software. This is a really nice piece of code that sits between my server and email client, looks at each email and tries to classify it as regular or spam. In the beginning it considers all mails as regular and I have to go back and classify the spam mails as 'spam'. With time it learns my email habits and automatically starts classifying my emails and detecting all the junk I get :) Let's see if it lives up to the big hype or not. So now in addition to Spam Assassin running on my servers and over 200 filters in my Outlook Express mail rules, I have PopFile trying to classify my mails. My email gets a bit slow (like 1-2 seconds per email slower) but once all three of these are running at full efficiency, they will block 99% of the junk I get :) Cool huh... Normally I get 20-30 junk mails per day. Somedays I get upto 50 though, so it's all just random.

Sat, 21st Jun '03, 9:40 pm::

I get a lot of emails, mostly clients, work, old friends, software users, and a LOT of spam. Once in a while I get an email that totally shakes me up. Tonight, Doris, an 80 year old woman, sent me an email after reading one of my college papers (I dunno which one exactly). Her husband was World War II veteran and suffered from post traumatic stress disorder (PTSD). I suspect she emailed me after reading this paper I wrote for my 'Trauma & Literature' class. Here is her email and my reply. As my dad often says, "Truth is stranger than fiction..."

Mon, 16th Jun '03, 12:55 am::

Who are the public heroes of the real Internet? No, not Lee, Linus, or Guido, but rather the ones who have made themselves celebrities online by their sheer participation in the virtual web. The ones who created these technologies have gained more than enough popularity. How about the ones who actually used these applications to their fullest? Take for instance, Harriet Klausner. She is the #1 Top Reviewer on Amazon.com. Or look at CrazyOne in the Experts Exchange's Hall of Fame. There are tons of other people like them, some with extremely high Slashdot Karma points, some with tens of thousands of positive EBay feedback, and some with millions of dollars worth of virtual property in games like EverQuest. In real world social hierarchy is defined by wealth, fame, and most importantly appearance. Online, the ones who rule the charts are those who work the hardest and give their best efforts; most of the ratings are done democratically, usually by the sites' regular visitors. Derek Powazek explores online communities in his book titled, aptly Design for Community. Someday I'd like to read that book by Derek or this one by Amy Jo Kim. When I have this little thing called *time*.

Since you can't really hack yourself as the #1 Book Reviewer on the #1 book store in the world, you actually have to READ two books a day and post intelligent reviews to gain such status. Or you could contribute to the online community by moderating newsgroups, writing reviews of products, giving free programming tips, and staying faithful (meaning paying a few $'s once in a while) to sites that need your support. I personally have a few friends like that, those who check out my software and sites before I release them, find spelling errors, suggest improvements, and try their best to spread the word. Without these folks, my progs would be EXTREMELY buggy and my sites would always be off-color. What can I say, my sister's not here @ the moment. Hehe...

Sun, 15th Jun '03, 5:00 pm::

Two days ago, just about now I started AjooBlast from scratch. Fast forward 48 hours and it has over 10 users already. The software now supports play-all and random-play modes. Also has a live stats window that tells you how many people are connected to you and what songs are being played. Ahhhhhhh. Gotta get started on my next project now...

Sun, 15th Jun '03, 2:45 am::

After over three years I've finally made a software that makes me want to jump and shout in pride and I realize that my dad, mom, and sister are not here to see it. Since it's a software that plays music over the Internet and the dialup is pretty slow in India, they can't see it in action. Anyways, ladies and gentlemen, AjooBlast (download exe) is here! It's one of the most kick-ass softwares that I've ever designed. Took me a LOT of coding and a LOT of staying-up-all-night. But within days of me dreaming of a proggie like this, I managed to create version 1.0 :) Here's what it does - at home, you can run it in the server mode and select which folders to share. Go to your office and then run it in the player mode, enter the ip address of the server and just click 'Connect'! That's it. You can then browse through your big huge music collection @ home right from your work!

You can set a password on your server so that only you can access your music. You can give it to your friends and they can listen to your songs. Best of all, you can browse through your friends music collections while they go through yours. I connected with a couple of friends and went over their mp3s. God some people listen to CRAZY music. Hehe. Anyways, I talked to the editor of PC World magazine and he loved the software. He's writing a book about the Annoyances on PC's and hold your breath... but THREE of my softwares are featured in it - TrayPlay, HotChime, and now AjooBlast! I'm thinking of making a Pro version of AjooBlast and selling it for $5 per license. Who knows, if 2000 people buy it, I can buy me a car :) I haven't sold a software yet - only websites. So let's see how it goes.

I'm feeling extremely excited right now - considering how EVERYONE who has seen AjooBlast has been amazed. Here's a screenshot just for you to ogle at. I think I should go to bed now. It's past 3...

Fri, 13th Jun '03, 1:55 pm::

Ok this is what I want to do - go to my work everyday, click on an icon and be able to listen to all the mp3's and wma's that I have at my home. I want to be able to browse through my collection and I don't want to make playlists. I also don't want to install some real big software to do something so simple. I finally found that StreamSicle does exactly what I want, except it doesn't support wma format. Since 95% of my files are in the wma format, this software's not for me. So it looks like lil me has a lot of coding to do now :) How does this sound - AjooBlast! Run a tiny 60k program on your pc and specify all your mp3/wma folders. Also enter a password (you don't want random people listening to your mp3's... do you?) Then go to work and download AjooBlast there also. But now specify your home IP address and password and browse through your music collection just like you are on your home pc :) Only requirement - fast internet connection. I can't wait to make this program asaigh (as soon as I get home)...

Mon, 2nd Jun '03, 3:00 pm::

Jpeg and Gif formats for images are so 90's. The format for 2000 was PNG - great improvement over both. And now there's even more formats coming. Jpeg 2000 and VFZ. The new Paint Shop Pro 8 supports the J2P format :) Oh and I'm gonna buy PSP8 tonight - $99. Good price for something that practically runs my business. And maybe after spending so much for a piece of software, I might actually start using the hi-q features. Right now I use mostly the basic features of PSP6-7.

Thu, 29th May '03, 1:05 am::

Just got back from Bruce Almighty :) Finally got to see that movie, with my buddy Mason from work. I'm backing up my all of my hard drives right now cuz well, there was a thunderstorm today and my computer went off! I'm really scared of what might happen if my hard drives ever crash. So I'm backing up as much stuff as I can on 9 CDRW's - most prolly all my work + important stuff. I don't really care about my collection of songs, movies, software - as there is nothing I can't find online - except of course, the software + websites + graphics that I made myself. Though even that stuff is gigs and gigs! Wish me luck backing everything up!

Fri, 23rd May '03, 3:00 am::

LiveWave cam is the MOST amazing thing I've seen online in months. It's nothing new - just live webcams of streets and cities, however the quality is simply astonishing. It's real-time hi-q live video and best of all you can actually CONTROL the camera! I just moved the Boston (Logan Airport) camera and actually tracked the path of a car. This is just real cool. Anyway I stumbled upon the site after trying to search for some software online that'll let me do precisely that - stream live webcam videos from my new bunker :) So far, no success personally. Oh well, I'll keep trying.

Oh and I had some yummy classic nachos (ONCE again) for dinner. Michele's friend Suprithi just randomly called up and drove down from Marlboro to see me :) Isn't that sweet!

Thu, 8th May '03, 1:05 pm::

Gonna go study in a few mins now. My friend Chris just told me about Cinema 4D, a very hi-q rendering/modelling software. Would you believe that this is a computer-generated-image (CGI)? How about this?

Wed, 16th Apr '03, 3:00 pm::

I can't wait to go home tonight and complete my new kick-ass software - HotChime! It's a very simple software for the extremely lazy people who don't like to type urls a lot. I might rename the software too. HotChime sounds spiffy but isn't too informative. Anyways, off to classes now!

Tue, 15th Apr '03, 6:05 pm::

I want to go on a long drive. I also wanna complete this new software that I whipped up a few nights ago. Will prolly do that tomorrow night.

Sun, 9th Mar '03, 3:15 am::

Just wrote a paper titled The Philosophy of Trauma for my Trauma & Literature class. Writing the paper took me about 4 hours, however preparing my mind to write it, took over 6 hours, mainly because writing philosophical material, especially stuff that deals with words, meanings, knowledge, and conditions requires a lot of logical thinking. Phew! Glad I'm done with this paper though. Tomorrow I study for my math exam, then write another 3 page paper on Monday, then study for Econometrics on Tuesday. I think I should be free from Wednesday onwards :) Free, to make tons of new websites, bunch of new software, and hoardes of Spring Break fun! (Or so I dream...)

Sat, 15th Feb '03, 1:00 pm::

Opera Software, the developer of one of the smallest and fastest web browsers in the world, just told Microsoft to shove it, via their latest press release, because Microsoft's MSN portal purposely alienates the Opera browser and messes up the browsing. And here's a technical explanation of what exactly Microsoft's doing (hint: something very unethical).

Sat, 8th Feb '03, 3:35 pm::

There is a certain type of pleasure that comes from writing good software. It's very different from the excitement of a victory. It's unlike the ecstacy of finishing a one-mile run. It's quite different for the delights of everyday life. It is more of a calm, steady flow of satisfaction and confidence, that slowly and slowly makes you happier and happier. That's exactly what's happening to me right now.

Last night, I wrote Chime Away! - it is a tiny program that automatically downloads and sets new away messages for Aim every minute. You can select messages from tons of categories like Food, School, Shower, Sleep, and Work etc. Eventually there'll be 50-100 categories to choose from, and maybe over 5000 away messages! Took me about 10-12 hours altogether to write the client software, create the server database, write the server scripts etc. But now, I'm done :) It's a pretty sweet software and I'm proud of it.

I realize that my best programming work comes only when I'm programming non-stop and yesterday I had some time to kill. I still have a few larger programs to complete (Ajooba, Glass2k etc.) but I don't care. Those progs are gonna take a while to complete. Prolly 10-12 days of non-stop programming each. And I still have a lot of websites to complete. I woke up @ 11am even though I went to bed @ 4! Dammit, I just can't sleep during the weekends. Actually I woke up because I was really excited about Chime Away! and wanted to complete it. Hopefully it's all done now. Check it out and let me know what you think.

Ahhhhhh life is good. I love programming and web-designing, and finally after 22 years, I can do as much of it as I want. Sure... my family's gonna be all scared now thinking I'll turn into a loner or something. Well don't worry. I work hard when I have to and I'll party hard when I'm tired of work :) Though this week, no parties. Lotsa work and some good reading time. I gotta finish the novel Beloved by Toni Morrison; like 70 pages left. And then I'll start reading another novel: A Gesture Life by Chang-rae Lee.

Life isn't very exciting at the moment. There are no *hot* chics that I have a crush on. But I feel so calm right now, that I don't really care. My mind's at peace and that's what matters... I think my brain loves programming. Hehe.

Sun, 29th Dec '02, 12:55 am::

Hello from Salt Lake City, Utah! This has been one eventful day. I started at Newark, New Jersey at 6 am, then flew to Cincinnati, Ohio. There I had a nice pretzel with nacho cheese @ the airport and continued to Las Vegas, Nevada. En route, the pilot decided to be nice and took us on a 10 minute tour of the Grand Canyon! While I'm sure it's 10000 times more better in closeup, the view from the tiny little airplane window was breathtaking nevertheless. Once @ Vegas, I got to see a few casinos from the airport lobby, like the Stratosphere, MGM Grand, and Mandalay Bay etc. From there, I flew to Salt Lake City, Utah - my final destination.

I'm sure you're wondering why I took such a weird route (that took over 9 hours!) Well I bought my tickets a bit too late and this weird long route was the only thing I could afford. If I wanted a direct flight from Jersey to Utah, it would have cost me over twice the price I paid. Plus it was all fun. I got to be in 4 states in one day! Hehe.

Anyways, I'm here @ my grandma's sister's house. She's pretty young actually (about as old as my dad) and her daughters (technically my aunts) are same age as me. It's been a few months since I last saw Purvi & Priya (at Sneh's Sweet 16) and so I was pretty excited to meet them. Well, we had a nice lunch and then just relaxed for a few hours. And later in the evening, Purvi and I went and rented some ski equipment for me! Tomorrow I'm going skiing!!!!! While I'm excited, I'm still not sure what it's all about. So more updates on skiing AFTER I do it. Oh and I got an email from my dad cautioning me not to ski! Hehe. You know what that means! I HAVE to ski now 100%! Haha.

Along with ski equipment, we also got two movies tonight: Mallrats (upon Priya's request) and Monsoon Wedding (Purvi & I hadn't seen it). First we saw Mallrats and it was a pretty fun movie. In fact so much fun that I was not at all interested in seeing the other movie, because I knew it wasn't a laugh-out-loud comedy. But then since we had nothing else to do, we decided to see Monsoon Wedding after all, and well, let me just say that it is one of the most thought-provoking films I've seen in months, probably years.

Here is my interpretation of Monsoon Wedding: If you want to know as much about India and us Indians in as little time as possible, then just go to Blockbuster and rent this movie. While I am not an avid supporter of the high-profile pseudo-artistic foreign-film-festival-fodder Indian movies made by pretentious directors who prefer to portray modern India as a backward, uncultured, and crime-ridden confused country rather than a slowly but steadily developing nation, I have to admit that this movie totally negates any preconceptions (rather misconceptions) I had about it. This movie very honestly and truly depicts everything that happens on every street corner in India every day. From the ostentatious marriages in rich families to the poor "event manager's" simplistic romantic saga, the movie attempts to give a magnified view of how life goes on in a country chiseled by customs, traditions, class divisions between the rich and the not-so-rich, and the strong bonds that somehow integrate every family unit. India is not just about Taj Mahal, elephants, snake-charmers, hunger, beggars, Kama Sutra, Computer Software engineers, or cheap skilled labor. It's about the people, and this film successfully draws a vivid portrait of my huge one-billion strong Indian national family.

I can't believe I'm saying this, but thanks Mira Nair and keep up the good work. While a few of her past films failed to impress me, this one succeeded. Maybe, because this is her first movie that I have seen outside of India. But I didn't see this movie with the eyes of a foreigner. I saw the movie, as if trying to remember and reminisce, the first 20 years of my life back home. I am glad I haven't forgotten what India is. And I'm glad that there is a movie like this to remind me in case I forget.

Four words of advice: GO RENT THIS MOVIE NOW! Ok, it's five words, but still, you get the point... it's worth it!

Tue, 22nd Oct '02, 8:45 am::

Ah wonderful Tuesday mornings - me in the Livingston lab. It's nice, cold, and dry outside. I'm listening to Castles in the sky by Ian Van Dahl on my mp3 player. (Damn she's hot!) I have no exams, quizzes, tests, assignments, or homework due today. I'm free! Freedom smells good. Hehe.

Last night I finally received this Photo Objects 2-CD pack that I had ordered almost a month ago. It is a collection of 10,000 hi-res digital photos (not crappy cliparts). I copied both the CD's to my hard drive and then started using it. It's such a nice software, I would highly recommend it to all web designers and anyone who likes making PowerPoint presentations. Within just 2 mins of using it, I was able to create some really neat pics. Of course, I'm not gonna go crazy and post all the pics I make in here, but I'm sure you'll see them all in the next website I make. It's good stuff.

Song for the day: Where are you going? - Dave Matthews Band.

Sat, 19th Oct '02, 8:20 am::

Awake and online! I made a new online friend - a guy who works 24/7, and makes software, just like me. Hehe. Check out his site - East Bay Technologies. He's damn smart, and works in VB just like me. I was just giving him some free web-design tips. Hopefully he can return the favor by helping me beta test my softwares/websites in the future.

Well I have a long day ahead of me. Last night I successfully completed the Physics webassign. Yay for the me! Haha. Today I got lots and lots of work @ my job on campus. Ahhhhh. But it's cool. I'm gonna enjoy it, cuz it's some pretty interesting stuff.

In other news, life's good. I get exhausted a lot, but overall my mood is on the happy side. Hehe.

Fri, 4th Oct '02, 8:50 am::

I'm back. Haha! Ok that was taking it too far... I certainly don't love any weather better than a computer lab, so I guess I'll stick in here and type out more random stuff. Well, now the list of cool ppl who wished me so far, in addition to my cuzins & uncle/aunt that I mentioned above: Eric, Kiran Uncle & Family, my Dad 2nd time (in a sweet email), Steve, Yogesh, Ali (aka Alf), Nikhil, and the oh-so-lovely and cow-kissing Megan. Damn the list is getting longer. Hehe.

Ok now a reflection on my life. Everyone lives two lives: one on the outside and one on the inside. On the outside, I'm studying, making websites, making software, buying expensive computer stuff, buying cool mp3 players, and of course working 20 hours a week while taking 18 credit hours - 6 days a week, from 7 am to 2 am. On the inside, I'm easily handling studies, having lotsa fun making websites and software, getting extremely happy for finally being able enough to buy myself decent equipment to work with, loving my job 101%, and totally feeling guilty for not having enough time for my friends and family. So overall, I'm all good on the outside, and almost good on the inside; that feeling guilty-for-not-socializing part ain't good. But guess what? Things are just about to get purrrrfect... I'm buying a car soon. It's 100% confirmed. Just need to decide how to go about it now. I know one thing for sure, once I buy a car, I'll def. have a LOT of extra time, so of course, I'll spend it with my friends and family (and prolly online too. Hehe.)

I was kinda worried a last night about buying a car - after all it's a big expense and there are 1000 things that can go wrong. But then this morning I got an email from my dad saying he too bought a used car too longgggg ago. And now I'm suddenly not worried at all! After all my dad's best of luck & wishes are right here with me :-) So Daddy... I'm getting my 1985 Toyota Tercel right away! Haha! Just kidding. No matter how badly I need a car, I'm not gonna buy a crappy one. It'll be something nice and decent, and quite possibly much cheaper.

So there you go... a long 'blog. Happy now? Got any questions? Well then

You gotta love StrongBad!

Sat, 25th May '02, 1:45 am::

It's past midnight and I've just decided to mirror my harddisk drive. I mean, since I am going to India, I'll copy EVERYTHING from my current hard disk on to a new one and take everything with me! Thus I can continue to work on my software, websites, emails etc. without any problems :) I pray that I don't get any major hardware errors...

Mon, 8th Apr '02, 10:15 am::

Quote for the day: "The entropy of a system increases with time unless specific work is executed to maintain or reduce it." - Meir Lehman's "Second Law" of software evolution quoted from the Salon article : A unified theory of software evolution.

Tue, 26th Mar '02, 10:25 pm::

My favorite software company Google has job openings. Nobody can understand how much I want to work for them... But oh well... I prolly need a Phd just to get a reply from them! :(

The Typical Best Day of my LifeThu, 7th Mar '02, 10:45 pm::

Let's just say that March 07,2002 is probably one of the most beautiful days in my life. I know it for sure that 20 years from now when I'll be nostalgic 'bout my college life and look back, I'll remember days like today... It was such a perfect carefree beautiful day! The weather outside was soooo perfect... it was warm but not hot, it was breezy but not windy, and it was sunny but not parching. I went to work and I had no work! So I just chilled for a couple of hours, talked to my Dean and her secretary. Then out of the blue my really good friend Jessica came online and we talked for almost an hour. God it's been such a loooong time! I want to go to Newark and see her sometime... cuz she's soooo much fun. And then I literally walked for one and half hours from College Avenue campus to Cook campus! I mean I could have easily taken the college bus but it was just too beautiful outside! Felt like spring was here... I was just walking down the road when I met my buddy Ross's roommate Ian - he's one helluva cool guy! Then I walked a little ahead and met Andy! Whoa! This is one good day for socializing :) It's been almost a month since I met him and he said Kathleen was in her apartment so I could prolly go and visit her...

So I goto her apartment and her friend Megan was there too. We chilled out for some time and then Kath had to buy something so me and her go on a short drive. God she drives like a speed daemon; but it's fun :) When we came back @ her apartment, her roommates Astrid and Vicky were back too! Ah..... I hadn't met them in weeks too! They (Kath/Astrid/Vicky) are the three most wonderful and lovely girls in RU! Trust me...

Then in the Calculus class, we did pretty much nothing! Our TA just said that do whatever you want and didn't give us any assignment/homework! Yay! I mean HOW perfect could this day be?

Next me and my other friend Vicky (not Kath's roommate) goto the computer lab and I give her a 101 lecture on how to use this really weird math software called Maple cuz we have an assignment due in it. It was fun... because she's a Mac lover and I'm a strictly PC guy. For atleast the Maple Lab homework I converted her to PC! Haha... Aw come on Vicky... you know PCs rule! Hehehe... Oh well... I wish I didn't have a class after that cuz I really love hanging out with her too! We fight a lot though... but it's good nice fight...

Well then I goto my honors class and I see the most interesting movie I've seen in years I think: Being There - starring Peter Sellers. Trust me this movie will blow away your mind! It was such a simple yet beautiful movie...

After the movie I come home, have dinner and here I am! God this was one wonderful day! Seriously...

Tue, 5th Mar '02, 12:20 am::

Quote for the midnight: "Usability is not everything. If usability engineers designed a nightclub, it would be clean, quiet, brightly lit, with lots of places to sit down, plenty of bartenders, menus written in 18-point sans-serif, and easy-to-find bathrooms. But nobody would be there. They would all be down the street at Coyote Ugly pouring beer on each other." - Joel on Software.

Thu, 14th Feb '02, 11:35 am::

This has got to be the world's WEIRDEST marriage proposal. The owner of SlashDot proposed to his girlfriend Kathleen Fent online, in front of 250,000 people (more like computers)! Strange huh? Just to remind you, this is the same Slashdot that linked to my Glass2k software in November 2001 and cost me hundreds of dollars.

Fri, 25th Jan '02, 9:00 pm::

Woohoo! I just bought a really inspiration computer book from the local Barnes & Nobel bookstore. I know inspirational and computer both should not be used in the same sentence, but this book : User Interface Design for Programmers : is really really interesting to me. It discusses and teaches things that help programmers make simpler and easier to use programs. Just think about it... how many times did you just sit frustrated in front of your pc wondering how the hell does some xyz program work? Now only if the developers of that program had read this book... :) The author: Joel Spolsky also writes a 'blog regularly, called Joel On Software - be forewarned... this link rates 11 out of 10 on the techie scale.

Wed, 23rd Jan '02, 10:25 pm::

Wanna see something spiffy? Goto Google.com and search for 'softwares' (NOT 'software', but plural 'softwares'). You'll be surprised to see what is there on the top third position. Click here to see what I'm talking about.

Thu, 17th Jan '02, 12:20 am::

Projects like these make me proud to be an Indian: Bellandur village e-Governance project. This is the story of a small village in India, which after installing just one simple PC and some free software from Compusol Software India, has solved hundreds of problems of the local public, from issuing birth certificates, to preparing tax sheets and water bills. For this project, Compusol received recognition by United Nations. The software's not that big or complicated or costly. It's the thought and effort that counts. And trust me... someday Chime Softwares will do something like this... someday...

Tue, 8th Jan '02, 2:40 pm::

Just finished with my radio software. I still have to add/organize more stations though. Here's what it looks like:

Sat, 5th Jan '02, 10:15 am::

Ok so you prolly read about my bad grades yesterday. Now this makes me feel mad/sad/bad. But I don't become mean or angry to vent out my fury. I just do something to make myself feel a little good. Call me superfluous or shallow, but at a time like this... I just need something to make me feel good. So what did I do last night? Well I voted myself to the title of Calcutta's Coolest Dude!!!

Actually I've always wondered if I could make a software that can influence online-polls and voting-booths; turns out I can! Haha. I'm @ about 20% right now and it's going up! The average is about 0.0001%. Muhahahahahaha. I feel evil!

Wed, 19th Dec '01, 5:10 pm::

Oh my god! SUCH a big coincidence! On an Internet survey, conducted by the British Association for the Advancement of Science, this joke about Sherlock Holmes was awarded "The World's Funniest Joke" title! The coincidence lies in the fact that, about 3 years ago I started my own joke mailing list (some of you are still on it!) and sent this same joke to 50000 people in one night. Of course, it was a big spam attack and I got into a lot of trouble for it, but yes, this is the joke I personally think is the funniest also. Somehow this brings back sweet memories of the Chime Jokes-by-email (Joke Master) days. You prolly never heard of it but it remains a very special era to me. I met some of my best online friends during that time. I learned how to write my own smtp servers during that time. And that was when I started developing software and designing graphics in the name of Chime Softwares.

Wed, 21st Nov '01, 12:45 am::

I think I'm gonna die from lack of sleep. I'm still posting my software Glass2k to every major beta software site. Let's hope people like it.

Tue, 13th Nov '01, 10:50 pm::

Wooohoooo !!!!! Great news! My software TrayPlay, which plays mp3's, wma's, audio cd's and even videos, crossed the 10,000 mark in Download.com!!! Yey! I'm just sooo happy. Also somehow my blog and my main site Chime.tv have gotten like 500 hits per day the whole of this last week. Pleasantly weird.