This is my testing ground. I frame the problem, prototype quickly, and leave a trail of notes.
Interfaces are shaped by data requirements, usability checks, and deliberate visual choices.
The active experiments that orbit ArcherLab. Each project lists the focus keyword and supporting references.
A symbolic preview of the IT Story hub that chronicles internet history and backend shifts.
IT Story Timeline
A curated collection of infrastructure launches, software rollouts, and backend transitions. I hand-crafted focus
traps, keyboard loops, and template cloning utilities so the modals stay accessible while keeping Core Web Vitals in the green.
A symbolic dashboard view for the report automation toolkit.
Report Tools Suite
A hub for four mini apps: report validation, reaction timing, a Busan food finder, and image masking. Structured data uses
the SoftwareApplication schema and every tool ships with the prevent-zoom script for mobile ergonomics. Leaflet, OpenCV,
and Tesseract work together for geo searches and OCR checks.
An emotive glimpse of the WalkWithMe chat companion.
WalkWithMe Chat
A Cloudflare Worker bridges GPT-5 mini for a gentle care-focused chatbot. MAX_HISTORY rotation, viewport sync,
and CORS controls are documented so the UI and system prompt stay in sync.
Archer, Lab, .dev—the trio that frames how I work.
Archer
Focus and precision. Define the target and stay with it.
Lab
Experiment and record. Hypothesize, test, log the outcome.
.dev
Code forward. Prototype with browsers, editors, and repeatable scripts.
Motivation
Spot discomfort inside familiar routines and improve them systematically.
Philosophy · Archer's Notes
The phrases that keep my projects grounded.
Technology is a tool, the user sets the bar.
Design every interface against functionality, performance, and accessibility checklists.
ArcherLab is a lab notebook.
Drafts, detours, and failed attempts stay logged so I can revisit the trail.
Structure scattered knowledge.
Bundle fragmented experience into reusable documentation.
Guides · Dev Playbook
Long-form build notes that survive ad reviews and still help visiting builders.
Building an API proxy with Cloudflare Workers
I document how I wrapped the OpenAI API behind a Worker to reduce latency variance and isolate keys.
Environment variables, KV cache, route bindings, and failure monitoring are all broken down step by step.
The appendix lists quota tiers, estimated cost tables, and a failure log for 522 incidents.
A Slack alert recipe and secret rotation timeline close the loop for production readiness.
Interaction patterns without React
The hero timeline on this page, scroll observers, and the chatbot input locking are all written in vanilla JS.
I share how I split modules, debugged mobile keyboards, and kept bundle size tight without tooling.
There is also a framework-free folder structure and sample commit log for teams who want to copy the approach.
Accessibility checklists accompany every component so audits stay simple.
Optimizing images and fonts for a dev blog
Tips from working with Unsplash licensing, bulk WebP conversion, and preconnecting Google Fonts to reduce first paint.
I add CLS prevention tricks and contrast adjustments that keep ads readable in dark mode.
CDN cache busting, quality comparisons, and the monitoring sheet are linked for reuse.
Performance metrics keep advertisers and readers aligned on expectations.
Articles · Field Notes
Deep dives updated monthly. Each combines code snippets with measured outcomes.
Node.js + Worker dashboard
Published: 2025-09-29 · 7 minute read
I paired an internal Node.js Express app with a Cloudflare Worker proxy to safely expose dashboards outside the office.
Express owns API routes while the Worker filters incoming requests and passes only approved tokens down the line.
HMAC-signed tokens sit in Workers Secrets. If Worker failure climbs above 0.5%, Slack notifications fire immediately.
Grafana shows the proxy adds roughly 42ms latency on average compared to direct calls.
Architecture diagrams and the public repo are linked so reviewers see the site as a knowledge resource, not a thin landing page.
Automating meeting notes with GPT-5 mini
Published: 2025-09-10 · 6 minute read
Weekly meetings used to generate hours of manual note-taking. The current pipeline records audio, sends it to AssemblyAI for transcription, and feeds summarization plus action-item prompts to GPT-5 mini so the recap feels human, not templated.
Vercel Cron triggers the workflow every Friday, while recursion guards prevent runaway retries. Success rate, token spend, and latency are logged to BigQuery so it is easy to alert when costs spike.
The article includes prompt templates, failure-case logs, and anonymized snippets so readers can adapt the flow without exposing private meeting data.
Accessibility checklist from real client work
Published: 2025-08-18 · 8 minute read
I walk through contrast audits for dark UI, keyboard navigation drills, and screen reader smoke tests that caught regressions before launch. Lighthouse and axe DevTools screenshots back each recommendation.
HTML snippets show how ARIA labels, skip links, and heading structure were applied. Before/after tables and downloadable checklists help teams copy the workflow.
The closing section covers how I plan email opt-in modules and social embeds so they remain accessible and ad-friendly on mobile.
Recording experiment data with PostgreSQL + Timescale
Published: 2025-08-02 · 9 minute read
Pinball physics experiments and chatbot latency tests needed a durable time-series store, so I rolled out TimescaleDB. Hypertables, compression policies, and Grafana dashboards are documented with screenshots and SQL snippets.
Continuous aggregates and AWS RDS backups keep historical analytics fast without ballooning storage. A Node.js ingestion script handles batching, retry logic, and observability hooks.
Troubleshooting notes at the end explain how index bloat and lock contention were solved before they became outages.
Static deployments without Next.js
Published: 2025-07-15 · 7 minute read
Even static HTML sites benefit from automation. GitHub Actions build and push the site, while Cloudflare Pages acts as a hot standby. Rollbacks are documented so downtime stays under a minute.
The post includes the full workflow YAML, cache strategy, environment variable handling, and Slack alerts for failed runs. Release time dropped from four minutes to under one.
A closing checklist covers robots.txt updates, sitemap submissions, and ad script versioning so shipping remains predictable after ads go live.
Designing ad-friendly dark themes
Published: 2025-10-18 · 5 minute read
Dark UI can pass AdSense review when contrast, font sizing, and whitespace are treated as first-class citizens. Every ad surface keeps at least a 4.5:1 contrast ratio and 24px padding so the experience stays readable even with contextual ads injected.
Before inserting any scripts, I ran Lighthouse and axe DevTools audits. After adding ad code, performance scores still sat above 90 thanks to delayed decoration scripts via `requestIdleCallback`, which kept CLS under 0.02.
The snippet below shows how IntersectionObserver gates animations until a section is visible, reducing CPU spikes on mobile.
The same pattern ships to the Report Tools suite and the WalkWithMe chatbot so each subdomain maintains accessibility, speed, and measurable value for advertisers.
Experiments · Active builds
Weekend prototypes that evolve monthly. Most are exploratory and intentionally rough around the edges.
Pinball Game
A neon-themed pinball made with Canvas and Matter.js. Gravity and bounce curves were tuned dozens of times to nail keyboard responsiveness. (Progress stalled while refining the physics model)
OCR
Client-side scanner that swaps between Tesseract and PaddleOCR to read receipts and handwritten notes, followed by custom post-processing. (Open-source OCR accuracy remains inconsistent)
Syntax Medic
An instant grammar fixer for weekly status notes. Multiple rule sets fight for priority, so conflict resolution is still ongoing. (Frequent rule edits created noisy regressions)
Tools on the desk
Mixing front-end, back-end, and hosted services depending on the prototype at hand.
DBeaver + Eclipse
Schema planning and API development happen side by side with shared database workspaces.
VS Code
Multicursor editing, REST Client, and Git Graph accelerate commit-driven experiments.
AWS + Cloudflare
AWS handles deployment and monitoring, while Cloudflare Workers and DNS manage proxies and CORS.
Google SMTP Relay
Custom domain email routes through Workspace relay so deliverability and archiving stay centralized.
GitHub Copilot
Reduces boilerplate during rapid iterations and drafts test cases for new modules.
OpenAI API
Runs translation, summarization, and text cleanup flows with a Worker proxy to reduce latency.
5Programming languages mixed over the past 3 months
02:17Average first commit timestamp (KST)
7Domains currently under management
Signal Log
Recent commits, tool switches, and observations worth noting.
Serverless & Ingress timeline shipped
Translated the web server timeline and tightened the modal focus trap ahead of the next accessibility review.
Database timeline launched
Wrote 20+ modal stories linking Codd, Chen, and modern lakehouse buzzwords with developer-friendly summaries.
Home hub refresh
Reworked hero copy, added structured data blocks, and cleaned up the CTA tracking attributes.
Contact
Prefer a short note. Tell me the context you are in and how I could help.