Performance of the ST Monad with Pure Exceptions

The ST Monad provides a venerable method in Haskell for writing stateful imperative code. Writing such code, in contrast to the non-stateful approach, is sometimes better. Some algorithms are better understood or better illustrated with states, and another reason is increased performance. The difference between ST and IO is important, because when we implement an algorithm, we only want to deal with the internal states and not bother with side effects that don't belong to it. Allowing stateful algorithm to remain pure under ST, gives way to better code generation by the compiler.

Toward Better GHC Syntax Errors

As a neophyte to functional programming and Haskell, with full appreciation over the succinctly outputted type errors, for a long time I felt something was remiss with the output of syntax errors. In this post I present a preliminary fix to GHC that improves in the aforementioned arena.

Build Maneuverings with External Linux Kernel Modules

Much of the material relating to writing Linux kernel modules does not discuss the scenario where you would like to replace existing kernel code or a driver with a wrapping interface, or a whole new implementation of the same component, or another scenario where you have one external kernel module that depends on another. Our Linux kernel is a standalone component and it doesn't like these sort of tricks, but its build system is advanced enough to allow to implement them cleanly.

Six Principles of How I Write My Journal

Despite not being a frequent blogger, I am consistent with keeping a private journal that documents my life. The level of depth and introspection achievable with a private journal is different than what can be expected from a public blog or posts in a social network profile (which show mostly an external view), and over the years I have learned about how greatly it contributed to my decision making process and understanding of self.

© 2010-2020, Dan Aloni