Skip to content
View haeganm's full-sized avatar

Block or report haeganm

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
haeganm/README.md
Haegan McGarry in pink neon. Pixel art of a desk at night by the bay: city lights on the water, a cat asleep on the sill and the Claude crab in sunglasses.

CS student building cloud and distributed systems, and measuring them honestly.
Looking for a 2027 software engineering internship.

Website LinkedIn Email AWS Certified Cloud Practitioner

What I do

I build systems end to end, deploy the cloud ones on AWS, test them, and write down what the numbers actually say. The numbers on this page come from test runs, live measurements and merged PRs.

Python, Go, C, TypeScript, AWS, DynamoDB, Terraform, Docker, GitHub Actions, Linux, Bash

Python daily. AWS SAM, Step Functions, Lambda, DynamoDB and IAM. Go for distributed systems, C when speed matters. Terraform, Docker and GitHub Actions to ship it.

Featured

Agentic NetOps: closed-loop network remediation on AWS

A serverless platform that heals a VPC when it drifts from declared intent: detect, prove, measure, generate a repair, approve, execute, verify. The LLM proposes and deterministic systems dispose, so control flow runs on config diffs and never on model output. Repairs pass a versioned policy gate and fail-closed autonomy tiers, run under per-incident scoped STS credentials, and land in a hash-chained audit ledger.

The incident loop: detect from CloudTrail, prove against the baseline, measure reachability, plan a policy-gated repair, route it by risk tier (low runs after a 60 s veto, medium needs one approval, high needs two), execute with scoped STS credentials, verify by re-diffing. Every decision lands in a hash-chained ledger.
  • Self-healed a seeded fault in 191 s on the live deployment with no human touch. All 9 seeded fault classes remediate.
  • 301 tests in credential-free CI, 18 architecture decision records, a security findings register, $0 idle.
  • Source is private. Happy to demo it or walk through the code, just email me.

AWS SAM Step Functions Lambda DynamoDB EventBridge Cognito Bedrock IAM CloudFront

holdfast: edge nodes that keep one aircraft picture through packet loss and partitions

Three Go nodes each take in ADS-B reports for their own coverage area and keep a replica of the shared picture as a CRDT, a last-writer-wins map stamped with a hybrid logical clock. They sync peer to peer by digest anti-entropy, so replicas converge whatever order messages arrive in and however often they are lost or repeated, as long as sync rounds eventually get through and clocks stay within the 5 s drift bound. A cloud peer runs the node's own merge code in a Go Lambda on DynamoDB.

  • Replaying a recorded hour of real traffic over Washington DC under 20% packet loss (Docker and tc netem): 1.37 s p95 propagation, all 60 windows converged.
  • With one node's clock 4 s fast, a wall-clock map threw away 485 fresh reports. The hybrid clock lost none.
  • Deployed with Terraform for a 10-minute run on AWS: 2.1 s p95 through API Gateway, Lambda and DynamoDB, for under half a cent.
  • 97 Go tests, fuzzing, a seeded fault simulation, 131 planted bugs the gate has to catch, and Trivy on the images and the Terraform.
Per-node lag during a network partition: it grows while node c is cut off and clears 1.2 s after the heal.

Go Docker tc netem Lambda DynamoDB API Gateway Terraform GitHub Actions

walkforward: volatility, sizing and purged walk-forward splits in C11, with a Python front door

PyPI pip install walkforward

GARCH(1,1), EWMA and range-based volatility, Kelly and vol-target sizing, purged walk-forward splits and ridge regression, written from scratch in C11 with a ctypes binding over numpy and pandas. A 12-job CI matrix runs gcc, clang, macOS, Windows, 32-bit, sanitizers and a fuzz sweep, then checks the C against pandas, numpy, scikit-learn and arch. Wheels for five platforms ship through cibuildwheel and PyPI trusted publishing, with no token anywhere.

C11 CMake Python ctypes GitHub Actions PyPI trusted publishing

AsOf: a market intelligence engine that grades itself

Collects signals from SEC Form 4 insider buys, 8-K events, your own monitors and any local tool, seals each one at the instant it became public, then grades it against SPY at 5, 20 and 60 trading days. Entry is the close of the first session that ended after the filing's acceptance time, DST-aware. Imported history can never reach the scorecard, and grades are written once and never revised. Runs locally on free, keyless data. 103 offline checks in CI.

TypeScript Next.js SQLite GitHub Actions

Retro: offline voice remote for Spotify

Speech never leaves the machine: Vosk and faster-whisper run locally, your own artists and playlists are injected into the recognizer vocabulary, OAuth PKCE keeps tokens on device, and it ships as a Windows tray app with a one-command installer.

Python Spotify Web API OAuth PKCE Windows

Open source

Ten fixes merged upstream:

Repo PR Fix
moto #10234 SQS raises PurgeQueueInProgress on a repeated purge within 60 s
cloud-custodian #11301 copy-related-tag fetches Resource Groups Tagging API tags in batches of 100
statsmodels #10229 Probit log-likelihood, score and Hessian computed in log space
nautilus_trader #4914 AroonOscillator lowest-low scan and tie handling
pandas_market_calendars #485 TASE calendar updated for the Monday to Friday trading week
anndata #2652 Raise on float index arrays with any non-integer value
scikit-bio #2580 to_indices and to_cigar on single-segment alignment paths
pylabrobot #1273 Serialize Container.no_go_zones so copy() and deserialize() keep them
biotite #946 CONECT records for bonds between residues differing in insertion code
black #5681 No crash on backslash-only lines in code Black leaves as is

Open now, all in cloud tooling: aws-cdk #39647, powertools-lambda-python #8772, s3fs #1088, prometheus client_python #1254.

More builds

Three systems for testing trading ideas against real markets. Each README reports what the measurements showed.

  • AlphaOS: a $0 point-in-time research lab with declarative hypothesis specs, an append-only trial ledger and Deflated Sharpe. 34 pre-registered hypotheses across 8 campaigns. 107 tests.
  • TechnicalEngine: an always-on intraday scanner across 506 tickers with Discord alerts, a journal and a look-ahead-safe backtest, measured over 60 live sessions. 99 tests.
  • Density Desk: an autonomous trading desk for prediction markets with hard risk rails and pre-registered deployment gates. 112 tests.

And four public games on Roblox, written in Luau and shipped to real players. Roblox profile.

Education and certifications

  • B.S. Computer Science, California State University San Marcos, 2026 to present
  • AWS Certified Cloud Practitioner
  • Collaborator, Riffyx Labs mentorship (Jun 2025 to Jun 2026): AWS and debugging projects, Git pull-request workflows alongside Cisco professionals
The pixel art and the NetOps diagram are drawn in code by build.py. The holdfast chart is redrawn from that repo's own run data.

Pinned Loading

  1. agentic-netops agentic-netops Public

    Closed-loop AI network remediation on AWS: deterministic oracles, autonomy tiers, tamper-evident audit ledger. Source private, demo on request.

  2. holdfast holdfast Public

    Edge nodes that keep one shared aircraft picture over a lossy, partitioned network. Go: hybrid logical clock, CRDT map, anti-entropy sync. The cloud peer runs the same merge code in a Lambda on Dyn…

    Go

  3. walkforward walkforward Public

    Volatility forecasts, position sizing and purged walk-forward splits that never see the future. C11 core, numpy and scikit-learn front door.

    C

  4. AsOf AsOf Public

    A self-grading market intelligence engine: every signal sealed at the instant it became public, then graded against SPY at 5, 20 and 60 trading days. Next.js, SQLite, free SEC and Yahoo data.

    TypeScript

  5. alphaos alphaos Public

    A $0 point-in-time alpha research lab: declarative hypothesis specs, one hand-audited harness, an append-only trial ledger with Deflated Sharpe. 8 campaigns, 34 pre-registered hypotheses.

    Python

  6. retro-spotify-voice-remote retro-spotify-voice-remote Public

    Retro (Spotify Voice Remote) - offline voice remote for Spotify Premium. Local Whisper, zero cloud, zero cost.

    Python