Writing

Notes on AWS, architecture, and shipping software.

29 Sept 2026
Building LLMKIT · Part 8

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.

26 Sept 2026
Building LLMKIT · Part 7

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.

24 Sept 2026
Building LLMKIT · Part 6

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.

23 Sept 2026
Building LLMKIT · Part 5

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.

20 Sept 2026
Building LLMKIT · Part 4

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.

17 Sept 2026
Building LLMKIT · Part 3

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.

16 Sept 2026
Building LLMKIT · Part 2

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.

15 Sept 2026
Building LLMKIT · Part 1

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.

27 Dec 2021

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.

28 Nov 2021

Amazon S3 Overview

S3 stands for Simple Storage Service — buckets, consistency guarantees, storage classes, file attributes, and lifecycle management.

26 Nov 2021

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.

12 Nov 2021

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.

4 Feb 2020

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.

4 Feb 2020

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.

14 Jan 2020

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.

7 Jan 2020

REST API Guidelines

REST's guiding constraints, and practical best practices for URL design, versioning, authentication, filtering, pagination, status codes, and documentation.

5 Jan 2020

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.

17 Jul 2019

Why Linux Hosting is Cheaper than Windows Hosting?

Comparing Linux and Windows server hosting on interface, tooling, stability, security, and licensing cost.

22 Jun 2019

Finding and (Safely) Killing Long-Running MongoDB Ops

A quick script to find and terminate long-running MongoDB operations without touching replication traffic.

9 Mar 2019

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.

14 Feb 2019

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.

10 Feb 2019

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.

10 Feb 2019

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.

10 Feb 2019

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.

10 Feb 2019

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.

10 Feb 2019

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.

10 Feb 2019

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.

10 Feb 2019

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.

6 Feb 2019

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.

5 Feb 2019

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.

2 Feb 2019

MongoDB Security Checklist

A pre-production checklist for hardening MongoDB — access control, TLS, encryption at rest, network exposure, auditing, and compliance.

2 Feb 2019

MongoDB Security

An overview of MongoDB's security surface — authentication mechanisms, RBAC, TLS, encryption at rest, network exposure, and ongoing production hygiene.