Twasker : A Desktop Twitter Client in Haskell
A long time ago I wrote lots of code in impure functional languages. Pure functional, not so much. I'd start a Haskell tutorial then get bored and wander off. I recently got the bug again, and needed some sort of project to keep me interested when I got bogged down[1]. I sort of always assumed that pure functional languages should be hidden behind an interface while all the nitty-gritty stuff like GUIs got implemented imperatively, and I was thinking of maybe some sort of web service in Ruby that called over to a Haskell process for calculations.
But that would be boring.[2] I wanted something fun.[3] So...
Twasker is about implementing a production quality desktop Twitter client using only Haskell. The self-imposed rules say I'm allowed to call out to libraries for stuff like the OS X keychain service, but all the meat of the thing has got to be in Haskell. Oh, yeah, and it has to be pretty. Web 2.0 is all about style over substance, and Twasker has got to look good. Or at least plausible.
So far, it's mostly been about learning a whole new set of libraries (no DOM here) and some heavy duty monad abuse[4], but I figure that counts (it is technically Haskell, after all). I've set up a google code project and am planning on eventually uploading the source. Some day. Probably[5].
http://code.google.com/p/twasker
[1] Bogged down? Whatever could bog a person down when learning Haskell?
[2] Easy.
[3] Stupidly hard.
[4] What's the opposite of point free?
[5] Yeah, I'm using up one of my ten lifetime google code projects on this. I must be serious.
But that would be boring.[2] I wanted something fun.[3] So...
Twasker is about implementing a production quality desktop Twitter client using only Haskell. The self-imposed rules say I'm allowed to call out to libraries for stuff like the OS X keychain service, but all the meat of the thing has got to be in Haskell. Oh, yeah, and it has to be pretty. Web 2.0 is all about style over substance, and Twasker has got to look good. Or at least plausible.
So far, it's mostly been about learning a whole new set of libraries (no DOM here) and some heavy duty monad abuse[4], but I figure that counts (it is technically Haskell, after all). I've set up a google code project and am planning on eventually uploading the source. Some day. Probably[5].
http://code.google.com/p/twasker
[1] Bogged down? Whatever could bog a person down when learning Haskell?
[2] Easy.
[3] Stupidly hard.
[4] What's the opposite of point free?
[5] Yeah, I'm using up one of my ten lifetime google code projects on this. I must be serious.
Labels: engineering
You should follow me on twitter here.