- Embedded Linux Development Team Lead @ ID Technologies, 2023-present
- Independent Consultant @ Caketop, 2022-present
- Staff Software Engineer @ Seam, 2020-2022
- Senior Software Engineer @ GitHub, 2015-2020
- Senior Software Engineer @ Cleversafe (now IBM Cloud Object Storage), 2010-2015
- Software Engineer @ CA (now part of Broadcom), 2009-2010
- Consultant @ Simple Logic (now defunct), 2008-2009
- Software Engineer @ DNA Communications, 2005-2008
- Adjunct Instructor @ Kishwaukee College, Spring 2005, Summer 2006
- Undergraduate Teaching Fellow @ NIU, Autumn 2003 - Autumn 2004
- Consultant @ Simple Logic (now defunct), 1999-2003
- Technician @ DLS Internet Services, 1997-1999
See LinkedIn for more details.
I write articles for Linux Weekly News:
- December 20, 2022 - Beyond microblogging with ActivityPub
- November 29, 2022 - Microblogging with ActivityPub
- October 18, 2022 - Identity management for WireGuard
- September 13, 2022 - LXC and LXD: a different container story
- August 23, 2022 - The container orchestrator landscape
- July 26, 2022 - Docker and the OCI container ecosystem
- July 5, 2022 - An Ubuntu kernel bug causes container crashes
I currently maintain a few projects on GitHub:
This is a module that allows using Starlark from Python. Starlark is a dialect of Python, so essentially what this gives you is a safe sandbox to evaluate arbitrary expressions. This is useful when you want to execute code that you don’t entirely trust. This was originally based on pystarlark, but I ended up almost completely rewriting it. I learned a lot about Cgo and the CPython API while making this.
This module allows using Linux’s
renameat2 syscall from Python. The main reason you might want to use
renameat2 is to atomically swap two files. One neat thing about this is that it calls the syscall directly, so you can use it even if your glibc is too old to know about
renameat2. Right now it uses CFFI; one day I plan to apply the things I learned about the CPython API while working on python-starlark-go to remove that dependency.
This is a GitHub Action to run the Pyright static type checker. It uses Reviewdog to report any problems it finds. I wrote this because I wanted the same Python type checking that I had in VSCode as an Action.
I own a floodlight camera of questionable provenance, which runs questionable software that talks to a questionable cloud service. I broke into the camera and disabled all of that, but it left me without a way to control the light. This is a tiny Go application that I wrote to allow controlling the light through Home Assistant. I’m fairly sure nobody else uses this; sometimes I think I might even be the only person who owns this model of camera. It’s mostly here in the portfolio to prove that I can write Go.
My main motivation for building this website is to market my services, but I also wanted to get out of my backend comfort zone and learn a bit more about TypeScript and modern frontend things. It has been an enjoyable change of pace. I’m tagging posts about the site’s development with jordemort.dev, if you’re interested in how it’s made. I am particularly pleased with the client-side search I implemented.
A selection of my contributions to open source projects:
- I added support for multiple peers, tunnels and proxies to wireproxy
- I fixed compatibility with FFmpeg 5 in libcamera-apps
- I added support for X11 forwarding to lima
- I added support for hard links to
- I added support for Podman to virt-what
- I added support for a using custom GITHUB_TOKEN to action-bumpr
- I fixed $? getting clobbered in PROMPT_COMMAND in bash-preexec
- I added support for PyPI and ManKier to searx
- I added pipelining to the buildah transport in Ansible
- I added a buildah transport to Mitogen
- I fixed
podman import’s parsing of
- I added support for connecting via a UNIX socket to rmate