Haskell Books and Tutorials
Haskell is really a language very worth knowing. It does many things so different than most other languages which I really enjoy.
I’d like to use this post to mention a few really good resources for learning Haskell:
Learn you a Haskell
Learn you a Haskell is a very fun and entertaining tutorial for Haskell very much in the spirit of Why’s poignant guide to Ruby.
It isn’t finished yet, but it’s really good to start with. (Via Wadler’s Blog)
Real World Haskell
Real World Haskell is a upcoming book I really look forward to. It is freely available on its website, so check it out.
Wikibook
There is also a good collection of Haskell topics on Wikibooks – Programming/Haskell
Wikibook is more interesting if you already know a bit of Haskell and would like to understand it more in depth.
Others
I liked Yet another Haskell Tutorial very much, this aims at people with a bit of background, though.
Another more recent book on Haskell is Programming in Haskell which is nice, but also quite basic IMO.
Of course there is always the Gentle introduction to Haskell
Enjoy.
Haskell is doomed to succeed.
— Sir Tony Hoare
Git Overview

My version control journey started with CVS, after that I looked at SVN, but never really used it. The shortcomings of centralized repositories were too obvious and with my increasing interest in Haskell I jumped on the distributed version control train with Darcs. I really, really liked it, but it had some nasty things too. After a while I was looking for something different and stumbled over Mercurial, again I was really happy with it but somehow my journey wasn’t over yet.
Mercurial Version Control Status in the ZSH Command Line Prompt
Show the status of the current project on the prompt.
I sometimes forget to push or pull changes to or from a remote repository. To remedy the problem I wrote myself a little script to show me the status on the prompt.
Free and Open Source Math Programs
In this post I’ll go through some of the most prominent math programs available with source code.
This is by no means “original” work, I just collected the headlines and links to various mathematical software projects out there. This started with an offer of my University (Mathematica for 13 Euro), but I don’t want to invest time in a tool I won’t have (free, or almost free) access to for the rest of my life.
Emacs Basics
A very basic Emacs introduction.
It’s been a while since I wrote my Vim Introduction and Tutorial (exactly one year). A lot happened between now and then, I chose to get a better feeling about Emacs for example.
The reasons aren’t easily explained; The most prominent reason is the awesome AucTex-mode since I’m working heavily with LaTeX lately.
Anyways, learning Vim and Emacs is better than learning only one of them :-).
Addendum to "Time Machine for every Unix out there"
My article about using rsync to mimic the behavior of Apple’s Time Machine generated a lot of traffic, and more important, a lot of feedback.
In this article I’ll summarize and try to clarify a few things.
Time Machine for every Unix out there
Using rsync to mimic the behavior of Apple's Time Machine feature
rsync is one of the tools that have gradually infiltrated my day to day tool-box (aside Vim and Zsh).
Using rsync it’s very easy to mimic Mac OS X new feature called Time Machine. In this article I’ll show how to do it, but there is still a nice GUI missing – for those who like it shiny.
XML as human interface and DSLs
While reading “The Definitive ANTLR Reference” by Terence Parr I encountered this quote. I’m a bit sceptic about XML beyond its use of data exchange, so the quote has completely won me over for the book.
Don’t be afraid to build a human-readable configuration file (I implore everyone to please stop using XML as a human interface!) or to build domain-specific languages to make yourself more efficient. Designing new languages and building translators for existing languages, when appropriate, is the hallmark of a sophisticated developer. — Terence Parr, The Definitive ANTLR Reference, Page 23.
Being an expert in XML is like being an expert in comma-separated values.
— Terence Parr
Linux peripheral devices configuration
Configuring "advanced" peripherals (Microsoft Ergonomic Keyboard 4000, Logitech MX1000) and performance tuning by installing the right display driver.
This weekend I tried to get my new keyboard (Microsoft Ergonomic Keyboard
4000) and my Logitech MX1000 Laser mouse to work properly. The Keyboard has
many extra-keys I didn’t bother to count, and the mouse has 12 buttons which
can be very useful at times.
Almost accidently I solved a bugging performance problem with the Firefox browser.
It was incredibly slow when opening Google Spreadsheets, well the whole system
was incredibly slow while loading the spreadsheet… .
Challenge Response Spam Filter
For good or evil?
The challenge-response spam-filter troubles me lately. If you don’t know it, here is how it works if both parties have a challenge-response spam-filter:
- I write an email to someone@domain
- The address gets whitelisted on my machine
- The receiver doesn’t get my message
- I get a message from the receivers mail-server to which I should reply
- I reply to the automatic message
- The receivers mail-server whitelists my address and delivers my initial mail
So far so good. Three questions pop up:
- What if the spammer uses my whitelisted email address to send his spam?
- What if only one of the two has a challenge-response spam-filter?
- What if spammers start to automatically reply to those messages?
Vim Introduction and Tutorial
I often tried to learn the great Emacs editor/IDE/operating system. The last time I tried it, I spent some time getting comfortable with it until I wanted to customize my .emacs file.
That was the point when I entered vi .emacs. As soon as I realized what I’ve done, I knew that Vim has won me over a long time ago.
Haskell - Laziness
Haskell is a non-strict, or lazy, language. This means it evaluates expressions only when it needs their results.
Laziness is one of the things that make Haskell special – really special. Lazy evaluation allows easy handling of infinite data-structures.
Haskell Basics
The article I wrote yesterday was just the beginning, today we’ll look at the next step in becoming Haskell experts.
Yesterday we’ve learned how to split up our program and how to compile, or run it. Today we’ll look at some basic features of Haskell.
Haskell
Danger! If you are happy with your current knowledge of programming languages, don’t read on – Haskell might be responsible for some serious defects in your motivation.
I was always some kind of programming language geek. I loved learning and playing around with all kinds of programming languages1. Currently I’m trying to learn Haskell. Even though I learned functional programming at my university (two semesters using Haskell), I didn’t really learn how to interact with the outside world. This is where things start to get messy, no matter how beautiful the language is.
MacFUSE
You probably heard about MacFUSE (announcement). MacFUSE is an OS X implementation of the popular FUSE project (well known to Linux enthusiasts).
I just found a tech-demo video showing some really interesting features and possibilities of FUSE (of course it’s not limited to MacFUSE).