A picture of Ryan Patterson

Ryan Patterson

Freelance Software Generalist

Hire me

You need software that both works right now and will be maintainable by your team for years to come, even though the business requirements will change. I can help you build that software.

Here’s what I can do for your business:

Over 15 years of software development experience


open source, personal projects, ACM ICPC

Freelancer Developer

various companies & technologies


application design, leadership, training, code review


employee onboarding & training, internal tools

If you need an experienced software developer to help your organization scale up, let’s get in touch.
Contact me
Find out about what I’ve been up to.
Here are some recent posts from my blog. See more posts.

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.

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.

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.

Let’s discuss how I can help your business run more effectively.
© 2020 Ryan Patterson.