Almost by accident, I built a macOS app for binding hotkeys to shell commands. This is a story about it.
Another addition to my Alfred workflows: a CloudApp-like image sharing support.
Using Alfred’s Script Filters to quickly jump to calendar events or relevant links.
I gave a talk about the philosophy of technology choices at the (online) Philly ETE 2020.
I found a purpose for my Nintendo Switch: catching up on all the great indie games I’d skip on other platforms.
Julia and I participated in The Elm Game Jam #4. Here’s what we built.
Not all complexity is incidental. In music, it takes a trained ear to appreciate the loss.
My iOS shortcuts and macOS scripts for linking to Apple Notes.
My 110 hours with a game I thought I’d dislike.
In which I come to peace with the idea of understanding code by poking around.
This show was a joy to watch.
Announcing my experiment with shorter, less technical format.
A recording of my five-minute lightning talk at Philly ETE 2019.
A compilation of some notes I took while working on the maze generator in February.
In which, inspired by The Witness, I build a maze escape game in Elm 0.19.
Replacing the much wanted Firefox feature with a bit of AppleScript.
Learning to navigate my OS faster by typing more.
Re-discovering the simple joy of parsing formal grammars.
Reflecting on the failure of contemporary software to live up to the “thought amplifiers” vision. But there’s still hope!
A single line of iptables config that makes me unreasonably happy.
Using the traditional GTD review process to step up your personal data security and privacy game.
I set out to build a program that generates flashcards from dictionary pages, but ended up learning a lot about vocabulary gatekeepers and ultimately questioning the service economy.
I’m taking a break from obscure programming insights for an angry review on Uncharted 4.
Coding as a non-English speaker, or what Excel, Illustrator, and functional programming can teach us about names.
I spent a year doing all my work in a virtual machine. It made me appreciate the flexibility of Linux and question the difference between an app and a VM.
18 years after its release, I read the Hunt’s and Thomas’ bestseller. In this belated review I’m wondering about its current place.
As a part of my quest to find a place for Haskell at work, I’ve built a specialized CLI client for the Postmark API.
What makes deployments similar to database transactions, and why Capistrano is a good default choice to run your deployments.
While reviving my old Intel 8085 simulator, I realized this forgotten project still had lessons to teach me.
Filesystems are difficult. In order to interact with them, programmers often rely on lossy abstractions. Sometimes this harmless habit backfires.
A story of how I reverse engineered the OmniFocus Sync protocol just to make it work with my NGINX WebDAV server.
Another DeployBot guide of my authorship. This time I talk about implementing ChatOps with DeployBot.
In this detailed review of “Clojure Applied”, I try to compare my own difficulties learning Clojure with authors’ advice.
I barely survived Bloodborne, but still can’t believe how good it is.
In this DeployBot guide, I describe the process of configuring a Linux server for atomic Laravel deployments.
Eugene and I reworked the environment settings page to display connection status to each one of user’s servers.
How I designed an API that doesn’t get in user’s way.
A post-mortem of my first production-scale machine learning system.
Along with hyperlinks, webhooks are the primary means of integration on the web. The new Beanstalk webhooks Eugene and I built are a breeze to use.
Ruby has come a long way since 2009. I’m sharing some thoughts on redesigning the Postmark Ruby gem for the future.
GitHub, too, is now within reach from your favorite code editor.
Working in tandem with Milan, Igor, and Eugene, I added invited users support for Postmark.
I built a plugin that brings Beanstalk one step closer to your code editor.