To receive updates in your inbox, subscribe to my newsletter.

My Top 10 Favorite Albums for Programming

May 12, 2020 • 4 min read • productivity

For me, programming and music go together like peanut butter and, well, music. Or like spaghetti and…music. Basically everything goes well with music.

Postpone now supports bulk importing posts

April 19, 2020 • 2 min read • projects postpone

Since launch, Postpone’s most requested feature has been the ability to bulk import posts from CSV. I’m happy to announce that Postpone version 2020.3.0, released today, now supports this feature.

Postpone's First Major Update

March 30, 2020 • 3 min read • projects postpone

It’s been a busy two weeks since I first announced the launch of my new project Postpone, an app for scheduling Reddit posts for increased views, upvotes, and traffic. I’m happy to announce that today I’m releasing a feature-packed update to Postpone: version 2020.2.0!

Announcing Postpone

March 16, 2020 • 3 min read • projects postpone

Today I’m happy to announce the release of Postpone, an app to schedule Reddit posts for increased views, upvotes, and traffic to your projects.

My Manager README

March 3, 2020 • 3 min read • management

The following is my Manager README. It outlines how I approach managing, what my values and expectations are, and how I best work with others. The canonical source for my Manager README can be found here.

Automate Python code reviews for free with GitHub Actions, Flake8, and Lintly

February 25, 2020 • 3 min read • python projects

Code is read much more often than it is written. As software developers, we have many options for ensuring our code is as readable as possible. In this post I’ll describe how you can use several free open source tools to automate code reviews in your GitHub repositories.

My 2020 OKRs

January 14, 2020 • 1 min read • okrs

I learned about OKRs in 2019, and since then have come to appreciate them. They’re simple: come up with one high-level Objective you’d like to accomplish, then come up with separate, measurable Key Results that indicate whether you’ve hit your objective or not.

Favorite Films of 2019

January 3, 2020 • 2 min read • film

For the last several years I’ve kept track of every film I’ve seen and ranked them. This year was no different.

Launching Lintly: One Month In

February 15, 2017 • 6 min read • projects

It has been about a month since I launched my app Lintly, an automated code linting website for Python, JavaScript, and CSS. I’ve learned a lot in the last 6 months while working on and deploying Lintly. In this article I’m going to recap Lintly’s first month and discuss all that goes into building a production app.

Handling webhooks using Django and ngrok

January 23, 2017 • 7 min read • django

In this article we’ll go over how to handle webhooks using Django, create a webhook in GitHub, and test the webhook on your local machine using ngrok. But first a brief primer on webhooks.

A Quick 7-Step Guide for Naming Your Next App or Startup

January 16, 2017 • 6 min read • projects

A few weeks ago I released a little web app to the world. The app is called Lintly, and it is a code quality checker that helps keep codebases squeaky clean.

Mistakes I Made Writing a Django App (and How I Fixed Them)

January 16, 2017 • 12 min read • django

I recently announced the release of a project I’ve been working on for a few months. The project is called Lintly. It is a continuous Python code quality checking tool that lints your code when you push to GitHub. I won’t go into detail about what Lintly is here — you can read about that in the other blog post or go to Instead, I’d like to discuss my experience creating my first proper side project, some of the mistakes that I made writing it, and how I fixed the mistakes.

Django Lazy Tags

August 16, 2015 • 2 min read • django projects

I work on a web application called SideKick. SideKick has several dashboards depending on the type of person logged in. The “type of person” could be an employee of SideCars (the company where I work), the owner of a car dealership, or a dealer’s agent. Each dashboard has lots of handy widgets, as dashboards are wont to do. We contain the logic of each widget in a Django template tag so they can easily be resused. Here’s an example of a widget:

Fixtures in Django 1.7+

July 27, 2015 • 5 min read • django

Django had support for loading initial data into a database before Django 1.7. It was simple: put a file called initial_data.json in the fixtures folder of one of your Django apps and it will be loaded into your database each time the application starts up. It looked a little something like this:

Django Birthday

July 13, 2015 • 2 min read • django

It’s time that I finally start a blog. I’ve put it off for far too long. And after spending a weekend with some of the more important folks in the Django world, I suppose you could say I’ve found a bit of inspiration. Here goes nothing.