General Update


Well, I've managed to go just under two years and a half years without posting a single thing to the blog. So, what have I been doing in that time? Time travel perchance? Or possibly something a bit more mundane like being frozen in carbonite or trapped in the Phantom Zone? While all very reasonable guesses, the answer is “no”. I've started several posts, but haven't liked any of them enough to actually publish.…
Read more ⟶

I'll be home for Christmas: Quarantine Piano Edition


This year, despite generally taking precautions and having two shots of Moderna, Christmas found me in quarantine in my home office, hiding away from my family. As far as Christmas traditions go, “physical isolation” has to be one of the more unusual ways to celebrate a holiday whose traditions frequently involve getting together in larger groups. It was Christmas day and I was alone, but it didn't really feel that way: my wife, daughter, and I spent Christmas lunch (and supper) talking via FaceTime.…
Read more ⟶

Wiki-Loader: Loading Wikipedia into Elasticsearch


Over the last two posts I explored the process of extracting a very large dataset (an XML export of Wikipedia) into various types of databases (an RDBMS1 and a Graph database) that I can run locally as a precaution against being marooned in the past should some portal, machine, or ancient artifact that send me careening backwards in history. While these two databases have satisfied my need to quickly look up information and find relational paths between said pieces of information, they still leave me needing to know exactly what I'm looking for.…
Read more ⟶

Wiki-Loader: Loading Wikipedia into Neo4J


In April, I put together a Python script that would load an XML export from Wikipedia into a local SQLite database because, once again, you never know when you'll inadvertently become a time traveller who needs knowledge of future events to return home. (Look, it's more interesting than just saying “because I find it amusing”, so just roll with me here.) This script satisfied the typical time traveler's use-case of “finding a bit of topical information quickly”, yes, but that is only one of the many use-cases that chronological explorers must concern themselves with before traipsing around through spacetime.…
Read more ⟶

Wiki-Loader: Loading Wikipedia into SQLite


The code for this post can be found on my GitLab While the last two years have realized a number of risks that we had all left unmitigated for far too long, one even greater risk has yet to be realized: the risk of unscheduled time travel. Yes, the grave concern that must be considered is that one moment you might be hanging out in the mall parking lot and the next you might find yourself delicately navigating 1955, aware that your only hope for return is tied to some esoteric piece of knowledge such as “when will the clock tower be struck by lightning”?…
Read more ⟶

Journey to Blogging CI/CD: From Jekyll to Hugo


In the previous post, I talked about much of the reason I quit writing posts was because of the painful workflow surrounding the whole deployment process. To top it all off, when I finally tried to automate it, I found out that the Jekyll theme that I was using had used had many unpinned dependencies: rather than specifying the version of each library that should be retrieved, the author of the previous theme had chosen to simply request the latest version available at any given time.…
Read more ⟶

Journey to Blogging CI/CD: Introduction


Judging by my prolonged absence from posting new content, it could safely be assumed that I've spent the last two years encased in block of carbonite. If that idea doesn't resonate with you, you might simply assume that life got busy. While one of those options is statistically more likely than the other, neither will take home any points for correctness. The truth of the matter is that I've avoided posting new content because posting new content is hard.…
Read more ⟶

Building Arduino Sketches from the Command Line


Just over two years ago, I wrote a little version of Snake for a 4x4x4 LED cube. Since then I've picked up several little Arduino devices, include a 6x6x6 LED cube, an Arduino Esplora, and the one I'm most excited about, an Arduboy. For every Arduino I bought, I had some grand plan. I never followed through on any of them though. It wasn't because of the technical challenge of writing an executable less than 32k in size.…
Read more ⟶

Introducing Chunky: A chunk generator for Minecraft


I have a love-hate relationship with the terrain from Minecraft. One the one hand, it's the terrain that makes every world kind of memorable in it's own way. It comes at cost though; the process of generating terrain can cripple a server. That's where Chunky comes in. Chunky lets you pregenerate a world so that our blocky wanderers don't cause the server logs to fill with “CAN'T KEEP UP!” Okay. Why?…
Read more ⟶

The Missing Git Command: The power of git blame without the blaming


The Worst Thing Ever I know the worst code that I've ever professionally written. It was an overly generic UI component. It managed to combine a total misunderstanding of MVC, heavy constructors, an overly broad interface that leaked abstraction like a sieve, empty methods, liberal use of Object, and was driven by unexceptional-exceptions. Oh, and it couldn't be resized. Not that any of that mattered. Despite all of the odds against it, it worked quite well from the user's perspective.…
Read more ⟶