3 ms·
A few months ago, after reading on HN about long-term (forever) side projects, I decide to write a kind of personal tracker/ todo list/ personal knowledge base
by NhanH 12y ago
A few months ago, after reading on HN about long-term (forever) side projects, I decide to write a kind of personal tracker/ todo list/ personal knowledge base mix up (basically, a "this is my life"/ "this is my brain extension" app). I went through the exercise to pick a language, with the following criteria:
- The language will need to be usable for the next, let's say 20 years.
- The project will forever has only one developer, and one user (both me). That means I can pick whatever exotic language I want without any concern.
- Following from the previous criteria, it means the most important - if not only - necessary characteristic of the language would be programmer productivity.
- This is more of a point on framework rather than language. From the first criteria (long term), it means that it's probably safe to ignore any, and everything that is currently popular. Chance are those would be too bloated, and one they stop being popular, whatever productive was gained will be lost with dealing with the cruft anyway. Also, what's the rush in gaining productivity early on in the project anyway.
- If I can actually keep hacking at it, I might imagine myself using it on multiple devices. Also, I will probably be using a combination linux/freebsd/mac/windows a few times in the next 20 years that marrying to .NET or similar is a no-no.
- It has to be a reasonably "fun" language.
There are a few more criteria, but they're just natural extensions of those mentioned. Anyway, it was a pretty simple decision that it will probably have a backend API of some sort. But what about the frontend? A JS single page app seems to be fitting at first (multiple devices/ platform), but miserably fail the longevity criteria. Even without any framework, the current rate of change in JS/HTML means that I will have to keep redoing the entire frontend every few years.
Actually, on second thought it seems impossible for UI to be long lasting, for the simple reason that UI have to be specific to the platform. So I just decide to ignore mobile for the moment (that was a far-fetched plan anyway).
Without elaborating through each language. The first short list was actually a pretty easy choice of Common Lisp, Racket and Smalltalk (Pharo). With the choice of UI, I decided to go with Smalltalk!