I thought about learning a new programming language, to be specific one that was made with concurrent programming in mind. I tried to decide between Scala, Erlang and Clojure and finally decided on Clojure for no reason at all
I’ve ported a tiny (200 lines or so) text editor with encryption support that I’ve written a few months ago from Java to Clojure and so far I like Clojure. Especially the building an application while it is running part, really cool. This app doesn’t look like much but it’s actually one I use daily, to store sensitive data on my dropbox account (yes I’m paranoid). The Clojure version is about 30 percent shorter than the Java version (and that’s with some features added that were missing in the original Java version ^^). Took about an hour I think to learn Clojure well enough to port the app and the porting took maybe another hour.

Since Clojure is a Lisp I also started to switch from using Vim for programming to Emacs. It’s actually rather nice and the steep learning curve is a myth in my opinion. It’s perfectly usable after going through the ~30 minute tutorial. All the other features are just a pretty nice bonus and yes, learning about all of those could take years but you don’t have to learn them so they really shouldn’t be counted ^^
And after I’ve portet the text editor to Clojure I started writing Tweetility with Clojure (I’ll continue to develop the Haiku version too of course). The thing is, I’m using Linux on my desktop and Mac OS X on my laptop and I wanted a nice Twitter app for those operating systems for myself. Since Clojure runs on the JVM it runs everywhere where Java is installed (Java 5+, I keep it compatible since my old G4 iBook only runs Java 5). There are already quite a few good Twitter apps for those platforms but there are two problems. First, either they are Mac only or written with Adobe Air which means they are fast enough but still feel sluggish. Second, each of those apps have a few really nice features but none of them has all of those features that I want.
So, developing Tweetility for those operating systems too sounded like a great idea. Here are a few screenshots of my progress so far. It’s not much to look at yet, I have only just started. The screenshots are taken on Ubuntu Linux but it should look pretty much the same on all platforms. The screenshots are in chronological order so at the very bottom is the current version of Tweetility.




A few of the GUI parts are written in Java instead of Clojure since I was too lazy to look up how to do some stuff with Clojure instead ^^ This is actually a good thing though since Java should be 3 to 4 times faster than Clojure from what I’ve heard and the GUI should be as responsive as possible (and it is, tested on my slow as a snail single core 1 ghz iBook).

