No posts lately, as I have been working on a lot of stuff, but it just doesn't seem to finish all that quickly. For example, I have been trying to get the client working on my laptop for my company's VPN. It's almost there. It's stopped throwing errors about MPPE (it wanted to load a kernel, but I built it into the kernel), but still no dice. As a nice side benefit, I upgraded my kernel and deleted a lot of the spare code I had laying in my /usr/src directory.

Ocean's macros have made some progress. The past couple of days they were completely broken. Then, today, a breakthrough. Now they are only half-baked, needing the following problems fixed/tested: templates are assumed to be lists (this need not be the case; they could be a symbol, list, or template), the handling of literal identifiers, not allowing improper lists to match against proper lists, and hygiene (not tested).

Finally, I have been working on a Haskell tutorial. It is coming along nicely on the whole, with one stumbling block: the pragmatic use of Monads to handle state and imperative-style components. I understand it for the second half. In fact, that part is pretty easy to grasp, but the use of monads and monad transformers is trickier. I understand the concept of layering them. I just don't understand what they are. It's one of those I 75% understand situations. I just need to fill in that last 25%.

In some ways, Haskell is closer to being a functional language that is ready for steady applications programming than is Scheme. GHC's performance is pretty darn good at this point, so that whole can of worms is pretty much under control. Moreover, it has better library support at this point with work being done on several widget sets (gtk2hs looks pretty good, but I haven't taken it for a spin yet), SDL, and OpenGL. Many Scheme implementations have bindings to OpenGL, but few have SDL or GTK support that is anything better than alpha (including my favorite, Chicken). The biggest obstacle is that, despite many tutorials on the web, monads and monadic effects are a little tough to find good, low-level material on. I am close to becoming a Haskell convert. I just need to figure those monads out.