I recently finished my bachelor’s degree and I am currently in the first semester of my master studies. I felt this is the perfect opportunity to sum up the story from april 2011 until now. Judging by the number of posts that I have published the last twelve months it is obvious that I was quite busy with things different from writing blog posts. As a result, there is a great amount of things to write about. In order to give these things a structure I am going to divide this post into different sections.
Having recently moved into a flat with two roommates I had the honorable opportunity to put the washed cutlery from the dishwasher cutlery box \(b_d\) back into the kitchen cutlery box \(b_k\). To my horror this activity took longer than I liked it to take. I wondered about the cause of this slowness and a way to improve it. Then it dawned on me! \(b_d\) has six compartments but the cutlery wasn’t partitioned into these compartments. Instead, the cutlery in \(b_d\) was mixed between the compartments and so I had to put it from \(b_d\) into \(b_k\) one by one. To remedy this nuisance I suggested that, from now on, we should put the dirty cutlery into \(b_d\) so that it is sorted by type. Alas, my suggestion was not welcomed warmly and skepticism regarding the benefit of sorting the cutlery by type was expressed. Challenged by this opposition, I promised to reinforce my argument with a thorough run-time analysis of the problem. Read on to see why it is more efficient to sort cutlery by type when putting it into the dishwasher1.
I’ve been pretty busy the last couple of months and it is going to stay that way for the next couple of months as well so that’s why there wasn’t hardly any new content on this site1. Nonetheless, I wanted to write down some thoughts I lately had about the one or other upcoming programming language.
For approximately the last two and a half years I’ve been an Ubuntu user. Even before that I’ve been a Windows user but recently I’ve purchased a MacBook Air. No doubt, the hardware is great. It’s not all roses when it comes to OS X Lion, however. This is why I want to express my initial impressions with OS X, comparisons to Ubuntu and stuff I’ve changed in OS X in order to make it usable and productive for me.
Some time ago I wrote a short post about how to configure your Ubuntu 10.04 server right after a fresh installation. Today, I present you a follow-up post on how to make your server installation more secure. I’m using an Ubuntu 10.04 VPS but the concepts should map to other distributions / servers as well.
I’ve written executable implementations of the three simple programming languages “Loop, Goto and While” that are used in Uwe Schoening’s book “Theoretische Informatik - kurz gefasst” to deepen the concept of computability. I want to succinctly talk about the process of creating these implementations in Haskell.
Thanks to a favorable “act of providence” I’m now working out again in a gym. That’s why I want to take the opportunity to share my old but refurbished notes on workout concepts.
Much later than anticipated I want to express the experiences I had when writing my mastermind simulation in Lua, Java & Haskell.
Now that half a year passed since the last post in this series here comes the April 2011 edition.
Being a Haskell beginner I wrote my first state aware code with the State Monad and ran into a misconception regarding the
put function. Fortunately, ezyang from the Haskell IRC channel gave me a task to solve that made my problem clear. In order to really understand the issue I decided to write a blog post in which I’m going through the solution step by step.