Resumé

Published 2020-04-11 on Cara's Blog - Permalink

PDF Version

Overview

I’m an openly trans woman 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 with the following goals in mind:

  1. Simplicity
  2. Correctness (incl. accessibility)
  3. Efficiency

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

Announcing Rust 1.84.0

The Rust team is happy to announce a new version of Rust, 1.84.0. Rust is a programming language empowering everyone to build reliable and efficient software. If you have a previous version of Rust installed via rustup, you can get 1.84.0 with: $ rustup upd…

via Rust Blog January 9, 2025

Status update, December 2024

Hi! For once let’s open things up with the NPotM. I’ve started working on sajin, an Android app which synchronizes camera pictures in the background. I’ve grown tired of manually copying files around, and I don’t want to use proprietary services to backup my …

via emersion December 15, 2024

Post-OCSP certificate revocation in the Web PKI

Introduction Today, TLS certificates in the Web public key infrastructure (PKI) have long validity: almost all remain valid for at least three months! An attacker compromising a certificate early enough in its lifetime1 keeps it compromised for months. Cer…

via Posts on Seirdy’s Home September 25, 2024

Generated by openring