A Random Melody
Writing music with random melodies and the joy of building small programs.
Anykey: my first native macOS app
Almost by accident, I built a macOS app for binding hotkeys to shell commands. This is a story about it.
Makeshift image sharing using Alfred
Another addition to my Alfred workflows: a CloudApp-like image sharing support.
Easy Calendar navigation with Alfred
Using Alfred’s Script Filters to quickly jump to calendar events or relevant links.
Choosing Your Giants: Principles for Navigating the Landscape of Emerging Tech →
I gave a talk about the philosophy of technology choices at the (online) Philly ETE 2020.
I’m playing indie games again
I found a purpose for my Nintendo Switch: catching up on all the great indie games I’d skip on other platforms.
Manatee Waltz: Elm Game Jam #4 Postmortem
Julia and I participated in The Elm Game Jam #4. Here’s what we built.
Minimalism and music
Not all complexity is incidental. In music, it takes a trained ear to appreciate the loss.
Linking to Apple Notes
My iOS shortcuts and macOS scripts for linking to Apple Notes.
The saving joy of Persona 5
My 110 hours with a game I thought I’d dislike.
Statistically makes sense
In which I come to peace with the idea of understanding code by poking around.
The Haunting of the Hill House
This show was a joy to watch.
Writing little notes
Announcing my experiment with shorter, less technical format.
Build a video game, learn a programming language! →
A recording of my five-minute lightning talk at Philly ETE 2019.
A look at Elm 0.19
A compilation of some notes I took while working on the maze generator in February.
Functional mazes in Elm
In which, inspired by The Witness, I build a maze escape game in Elm 0.19.
Navigating the web via page search. In Safari.
Replacing the much wanted Firefox feature with a bit of AppleScript.
Flow Notes: Searching is Typing
Learning to navigate my OS faster by typing more.
Therapeutic parsers
Re-discovering the simple joy of parsing formal grammars.
What do you mean, “software sucks”?
Reflecting on the failure of contemporary software to live up to the “thought amplifiers” vision. But there’s still hope!
My Iptables trick
A single line of iptables config that makes me unreasonably happy.
Annual security and privacy review
Using the traditional GTD review process to step up your personal data security and privacy game.
Programmable Dictionaries
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.
A look at Uncharted 4
I’m taking a break from obscure programming insights for an angry review on Uncharted 4.
The language of programming
Coding as a non-English speaker, or what Excel, Illustrator, and functional programming can teach us about names.
Virtualized IDEs or Linux as an app
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.
The Pragmatic Programmer: From 1999 to 2017
18 years after its release, I read the Hunt’s and Thomas’ bestseller. In this belated review I’m wondering about its current place.
Haskell at work
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.
Standardizing on Capistrano
What makes deployments similar to database transactions, and why Capistrano is a good default choice to run your deployments.
Try8085: Looking back at an 8-year-old project
While reviving my old Intel 8085 simulator, I realized this forgotten project still had lessons to teach me.
Atomic symlinks
Filesystems are difficult. In order to interact with them, programmers often rely on lossy abstractions. Sometimes this harmless habit backfires.
Setting up a private OmniFocus Sync Server with NGINX on Ubuntu 16.04
A story of how I reverse engineered the OmniFocus Sync protocol just to make it work with my NGINX WebDAV server.
DeployBot ChatOps guide →
Another DeployBot guide of my authorship. This time I talk about implementing ChatOps with DeployBot.
“Clojure Applied” — book review →
In this detailed review of “Clojure Applied”, I try to compare my own difficulties learning Clojure with authors’ advice.
Bloodborne
I barely survived Bloodborne, but still can’t believe how good it is.
Laravel deployment guide for DeployBot →
In this DeployBot guide, I describe the process of configuring a Linux server for atomic Laravel deployments.
Monitoring server connection status with DeployBot →
Eugene and I reworked the environment settings page to display connection status to each one of user’s servers.
DeployBot API →
How I designed an API that doesn’t get in user’s way.
Machine learning in Clojure: Archaeologist, Pathologist, and Guru
A post-mortem of my first production-scale machine learning system.
Beanstalk webhooks revamped →
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.
Modernizing the Postmark Ruby gem →
Ruby has come a long way since 2009. I’m sharing some thoughts on redesigning the Postmark Ruby gem for the future.
Github Tools for Sublime Text 2
GitHub, too, is now within reach from your favorite code editor.
Multi-user support for Postmark →
Working in tandem with Milan, Igor, and Eugene, I added invited users support for Postmark.
Beanstalk integration for Sublime Text 2
I built a plugin that brings Beanstalk one step closer to your code editor.