Slave to Fashion

I just watched The Devil Wear Prada last night and enjoyed it immensely. I know… old movie. Lots of interesting themes: climbing the corporate ladder, sacrificing for the job, dealing with difficult people, caring about your appearance, following your dream vs. selling out.

The thing that struck me as interesting was how Meryl Streep’s character (i.e. the magazine editor) had these discussions in the meetings about the contents of next month’s magazine. How a certain style was done two years ago, can we do something new. Fashion is all about trends and people wanting to follow into new and exciting trends.

The tech world is currently so fashion driven! I normally consider myself to be substance over style but even I succumbed to buying the famous black Macbooks back in 2006. The black ones cost more than the white ones with exactly the same specifications; guess which one I bought, haha! I don’t have an iPhone but I lust for it, even though the new ones have antenna problems. But the cool kids will still like me if I got a new Android phone, right?

Of course, once you get past the hardware, there’s the software. NoSQL is very hot and chic right now. And cloud computing is all the rage. Programming languages? PHP is making a comeback this season in the form of HipHop; but don’t count out Ruby on Rails yet! And the perfect accessory to your web app today is most definitely HTML5 – you want to be a leader or a follower?

Oh it is a glorious time to be in the industry right now!

Do Newbie Programmers Know that GPL is Viral?

When I started out on my career as a software developer, we were never taught about the consequence of copying code and using it in our own projects – except that it would be an academic felony for plagiarism. The first assignment of the operating systems course was to write my own linked-list code from scratch. I didn’t mind the exercise. But then again, coding by “Google” was a technique that wasn’t available at the time.

Today, coding by “Google” is an accepted and effective technique for getting the job done. I remembered pouring over the Win32 API manuals – good times! They even included examples!

So what are the consequence of using code from an example from MSDN? Did they explicitly say that it was okay to use it, even if it was presented to be used in such a fashion? Most of the time, there is an implicit understanding that educational code can be used… for your education.

However, someone who does not understand the consequence of the GNU General Public License can get himself into an intellectual property minefield quite easily, especially the coding by Google types. Let’s get right to the point: if you lift a portion of the source code from a GPL-licensed program and add it to your own program, you have created a “modified work” or work that is based on the “previous work.” If you distribute a version of the modified work, in binary form, you have to make available the source code for the “modified work”.

In other words, the GPL license is intended to be viral and ensure that the derivative works are also open sourced. Your boss probably wouldn’t appreciate the unintended consequences. There has been cases where proprietary software had been caught violating this and was forced to release their source code.

I am not about to argue for the merit or demerit of the GPL license; every “artist” has his own reasons for making his work available. However, anybody who enters the software world in a professional way needs to understand the consequence of GPL and the proper usage of code found on the Internet. By not educating new programmers about the GPL akin to not telling freshly minted stock traders about the consequences of insider trading.

I’m a Real Programmer – Honest!

On Hacker News today, this post from the RethinkDB came up. Their default interview question is:

Write a C function that reverses a singly-linked list.

(Actually, I usually ask an easier default question: Write a C function that reverses a C-string in place. Then I follow up something harder: Write a C function to determine the depth of a binary tree.)

If the person is expected to use C or C++ on the job, this is a fair question. The thing that makes this question difficult is that it requires the interviewee demonstrate his understanding of pointers.

I didn’t get pointers the first time I encountered them. I learned it straight from a book and had to renew that library book quite a few times. I studied the classic swap function over and over until I got it. It was like a lightblub that flicked on when it happened.

Whenever I have to do an interview, I am always reminded of my very first programming job as a co-op student. The interview for that job was just a discussion about my interests and hobbies. No programming questions but there were some brain teasers. My excellent transcript from school probably helped a lot.

A Project Too Big for the Academia

Did anybody watch Google World on CBC?

If you follow the online grapevines and feeds, there would be nothing in this documentary that would be particularly shocking or new. In fact I would say that quite a lot of it is just old news. However, I did find the part about the beginnings of the company interesting. Upon discovering that they had the magic formula for determining search relevance using a system cobbled together with spare computers and cheap parts, it was a matter of going all out and taking the idea to the end.

For the true academic, he or she might have been satisfied with publishing a paper and getting a PhD. Fortunately for Larry and Sergey (and fortunately for users of Google today), they set out to see how far the rabbit hole goes.

I think to build a great company you need to have a well defined hypothesis based on a theory for a market’s evolved future. And I think the most effective way to enter that market is to build a company like a scientist testing the theory. As an experiment.
-Dustin Curtis on The Science of Entrepreneurship

At the heart of all entrepreneurial efforts are experiments to test out different kinds of theories: Can I provide something of value? Can I build it with a minimal defect rate? Are there people interested in what I am offering? Can I make money out of this (which in Google’s case wasn’t even an issue at the beginning!)?

I have followed some rabbit holes in my days – going to grad school, starting new hobbies, online dating, starting a blog. Some have turned out to be more interesting than others. If I give some advice to a younger Alfred – go down rabbit holes, and don’t be afraid to go all the way to the end; who knows maybe a Wonderland of some kind is at the bottom.

(PS – I originally came across Dustin Curtis’s blog and essays through Hacker News. There is a Seth Godin-ness about the writing, if you enjoy that kind of thing.)