The story so far
October 28, 2006
Some of the things that have happened in the past few months (details to follow bellow, in the order in which it might interest people):
* Got a bicycle.
* Discovered LibraryThing.
* Decided to continue with the TeaGo project.
* Gave OCaml another try.
Bicycle
I’ve been wanting to get a bike for a long while now. The incentive was freedom – the freedom of movement, which is one of the basic human rights and all. Yes, a car can get you farther, but it never appealed to me. It’s a big investment – both time- and money-wise, and I’m severely lacking in the latter. (The military paycheck during compulsory service makes minimum wage look like a million bucks.) On the other hand, public transportation is not entirely dependable, isn’t always available (no buses from 0000 to 0500 and on Saturdays), and still costs money if you’re not in uniform. The answer is… the bicycle! Low-cost, high-efficiency, traffic-jam-agnostic.
Since this is my first bike in over 13 years (disregarding a failed attempt by my dad to revive my cycling abilities), I decided to go for a cheap second-hand one, since so many things can go wrong (it can get stolen, it would prove too difficult to use, I would get bored with it…). So now I’m the proud owner of a Mustang Pilot 200 mountain bike (a no-name brand, really), which I got for 320 NIS (that’s around 70$). I use a backpack to carry things, and have already accumulated some tools and experience in bike maintenance, including replacing a flat tire :-D The only thing it lacks are “wings” (that’s their local name, they’re wheel guards that protect from water and mud splashes should one drive into a puddle), which I will install next week.
Another advantage of a bike is the physical exercise – a pleasant side-effect of mere commuting! Especially in Jerusalem, which is built on hills. And it’s just *fun*. I took my own bike for a few off-road excursions already.
One problem for me, though, was the steep slopes I have to climb to get out of my neighborhood. To make matters worse, there is no single stretch to climb – there are stretches of upward slopes punctuated by descents, so to get to the main road one has to invest more energy than required. However, I have found a route that mostly avoids the pointless descents and eases the climb, so that was solved :-)
Another issue is the roads themselves. The main road through which I usually drive to get to the city center is called Derekh Hevron (“Hebron Road”). The road itself is too narrow and can be congested at times, and the sidewalk is packed with parking cars, trash cans, and doors out of which pedestrians can pop out without prior warning – a pain to navigate through. To top it all off is The Crossroads of Eternal Waiting. A solution might present itself in the form of Derekh Beit-Lehem (“Bethlehem Road”), which runs parallel to Derekh Hebron. I will certainly explore this possibility next week.
Finally, there are factors like sweat (in the summer) and rain (in the winter). But I stand strong in the face of such minor annoyances :-)
The bottom line is that bicycles rock. In under 500 NIS (~110$) (bike + all the accessories), I have basically solved my Jerusalem commuting problems. Huzzah!
A very nice website that allows you to catalog your library and share it with others. With a very simple and elegant interface, the point is the sharing itself – you can see how many other people own this book, the reviews available for it (or write your own), conversations surrounding it and so on. You can easily find people with similar interests and get recommendations from the system based on your own library. Or, you can keep it private and use it as a plain organizing tool. Either way worth checking out for any book lover :-) thanks goes to Justen for recommending it to me!
You can browse my own humble library (right now containing only titles I’ve read and own) here.
TeaGo
I while ago I tried writing a go game server with Ruby on Rails. Its aim was to be simple, and allow people to play go instantaneously through their web browsers – no registration, no downloads, no nada. Just create a table and start kicking ass. The project didn’t go too far – I eventually gave up on RoR, and didn’t even attempt to look back after I discovered that Ruby doesn’t support Unicode (this is a very sensitive issue for). The project will now be revived with TurboGears + SQLite, Leo and Darcs. If any worthwhile code every comes out of it, it’ll go to sourceforge. If it’ll actually be usable by actual go players, it’ll be deployed on a dedicated server with google ads and all that. But I’m jumping ahead of myself – statistically, my personal projects have the tendency to die very, very early. Being aware of that, I’m taking anti-stagnation measures.
OCaml
Programming languages are fun. They’re a great source of ideas, flame wars and new tools to tackle problems with. And there are quite a few languages – nay, language families – that are a goldmine for all of the above. Haskell, J and Mozart Oz are certainly on my to-learn list. But while they pose a considerable intellectual challenge, they are often not as practical as one would like, yet they have features which one would just *love* to have in his native language. And so the search is still on for a language which would combine the best of all worlds – expressivity and practicality, powerful abstractions and speed.
For this end I’ve been evaluating OCaml. It combines a lot of Cool Features I really like in Python and Haskell (functional and OO programming combined, type inference), and yet it’s down-to-earth and pretty darn fast, like C++ (statically typed, doesn’t force FP down your throat, is close to the machine but still portable and has a GC). I can’t say I finished my evaluation, but the outcome doesn’t look too positive, and here’s why.
Ask yourself this: how easily can you write an IRC client or an RSS parser in your favourite language? What if you just had the stdlib? If you need extra libraries, would it still be as portable as the language itself? How easy will internationalization of it be?
No matter how much you dislike Java or C# or Python or whatever, the fact is that the answer to the first question is “pretty darn easily” and to the second “I’d manage just fine, thanks”. This seems not to be the case with OCaml, however. Its stdlib is quite, erm, minimalistic. I don’t know yet how idiomatic are list and string manipulations in the language, but the stdlib doesn’t deliver as much as Haskell (for lists) and Python (for strings). There’s no urllib, AFAIK, and no Unicode support. There are libraries to handle these, and I’m working on getting them to work with Windows, but so far the Unicode one won’t compile into native-code.
Is it all worth it? Does OCaml have a future outside its current niche? That’s something I will attempt to answer in the near future.

October 29, 2006 at 11:03 am
I think you should look out for more developers to help you out with the TeaGo, it will speed up development. You might find a few as its a popular game among programmers, we even have two that play it (non-virtual) in the JLC meetings.
November 1, 2006 at 10:17 pm
I might, but for now I must make sure I’m quite familiar with the technology in question and can do most the development. Too many projects die because the original developers simply weren’t up to the task, and got tired and bored too soon (and I’m as susceptible to this as anyone). So at least version 0.1 will be entirely my effort.
November 4, 2006 at 5:55 pm
Congrats for the Bike! The whole issue sounds great, I mean, yeah.
November 12, 2006 at 8:33 am
As you say, OCaml is fast. This makes it well suited to number crunching problems where you’re analysing lots of data on a single CPU. OCaml is not well suited to applications that are inherently dynamically typed, e.g. web apps.
November 17, 2006 at 10:30 am
But are they, really? PHP/Python/Ruby are so well suited for web apps not so much because they’re dynamically typed, but because development in them is blazingly fast (particularly the feedback loop for the programmer is practically instantaneous).
As for concurrency, an apparently sensitive topic for OCaml (for Python as well, actually) – isn’t concurrency the wave of the future, and shouldn’t you be prepared to tackle it, considering your field of interest?
October 23, 2007 at 8:36 pm
Give me an old cool bicycle, and I’ll ride around the city for days.
February 26, 2010 at 8:14 pm
Lots of Good information in your blogpost, I favorited your blog post so I can visit again in the near future, All the Best