Latest Blog Posts

Published

CSS media queries are used to create responsive layouts. Conventional wisdom tells us that we should use relative font sizes to specify layout dimensions, because that improves accessibility, however this wisdom is outdated in the current browser landscape.

Published

A reader of my blog recently sent me a question, and I'm going to answer them today. They wanted to get some guidance on using iTerm 2 to automate a MUD, which is basically a text-based MMORPG.

Published

I maintain a VPS which I use to self-host a variety of services that I use: Joplin Server, Seafile, as well as for hosting websites that I develop. For the past few years, that VPS has been managed with Docker Compose, but recently I decided to build something a bit bigger.

Published

For some reason, I've found that in my career a lot of the work I do ends up involving slow REPL loops: I make a change, run a command, wait for it to finish, and repeat. While I'm sitting there waiting, it's easy to be distracted by things, and I want my task to bring itself back to my attention when it's ready. This desire has led me on a multi-year quest to tailor my notifications perfectly, and in this post I'm going to share what I've come up with.

Published

iTerm2 is a very powerful piece of software and includes a plugin system that allows you to write Python scripts that terminal programs can take advantage of. In this post, we're going to write two Python scripts for iTerm2: one to automatically switch to/from Dark Mode, and the second to play a sound on your local speakers when an escape sequence is printed, even over SSH. I'll also share a few bonus snippets that take advantage of some of iTerm2's lesser known features.

Published

At my latest job, I've found myself setting up Prettier and ESLint on several different JavaScript projects. I've done it enough times that the process has become somewhat mechanical, so I wanted to document it so that others might be able to use the same process.

Published

I've maintained a dotfiles repository since 2011 (at least that's when I initially put it into git), and haven't thought much about it since then. I wrote a basic "dotfiles installation" script back in 2013 and have been using and lightly modifying that ever since. My primary use case was just syncing dotfiles between my personal and corporate Macbooks, so it didn't need much flexibility. However, the Makefile wasn't trivial and doing simple things like adding new files required knowing the magic incantation (a combination of undocumented convention and GNU Make functions).

Published

This is a short update about all of the hobby projects I have in flight. I'm mostly writing this as a way for me to keep track of what's next on each of them, so I can decide what to work on next. 😀

Published

If you haven't heard of glish before, check out the post What is Glish?

Published

Glish is a programming language used to write manuals that other programs can use to influence their behavior. In glish, you don't write a program; you write write a manual, which is a set of rules that another program can reference.

Published

If you haven't heard of glish before, check out the post What is Glish?

This is the first in a series I'll be publishing on my experiences creating a new programming language. I've been working on Glish since late 2015. It's gone through several complete rewrites as I've learned more about how the eventual programming language should look, but this epoch is trending in a direction that might be workable. I recently started writing notes about my progress to help coalesce my thoughts and direct my development efforts. I typically do this at the end of any day I make a commit to the repo, so this is just a dump of those notes. As time moves on, I might add more cohesion to these updates.

Published

I wanted to play some old video games, and I had a Raspberry Pi B+ lying around, so I thought I would check out RetroPie and get that working.

A picture of Ryan Patterson
Hi, I’m Ryan. I’ve been a full-stack developer for over 15 years and work on every part of the modern tech stack. Whenever I encounter something interesting in my work, I write about it here. Thanks for reading this post, I hope you enjoyed it!
© 2020 Ryan Patterson. Subscribe via RSS.