Notes on AWS, architecture, and shipping software.
Building LLMKIT
- Why LLMKIT: sharing what works across five stacks
- Context is the hard part
- The fourth and fifth stack
- The boring 20% that made it stick
- One view across Claude Code, Codex and Copilot
- Copy, never move
- Normalize once, at the end
- Windows 11, and an honest scorecard
- Shippable, with findings
- Mirror, don't ask
- A name isn't enough
- A footer means it finished
A footer means it finished
A scheduled publish got killed mid-run, and the log looked exactly like a hang. So every exit path now writes a footer — deliberately not from an exit handler, because a killed process never gets there.
A name isn't enough
A commit-msg hook meant to strip AI co-author emails matched on name alone — until code review caught the case where a real person named Claude would have had his own email silently stripped off his own commit.
Mirror, don't ask
A team dashboard reported "0 developers found" against a folder holding 1,251 files — not because nothing was there, but because a background job can't read a macOS-protected folder the way an interactive session can.
Shippable, with findings
Before LLMKIT's last release shipped, a read-only audit checked every push and merge gate without building, tagging, or notifying anyone — and came back with an honest verdict instead of a clean pass.
Windows 11, and an honest scorecard
LLMKIT picked up a sixth environment. A platform-parity audit, fixes, then direct verification on Windows 11 — reported as it actually came out.
Normalize once, at the end
Three AI coding assistants have three different ideas of what a "session" is. LLMKIT reads each in its native shape and normalizes exactly once.
Copy, never move
The design rule in LLMKIT's usage-history layer that mattered more than any line of code: when you migrate history, copy it — never move it.
One view across Claude Code, Codex and Copilot
Three AI coding assistants each keep their own usage history in their own format. LLMKIT merges them into one provider-agnostic view of how the team actually uses AI.
The boring 20% that made it stick
Getting LLMKIT adopted — not just built — came down to the unglamorous parts: visibility, easy updates and trust that it won't break your workflow.
The fourth and fifth stack
Building tooling for the stack you know best is easy. Rolling LLMKIT out across five stacks and three sub-teams was the real test.
Context is the hard part
The hardest problem in building LLMKIT wasn't installing tools — it was giving every engineer's AI assistant the right context, in every stack.
Why LLMKIT: sharing what works across five stacks
Every engineer on a five-stack UI team was figuring out AI-assisted development alone. LLMKIT started as a way to let a good practice travel.
AWS VPC Overview
A VPC is a private virtual network within AWS — gateways, route tables, NACLs, subnets, security groups, NAT, and how it all fits together.
Amazon S3 Overview
S3 stands for Simple Storage Service — buckets, consistency guarantees, storage classes, file attributes, and lifecycle management.
Getting Started with Amazon Web Services
Regions, availability zones, edge locations, Route 53, and IAM — the core concepts you need before doing anything else on AWS.
CORS: How to Handle It
What CORS is, why browsers enforce it, the request/response headers involved, and how to configure it on Apache, ASP.NET, API Gateway, ExpressJS, IIS7, Spring Boot, Nginx, PHP, and Tomcat.
How to Secure, Harden and Improve Performance of Nginx Web Server
A checklist for hardening Nginx — removing unnecessary modules, disabling server tokens, blocking bad user agents, limiting HTTP methods and connections, and enabling TLS.
How to Use Nginx as an HTTP Load Balancer in Linux
Setting up round-robin, least-connected, and IP-hash load balancing across multiple application servers with Nginx.
How Does SSL Work?
Sockets, PKCS standards, certificates and certificate chains, the TLS handshake step by step, certificate validation, and how to get a certificate.
REST API Guidelines
REST's guiding constraints, and practical best practices for URL design, versioning, authentication, filtering, pagination, status codes, and documentation.
Build and Publish NPM Package
Setting up package.json, writing a minimal module, and publishing it to the NPM registry — from npm init to npm publish.
Why Linux Hosting is Cheaper than Windows Hosting?
Comparing Linux and Windows server hosting on interface, tooling, stability, security, and licensing cost.
Finding and (Safely) Killing Long-Running MongoDB Ops
A quick script to find and terminate long-running MongoDB operations without touching replication traffic.
A URL Shortener with Analytics Based on Nginx and Redis
Building a URL shortener with Nginx, lua-nginx-module, and Redis, plus a small web UI for creating and resolving short links.
Redirect All HTTP Requests to HTTPS with Nginx
Why every plain-HTTP request should redirect to HTTPS, and the Nginx config that does it safely.
Complete Guide to Configure SSL on Nginx with Let's Encrypt on Ubuntu
Installing Certbot on Ubuntu, issuing a free Let's Encrypt certificate for Nginx, and automating renewal.
Complete Guide to Configure SSL on Nginx with Let's Encrypt on CentOS/RHEL
Installing Certbot on CentOS/RHEL, issuing a free Let's Encrypt certificate for Nginx, and automating renewal.
How to Use SSL/TLS with Node.js
Setting up HTTPS in an Express app with Let's Encrypt certificates via Certbot, plus HSTS and strong Diffie-Hellman parameters.
HTTPS Everywhere
HTTP/2's push toward encryption by default, what HTTPS actually buys you, and why the performance-overhead objection doesn't hold up anymore.
NGINX: Better and Faster Web Server Technology
What NGINX is, why it was built to solve the C10k problem, and the feature set that makes it fast at scale.
Nginx Installation on Ubuntu or CentOS/RHEL Server
Installing Nginx from the default Ubuntu repos, or via the official Nginx/EPEL repo on CentOS/RHEL.
Simple Way to Configure Nginx Reverse Proxy
Setting up Nginx as a reverse proxy in front of a backend app server, with a working config and a Tomcat example.
Create CentOS Bootable USB Installer on Mac OSX
Formatting a USB drive and using dd to write a bootable CentOS 7 installer from a Mac.
Overriding the Default Linux Kernel 20-Second TCP Socket Connect Timeout
Why Linux caps TCP connect timeouts around 20 seconds by default, and how to raise the ceiling with tcp_syn_retries.
MongoDB Security Checklist
A pre-production checklist for hardening MongoDB — access control, TLS, encryption at rest, network exposure, auditing, and compliance.
MongoDB Security
An overview of MongoDB's security surface — authentication mechanisms, RBAC, TLS, encryption at rest, network exposure, and ongoing production hygiene.