Search Chir.ag 'Blog
Search Results
Search text: "server" found in 39 '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.
Days after MSWed, 19th Aug '20, 2:55 pm::
Juliet is feeling slightly better, less dizzy, no double-vision, but she is still extremely weak and needs assistance moving around. We're hoping it is the after-effect of the massive amount of steroids they pumped into her and that once those wear off, she will regain some strength. As optimistic as we remain, we are taking this very seriously and realize our lives will never be the same again. Doesn't mean life has to stop though. It will be different from what we planned, not worse.
For me, it's been a busy day. For the first time in months I had a good night's sleep. Maybe knowing that Juliet has finally been diagnosed properly made it easier to relax. The uncertainty of what was ailing her was gnawing at me for a long time. Or maybe I was just tired from a really long day yesterday. Either way, I woke up and got started with the day fresh. Had an infinite amount of chores but I think I got about half the way through, which in mathematical terms means I'm 100% done!
I was going to list all the things I did today because I'm pretty proud of myself for even getting out of bed considering everything but then I realized it would be a boringly long list. From putting away groceries to cleaning the outside freezer, from changing diapers and taking out trash to making doctor and estate lawyer appointments, I kept checking things off our todo list! I'd rather have an empty list than show off a long one.
For now, things are calm. Both Juliet and Leela are resting, Naveen is playing Terraria, I have a few meetings to attend, more than a few emails to reply to, and figure out what a manageable schedule for all of us will be for the next few weeks. Since Juliet is severely immunocompromised, we can neither get a daily babysitter (save for emergencies), nor can we have family or friends come stay with us to help out. But chores need to be done, kids need to be fed and cleaned, Juliet needs to heal, and I need to make sure I do not overexert myself and make a bigger mess of things than they already are.
So my strategy is simple — do one thing at a time. I am not a multitasker. No point in running the washing machine, cooking a meal, taking a conference call, fixing a server, and feeding the baby all at the same time. I can do one thing at a time and do it well, calmly, and without screwing up. I'm not at a place in my life when I can manage to make things worse. I prioritize my list in coordination with Juliet and Naveen and then we go down the list. Anything I can't do today, gets done tomorrow. If I have a bad day tomorrow, then I hope the day after that will be better. No point in panicking non-stop trying to do everything at once. That's been my strategy for years anyway and it has worked out well for me through thick and thin. Let's see how it works over the next few weeks.
You have no email. Enjoy your day!Wed, 11th Jun '14, 12:05 am::
I used to fear ending up with a life where I would have a full, busy schedule. I was and still remain fiercely against living an eventful life where a lot of things happen every day. If a scheduling genie was granting three wishes, I would ask for (1) my email/voicemail inbox to be always empty (2) my to-do list to contain only one important item per day, and (3) absolutely no preset meetings or appointments.
Since I have not yet met a scheduling genie, my life continues to be a constant barrage of planned and unplanned events, tasks, commitments, and projects. Something is always going on. Be it house projects, work deadlines, or social obligations, there is something new happening every day. I have to maintain detailed to-do lists, from "server deployment plan" to "garage cleanup list" just so I can keep up with everything.
I am living the exact life that I feared.
But it's ok. I am getting a lot done in the meantime and I am slowly working towards a life that is closer to my ideals of doing just one thing and doing it right. Be it work or play, I avoid distractions and interruptions. I have never been a fan of multitasking. I don't check my phone when I'm having dinner or plan dinner when I'm on a conference call. Even though I am not in a position to live the idyllic leisurely life I want right now, I will never going to stop trying. I truly believe that nothing is more productive and beneficial than distraction-free single-minded focus, be it in work or play, business or charity. And a full, busy schedule is the antithesis of that.
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.
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
Success MatrixWed, 29th Sep '10, 6:30 pm::
I spent a considerable time this past month learning new systems, platforms, and tools to improve my skills in programming. Choosing what to learn is often quite a difficult task of its own because you never know how the 200 hours you spent learning a new technology will impact your skills, creativity, and the very way you think. One important thing I learnt while learning to learn is how to distinguish between tools and raw materials, and more importantly, why.
Tools are what you build the product with. Raw materials are what the product is built of. The fable of The Chicken and the Pig would be quiet appropriate here: No matter what you build, tools are involved but raw materials are committed. I used to spend a lot of time picking the right tools for the right job because that's what you're supposed to do. Yet I saw lots of examples of really crappy tools being used improperly in very successful products. On the other hand, I also saw very good tools being used properly in products that failed miserably. How could there be no correlation between the input and output? Turns out I was only looking at part of the input. What I should have been concentrating on, was the combination of the raw materials and tools:
Success Matrix | Strong Materials | Poor Materials |
---|---|---|
Strong Tools | Designed to succeed | Awaiting disaster |
Poor Tools | Awaiting sweat & blood | Designed to fail |
Having a successful product certainly requires a lot more than strong raw materials and tools but having those two right gives you a strong foundation. That buildings and bridges built with poor materials fall is no shocker. What does surprise people every now and then is seeing something built with poor tools succeed. These products require a lot more sweat and blood to succeed but they can succeed indeed. I don't have first-hand knowledge working with the following tech sites but based on the information I've gathered from articles, interviews, and online postings, I would classify them in the success matrix as:
Success Matrix | Strong Materials | Poor Materials |
---|---|---|
Strong Tools | DropBox | Xmarks |
Poor Tools | Orkut | Cuil |
The problem with technology (and the primary reason I decided to write this post) is that it is difficult to decide what is a tool and what is a raw material when in the end, it's just a bunch of 1s and 0s. If you're building a shed, wood and nails are raw material, axe and hammer are tools - no ambiguity at all. But for a web project, is the back-end database a tool or a raw material? What about the platform, the programming language, the framework, the client-end scripting library, the graphics engine, or the server host?
Since the difference is hard to spot, the question is if it even matters or not. I'd say it does, for one simple reason - raw materials cannot be changed after you've started building the product whereas tools can be, albeit at a minor cost. You can't switch from wood to cement half-way through a building project but you can certainly upgrade to a nail-gun from a hammer when your arms get tired. Using the ability-to-be-swapped as the primary condition, it can be easy to decide if something is a raw material or a tool in a tech project. Hosting? Usually a tool, unless you build your project solely for AWS. Programming language and framework? Usually a raw material unless the back-end is what's doing the bulk of the hard work and the front-end is simply a pretty proxy. Database engine? Could be a swappable tool if you abstract away all database-specific calls from your code.
Programmers often get into long arguments about which technology is right for the job and why you should use X and never use Y. Fact of the matter is, if something is a raw material for your product, take the time and do the research to make an educated guess. It will always be a guess because you never know what will happen in the future. If something is a tool, just pick something that gets you going quickly because if it doesn't work, you can always switch to something else later.
Mon, 12th Apr '10, 5:05 pm::
Whenever I get lunch or dinner at a restaurant, I always finish my meal and never bring back any leftovers. Today, I bought a large sandwich with the intention of eating half of it for lunch at my desk and the rest for dinner once I get home. I figured that way I won't have to prepare dinner for myself. Normally Juliet cooks up something healthy for me every evening but she won't be home on weekdays for the next six weeks because of her clinical rotation. So I have to fend for myself.
I ate half of the sandwich and right next to me is the other half. I can't wait to get home for dinner. So so hungry. I'm waiting for an update to complete on a server and all I can think of is the sandwich. Self-control is difficult when you can smell yummy food.
Thu, 21st Aug '08, 6:50 am::
If you can see this, it means I am saving tons of money now that all my sites have been moved to my new server. Also, if you are an Xbox owner in the US and install PlayOn! on your PC, you can watch nearly everything from Hulu on your TV for free. I don't have an Xbox but any uPnP client will work, like my ShowCenter 250HD. Yes, there are ads but they are short and not very annoying. The video quality is pretty damn good too.
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.
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.
Fri, 3rd Aug '07, 9:05 pm::
It's a weird feeling being alone at work this late. I'm setting up a new server and moving some virtual machines around. The entire building is empty and I'm listening to completely random songs while scavenging on leftover snacks. I have some time to kill while the servers backup but I'm pretty sure it'll take me all night to migrate our intranet web server. Once I'm done, things will be much faster around here.
On a side note, anyone remember this music video from the 90's?
Buy less stuffWed, 25th Jul '07, 12:15 am::
I'm not a big fan of productivity advice and lifestyle tips so when I casually glanced at the headline "The seven habits of highly subversive people" on reddit, I expected nothing more than a rehash of every other "Work Smart" Top 10 list. I imagine it was my disdain for this genre of articles that caused me to misread "subversive" as "productive." Now that I read the article without any preconceived notions, I can't help but pontificate about my own personal and lifestyle habits.
I'm not certain how this change came about in my personality but over the last couple of years, I have stopped buying things unless I absolutely need them. I don't go "shopping" anymore and don't order t-shirts, gifts, or cool gadgets online. I have no new collectible items to adorn my showcase and the only products I buy regularly are food and household items. I haven't even bought new clothes in years (sadly, it's starting to show.)
However, I realize now that contrary to my claim just half a year ago, I am not a bad consumer; I just spend my money differently. I've minimized buying things and maximized buying experiences. Instead of $250 to get a better cellphone, I got $150 wind-surfing lessons. Rather than spend $600 on a bigger TV, I'm spending $50/month so I can chat with my family in India every day on my drive to work for 25 minutes. The only major purchase I've made this year is a $2500 server/workstation to code Chime.TV on but that's strictly a development decision and given the expected four-year life of the PC, quite economical in the long run.
I remember asking my dad to take me to Fancy Market in Kolkata, India so he could buy cool wristwatches for me. It was a lot of fun to find a unique designs before others discovered them. Since then, a significant change in my thought process has occurred. You know how you love that one shirt or that book or that wristwatch or your lovely car? I don't. I barely care about objects anymore. My car is a mechanical device with a simple purpose to transport me around and requires regular maintenance. My computer is replaceable as long as the backups are current and my wristwatch costs $9. Stuff is merely stuff. And I refuse to allow my purchases to represent my inner-self.
I know this sounds pretty Fight-Club-esque and maybe I am going through the same disconnect with reality, after already having procured every minor item I thought would make me happier and not finding the satisfaction. It might also be that I have realized I don't have what it takes to afford a $12m house with heated pools and tennis courts and hence have opted to get out of the rat race altogether. Or my minimalism somehow makes me feel superior to the mass consumers out there and is just an elitist act to maintain my smugness. Or maybe I've woken up one morning to a fire in my apartment and realized that in times of life and death, the stuff you so gleefully bought is what gets in your way as you try to save your loved ones.
I often get caught up in long debates with my environmentally-conscious friends who think that I am single-handedly killing the planet because I am vehemently against most methods of recycling, use paper plates instead of washing dishes, and think purchasing carbon offsets is completely idiotic. While I can defend my position at length on all those issues, I would much rather explain that the best way to be green, save the planet, and be environmentally conscious, is to BUY LESS STUFF. Live in a smaller house with a bigger yard. Drive the smallest car you can manage with. Don't throw away things unless they break - upgrading for the sake of upgrading is sickeningly wasteful.
Learn to manage with less. Instead of a $600 GPS, buy a $15 Atlas. I did, and discovered that Okefenokee was only four hours away. You don't need a 650 DVD movie collection. You don't need a 32-piece set of steak knives. And despite your intellectual ambitions, you don't need a 3,200 book library. Manage with less, manage with alternatives, and manage with compromises. And with the money you saved by not buying the entire audio CD collection of Songs from the 80's, take Salsa & Merengue lessons.
I'm not the first person to say all of this either. Eradicating materialism has been the tenet of many a religion like Buddhism and Jainism. However, it's pretty difficult to give up all the things you're used to and care about. I can't give up computers and I rather fancy my kayak. Loving your pair of black shoes isn't going to destroy Earth so keep on dancing. All I'm saying is don't get in the cycle of desiring more objects, getting a more strenuous job to afford those objects, and then realizing you need more objects because your new peers have them, and working 70 hour weeks to afford these objects that you didn't even know you needed, only to find out that while you're working and buying and working and spending, you imprisoned yourself in a cage of debt, stress, and complete lack of direction.
So I say be less productive, less materialistic, and less successful and be more adventurous, more leisurely, and more content.
Wed, 13th Jun '07, 8:35 pm::
The response to Chime.TV has literally been overwhelming. In the last 30 hours, over 50,000 videos have been played on Chime.TV. We had 150,000 videos in our database yesterday and now we have over 600,000. The amount of attention we're getting from outside of US is staggering. My little servers are barely surviving and a new web server is on order and probably more. If the site is a little slow or videos skip a bit, rest assured, it'll all work fine within a day or two.
Wed, 21st Jun '06, 9:05 pm::
Today marks the second year anniversary of my job at Formulated Solutions. I mentioned that to a couple of coworkers and they decided we go out for some good dinner. A little after 7pm, Kelly, Dennis, and I met at Sweet Tomatoes (the closest place to heaven on this side of the Atlantic). I don't think I've eaten so much in a long long time. Of course I could always eat more but I have to leave some for the rest of the people :)
Just yesterday I remarked to a friend that I don't remember the last time I woke up groggy in the morning and lamented "eh I gotta go to work..." No matter how good or bad I slept, as soon as I wake up and realize it's time to get to work, I can't wait. It's such an unexpected feeling though. Growing up I always expected work to be dull and boring. You're supposed to work solely to earn money and provide a good living for your family. Work, by definition, is work and not play. Yet every day I am more than excited to get to my office so I can try out the things that I was thinking of all night. I guess it's mostly because of the amount of freedom I have coupled with the appreciation I get for all my work that makes this possible.
Of course my latest big project was something of an oddity for me. Normally my projects change and improve things and hopefully save time/effort/money for others. However in this case, I had to migrate every single user/computer/device from an older system to a kickass new server setup. The goal was to change over everything as smoothly as possible, without disturbing or modifying any user's settings. In short, the best possible thing a person could tell me was "What did you do? I don't notice anything..." Like the quote from Futurama goes, "When you do things right, people won’t be sure you've done anything at all."
Anyways, stuffed and lazy right now. Very tired too. Gonna go relax and get back to work tomorrow :)
Wed, 22nd Feb '06, 2:10 am::
My friend Tay is FAMOUS! He won the top prize at MashupCamp in California and his mug is all over the Internet now! The president of Sun Microsystems (yeah, the guys who made JAVA!) awarded a kickass Niagra server to him! This is pretty damn big news, in fact, he's suddenly become the most famous person in Tech that I have ever had a drink with. And that makes him cool and me proud :)
Sand grains keep falling on my serverFri, 30th Dec '05, 10:50 pm::
The Falling Sand Game I am hosting on my server is attracting over 30,000 different people each day to my website. Kinda interesting. Till Dec 25, about 200 people a day visited different pages of "chir.ag". Now in just 4 days I've had over 9,000 people check out my maps and over 25,000 people check out this page (my blog). The good news though is that my server's able to handle all this amazing amount of traffic without showing any signs of slowing down. After being linked on Digg, Reddit, Delicious, MSNBC and tons of other popular websites, I'm kinda proud of my little server holding up just fine. Head over to my /tech blog to read more about Little Servers, Big Performance.
Fri, 3rd Jun '05, 8:20 pm::
I just started using Sajax and JSON today at work. I already made my own functions and have figured out how to use it in the easiest possible way. Looks like I will be making a lot more use of it for internal applications because it makes round-trips to the web server a lot less.
Also I think I need a personal and a tech-blog - two separate places where I jot down the appropriate stuff. A lot of people do it but I don't know, it just might end up being too much work. There is a lot I want to talk about when it comes to computers science and there's obviously a lot when I want to talk about how my life is. Maybe I'll feel inspired one of these days and design a chir.ag/tech 'blog :)
Tue, 22nd Mar '05, 6:30 pm::
I missed my 'blog! Well it looks like the server has moved over and my 'blog seems to be working fine now on the new host. Been very busy with work lately. Life is good. The weather down here is beautiful :)
Mon, 14th Mar '05, 10:10 pm::
It's funny that I am writing this 'blog entry even though I can't see it myself! I'm moving the 'chir.ag' domain from my old server to my new one and currently due to some DNS issue, I cannot access the new server from my browser. I'm entering this entry via the backend database. Kinda like getting into your own house via the bathroom window because you don't have the new keys. Hehe.
Anyways, I don't even feel like adding new 'blog entries till the site is transferred to the new server. Life's good but quite busy otherwise.
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.
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.
Mon, 13th Dec '04, 6:15 pm::
Yet another great day at work. Got a kickass new server and setup a lot of small things. And just as I entered my apartment, my kitties started running around me in joy. Life is good :)
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, 12:10 pm::
And I just bought this kickass pc that will soon be used as my personal database + file + web server :) Spent slightly over $500 in total today for a nice pc with a small LCD. Not bad if you ask me. Now I need a second desk and maybe a chair.
Sat, 18th Sep '04, 9:45 am::
I wanted to sleep more but for some reason I couldn't. I have become so accustomed to waking up early on weekdays that I can't sleep till noon on weekends. Anyways, it's been a long time since I had a little session of retrospection and introspection.
So what's going on with my life, you ask eh? Well my job's going great. I finished a major project last week and started working on another huge project this week. While I can't say too much, I can say it's basically the new Inventory System for my company that will handle purchasing, sales, formulation, batching and production. The frontend is MS Access and backend is MySQL. I know every other programmer out there is laughing at me for writing code in Access but truth is, if you saw how smooth, secure, and efficient my code is, you'd change your views about Access. Oh well, for me the only thing that matters is whether my company will benefit from my system or not. And from the looks of it, it will.
Something else that I've miserably put off for a long time is running - practicing for the marathon. I injured my foot playing soccer last week and can barely walk without limping :( As a result, months of training have come down to a screeching halt right now. The marathon is less than 45 days away and I can barely run a minute without crying out in pain. I really REALLY hope my foot gets better soon or else I'll be walking the marathon instead of running it. But something tells me it'll all be good. I have my hopes all set on finishing the marathon and you bet I will! Also, no more soccer for me. Don't wanna get any more hurt. Thankfully my boss and his brother are cool with my decision. They rock!
Today I'm driving up to Orlando to meet the guy that made Dilly. He's gonna explain to me how The Dilly works - the whole infrastructure. Once I know how everything works, I'll start coding :) Can't wait!
So there you have it. My simple life. Main job, a side gig, and lotsa soccer and running before I got hurt. In the meantime I made Chime Note and now I think I'm gonna buy me another computer! I wanna make a nice server I can use for learning new programming languages and databases. PostgreSQL is my target for now.
Tue, 17th Aug '04, 3:00 pm::
If you are a girl and you find the following pickup lines attractive, let me know... I just might marry you ;)
- You are the hit ratio to my cache performance
- You are the buffer overflow to my Win32 subsystem
- You are the catch clause to my try exception
- You are the boot loader to my active partition
- You are the root account to my admin server
- You are the heap allocator to my MergeSort algorithm
- You are the priviledged user to my shared folder
- You are the allow restriction to my group policy
- You are the cumulative patch to my Internet Explorer
- You are the DOS ipconfig to my network connection
Sat, 3rd Apr '04, 8:00 am::
My major sites are down right now (Photo Gallery, Chime main etc.) because I'm moving all my websites to my new dedicated server. If that doesn't sound English, just ignore it. Basically things could be hectic and dysfunctional for a few days, including but not limited to all my websites, emails, blood pressure, cholestrol level, and tolerance to dumb "computer" people. Sorry about it.
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, 2nd Nov '03, 3:25 pm::
Last night I talked to my mom and dad :) They're back from Nepal. Had fun. Ah those rich people.
Last night I also worked on securing my client's site using OpenSSL for PHP. I think it's one of the most complex stuff I've ever done. Took me over 8 hours to get the implementation right (meaning I went to bed at 6am). As it stands now, even if a hacker manages to get into EVERYTHING on my server, he/she will not be able to decrypt the table of credit card numbers without a neat little password. It's done quite beautifully. I use an RSA public/private key pair to set it up. RSA is one of the sweetest little encryption systems. There's 100 more ones invented after that, but nothing so simple yet beautiful.
Basically, take two prime numbers P and Q and multiply them to get a real big number PQ. Now unless you know P and Q, you would need a big computer to factor P and Q from PQ. Well if P and Q are small, that is P=5 and Q=7, PQ=35 and if you are given 35, it's easy to find P and Q from it. But if PQ is a 10000 digit number, it's highly unlikely that you'll be able to find P and Q easily. Now, do a little more math and make D and E from P and Q. Like D could be P-Q and E could be P+Q or something. Well to get this to work, D and E are calculated in a special way as detailed here. Then encrypt the data using (PQ, E) and decrypt it using D. That's it. Unless the hacker knows D, they can't decrypt. Everytime my client needs to see credit card info for any client, just type in D, which is like a nice short word: SKYISBLUE or something, and it's decrypted. I feel so funny being excited over stuff like this. Hehe.
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.
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...
Sat, 24th May '03, 3:00 am::
After watching the awesome webcams last night, I just felt like I needed to make something like that for me. And after 10 hours of non-stop coding, I proudly present: Live! from the Chir.ag Bunker :) Webcam! Well it's off right now, but next time you catch me online, ask me to turn it on :) And sorry, this stuff is not for dial-up people. Also there's no sound - only me, jumping and acting crazy at 5-6 frames/second. Nothing THAT great, but well I'm excited about it, cuz I wrote everything myself - from the VB Capture module to the super-fast-uber-tiny HTTP server to the Flash client viewer :) I can go to bed a happy geek now!
Wed, 26th Mar '03, 11:00 pm::
Another long long day today. I'm changing a few things about my hosting services. I just got a very powerful back-end server hosting @ Hosting Matters. Their services are well priced and the network they run on is simply awesome! With all the new clients I'm gonna host in the next few months, I think this is a good decision. Gotta love expansion :)
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.
Tue, 21st Jan '03, 9:25 pm::
What a day... it was soooo relaxing. I woke up @ 8:30, attended Physics & Computer class, went to work, but since the back-end server was down, came back home, slept for 2-3 hours, went to the gym, had the world's WORST chinese food (veg. lo mein @ Schezwan Express), and swore I'll NEVER EVER eat there again. Hehe. And here I am, watching American Idol 2 on TV.
American Idol is like a star-search for pop singers, and guess what, my buddy Danny from Computer Architecture made it to Hollywood! He's one of the best old-school assembly programmers I know and I felt soooo very proud to see him on TV :) Let's see what happens next week...
Anyways, I'm gonna munch on some Cinnamon Toast Crunch right now till I'm tired and then go to bed. Got LOTS of classes tomorrow!
Tue, 6th Aug '02, 8:35 pm::
Wow! Yet another perfectly lovely day :) The weather is soooo cool @ the moment - I loveeeeee it. Anyways, had a good day @ job. I'm workin on this website for my university and one of the neat features I made today is server-based dynamic PDF file generation and auto-email daemon for MS IIS. Hehe. Complex but interesting stuff.
Well then I came home and worked out for 40 mins or so and went to water the plants and lawn outside. I feel like fall's here... it's just soooo nice and cool. I hope it stays like this forever *unlikely*. And my aunt made such lovely baigan ka bharta! Normally I don't like baigan (eggplant) but oh my this was seriously good... I think baigan tastes the best when it does NOT taste like baigan. Hehe. And now here I am... just relaxing, listening to Chalak Chalak from Devdas.
Mon, 22nd Apr '02, 8:35 pm::
Good News: I finally got a decent permanent job on campus :) The pay is pretty good ($20/hr) and I get my own office, a super-fast server, and hopefully I'll be able to buy my own car soon :) The job's pretty complicated and I now have a LOT of responsibilities. I'll be working 20 hours a week during school days and 40-50 hours during vacations. They want me to start right away but well I have a lot of stuff to complete. The job starts as soon as I come back from India (prolly July-end or 1st August). I'm pretty excited @ the moment since I get to work on the main Rutgers internal databases and all cool classified stuff! I can't tell you exactly what I'm doing because if I tell you, I have to 'terminate' you. Haha. Today was a pretty good day for job hunters I guess. Kath got her old summer internship job back too. And my friend Chris from computer class also got a job! Hehehe...
Thu, 28th Feb '02, 12:05 pm::
I'm in Richardson Campus Center right now, just sitting on my Dell server (not SITTING on it damnit! I mean I'm using it...) I feel kinda sleepy right now, since I was up till 3 am last night, writing that paper and doing the calc3 workshop after that. Ahhhhhhh. College is sooooo exhaustive. I don't remember the last time I slept for more than 6 hours non-stop! Seriously.
My first jobWed, 12th Dec '01, 9:00 pm::
Good news. I got an on-campus job starting January 2002. Pay is a measly $10/hr but the nice thing is, I get my own office with a powerful Dell Workstation Server. The work is mostly access database management (programming and source code updating) in MS ASP.