# On my absence

EDIT: Or not. Did well in exams but I’m still busy…

Although probably very few people have noticed, I have not been very active on this blog in the past few months. This has been deliberate.

Around this time of last year, I was working on the post for my 2048 clone, when I really should have been preparing for my second year exams. This ‘should’ became very evident in my exam results.

I made the decision to try to focus more on my studies in the third year, and am pleased to report (to whoever is listening) that I seem to be having a bit more success than in the past. I still have a bit of a way to go, so I will need to maintain e-silence.

# needle: ASCII-fied arrow notation

Haskell programmers have access to so-called arrow notation for programming with arrows (i.e. generalised functions). It looks something like this:

{-# LANGUAGE Arrows #-}

f :: (Int, Int, Int) -> (Int, Int, Int, Int)
f = proc (a,b,c) -> do
d <- (+1) -< a
e <- uncurry div -< (d,c)
f <- negate -< e
g <- (*2) -< b
returnA -< (d,e,f,g)

To me this is not very satisfying. It doesn’t seem to convey the abstraction of data traveling through a network of machines particularly well, and it can be difficult to track the path of each variable through the network.

# Tetris in Haskell with Netwire and GLFW

A few weeks ago, I found myself on a ten hour plane journey, with nothing much to do1. What better time, I thought to myself, than to hone my programming skills on a quick project? Why not a Tetris clone in Haskell? The fact that I was offline and so had no access to documentation only added to the challenge. I slid my laptop out of my bag, and got to work.

# Dabbling in Computational Linguistics

About a month ago, /u/5outh posted an article called Modeling and Simulating Markov Chain Evolution in Haskell to /r/haskell. It’s an interesting read, and it has a fairly amusing conclusion — a twitter account called rapcandy that gives a single line of stochastic rap every day, using patterns drawn from the wisdom of Eminem.