Emacs versus Vim

Here at LShift we take our programming pretty seriously. Which is why we now warm up properly before discussing important topics like static versus dynamic typing, tabs versus spaces and other such crucial aspects of our craft. An Emacs operator preparing for a discussion with a vim user about text editors.

Mutant Refactoring powers

Occasionally, I’ve found that when doing some refactorings (especially when splitting a class for example), it can be all too easy to include redundant code. Whilst most of the time it’s possible to eliminate that by a combination of careful inspection and keeping the tests green, I’ve found that mutation testing tools can greatly automate…

How readable are your comments?

You’ve done the Right Thing and written extensive class comments, docstrings and the like. But are they really readable?

Auto-generating LShift blog posts

I've often found myself at a loss for blog post topics, so rather than write one myself I decided to let a computer do the heavy lifting! Markov chains offer a neat trick for generating surrealist blog oeuvres. They work by figuring out the probability of one word appearing after another, given a suitable corpus of input material.

Fallacies of a Monad

DSL based templating sucks! This looks a very short beep-like sound card. Let paragraphs rely on a sense of data. Roy recently released my mind: In practice of course, it grew features.

Application-level change logging with EntityFramework

We have been developing Daylight, which is a records management system for Freedom from Torture, a charity dedicated to the treatment and rehabilitation of survivors of torture. Due to the sensitive nature of the data being recorded, Freedom from Torture wanted a way of tracking every change that was made to records. The application uses…