q.ql.org

About Jay Berkenbilt

Table of Contents

Introduction

Welcome to my little corner of the web. Here you can find out a little bit about what I’ve done and, if you are interested, something about who I am. Keeping this page up-to-date is low priority for me. I last updated it in February 2026. Information here is intended to be relatively persistent and may not be completely accurate in all its details. I try to make updates when there are major changes in my circumstances.

Basic Information

By profession, I am a software engineer. Although I have many years of experience, I am still very hands-on in my work. I spend a lot of my time actually writing code. In addition to coding, I spend time learning, designing, reviewing, and mentoring. Over the years, I have gravitated toward tools and infrastructure, which I approach with the full discipline of a software engineer. I like programming in system languages, especially Rust, and I am equally at home in the worlds of coding, system administration, networking, and Infrastructure as Code. I am an expert in a wide range of diverse areas. The tools and infrastructure niche, including computer infrastructure but also things like developer SDKs, is a perfect place for someone like me who is equally comfortable in software and IT. I enjoy things that are close to the computer, like image processing, PDF manipulation, databases, and algorithmic work.

I have other interests as well, some of which are discussed later. I am also a parent of twins, and I volunteer for various school and school system-related activities.

Open Source Software

qpdf

qpdf

When I can squeeze in the time, I enjoy doing open source software work. My most widely-used project is qpdf, which is a command-line program and C++ library that helps to perform various transformations on PDF files. I created it in 2002 and was the primary maintainer until 2022. Since then, while I have stayed involved, most of the day-to-day work, and a considerable amount of refactoring, has been done by a co-maintainer. qpdf started off small, but it has gained some popularity over the years. It has been used by the Linux Printing project, and it is also used by a number of commercial users. It has been part of two Google Summer of Code projects, and I received two open source awards from Google for qpdf. qpdf is part of virtually every Linux distribution and can be installed on Windows and Mac using their preferred package systems as well. You can find the source on GitHub. qpdf is released with the commercial-friendly Apache License. I have spent most of my career building on top of open source software, and qpdf is one of the ways I can give something back.

Syntoniq

Syntoniq

Syntoniq converts musical notation in text files to CSound or MIDI output. It is written entirely in Rust. It was designed from the beginning to represent music in any tuning system, which makes it ideal for use with microtonal music. Syntoniq generates MIDI using MPE (MIDI Polyphonic Expression) with pitch-bend. These can be used as is or imported into a Digital Audio Workstation for further refinement if desired.

QFS

QFS is a tool for synchronizing collections of files across multiple locations. I use it daily to keep my personal files in sync across several desktop, laptop, virtual, and server systems, each of which has some different subset of my personal files. It works by maintaining a flat-file “database” of file information and, with careful conflict detection, pushes files to and pulls files from a central repository in S3. QFS is written in Go.

Terraform Helpers

tfsetup allows you to apply go templating to terraform files, which helps reduce boilerplate, but it does this without being opinionated or forcing you to adopt abstractions or models that other tools may impose. It’s tiny, and when you use it, you still type terraform or tofu to apply your projects. tfsetup is written in Go.

tfsplit is a tiny but powerful Python script that reads Terraform state JSON files and splits them into a file system hierarchy. This makes it possible for you to do massive Terraform state refactoring by just moving files around or doing replacements in files. It picks up where moved blocks leave off, allowing you to refactor entire modules, split and merge projects, etc. It is an expert-level power tool that’s useful at a scale where you can refactor code and state together and keep terraform plan clean as you go. Using this tool has saved me countless hours of work in state refactoring.w

Others

In addition to these, I have made small contributions to a handful of open source projects, and I have a few additional ones myself, though none have achieved anywhere close to the level of popularity of qpdf. I have an automated test framework, QTest. QTest first appeared in 1994 as part of my first open source project called BCS, the Baseline Configuration System, which I posted to comp.sources.unix back in the day. Although BCS is long gone, QTest lives on as the framework used for qpdf’s test suite. QTest is an old framework that I originally designed for integration testing of command-line tools. There are better choices for new software, though it’s still a fully capable system with plenty of functionality. The coverage system in the paper I cite below is fully integrated with QTest, at least for now.

I am also a Debian developer. At one time, I maintained several packages. Now I just maintain qpdf.

Videos

Some of the videos below can be found on my YouTube Channel. Some are posted in other places.

Arrangements and Performances

These are all performances of music I have transcribed or arranged. I have received permission from the copyright holder and/or purchased cover song licenses for all of them.

Synesthesia Videos

I wrote a blog post about my synesthesia experience while listening to the closing movement of Glassworks by Philip Glass. If you’re interested in that kind of thing, you can read the blog post and watch the videos.

Other Videos

These are other videos I have made.

Physical 4D Magic Cube Videos

I created some tutorial videos on solving Melinda Green’s 2x2x2x2. You can find the videos at this YouTube channel.

Employment

Since June 2024, I have been working for KnectIQ. We’re a tiny team, so I do a little of everything. I back the CTO as an architect. I have spent most of my time writing Rust code including a full port of the entire “device SDK” from Go to Rust. I also do a lot of the “devops” work (including Kubernetes and AWS) and have written numerous tools and bits of software infrastructure. I like to stay in jobs for a long time, but I tend to move on if the company gets bought or changes too far from what it was when I joined (gets really big, changes business focus, etc.). You might call me a “jack of all trades and master of several.” I am happiest in a job where I can do a little of everything around coding, architecture, design, IT, etc., and I value the flexibility that allows me to be in the zone and do deep, focused works. I have passed up multiple managerial and a few executive level roles to stay as an individual contributor and technical leader, where I offer the most value.

Ultimately, I measure my success by the degree to which I can help others to be more effective and productive. If I have a personal slogan, it would probably be, “Measure twice, cut once.” Another candidate might be, “Always stay at least two mistakes away from disaster.” I try to realize both of these goals by designing systems and processes that help make the easy way be the right way.

For more about my employment history, you can check out my LinkedIn profile. My resume is not posted anywhere, but I will share it on request. Even when I’m not looking for jobs, I’m happy to have exploratory conversations.

Papers

I presented a paper on a specific approach for incorporating a form of software test coverage into an automated test suite. You can read the paper if you are interested. This is an old paper now, which predates many modern test frameworks, but the approach it discusses is still of value even now, and I still use the approach in my current work even with more modern tools.

Blogging

You can read any blog posts I’ve made on my medium page. My primary blog focus is technical deep dives on topics that I have some expertise on. This would mainly include PDF, infrastructure as code, or software engineering topics. I write infrequently but always have a backlog of posts to write.

JXQZ

I created a crossword-style word game called JXQZ.

JXQZ board image

JXQZ is similar to other crossword-style games but adds an additional feature: letter substitution. With letter substitution, you can use tiles from your rack to swap with tiles on the board as long as all words remain valid after each individual swap. Then, after you’ve done your swaps, you play a word normally except you have to use all the tiles you swapped. It’s like the puzzle where you have to convert one word to another one letter at a time. For example to get from RUST to TONE: RUST, RUNT, RUNE, TUNE, TONE. JXQZ is free and has no ads, hooks into social media, rewards, coins, or other extraneous distractions. For more details, visit the game’s main page. You can find help information, tutorial videos, and other information there.

I did this primarily as a learning project to update up my skills in web development, though I am not primarily a web developer. The frontend is Angular, the backend is Go, and it is deployed in AWS with Cloudfront backend to S3 for static pages and Lambda with a function URL for the backend. I’ve never advertised it beyond this page, and it doesn’t get played much. If I were to do it again, I would write the backend in rust and use either HTMX and minimal JavaScript or Leptos (at least as of early 2026) for the front end. I’m more of a systems/backend person, and I find the churn of Angular too much to keep up with.

Music

Another passion of mine is music. I play in the City of Fairfax Band, which I joined in 1993, and I also help out with a lot of the behind the scenes work, having served on the board of directors and helped out with various other administrative duties for several years, including handling the band’s IT needs. My strongest musical interests are in what we somewhat ironically refer to as “contemporary classical music.” My musical taste tends toward more modern works (from the late 19th century to the present), but I can appreciate the entire genre as well. I am a very active classical music listener and enthusiast and have a decent formal musical education as well. I like listening to music with my whole brain, appreciating it both emotionally and intellectually, and I enjoy finding new music as well as listening to my old favorites.

Lately, I have become interested in microtonal music, which I discuss above in the section on my Syntoniq project.

School-related Activities

Disability Advocacy

Since the 2023/24 school year, I have served on the Advisory Committee for Students with Disabilities. I am vice chair for the 2025/26 school year. This is most likely a one-year position.

Other Volunteering

I enjoy judging science fairs or other competitions, helping out with PTA/PTSA (I have done IT work for my kids’ PTAs on several occasions), and helping out with school band activities at various schools in the system.

Other Interests

I have a variety of other interests, some mainstream and some less so. I have always been a big fan of puzzles of various types but especially mathematical or logic puzzles. I enjoy recreational mathematics and the study of mathematics for its own sake. I also enjoy tactile manipulation puzzles like Rubik’s cube, even in higher dimensions. I have played a minor role in the maintenance of a four-dimensional magic cube analog and was the second person known to solve this puzzle. I also enjoyed analyzing and solving a new physical version of this puzzle. You can see my analysis in this series of videos. I also enjoy playing first-person Myst-style adventure games on the computer, though I have vanishingly little time to play them (think single-digit hours per year). I’m always up for a good game of Boggle or Scrabble as well.

Also, I guess it’s worth pointing out that no one has ever accused me of being a man of few words.

My GPG Public Key

If you would like to send me private email or verify something that I have signed, you can download my GnuPG public key block. I also have an older key block that I no longer use, but there are still things out there, like older releases of some of my open source tools, that are signed with it. Here is my current gpg fingerprint.

Closing Remark

I hope you’ve enjoyed reading this page. If you should want to contact me for some reason, you can reach me at the email address ejb -at- ql.org.