Thursday, November 27, 2008

Bombay Attacks

Last night while I was in a discussion with my boss reports came in over the phone from shooting and grenade attacks across the city. Most employees had already gone home for the day. The rest were advised to stay in the office until it became clear what was happening out there. The attacks seem to have been restricted to the Colaba area where most of the tourists and foreign businesspeople reside. Taj hotel, Cafe Leopold, VT station, ... all places I've been to many times. Fortunately nothing happened in the more suburban Malad area where I live and work.

This morning the situation is still unclear. We're not sure what's going on at the Taj hotel. A hostage situation is ongoing. Roads and trains are already opening up again.

I hope the Indian police and military goes after this evil scum with everything they've got. Take no prisoners.

Saturday, November 8, 2008

Marina Bay Sands - Singapore

Despite the financial trouble of Las Vegas Sands Corp, construction of Singapore's $4 billion Marina Bay Sands casino continues around the clock. Over the past years I saw as Marina Bay got reclaimed, then how hundreds of pile drivers set a foundation in soft sand, and now the construction of massive buildings. Each time I visit Singapore I try to see how work has progressed.

November 2008
Preview of Marina Bay Sands Casino Construction in Singapore by Sebastiaan Deckers
Cropped to less than half of the picture. Click to download the high resolution version.

For this image I used Photoshop CS3's Automate > Photomerge feature. Couldn't be easier to use. The quality is okay but some retouching should be done to get the best results.

Friday, November 7, 2008

Wall of Ships - Singapore

Last weekend I finally bought a DSLR. The Canon 450D with the 18-55mm IS and 55-250mm IS lenses. A visit with my better half to Singapore's East Coast recreational area provided interesting material to shoot. My favourite result is this panoramic view of ships coming and going at the world's busiest port. It looks like a blockade of the island as they form a wall around the small island city state.

Download the full resolution image at 50,000 x 1280 and 17 megabytes in size. I guess 64 megapixels should be enough for anyone.

Cropped preview showing about 10% of the image at low resolution:
Preview of Wall of Ships, Singapore, Sebastiaan Deckers

It's a composite of 40 images taken in less than 2 minutes without tripod. I used autostitch to merge them in 3 groups, as the utility was unable to process the entire set at once. Then I crudely glued them together using Photoshop. There's a lot of mismatched colour in the first 5-6 shots as I didn't tweak any autostitch settings nor take time to set up the camera correctly.

Update: I made a 1920x1200 striped version of the full size image above. This fits any 16:10 widescreen display. A small part of the left side was cropped out and the sky/water has been trimmed. The 7 layers form a single continuing image.

Download the high quality striped image. It weighs in at just 1.6 megabytes.
Preview of Striped Wall of Ships, Singapore, Sebastiaan Deckers

Saturday, October 25, 2008

Fixing JSONP with CSS

I investigated several weeks ago to see if we can solve JSONP's flaw: Lack of error detection when the request does not arrive.

One possible new approach would use CSS as a carrier. There are two ways to import external CSS which a "csshttprequest" could exploit: <style/> (with @import rule) and <link/> to the URL. So far neither method works any better than JSONP.

The <link/> element does not provide an onerror event in DOM so it's impossible to detect loading errors.

The <style/> element DOES provide an onerror event but I can't for the life of me figure out a way to trigger that event! Does anyone know how/if it can be done?

If anyone figures out how to trigger an onerror event on a <style/> element they will essentially make cross site XHR exactly as powerful easy as traditional JSON.

Tuesday, October 21, 2008

Recruiting Good Programmers, in India

For a Javascript deveveloper position on my team I thought of hiring fresh grads with minimal experience but strong passion to learn, and open mind to technologies not commonly used in the industry. The reasoning: finding and hiring hard core Javascript programmers would be more expensive in time and money than finding passionate newbies and training them.

Our recruitment team contacted the Centre for Development of Advanced Computing (C-DAC). Fancy title. They provide intense six month 24/7 training in various programming concepts, languages, and platforms to gradates from an engineering background.

We supplied the Tic Tac Toe programming challenge to their students. Within a week the Centre had “short”listed about 65-70 candidates who returned Tic Tac Toe implementations.

Quickly I rejected 85% of the submissions because they were copies of each other or copy pasted from online resources with little to no modification or explanation. So those were a waste of time as they don’t show me anything about the candidate’s skill. Doing this initial culling took about two days of mind crushingly repetitive labour. The thought of writing an automated script to search for plagiarism crossed our minds and might be implemented still.

Then a round of telephonic interviews followed. Out of the eleven candidates I called over the span of three days, only one was selected for a personal interview. All the others did poorly on some or all of the following:
  • Tic Tac Toe implementation was extremely poor. Further discussion with the candidate did not reveal any understanding of fundamental concepts like OOP or patterns.
  • No background knowledge: never heard of open source, Javascript, TCP/IP, HTTP headers, BitTorrent (?!), Perl/PHP/Python/Ruby. I could only get textbook answers from these candidates on “What is polymorphism?” type of questions.
  • Zero track record of self-improvement and independent learning. They don’t read books, magazines, websites, blogs, or attend local tech conferences.
  • Absolutely no personal interest. Programming is seen purely as work and not something to enjoy as a hobby at home. None of the candidates had programming pet projects.
The last remaining candidate is due to be interviewed in the coming days. Let’s hope this goes well.

Saturday, September 20, 2008

PHPCamp Debrief

Today I attended a technologists' conference called PHPCamp in Pune, India. This gathering follows the Unconference model of self organised presentations. Anyone who is motivated can grab a marker pen and write their name and topic on a central whiteboard.

Due to a slow cautious driver and getting lost on the way our bus trip from Mumbai took almost six hours to cover the barely 200 km distance. This meant that by the time of arrival all presentation slots had been booked. All that was left were Birds of a Feather (BoF) session slots, so I signed up to present my previous talk on Running an Open Source Project.

Then I drifted between several talks, trying to meet interesting people and gauge their knowledge. One of the goals my employer has for sending its people to various conferences is to meet and recruit IT talent. It wasn't long before I found several passionate developers who have an interest in topics relevant to Directi's .pw business unit such as microblogging and social networking.

As it turned out several presenters had left without notice so I was lucky to get a spot in the main hall. The audience for my talk seemed to be well over one hundred. As is the case in India today, very few attendees seemed to have any experience with Free Software and Open Source projects. I'm slowly but surely making it my mission to promote open source among the vast Indian software developer community. The post-talk questions I received were mostly about basic concepts such as licensing: What is the "best" license? What are BSD/GPL/MIT/etc? What is Copyleft? Oh, and I got an invite to come talk at a company in Pune, which could be interesting.

I'm curious about the upcoming conference. Hopefully these events reach a wide audience and help percolate knowledge of open source and free software throughout the IT field in India. At the moment I feel that there is a disproportionate lack of contributorship coming out of India. Once more developers across the subcontinent discover the world of open source and participate in such projects, we are sure to see great things!

Special mention should be made for the wonderful tshirts designed by Directi specially for this event. The "PHP - Pretty Hot Programmer" shirts were a hit!

All in all a successful day trip. And we had lots of fun in the Porsche on the way back. ;-)

Wednesday, September 3, 2008

Cr for Chrome

I'm sure everyone here has heard about Google Chrome, its new browser. Chrome is Webkit+Javascript as a platform for future applications. Hmm, I wonder who has been advocating this type of platform since forever? ;-)

Now for some performance stats:

Open browser-mips in IE, FF, Cr. And allow me to coin the abbreviation Cr for Chrome since it’s the chemical element Chromium.

My machine’s results:
Internet Explorer 8 beta 2

Firefox 3

Chrome 0.2


For some reason the lawyers at Google were not paying attention when they rubber stamped the Chrome End User License Agreement (EULA). As others have pointed out this EULA makes it impossible to use Chrome without surrendering everything you post, mail, create, or do on the interwebs. So until this is fixed I won't be using, nor recommending, Google Chrome.

From using Chrome since last night I've noticed some bugs. Images don't seem to render completely. For example the contact list on or the UI icons in GMail are cut off.

My brother's osCommerce site is hopelessly broken. So are Digg comment threads.

The Chrome team was touting their automated testing tools and yet it has so many obvious bugs. I guess testing is not everything.

Thursday, August 28, 2008

Installing Mac OS X on a PC laptop

I just spent almost an entire day together with Latesh G. to install the excellent Mac OS X on my mediocre Dell Vostro 1400. We must have reinstalled it at least a dozen times, getting one step closer to success with each cycle. Thanks to Anthony G. we had access to the typical distros of Mac OS X 10.5 Leopard: JaS OSx86, OSX4ALL, iATKOS and Kalyway. Only the iATKOS flavour managed to even reach the installation wizard. After discovering that this disc had an error and burning a fresh copy, we finally got it deployed. My Dell is running Mac OS X in full graphical glory. And there was much rejoicing. As of now we haven't managed to get audio, wifi nor LAN working. Hence the installation is not really usable for development or other work. I'm not sure how we will find compatible drivers for those components. Does anyone have suggestions?

The biggest lesson I've learned so far: If you want to use a Mac, buy a Mac. While it's fun to play around and discover workarounds for all the compatibility glitches, for any sort of work you will want to skip all that and just drop some cash on the real deal.

Monday, August 4, 2008

How to Run an Open Source Project

This is a presentation I gave at the conference in Hyderabad, India on Sunday 3rd August 2008. Many in the audience were involved with open source projects as contributors. I aimed to give information for anyone to start their own projects. Current Free and Open Source Software (FOSS) project leaders can pick up some tips from my experience with Pandion.

Saturday, July 5, 2008

Agile Gaming

For me the most fun initiative at Directi has been the organizing of weekly Counter-Strike sessions. What started off with a handful of friends playing games on their own machines has quickly turned into a 35+ player event with people from almost every department playing on machines in a large section of the office. From trainees to senior management, everyone can frag the night away.

To scale these events we took a number of steps: having “Game Leads” to act as emcees; setting up simple but effective rules (eg. No drinking and gaming); setting up all workstations with the proper peripherals; and logging seat assignment. These policies came about through several iterations using the number of post-session complaints by the owners of those workstations as a measure of success. Now there are zero complaints and more gamers than ever before. Iterative design works!

At Directi we take a similar approach to software development. Each project team holds weekly sessions to discuss progress on our projects. Such short iterative cycles go a long way in minimizing time wasted on useless features. This retrospection is recursive and can be applied by smaller teams on shorter cycles such as daily stand-up meetings, or the opposite, briefings on monthly basis with people from other departments to share a high level project scope.

Using these techniques our software products are bound to be just as successful as our Counter-Strike frag fests!