Workspace: Spreadsheet Grid Design

Improving spreadsheet grid design by thinking of the grid as an item inside of a container, instead of a container with items.
Summer, 2019

Programming Language Accessibility Test

When trying out a programming language, it should be easy to find the features, try it out, install it, write a program, and do several common things. I made a test for programming languages - similar to The Joel Test - that measures accessibility.
Sep 7, 2019

Review of Spreadsheet User Interfaces

You can find these images with a quick image search, but I wanted examples of each on one place so I can see the general UI patterns. What are the common elements that a user would see when using them? What do they have in common beyond the grid?
Aug 19, 2019

Metrics First When Writing Go Services

Classifying failure cases up front in metrics will help you quickly write clean code. This isn't Test Driven Development so much as it is Failure Driven Development.
May 20, 2018

Acoustic Fingerprinting Television

Let's jump to the good stuff: How hard is it to create a program that can acoustic fingerprint a television show? Can we identify the playback position of a video based on audio tracks? For this blog post I'll use The Drew Carey Show, because it's the only show of which I have multiple seasons.
Feb 6, 2018

Build Your Own Redux for React

I wrote this with the idea that it's easier in the long run to use the patterns that Redux represents, rather than using the packages that implement it. I now realize that I was pretty wrong on this one, but what sort of person would I be if I removed this post and pretended that it never happened? Here's to writing more blog posts that could be just as wrong!
April 17, 2018

Cloud Architecture with Packer, Terraform, Nomad, and Consul

When thinking about cloud providers, containers, and cloud architecture it's easy to want to find a silver bullet. But if you step back from the problem, you can use a set of OSS tools, services, and frameworks to make your services more manageable, and make changing and comparing providers easier.
Jan 1, 2018

1.0.1 Release of js-spreadsheet

Added 121 formulas, and fixed a few bugs, made Cells easier to handle, added support for scientific notation, clarified license, cleaned up parser a bit, added support for comma separated lists and much more.
Dec 3, 2017

Building a Spreadsheet with Formulas in Javascript

The first crack at trying to write a spreadsheet engine in typescript & javascript. Parser and grammars were mostly written by hand or converted from other OSS, which made this a lot of fun to write, but probably filled with all sorts of errors.
May 26, 2017

A Guesser's Guide to Google Spreadsheets

Stumbling through types, formulas, and errors in Google Sheets. I wrote this long before I had a firm grasp of spreadsheets, and their inner-workings, so this might best be described as my interior monologue when trying to figure out how and why spreadsheets sometimes do weird and interesting things.
May 4, 2017

Introduction to GRPC and Protocol Buffers in Go

Protocol Buffers + gRPC in Go.
Nov 26, 2017

From IDE to binary: Developing in Golang in InteliJ

Getting the plug-in right, and living in the IDE. This was written before Goland came out, but here for posterity.
Nov 5, 2017

Cluster membership with the SWIM protocol and the memberlist library

Toy example of cluster membership with SWIM. Written in Golang.
Oct 24, 2017

Captain's Log - a timestamped note-taking app

An electron app that uses a command-line like log to keep track of what you're doing and working on, saving it to a YAML file. I used this for a while at work to track some trial-and-error performance tuning of Java apps. Not being able to go back and change your text frees you from the desire to make each sentence perfect.
Sep 26, 2015

Procedural Terrain Generation

Using procedural algorithms to generate terrain maps.
Nov 30, 2016

Hexcraft: A Minecraft-like hexagonal tile editor

Hexagonal tiles that you can edit like a voxel-explorer game.
Mar 6, 2014

Live special effects for theatre performance with the Kinect

Shakespeare's Hamlet opens with a scene of two sentries discovering the Ghost of King Hamlet. More often than not, the part of the ghost is played by an actor in white makeup walking on stage to deliver his lines. I approached this project with the idea that through live motion capture and replay, theatre visual effects can serve to strengthen a performance, and breath new life to dead characters, even if they are just ghosts.
Dec 6, 2013