footer
Jonathan Moore
Portfolio
Note: To best experience this site, rotate your screen from portrait to landscape.
Use arrow keys or swipe left/right to navigate.
About me
I am a Software Engineer II at H-E-B and a Computer Science (summa cum laude) graduate from the University of Texas at Dallas. I love functional programming, whether it be writing Haskell at my job, tinkering with Rust in my free time, or using FP-inspired frameworks like React and Solid in my web projects. I also have a background in cybersecurity research, with a particular interest in binary and network exploitation.
In my free time, I love playing cello in a small ensemble, rock climbing, and hiking.
GitHub LinkedInWorkplace experience
5 years in software
Click on an item to expand.
H-E-B: Oct 2022 - Present (4 years)
Software Engineer II, H-E-B Nov 2023 - Present (2 years 11 months)
- Awarded Software Engineer II of the Year in 2025 for leading a project to cut $5 million per year in supply chain costs by designing a tariff intake system on a tight two-sprint deadline and resolving conflicts between different stakeholders.
- Co-lead a project to cut PostgreSQL CPU usage by 40% and GCP costs by $900/month via structured concurrency.
- Researched PostgreSQL internals in order to pull off a massive (>2 billion row) data migration without downtime and even monitor the progress pre-commit by querying PostgreSQL MVCC system columns.
- Mentored a new engineer in both our tech stack and domain knowledge, culminating in us collaborating on a REST API to collect data from 2,400+ suppliers.
- Cut deploy time to GCP by 15 minutes and cut Kubernetes manifest file count by 75% by rearchitecting our K8S and Docker Compose setup and authoring the Deployment Environments for GitLab browser extension.
- Contributed to static-ls, an open-source Haskell language server (LSP), adding new code autocomplete actions to bring Haskell tooling more up to par with that of other languages.
- Co-directed a Change Data Capture (CDC) pipeline from Oracle to PostgreSQL using triggers, advisory locks, and views. This enabled efficient current and point-in-time data access and reduced discrepancies (10% to 0%).
- Rewrote one of our least performant migration queries to cut its completion time from over a day to under 8 minutes.
Software Engineer I Oct 2022 - Nov 2023 (1 year 1 month)
- Caught sneaky edge cases with our team's planned redesign, which I presented to the team with data analysis and pros and cons of multiple solutions.
- Improved the clarity of all our SQL queries by refactoring them to use a quasiquoter instead of raw strings.
- Awarded the company-wide dependability (“Kodi”) award for October 2023
- Promoted to Software Engineer II after only a year (November 2023).
Tyler Technologies: May 2021 - Aug 2021 (4 months)
Software Development Intern
Used C#, WPF, MVVM architecture, and Material Design components to
rewrite a legacy Silverlight application.
UT Dallas: Feb 2020 - Dec 2020 (11 months)
Research Assistant
Worked on a team of PhD students creating a framework to evaluate fuzz
testers via artificial bug injection. I read papers, designed and ran
experiments, developed parts of the toolchain (such as a small Clang
compiler plugin to rewrite source code and a custom Primus Lisp plugin
for the Binary Analysis Platform microexecutor).
Non-software experience:
UT Dallas: Feb 2018 - Aug 2018 & Feb 2019 - Aug 2019 (1 year 2 months)
Orientation Leader
- Lead small groups and provided academic advising, correctly handling confidential student records
- Awarded Returning Orientation Leader of the Year for 2019
Education
- Coursework for M.S. Computer Science, Georgia Tech
- Partial (Fall 2021 - Spring 2022) - did some graduate coursework before starting work at H-E-B for personal enrichment
- Graduate coursework I've taken: Human-Computer Interaction, Network Security, Information Security
- GPA 4.000/4.000
- B.S. Computer Science, University of Texas at Dallas
- Graduated Spring 2021
- Honor Graduate - Summa cum laude (top 5%)
- GPA 3.972/4.000
Projects
Here are some of my featured open-source projects. Click on an item to expand more details.
postgres_named_parameters (Rust library)
Type: Personal project (library)
Tools: Rust
Overview: A lightweight macro wrapper around the postgres crate which gives you the ergonomics of named parameters in your raw SQL queries. Under the hood, your named parameters are transformed into numbered parameters at compile time.
View on GitHub
View on docs.rs
hanzi-svg (TypeScript library)
Type: Personal project (library)
Tools: TypeScript
Overview: A TypeScript library to create animated SVGs of hanzi (Chinese character) stroke order animations. While a library for stroke order animations (hanzi-writer) exists, I wanted something more lightweight (no requestAnimationFrame()`) to maximize performance for my use case (namely, including stroke order animations in my Anki flashcard deck). Thus, I studied the SVG spec in order to leverage SVG-native animation capabilities and get the bundle size down to 3kb.
View on GitHub
View on NPM
Deployment Environments for GitLab (Browser extension)
Type: Work project
Tools: JavaScript
Overview: A browser extension to query the status of deployed environments and overlay them in the GitLab commits view, obviating the need to manually compare which commits are included in each environment. After publishing this extension, it was adopted by the entire team and is used daily to make standup more efficient.
View on GitHub
View Chrome Extension
View Firefox Extension
Quine Relay (Kotlin, C, C++, C#, Lisp, Python)
Type: Personal project
Tools: Kotlin, Unit Testing (kotest); C, C++, C#, Lisp, Python
Overview: A quine is a program that outputs its own exact source code. I designed an algorithm, implemented in Kotlin, to deterministically create a "quine relay", namely: a Python program that outputs a C program that outputs a C++ program that outputs a C# program that outputs a Lisp program that outputs the exact original Python program. Each program in the cycle works independently and runs without any input, network, expensive computation, or disk reads. Moreover, each program in the cycle prints colored documentation about how to compile the next program in the cycle.
View on GitHub
View live demo
Dice Bot (Rust)
Type: Personal project
Tools: Rust, Discord bot API
Overview: A Rust-based Discord bot with a hand-written dice expression parser (e.g. parsing "4d6r1k3*6"). Configured GitHub Actions to automatically build and release Windows, Linux, and MacOS binaries.
View on GitHub
Role Assigner (TypeScript/React, Kotlin/Ktor)
Type: Personal project
Tools: React, Ktor
Overview: Full-stack React application allowing for anonymized role assignment using custom WebSocket server. Features live, Google Docs-like collaboration, input debouncing, material design, and a custom API.
View on GitHub
Older projects, kept for sentimental value:
Web Tuner (C#/Unity)
Type: Personal project
Tools: React, WebAudio API, Semantic UI
Overview: Progressive Web App (PWA) designed to provide "drone notes" for musicians, with the rare feature of playing multiple octaves concurrently.
View on GitHub
View live demo
Degree Audit Tool (TypeScript/React, Python/Flask)
Type: Senior design project
Tools: React, Flask
Overview: Full-stack React application reimagining how students plan and share their degree plans, increasing advising efficiency. Students click on classes in a degree flowchart to assign color-coded semesters and then can export their degree plan as an image. Includes drag-and-drop SHA-256 password-authenticated flowchart editor for advisors using custom REST API.
View on GitHub
ShareCalc (Java/Android)
Type: Class project
Tools: Android/Java, JUnit 5, UML/Object-Oriented Design
Overview: Formally planned scientific, unit, and programmer calculator app for Android with emphasis on sharing calculations with others. Formalized requirements, sequence diagrams, and class diagrams. Handwrote a lexer and bottom-up parser, object-oriented evaluation engine, and 92 JUnit tests to allow for computation of arbitrarily complex scientific and bitwise expressions. Acted as primary IC and team lead, conducting code reviews, setting deadlines, and approving PRs.
View on GitHub
Tobor Herding Game (C#/Unity)
Type: Class project
Tools: C#/Unity
Overview: 3rd-person 3D game. Did most of the coding, including movement, camera rigging, AI behavior, game logic, and menus.
View on GitHub
View live demo
Cube Clock (TypeScript/React)
Type: Personal mini-project
Tools: React, Typescript, SVG, styled-components
Overview: Hue-shifted animated clock PWA featuring SVG cubes written from scratch.
View on GitHub
View live demo
Note: For a related mini-project of mine, see Binary Clock
(
repo)
IR Chat (C++, C#)
Type: Personal project
Tools: Embedded C++, C#
Overview: Designed (and constructed) hardware and software to allow two offline computers to send and receive data simultaneously via infrared beams. Used embedded C++ for the microcontroller and C# for the desktop client and GUI.
View on GitHub
4-bit CPU (Schematic)
Type: Personal project
Tools: Embedded C++, C#
Overview: A 4-bit CPU supporting addition, subtraction, comparison, XOR, AND, OR, and NOT instructions. Loading of instruction, operand 1, operand 2, and result registers is synchronized via a 3-bit timer which feeds into a decoder.
View Schematic
Infrastructure Setup Skills
4+ years professional experience. Click each for more details.
Kubernetes
I took the initiative to refactor our Kubernetes manifest setup to be
4x more DRY, using a small shell script to generate per-environment
(dev/cert/preprod/prod) versions of our 40+ deployments, jobs, and Nginx
ingresses/Istio httproutes. My script uses
yq to easily propagate global, per-environment, and per-deployment environment
variables.
Google Cloud Platform/GCP
Created the CI/CD infrastructure (including deploy keys) to manage GCP
deployments and secrets. Experienced with production support (using K8S
CLI and
TUIs) to the
extent that I mentored newer engineers on how to more efficiently
monitor and modify deployments.
GitLab CI/CD
Upgraded our CI/CD infrastructure to use GitLab for both image storage
and CI/CD (including creating the
Deployment Environments for GitLab browser extension to improve the UX), eliminating the need for semi-manual
deployments.
Docker and Docker Compose
Lead the simplification of our Docker setup, using newer Docker
multi-image Dockerfile features to drop the Dockerfile count in our main
repo from 3 to 1, greatly improving ease of comprehension and
maintenance. Took initiative to leverage YAML anchors to eliminate
environment variable duplication for our 33 Docker Compose services.
Database Skills
4+ years professional experience. Click each for more details.
Change Data Capture/GoldenGate historical data pipeline
Co-lead and co-designed a sophisticated CDC pipeline which captured the
full change history of 31 replicated tables (i.e. reliable historical
data that would otherwise be inaccessible to the company) and also
provided efficient access to current-state data. To achive this, I
designed a system of partial indices, views, and triggers using advisory
locks. This system improves on both our prior ideas of separate
historical and current tables (which opened the door to data
discrepancies), TIBCO-powered message queues (which was vulnerable to
data loss), and unique indices (which, unlike advisory locks, caused
GoldenGate to not use BATCHSQL.) I also designed an automated validation
processor to give confidence that the new data pipeline's data was
indeed correct so that we could deploy to prod confidently. Compared to
the TIBCO approach, delivering this CDC pipeline resulted in a decrease
of row discrepancy rate in our tables from up to 10% to 0% (perfect
match).
PostgreSQL internals (MVCC system columns (ctid, xmin, xmax), B+
tree index design)
In order to monitor the in-progress, pre-commit status of a massive 2
billion row data migration, I studied Postgres MVCC design in order to
randomly sample the table's internal system columns (ctid, xmin, xmax)
to efficiently estimate the approximate completion percentage. Moreover,
in order to better understand EXPLAIN output, I read up on the
design of B+ trees and bitmaps.
Schema design (incl. triggers, partial indices, views, etc)
I designed a system of table triggers, enums, and composite partial
indices to allow for the consolidation of historical audit data and
efficient current-data access, which allowed our team to confidently
start owning core data previously kept in the legacy mainframe.
Query design (incl. windowing functions, XML/JSON functions, CTEs, etc.
I continuously researched opportunities for improving and optimizing our
queries; for example, I redesigned a deduplication process to take only
7 minutes per table instead of 1 day per table (using DELETE USING instead of a large CTE). I also co-started a new pattern of using DISTINCT ON instead of RANK() and PARTITION in historical
point-in-time queries in order to achieve the same result more readably with
less room for error.
Database library design
Inspired by the Haskell library
postgresql-simple-interpolateI created the Rust library
postgres_named_parameters, which provides procedural macros to safely interpolate numbered query
parameters (
$1,
$2, ...) using a more ergonomic named-parameter syntax.
I like this approach because it provides the full power of raw SQL but
without the usual pitfalls of manually numbered parameters.
Development Skills
API design (4+ years experience)
After 3 years of maintaining and version-bumping existing APIs, an
opportunity arose in which I was able to co-design a set of brand new
APIs. Hence, I used my experience with the shortcomings of our existing
APIs to design something better, including improving REST compliance
(and thus ease of both database operations and pubsub emissions),
standardizing our units (eliminating the need for per-stakeholder
exceptions), and switching off of string-encoded integers (eliminating
problematic edge cases).
API implementation (4+ years experience)
I've not only implemented and consumed APIs using a number of different
frameworks (Haskell/Servant, Kotlin/Ktor, TypeScript/Express,
Python/Flask), but I've also dealt with WebSockets, JWTs, OpenAPI docs
generation, and writing custom middleware.
Cybersecurity Research
- While working as a research assistant, I used the Binary Analysis Platform's symbolic microexecutor to automatically verify null reference vulnerabilities in C. Symbolic execution was chosen because it's a middle ground between fuzzing (which lacks in completeness) and static analysis (which lacks in soundness).
- From my undergraduate and graduate cybersecurity research I've also gained experience in binary exploitation (using cutter/Ghidra for decompilation and GDB for runtime analysis) and network exploitation (e.g. patching XSS and SQL injection vulnerabilities).