But today, I was re-reading an old blog post and I was reminded of Steve’s prediction. Jarosaw “sztywny” Rzeszótko, a young Polish blogger, had send 10 questions to 8 famous programmers and he had posted their replies (I had written about it too). Here are some excerpts from that post:
Q. What do you think will be the next big thing in computer programming? X-oriented programming, y language, quantum computers, what?
I think web application programming is gradually going to become the most important client-side programming out there. I think it will mostly obsolete all other client-side toolkits: GTK, Java Swing/SWT, Qt, and of course all the platform-specific ones like Cocoa and Win32/MFC/etc.
It’s not going to happen overnight. It’s very slowly been going that direction for ten years, and it could well be another ten years before web apps “win”. The tools, languages, APIs, protocols, and browser technology will all have to improve far beyond what you can accomplish with them today. But each year they get a little closer, and I’ve finally decided to switch all my own app development over to browser-based programming from now on.
Microsoft and Apple definitely don’t want this to happen, so a necessary first step will be for an open-source browser such as Firefox to achieve a dominant market position, which will in turn require some sort of Firefox-only killer app. (A killer app would be something like iTunes, something that everyone in the world wants to use, badly enough to download Firefox for it.)
Q. If you had three months to learn one relativly new technology, which one would You choose?
I do happen to have 3 months (part-time), and I’m spending it learning Dojo (http://dojotoolkit.org) and advanced AJAX and DHTML. I’m learning it by writing a fairly ambitious web application. Dojo’s really cool, and I’m sure it will only improve with time.
At a technical interview recently, I was asked:
What if you don’t like Java’s garbage collection, what would you do? How would you manage memory?
You can carve a large array of bytes on the JVM heap, implement your own memory on that array and manage it yourself, kind of a virtual-machine-over-virtual-machine system; but I don’t see very good reasons to do that. Well-informed engineers have worked over a decade to get the JVM garbage collection right – so if you have to dump all that work and cook up your own scheme, you better have very good reasons. I told as much to the interviewer – I would imagine that it can be done, but I don’t know of any situation where I would recommend it.
Dear readers, do you know a good answer to this question? Do you know any situation where you would recommend this? If you come across such a situation, what would your solution be?
Brain Charles Lara batted in an international cricket match for the last time yesterday.
With him goes the last of the classical batsmen. At the presentation ceremony at the end of the match, he asked “Did I entertain?” – he must have got his answer from the huge cheer from the crowd assembled.
Lara’s farewell was unlike any other. Despite being a dead rubber, the tournament got its first full attendance. When Lara got out, not only did he get a standing ovation from the whole crowd, but also from the press box (which I am told is a rare thing). And at the end of the match, even the umpires and the match referee had the grace to shed the starched formality and take pictures with the great batsman.
Here is wishing Lara a wonderful life ahead; and thanks to the great entertainment he provided over the 17 years.
I was reading through the Wikipedia entry on source lines of code and noticed this quote from Bill Gates:
Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
From their writeup on Tavant.
Who is a liquid coding champion? A crack coder at Tavant Technologies. For those who think coding is the stuff spy stories are made of, well, it is the backbone of a software programme. In any IT solutions business, when a client gives a specification for a certain programme, it seldom stays what it started out as. A good coder will keep this in mind and ensure his work is flexible from day one. That way, he doesn’t have to start all over again when the specifications change.
Liquid Coding was a programing competition held for programmers at Tavant Technologies. It is a 3-hour competition and one can pair up with another person. At the start of the first hour, you would get a set of requirements. At the end of the first hour, you get some more requirements and further some more at the end of the second hour too. Each requirement is specified as one or more executable unit tests, and they carry certain number of points based on their complexity.
The crux of the competition is to write code to match requirements under extreme time pressure, and write it in such a way that it is extensible enough when further requirements are to be implemented.
I paired with Vineeth for this competition, and we came first in the tech lead category. The experience was intense and real fun. It is one of the best prizes I have ever got; and definitely the one that I am most proud about.
Today I came across the article What Programming Languages Should You Know? by David Chisnall. David’s list of essential programming languages include C, Smalltalk, Lisp, Erlang, Haskell and Prolog.
Of these, I know only Lisp (Scheme, to be precise). Eric S. Raymond’s famous quote (David also quotes it):
Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.
I did some C during college, but I never learned the language well enough (I know enough to know that I don’t know it well enough) . Tom Drake, who works as a senior architect with Tavant, once advised me that learning C is important whatever language you actually work with. Tom should know – he has worked with lots of different languages and systems in his career. I haven’t followed that advise so far, largely because you don’t come across articles saying “How C cured cancer!” on reddit. One these days, I should go learn some C, I guess.
I am trying to learn Haskell – I have been following tutorials on the web, and have been making some progress. A friend who is returning from US is bringing a copy of Programming in Haskell, and I should get it by next month. I had worked through a draft copy of the book, and I found it lot more approachable than other tutorials I found – so I am looking forward to reading the actual book. Erlang also looks to be an interesting language, and I am curious to understand what all the cool kids are talking about its concurrency primitives. I haven’t read much about Smalltalk and Prolog (except some videos I watched about the Seaside web framework in Smalltalk).
The more languages you learn, the easier it is to pick up a new one. Eventually, you start thinking of every new language as just a set of modifications to a language you know already.
So, what are the languages have you learned or are planning to learn?
Cricket is almost a religion in India – and almost every fan has strong opinions on team selection, strategy etc. Not everyone’s opinion can be respected – in fact, IMHO, the only opinions that matter are of the ones who would be held accountable for their decisions.
But of late, many people involved with cricket are too quick to question the credibility of the person who voices an opinion. Rahul Dravid, one of our finest cricketers of all time, recently had his foot firmly in his mouth when he questioned team manager Chetan Desai’s credentials.
Today I was watching a cricket discussion on NDTV, and Ajay Jadeja mentioned that cricketers themselves are the best people to know when to wind up their career. He was responding to the results of an opinion poll, which he dismissed with contempt arguing that cricketers themselves are the best judges because they have played more matches than anyone who might have participated in the polls.
Rajan Bala, who was also on show, responded with an anecdote. Neville Cardus, the peerless cricket writer, when accused by a player he had criticised of never having played the game at the highest level apparently quipped with
I have never laid an egg, but I know when one is bad.
While I understand that not everyone’s opinion does matter, I believe that it doesn’t mean that only people who have played at the highest level can have good ideas on cricketing matters. Please let me know your thoughts.
I don’t know if this has happened before, but this is the first time I am hearing about it – a Bangladeshi cricketer’s effigy is burnt. From SuperCricket report:
Angry Bangladesh fans have burned an effigy of World Cup captain Habibul Bashar after his team fell to consecutive defeats in the Caribbean.
Bangladesh has lost 117 out of the 154 ODIs they have played since 1986. I can’t help wonder what the angry fans were doing those 115 other days! While you amuse at the cluelessness of the unwashed masses, there is more food for thought. From Indiatimes report:
Local newspapers in Bangladesh are tearing into their captain Habibul Bashar for his lack of fitness and couple of run-outs in the competition.
“He fell short of a yard while attempting a second run when, if he was fitter, even a third run was possible,” wrote former captain Aminul Islam in a newspaper column.
Aminul played as recently as 2002, and I would have expected him to be more sensible. Bangladesh didn’t have a particularly strong team when he left active cricket, nor did they build one since. Their progress under Whatmore & Bashar is impressive. If they could get some consistency in their performances, they could shake off the minnows tag.
BTW, I don’t remember Aminul being a Jonty Rhodes in his playing days. Looks like former cricketers are the same whichever side of the border they are!