Jamie Software Lab

Software Developer

I build tools that behave in production.

Automation, data, and clean interfaces. This is my workshop: deploys, writeups, and real outputs you can click.

Focus
Python • Web • Automation
Style
Small, sharp, shippable
Now
14 live projects + full-stack platform
market_snapshot.log

Projects

Each project has a dedicated page: demo, approach, constraints, tradeoffs, and next steps.

Python Automation Finance

Market Snapshot

Fetches Cisco's daily high/low and streams a live current price. Runs as a scheduled pipeline with a web view.

Scheduledaily
Live pricereal-time
Outputweb + JSON
Sourceyfinance
Python ML Flask DevOps

Weather ML App

A machine learning Flask app that predicts weather conditions from sensor inputs. Dockerised with full CI/CD and Kubernetes deployment.

Modelscikit-learn
DeployDocker + K8s
CI/CDGitHub Actions
Testssmoke + unit + integration
TypeScript Next.js Prisma AI

GlobeScraper

Full-stack platform for English teachers in Southeast Asia. Community, AI blog engine, rental marketplace with a 7-source scraping pipeline.

API routes55
DB models30+
Scraper sources7
DeployVercel + Hetzner
Python Flask DevOps Linux

Server Pulse

Live dashboard showing real-time CPU, RAM, disk, and uptime from a Hetzner CX23. Polls a Flask + psutil endpoint every 5 seconds.

BackendFlask + psutil
Polling5 seconds
ServerHetzner CX23
SSLLet's Encrypt
JavaScript Algorithms Visualisation

Sorting Visualiser

Animated step-through of 5 classic sorting algorithms. Pure vanilla JS : zero dependencies, zero build tools.

Algorithms5
DependenciesNone
RuntimeBrowser
AnimationGenerators + RAF
SQL WASM Database

SQL Playground

Run real SQL queries in the browser against a sample dataset. SQLite compiled to WebAssembly : no server, no install.

EngineSQLite (WASM)
BackendNone
Dataset50 employees
Dependencysql.js CDN
JavaScript Networking DNS

DNS Lookup

Type any domain and get A, AAAA, MX, CNAME, TXT, and NS records back. Runs entirely in the browser using Google DNS-over-HTTPS.

BackendNone
DNS providerGoogle DoH
Record types6
DependenciesNone
Python Flask Monitoring DevOps

Uptime Monitor

Background thread pings the portfolio API and site every 60 seconds. Graphs 24 hours of response times with Canvas charts.

Ping interval60 seconds
History24 hours
BackendFlask + threading
ChartCanvas (zero deps)
Python yt-dlp Flask Streaming

Media Downloader

Paste a URL with video or audio. Pick MP4 or MP3, click download. Backend uses yt-dlp to extract and stream the file.

BackendFlask + yt-dlp
OutputMP4 / MP3
Max file500 MB
Timeout120 seconds
Python Flask Socket.IO WebSockets

Live Chat Room

Real-time chat powered by Socket.IO with automatic HTTP polling fallback. Pick a name, start talking : open in two tabs to see instant sync.

TransportWebSocket + polling
History200 messages
BackendFlask + Socket.IO
AuthAnonymous
Python Flask SQLite JWT Auth

Link Shortener

URL shortener with full auth: register, login, create short links, track clicks. JWT tokens, PBKDF2 hashing, per-IP rate limiting.

AuthJWT (HS256)
StorageSQLite + WAL
Rate limit30 req / 60s
PasswordsPBKDF2-SHA256
Python CLI argparse Automation

CLI File Organiser

Point it at a messy folder and it sorts files by type or date. Dry-run preview, undo, custom rules via JSON config. Zero dependencies.

Installpip install
DependenciesNone (stdlib)
PlatformCross-platform
Featuresdry-run + undo
Python ML OpenCV Flask

Image Style Transfer

Upload any photo and apply a famous art style : Van Gogh, Munch, Picasso, and more. Fast neural style transfer running on the server with OpenCV DNN.

Models7 styles
BackendFlask + OpenCV
InferenceCPU only
Max input10 MB
JavaScript Quiz Microsoft 365

MS-900 Practice Exam

Full timed practice test for the Microsoft 365 Fundamentals certification. 39 questions across cloud concepts, core services, security & compliance, and pricing.

Questions39
Timer45 min
Pass mark700 / 1000
Domains4 categories
JavaScript Compression WASM Streams API

File Compressor

Upload any file, pick from 8 compression algorithms, and download the result. Native gzip and deflate plus CDN-loaded Brotli, Zstandard, LZMA, LZ4, Bzip2, and Snappy.

Backendnone
Algorithms8 (gzip, deflate, Brotli, zstd, LZMA, LZ4, Bzip2, Snappy)
Privacyfiles never leave browser
Librarieslazy-loaded from CDN

Engineering

Detailed writeups on how I approach real engineering problems: API design, security, performance, database architecture, and more. Each page goes beyond the project and into the decisions behind the code.

API Flask FastAPI

API Engineering

RESTful API design with Flask and FastAPI. Endpoint documentation, JWT authentication flows, error handling patterns, and test pyramids.

FrameworksFlask + FastAPI
AuthJWT (HS256)
Docker Nginx Monitoring

DevOps & Observability

Deployment architecture, Docker containerisation, structured logging, monitoring, and incident response on self-managed infrastructure.

ServerHetzner CX23
Uptime99.5%
ETL Pydantic Pipeline

Data Pipeline

ETL pipeline engineering with Pydantic validation, retry handling, dead letter queues, audit logging, and dataset versioning.

Stages6-stage pipeline
ValidationPydantic v2
SQL Prisma Schema

Database Design

Schema design, ER diagrams, indexing strategy, query optimisation (142ms → 3ms), migrations, and transaction handling.

Speedup47× faster
ORMPrisma
Lighthouse Caching Load Test

Performance & Scalability

Lighthouse scores (97+), Core Web Vitals, load testing results (1,247 req/s), caching strategies, and database optimisation.

Throughput1,247 req/s
P99 latency112ms
OWASP Auth Hardening

Security Engineering

OWASP Top 10 mitigations, SQL injection prevention, XSS defence, CSRF protection, rate limiting, and secrets management.

CoverageOWASP Top 10
Rate limitSliding window
GitHub PRs Community

Open Source

Contributing to the community: pull requests, code review practices, documentation standards, and maintaining open-source projects.

Repos14+ public
LicenceMIT
Product Analytics Iteration

Product Thinking

User feedback loops, analytics-driven development, feature prioritisation, and a case study of GlobeScraper's evolution from script to product.

ApproachData-driven
MethodBuild → Measure → Learn
WCAG A11y Inclusive

Accessibility

WCAG 2.1 AA compliance, semantic HTML, keyboard navigation, screen reader support, colour contrast, and responsive design practices.

Lighthouse100/100
StandardWCAG 2.1 AA

Notes

Short writeups on implementation decisions, mistakes, and what I changed after feedback.

About

I build software that reduces effort and produces clear outputs. I care about structure, debuggability, and repeatable deployment.

Strengthsautomation, clarity, shipping
Learningbackend, testing, ops basics
Portfolio goalevidence over claims
Full about page → Resume →

Stack I like

Small pieces that compose well.

Python FastAPI SQLite Docker GitHub Actions

Contact

Email is best. If you’re hiring, tell me the role and what you want shipped.