An Interesting Coding Problem

A colleague referred me to an interesting coding brainteaser. The problem statement was (paraphrased) roughly as follows:

Given a list of integers, produce an output list which consists of the product of every integer in the input list except the one at the corresponding index.

For example, given the list [1, 2, 3, 4, 5], the output should be [120, 60, 40, 30, 24].

As a followup, what if you can't use division?

More…

Pelican

I spent the day porting my blog from a hacked-together homegrown static generator using Python and Jinja to Pelican, a free software static generator using Python and Jinja. The result should be at least 90% invisible, which is partially a result of the shared foundations, and partially a testament to good, flexible design on the part of Pelican.

More…

Compile-time Typechecked Sum Types in Java

Java has compile-time typechecked sum types with exhaustive matching built into the base language.

“Of course it doesn't” you say? “Their absence is one of Java's most glaring deficiencies”? Well, kind of. Read on to see what I mean.

More…

A Backwards Git Tutorial, Part 1

Most git tutorials start with teaching you a series of commands to manipulate a repository and only follow up later, if at all, with the effects those commands have on the underlying data. This is great for getting started quickly, but I think it underprepares users for more advanced usage: there's a fairly low limit to the number of opaque commands one can memorize to resolve a particular situation, and eventually every advanced user will need to learn what the underlying data model is and how git's commands manipulate it. So this tutorial is backwards: instead of starting with commands and working down to the underlying model, we'll start with the model and work up.

This tutorial was inspired by comments on this lobste.rs post.

More…

Error Pages

I added some custom error pages. You can check them out if you want for some reason. This change should have minimal impact on anybody.

More…