About four years ago I was on a writing kick, penning short stories and various other unpublishables in a quest to improve my story-telling. I recently rediscovered the following short story, which — though still rough — is at least appropriate for the season.

Caveat — I wrote this from the point of view of a woman, which (not being a woman myself) was perhaps a bit on the ambitious side. It was, after all, an experiment.

Geminids over Spain — Antoni Cladera


After work, Simeon and I went out to dinner for our ANNIVERSARY! One whole year! Can you believe it? …

Implementing a B+ Tree

I’m a sucker for data structures. One of my favorite things is to dig into a new (to me) data structure and try to implement it. This week, we’re going to look at a data structure that I’ve played with before, but which I’ve always enjoyed and which I think (hope?) will be something fun for everyone else, too: B+ trees!

First, though, let’s recap week #6…

Week #6 Recap

For the 6th weekly programming challenge, we tackled Perlin noise. The goal was to produce an image depicting perlin noise distributed across the canvas, which is something I’d never done before. …

Let’s make some noise…

One of the things I love most about these challenges is that it gives me an excuse to try things I’ve been wanting to try for a long time. For this week’s challenge, we’re going to take a look at something that’s intrigued me for a while: the Perlin noise function, a staple of the 80’s and 90’s demoscene.

But first, let’s recap week #5…

Week #5 Recap

Last week’s challenge was to implement a priority queue on top of a binary heap. This earned you one point. Additional points were earned for:

  • making your heap’s sort function configurable
  • allowing arbitrary data types

Simple in presentation, hypnotic in the details

I received a gift in the mail a few weeks ago.

As you may be aware, I’m a little bit obsessed about mazes. I’ve written blog posts about them, and even an entire book about algorithms for generating them randomly. I hear periodically from folks with questions about mazes, so it wasn’t anything out of the ordinary back in April when the talented folks at Stellavie asked me something:

I gave a few suggestions, and asked them to let me know how their project went.

Fast forward to July:

Wow! I liked it, a lot. A beautifully drawn…

Priority Queues and Binary Heaps

I can’t quite believe we’re already up to week #5! I’m excited about this one, but maybe it’s just because I have a soft spot for data types and algorithms. We’ll be implementing a priority queue, using a binary heap.

But first, let’s recap challenge #4!

Week #4 Recap

Last week’s challenge was to implement a program that drew lines onto a canvas of your own creation, using Bresenham’s algorithm (or a variation thereof), and then wrote that canvas to a file in PPM format. Doing this earned you one point. Going further (anti-aliasing, line styles, line thickness, etc.) earned you additional points.

Drawing Lines

I’m running a bit behind this week! Vacationing on beautiful Vashon Island has me struggling to keep up with my usual schedule. Plenty to do around here — the farmer’s market, the beach, hiking…lots of activities!

Some of my favorite programming activities are those that involve producing graphical output. There’s just something really satisfying about having the results of my experiments displayed visually, whether it be drawing mazes, curves, knots, or graphs. To that end, this week’s programming challenge will be drawing lines!

But first, let’s recap last week’s challenge…

Last week’s challenge was to write a program that would…

Finding Solutions to Mazes

I know, I know. You were probably wondering how long until I brought mazes into this. I can’t help it! Mazes are my go-to for exploration and recreational programming. We’ll get to this week’s challenge in a moment. First, let’s recap last week:

Maybe it was just grammars that were intimidating? Or maybe last week was especially busy? I don’t know. But only two people submitted solutions:

  1. Alejandro Perea, whose normal mode submission was almost a hard mode submission. All he lacked was a second grammar file! Check out his solution (in Ruby) here: https://github.com/aeperea/programming-challenges/tree/master/02-grammar
  2. Lasse Ebert, who submitted a…

Generate Random Names from a Grammar

The role-playing geek in me has always been fascinated by ways to randomly generate content for fantasy games. Fifteen years ago I wrote several programs to randomly generate treasures, dungeons, characters, and even entire towns, and I don’t think I ever got tired of seeing the endless variety of things that those programs produced.

Best of all, those programs sat at the intersection of fiction and another of my favorite things: grammars.


A grammar is just a formal set of rules that describe all possible elements of a set. For example, if we have a set of strings that…

Congratulations to everyone who entered the first weekly programming challenge! Elixir was apparently the programming language of choice, but that was okay with me, since I’ve been meaning to spend some time getting familiar with it.

The contestants, and their solutions, were:

My own solution, in Ruby, implementing an AVL tree (and thus meeting the hard mode…

Implement a binary search tree

I’ve been toying with an idea. This sort of thing is hardly new, so I don’t claim it as an original idea, but I can’t shake it, so I’m going to run with it.

Here it is: each week, I will post a new programming challenge. It might be to implement a data structure or algorithm. It might be to accomplish some task (like, find a solution to some puzzle or logistics problem).

It will always be something that requires you to write some software, and you will be challenged to complete it either as described (“normal”), or with some…

Jamis Buck

Programmer, Author, Lifelong Learner. http://www.mazesforprogrammers.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store