Why Emacs?

Why do I still use the emacs text editor after all these years? I could try explaining it to you, but I think I’ll defer this one to science fiction author Neal Stephenson: I use emacs, which might be thought of as a thermonuclear word processor. It was created by Richard Stallman; enough said. It is written in Lisp, which is the only computer language that is beautiful. It is colossal, and yet it only edits straight ASCII text files, which is to say, no fonts, no boldface, no underlining.

Programming Outdoors

As a software professional, I spend a lot of time indoors. It’s really not so bad: I have a nice comfy chair, ample desk space, and the office is always nice and air conditioned :-) But the past few days have been so beautiful here in Windsor that I’ve been taking my coffee and laptop outside to read the morning news and catch up on email. It makes me remember the good old days when I was working to pay for my undergraduate.

Life is Good

I’m sitting out here in my back yard, sipping a cup of freshly brewed coffee. The sun is shining and I can hear birds chirping away in the trees. This is what it’s all about: Not the hustle and bustle of work, nor the never-ending list of things to do with the house. Just me, my coffee, and a beautiful Sunday morning. This is the life. And it is good.

Playing Around With Racket

Lately I’ve been playing around with the racket dialect of lisp. Racket is a language of the scheme family, and so far I’ve found it simple enough to pick up through the provided tutorials. Things I like about it are Simple syntax. It is a lisp, after all, so there are plenty of parentheses. One thing racket does, however, is treat all brackets: (, [, and {, the same. As long as they are balanced by the appropriate closing bracket, they are interchangeable.

Playing With Bootstrap

You may have noticed that the appearance of my website has changed, starting yesterday. This is because I wanted to find an excuse to mess around with bootstrap, an excellent package of javascript and css for making front-end website design easy. For the time being I’m sticking with one of the sample layouts, but I plan to play around with it in the future, so expect to see some changes!

A Basic Monte-Carlo Simulation in Common Lisp

Monte-Carlo simulations are algorithms that approximate numerical results by repeatedly sampling some space. Generally, the more samples you collect, the higher the accuracy of the result. In this blog post I am going to demonstrate how to use such a technique to approximate the value of the mathematical constant pi. The high level idea is as follows. We know the area of a circle can be found using the formula A = pi * r ^ 2, where r is the radius of the circle.


I’m on vacation this week, and I’ve really needed it. Work is great, but everyone needs a break to recharge after a while. I’ve personally felt my battery draining closer and closer to empty for a few weeks now. So while on my stay-cation (I jokingly tell people I’m going to puerta my-yarda) I’m hoping to accomplish the following: Finish installing my hardwood floor. Only the stairs remain. Fix up my Haskell Weather package.

An example anaphoric macro in Common Lisp

Anaphoric macros are macros that capture symbols intentionally, only to refer to them by a different name (an apaphor is an expression referring to another.) A popular example in Common Lisp is the loop macro, which uses the symbol “it” to refer to certain things in different contexts. Here’s an example from wikipedia: (loop for element in '(nil 1 nil 2 nil nil 3 4 6) when element sum it) As another example, here we will introduce a special version of the built-in “lambda” special form, that introduces a symbol “self” that refers to the lambda being defined.

FreeSlack: A "free as in freedom" Slackware OS

If you are an avid slackware linux user like myself and want to run a free as in freedom linux distribution, check out the FreeSlack project. They’ve essentially documented all non-free packages that ship with a default Slackware installation and give instructions on how to remove them. They also provide free repositories for use with the slackpkg updating tool.

On Electronic Voting

There was a recent letter to the editor in the online edition of the Windsor Star that criticized the decision to use electronic voting machines in several local communities. I wrote up a comment to the piece, and thought I’d reproduce it here. I’m a Computer Scientist by training, and a software engineer by profession, and I agree with the gist of what is being said here. There’s too much that can happen from when you press the button to when the vote gets tallied, and the entire process is near-invisible for the majority of the population.