Kai Hendry's techy posts
This archive keeps the original URLs and publication dates. Posts marked “Historical” have additional context about obsolete services, incomplete experiments or superseded advice.
2026
- The Hybrid Meeting Problem
- Feather razor blades: a cheap way to shave
- My favourite desk lamp: Logitech Litra Beam
- ESP With the Strongest WiFi Signal
- Why Enterprises Struggle to Adopt AI
- Two Heat Pump Surprises: Cylinder Standing Loss and a −40 °C Outdoor Sensor
- Three Secrets Domains on Purpose
- My Maui Jims Have New Nose Pads: NSP252
- Reading the Heat Pump Locally: eBUS Adapter Stick C6 and ebusd
- Our First Air-to-Water Heat Pump: Vaillant aroTHERM plus
- How could a community fund the new Bosvena health centre?
- A Ticket Template for AI-Generated Code
- Returning Shelly EM Gen3 to Bulgaria: A 56-Day Ordeal
- AI Native DevCon London 2026: Sessions I Attended
- The Klinik NHS Access Form Is Failing Patients
- Comparing SDD Frameworks: spec-kit vs OpenSpec vs get-shit-done
- Replacing the light bulb in dad's shower
- AWS SAA-C03 Re-certification Journey
- From AI-Generated to Production-Ready: Closing the Gap
- How I Monitor My Home Energy Usage
- AI Engineer Europe 2026: Takeaways from London
- The Irreplaceable Human: Our Role in an AI-Driven World
- Snowflake IaC without switching to Terraform
- Tags are not free in AWS CDK
- Python uv Upgrade
- Upskilling Your Infrastructure Team with AI
- Raspberry PI VPS host
2025
- AI annoyances
- Trialling Jira with Beads
- Claude Skills
- AWS S3 Access Points
- Yoga
- Pozidriv bits break!
- 2025 Citroën E-C3
- My favourite clothes
- EU Sanitary and phytosanitary
- Data Engineering
- Badminton Restring
- Import Tax is the Tariff
- Fixing Cornish Potholes
- Tesla Tyres Repair = Replacement!?
- Gitlab Enterprise
2024
- Darragh Power Cut
- Praze Smart Meter
- Mac Mini Family display
- European Competitiveness
- How to fix the most impactful AWS RDS Slow queries 🐢
- AWS SSO with Google Chrome profiles
- Insulation
- UK's water and weather
- JustPark SMS ripoff
- Database Performance
- Connecting to MySQL
- The problem with UK Politics
- UK vs SG income tax for the salary man
- Single Income Household
- Github Action Trunk based development IaC
- Hayfever treatment
- T14g3 Wireless woes
- UK divided by weather and water
- BUPA experience
- Royal Mail Parcel Collection gone wrong
- Macbook Air M2 Repair attempt
- LLM token cost
- LPG boiler upgrade wanted
- Minecraft
- Stripe Deleted
- OSS sponsorships
- Automative Grade Apps
- Infrastructure Capabilities
- Software Cornwall 2024
- Working as a team with Kanban
2023
- VScode Regex
- Mikrotik Wifi6
- Best Microphone
- iPhone Repair UK
- Deploying a Lambda
- Gitops
- Subscriptions
- Coffee Setup
- What Tesla owners want
- Appealing a Car parking fine
- French Social Security
- Finding filter coffee
- Go's Dockerfile journey
- Apex log to Structured log
- UK Cost to Drive a Mile
- Google Kubernetes Engine on GCP
- Opentelemetry Collector for Kubernetes
- DORA metrics failure
- Top serverless mistakes
- AWS Certified DevOps Engineer Pro Preparation
- AWS Learning notes
- Go VsCode Editing experience 2023
- Container Lifecycle
- DaVinci Resolve FCPX
- Build From Source
- Terraform vs Cloudformation
- Youtube and my kids
- Sony A7IV settings for running subjects
- Does Dockerfile USER prevent Linux container breakouts?
- GoCD versus Gitlab
- Mac Nix
- AWS SAM Developer Experience
- oracledump
- Apex Up Logs
- NixOS Intrigue
- NixOS at first
- Separation of Duties
- No dist-upgrade
2022
- Restricted Stock Unit ⬆️⬇️
- Why use AWS Customer Managed Keys?
- Effective Meetings
- Gitlab Workflow
- Security Principles💂
- Dual Monitor with Archlinux
- My issues with terraform
- Thinkpad or Apple
- Archlinux / MacOS clipboard bindings
- Why Learn Makefiles
- Gitlab Terraform
- Devops Is Dead
- Least Privilege in Practice
- Post Pandemic Malaysia
- Five Step Engineering Process
- Post-Pandemic Office Space
- Self Service in Infrastructure
- Path to Production
- Landing a "tech" job in Singapore
- Slack Survival Tips
- Lumix GH5 to Sony Alpha A7 IV
- Rechargable batteries
- Do not complicate Serverless architectures with Private subnets
- AWS Secrets Manager or AWS Systems Manager Parameter Store?
- Don't put secrets in your ENV
- Code Editing in 2022
- Serverless or CNCF Kubernetes?
- Xbox impressions
- Javascript to a strongly typed language..
- Lazada vs Amazon
2021
- Ordering US products from Amazon in Singapore
- Casio GW-M5600 is not worth repairing
- Multi Cloud Serverless Cold starts
- Helper with COVID positive
- My first Payment integration
- Identifiers
- Stamp Duty in Singapore
- Mitigating security risks with NodeJS
- Security Headers
- Weekly Iterations
- Systemd Journal to Cloudwatch
- Global Protect Man in the Middle
- eSIM sucks when your phone dies
- Kids Authenticate to Microsoft
- suckless Second Display
- My fears with the agile development methodology
- Apple Weight Scale
- AWS SDK Go V2
- Scalable Prometheus Architecture
- Atlassian tips
- Thinkpad vs M1
- Zola SSG review
- Fixing Hotel TV
- Better Hotel Wifi
- Roku Streambar review
- Is Java really faster than Go?
- Debugging methods
- Diagrams for documentation
- Java vs Go
- Secure or not?
- Is Batch Bad?
- Microservice Timeouts
- Google Workspaces Chat Rooms suck
- Automated Gsuite Export
- A make build tool that sucks less
- FTTP in Cornwall
2020
- Audio Visual tips for Zoom, OBS, Youtube etc
- Serverless "Iteration Speed" Survey
- Amazon Certificate Manager Pro Tip
- Amazon Transcribe
- Quad Lock cases - new and old side by side
- Thinkpad T480s for sale
- Google Pixel 4a Repair cost in Singapore
- Updates / Upgrades and breaking the runtime
- Understanding FCPX bundles
- Lenovo ThinkPad USB-C Dock Gen2 errors
- 5G - a Race to the Bottom
- Passive versus Active Power over Ethernet
- Account Security
- Knowledge Worker Needs
- When DevOps goes bad
- AWS SAM's HTTP interface sucks
- Shop Front
- Other filling iPhone storage
- Sony ZV-1 notes from Singapore
- SLOC the Web
- AWS SSO versus Oauth
- Thinkpad T480s sdcard slot failure
- Excel shortcuts for Archers
- Keeping colleagues in the loop
- How to hand hold a computer user
- TASCAM DR 40 background Noise
- Failed the AWS Certified Solutions Architect professional exam
- Singapore Payment Requests could be a LOT better
- What Working Group Tools?
- My First SAP
- National COVID2019 Websites
- SAP-C01 AWS Certified Solutions Architect - Professional scrap book
- TODO tracking
2016
- Difficulties using AWS SDK for PHP v3 in 2016
- An AWS ECS development workflow in 2016
- Questions about AWS ECS in 2016
- Devops Evolution
- Whats the difference between a Docker container and a Virtual machine?
- Why btrfs device remove does not split a RAID1 mirror
- Resetting a Xiaomi Mi Note with fastboot in 2016
- Running an early Caddy release in Docker
- A Samba recycle-bin experiment from 2016
- Recovering an OpenWrt router in failsafe mode
- First impressions of Django 1.9 on Python 2
- Developing Docker containers: my 2016 workflow
- Archer C7 wireless range problems on OpenWrt 15.05
2015
- Addressable hostnames with DNS and mDNS
- Mail from a VPS using AWS SES from sandbox mode
- Streaming an IRC channel to a web display
- WebKit rendering on a Raspberry Pi 2
- Why API responses need timestamps
- Barriers to browser-based use of public APIs
- Foscam C1 camera notes from 2015
- Why I argued for keeping PHP updated
- SanDisk Ultra USB 3 write-speed measurements
- Keeping PHP services updated with containers
- Centralisation and the side effects of censorship
- Rsync versus Btrfs for backups and snapshots
- Screencasting obstacles on Arch Linux in 2015
- Seven days to leave Hiveage
- My Hiveage grievances in 2015
- A proposal for a small local video editor
- Where git-annex fell short for my media workflow
- Archiving iPhone 6 photos with ifuse in 2015
- Two expectations for usable web navigation
- Singtel 500 Mbps and Singapore cloud network tests
2014
- Updating a Docker container on early CoreOS
- An IRC discussion about Docker virtual hosting
- Google Compute Engine: invalid value for project
- Experiencing CoreOS and Docker in 2014
- The cost of an Arch Linux mirror on EC2 in 2014
- SIGFOX event and payload notes from 2014
- Returning to bash after trying fish
- Arch Linux on an early-2014 MacBook Air
- S3 permissions, ACLs and CORS: a 2014 experiment
- Joining MP4 files with the FFmpeg concat demuxer
- Moving from netctl to systemd-networkd in 2014
- Recovering a Droplet network with systemd-networkd
- Singapore VPS network tests: DigitalOcean versus GPLhost
- USB 2 versus USB 3 disk tests on a ThinkPad X220
2013
- An old YouTube workaround for HTML video without Flash
- A minimal Dovecot configuration experiment from 2013
- Understanding early CoreOS in 2013
- Moving a Debian 7 host with rsync
- Cloning a Linux disk: dd, rsync and SSD experiments
- Google Groups moderation frustrations in 2013
- A small Makefile-based static site generator
- Highlighting part of a screenshot with scrot and GIMP
- Turning PowerTOP tunables into a systemd service
- Experiments with simple monitoring and metrics
2012
- A PPTP VPN experiment with an iPhone 5
- Screenshot upload script bookmarks from 2012
- Sharing WiFi over Ethernet with systemd-networkd
- A minimal Squid 3 proxy configuration
- Making an FAQ linkable and easy to navigate
- Apache 2.4: AH01630 client denied by server configuration
2010
- Searching Android Market through a mobile user agent
- Packaging the web: updates and kill switches
- Email etiquette for corporate discussions
- Domains rather than paths for web applications
- London cycle-hire station data from 2010
- Sharing support email with a small team
- Running company chat on IRC in 2010
- What I wanted from the DAP Calendar API
- Depending on the mobile web with a Nexus One
- Where to find me at Mobile World Congress 2010
- Nokia N900 developer tips for Maemo 5
- Building WebKit for the Nokia N900
- Starting Nokia N900 development with Maemo 5
2009
- Why device API policies mattered in 2009
- My search engine optimisation advice in 2009
- W3C Widget interface mapping quirks
- Signing W3C Widgets with XML signatures
- JIL versus BONDI: widget security models
- Mobile games at the 2009 Hide & Seek festival
- JIL versus BONDI: organisations and widget standards
- Contributing tests for W3C Widgets
- PDF/A versus HTML for document archives: a 2009 debate
- Comparing browser print output in 2009
- UK pay-as-you-go mobile internet prices in 2009
- Building a W3C widget test framework
- Working on mobile browser compatibility tests
- First look at NetFront Widgets Player
- Why HTML5 dates are not simply ISO 8601
- Widgets as portable offline web packages
- Mobile domain names, HTTPS and identity in 2009
- Fixed mobile layouts and page zoom: a 2009 opinion
- Graceful degradation in packaged widgets
- Why display:none does not prevent image downloads