Skills
What I build, and the projects that prove it.
Infrastructure & Cloud
Linux servers and the cloud they talk to — a home server running media, storage and scheduled backups, and containerized services on AWS: a decoupled Next.js and Flask pair behind an Application Load Balancer on ECS Fargate, images built and pushed to ECR by GitHub Actions on merge. I ran a two-server controller/agent pair that powered the storage box up on demand from real usage, then retired it in favour of one consolidated machine — less to run, less to break. Secrets sit in AWS Secrets Manager, tiers are VPC-separated, and CI authenticates with OIDC instead of long-lived keys.
LinuxDockerDocker ComposeAWS ECSECRS3CloudFrontSecrets ManagerVPCGitHub Actionsbackups & restoreWake-on-LAN / SSH
Mainframe & Enterprise
Enterprise COBOL for high-volume business processing — batch programs orchestrated by JCL that generate inventory, salary-distribution and commission reports, a validation and audit stage that splits clean input from rejects with a printed error report, and CICS transaction programs driven by BMS mapsets, compiled and link-edited into load libraries the way a shop actually does it.
COBOLJCLCICSBMSDB2JES2z/OSIGYWCLLKED
Backend & APIs
REST APIs and the data layer behind them — FEFO pantry deduction with unit-aware conversions, household-shared schemas migrated with Alembic, and async fan-out to third-party APIs behind a local cache. Auth is implemented, not bolted on: JWT with Argon2 hashing, least-privilege OAuth 2.0 scope selection, parameterized SQL at every boundary.
PythonFastAPIFlaskNode.jsSQLAlchemyPydanticPostgreSQLJWTArgon2asyncio
Data & Databases
Relational modelling across business domains — a five-module bakery schema spanning inventory and nutrition, production, HR, sales and supply chain, with a bake transaction that depletes stock in one pass — plus ETL that fuses GTFS, PRESTO and maintenance records into per-vehicle wear and per-route stress scores. Parameterized queries and schema-level validation at the boundary are the default, not an add-on.
PostgreSQLSQLAlchemyAlembicSQLitepandasZodDB2VSAM / QSAM
Frontend & Native
React 19 dashboards over a REST API — React Router for routing, context and hooks for state, Tailwind for the layout — plus a native macOS SwiftUI dashboard that reads a processed SQLite database read-only through a singleton manager.
React 19Next.jsTypeScriptTailwindViteSwiftUISwiftCharts
IT Operations & Automation
Two years of front-line IT operations run in parallel with full-time study — Tier 1–2 incident triage and root cause analysis across software, hardware, networking and Wi-Fi, imaging and deploying 30–40 classroom systems per rollout — plus process automation that replaced a manual PDF intake with branching Microsoft Forms, Power Automate approval routing and SharePoint storage.
CherwellPower AutomateMicrosoft FormsSharePointWindows imaging (Ghost / PXE)Asset lifecycle
Security & Risk
JWT, Argon2 and BcryptJS authentication; secrets in AWS Secrets Manager instead of the image; OAuth 2.0 authorization-code flow with PKCE and refresh-token handling; SSH key auth with non-interactive sudo and ICMP health checks; parameterized queries and boundary validation.
Coursework
CIA-triad incident analysis of a real attack; control selection weighed on cost versus risk reduction; the cybersecurity policy lifecycle and the policy / standard / baseline / guideline / procedure hierarchy; framework literacy across ISO 27002 domains, NIST CSF and GLBA / HIPAA / GDPR.
OAuth 2.0 / PKCEJWTArgon2Secrets ManagerSSH hardeningLeast privilegeNIST CSFISO 27002