Thoughts on Go after writing 3 websites

“It’s easy to get excited about new technology like Go. The question is: how does it stand up to scrutiny after daily use?

I’ve written 3 web applications in Go, they’ve been running in production for over a month so I feel justified in publishing my opinion.

In the past I wrote web applications in Perl, PHP, Python (, Tornado, App Engine) so those are the technologies I campare Go to.

Of the 3 websites, AppTranslator, is web service for crowd-sourcing translation for software and was written completely from scratch.

Fofou is a simple forum and is a port of an earlier version I did for App Engine. Finally, this web site is a blog engine (also a port of an earlier App Engine version).

One reason to migrate from App Engine to my own server was to save money. At my levels of traffic (~3 requests per second) I was paying ~$80/month, mostly for the frontend instance hours.

Another reason was to do more complex processing (App Engine is great as long as you don’t have to do something that App Engine doesn’t support).

Finally, I wanted to see how Go will handle a real life project. The best way to test a new technology is on a project with a predictable (and relatively small) scope.

All websites run on the same Kimsufi 24 dedicated server (which is pretty beefy for its $60/month price). I’m using latest Ubuntu for the OS…”

Lessons learning Haskell

“It’s often claimed that learning Haskell will make you a better programmer in other languages. I like the idea that there’s no such thing as a good programmer, just a programmer who follows good practices. As soon as we stop following good practices  we suck again. So, Haskell must introduce and indoctrinate better practices that we carry back to our other languages. Right? I think it’s true but it’s not obvious, so I’ve written this article to outline some of the habits and practices that I think changed after I used Haskell for a while…”

Probability Tutorials

These tutorials are designed as a set of simple exercises, leading gradually to the establishment of deeper results. Proved Theorems, as well as clear Definitions are spelt out for future reference. (An alphabetical index A|B|C|D … should also be helpful.) Contrary to standard university lectures or textbooks, these tutorials do not contain any formal proof: instead,they will offer you the means of proving everything yourself. However, for those who need more help, Solutions to exercises are provided, and can be downloaded in A4 paper format from the Printing  page…”


Using xargs to do parallel processing

“Going though some log files the other day I came to a realization.  Most modern machine are muti-processor machines and they are rarely used as such.  I had a boat-load of log files that had been archived I had to go though.  It was taking forever to un-compress each one by one.  At first I thought I would just make a loop, send all the gunzip processes to the background and wait for them to be done…”