Resumé
Overview
I’m pursuing a Computer Science degree. I’ve been writing software for around ten years, mostly in games and web APIs.
I write and design my software and systems with the following goals in mind:
- Simplicity
- Correctness (incl. accessibility)
- Efficiency
I’m not currently looking for a role in software engineering, I prefer to work on infrastructure and related systems. A lot of that work does involve software though!
Skills
- Linux Systems Administration
- Backend API design and implementation
- Golang
- Python
- Web application development
- Flask (Python)
- Native CLI application development
- Rust
- Golang
- Python
I’m currently learning:
- JunOS
- Network Architecture
Selected projects
deployd (repo)
Written for the Boreal Express, deployd
is a
software deployment tool designed for minimal end-user interaction. It scans for
directories in a root (for boreal, /boreal/sites
), determines if they’re
“static” (just HTML) or “dynamic” (have a backend, etc). It then creates the
NGINX config, configures SSL, and starts a systemd unit for dynamic sites. All
this happens without the user needing to do much of anything, except bind to the
port passed to the site via the PORT
environment variable.
The static vs dynamic determination was done by checking for the existence of
either an index.html
or an entrypoint.sh
file. If an entrypoint.sh
file
was found without an index.html
, the site was deployed as a dynamic site.
Otherwise, if an index.html
was found, the site was deployed statically. One
of the major pain points identified on the Hacker Zephyr
was that switching projects between static and dynamic required manual
intervention – mostly because that event’s deployment tool worked off of
inotify
. Since deployd
is run as a cronjob regularly, it avoided that issue
by constantly re-evaluating the type of site.
NetWrench (no repo available)
As part of my employment at WPI, I was tasked with rewriting a few pieces of legacy web applications from their original PHP into a more maintainable Flask form. The first of those was NetReg, described below. My second project was NetWrench, which brings together all the various documentation sources used by Network Operations (IPAM, physical infrastructure, ClearPass) into one place that could be used by other departments. As part of this, I developed several API libraries for our internal services to make it easier to integrate with them.
NetReg (no repo available)
As the first application I was tasked to rewrite, NetReg set the tone for the Flask engine I developed for WPI. Its purpose was to allow students, faculty, and staff to register their devices MAC addresses for use on the campus wireless and wired networks, as well as being the captive portal for unauthenticated wired devices.
Articles from my webring
Using Podman, Compose and BuildKit
For my day job, I need to build and run a Docker Compose project. However, because Docker doesn’t play well with nftables and I prefer a rootless + daemonless approach, I’m using Podman. Podman supports Docker Compose projects with two possible solutions: ei…
via emersion February 23, 2025Announcing Rust 1.85.0 and Rust 2024
The Rust team is happy to announce a new version of Rust, 1.85.0. This stabilizes the 2024 edition as well. Rust is a programming language empowering everyone to build reliable and efficient software. If you have a previous version of Rust installed via rus…
via Rust Blog February 20, 2025A holistic perspective on intellectual property, part 1
I’d like to write about intellectual property in depth, in this first of a series of blog posts on the subject. I’m not a philosopher, but philosophy is the basis of reasonable politics so buckle up for a healthy Friday afternoon serving of it. To understand …
via Drew DeVault's blog February 13, 2025Generated by openring