Resume
Education
Employment History
- Staff Software Engineer @ Danger Devices, Dec 2023 - Present
- Embedded Linux Development Team Lead @ ID Technologies, May 2023 - Nov 2023
- Independent Consultant @ Caketop, Feb 2022 - Nov 2023
- Staff Software Engineer @ Seam, Nov 2020 - Feb 2022
- Senior Software Engineer @ GitHub, Dec 2015 - Nov 2020
- Senior Software Engineer @ Cleversafe (now IBM Cloud Object Storage), Aug 2010 - Dec 2015
- Software Engineer @ CA (now part of Broadcom), Jun 2009 - Aug 2010
- Consultant @ Simple Logic (now defunct), Feb 2008 - May 2009
- Software Engineer @ DNA Communications, Jul 2005 - Feb 2008
- Adjunct Instructor @ Kishwaukee College, Spring 2005, Summer 2006
- Undergraduate Teaching Fellow @ NIU, Autumn 2003 - Autumn 2004
- Consultant @ Simple Logic (now defunct), May 1999 - Jan 2003
- Technician @ DLS Internet Services, 1997 - 1999
See LinkedIn for more details.
Articles
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
Personal projects
I currently maintain a few projects on GitHub:
python-starlark-go
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.
python-renameat2
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.
action-pyright
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.
gf-l100-lightcontrol
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.
This website
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.
Contributions
A selection of my contributions to open source projects:
- I made virtual serial ports drop carrier when they are closed in dosemu2
- 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
sload.f2fs
in f2fs-tools - 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 ofENV
in Podman - I added support for connecting via a UNIX socket to rmate