Infrastructure, Ansible, AWS, Home Lab

Verifying Your GitHub Commits with GPG or SSH

If you’ve been following along with the previous posts on managing multiple Git identities and multiple SSH keys, this next step adds a nice layer of polish — verified commits. You’ve probably noticed some commits on GitHub have a little “Verified” badge next to them. That badge tells others (and your future self) that GitHub has confirmed the commit really came from you — not someone impersonating your name and email. Let’s walk through how to set up commit signing for your personal and work
Andrew Townsend
Andrew Townsend
3 min read
Infrastructure, Ansible, AWS, Home Lab

Managing Multiple Git SSH Keys by Directory

In the last post, we configured Git to automatically use different user names and emails depending on the project directory. That solved one half of the problem. But if you use multiple Git accounts — say, one for work, one for personal projects — you’ll also need to make sure Git connects using the right SSH key for each. Let’s fix that next. The Problem By default, Git uses your system-wide SSH key (typically ~/.ssh/id_rsa or ~/.ssh/id_ed25519). If both your personal and work GitHub accou
Andrew Townsend
Andrew Townsend
2 min read
Infrastructure, Ansible, AWS, Home Lab

Managing Multiple Git Authors by Directory

If you contribute to both personal and work repositories, you’ve probably run into this: You commit to a personal project — and realise your work email is all over it. Or worse, you commit to a company repo using your personal identity. Git only tracks one author configuration per system by default, but with a little setup, you can make Git automatically choose the right name and email based on the directory you’re working in. Let’s walk through how to do it cleanly. 🧩 The Problem By def
Andrew Townsend
Andrew Townsend
3 min read
Home Automation, ESPHome

Building a Laser Trip Sensor with a Photoelectric Sensor and ESPHome

Presence detection is a cornerstone of home automation. Whether you want lights that automatically switch on when someone walks into a room, or smarter security alerts, presence sensors give your automations real-world context. While PIR (motion) sensors are common, another interesting option is the photoelectric sensor. These sensors detect when an object breaks a light beam, making them great for detecting someone passing through a doorway, entering a hallway, or triggering an event when some
Andrew Townsend
Andrew Townsend
2 min read
Home Automation, ESPHome

Building a 4-Zone Irrigation Controller with ESPHome - Part 1

Automating irrigation is one of those home automation projects that’s both practical and fun. Instead of manually turning sprinklers or valves on and off, you can control watering schedules through your smart home — or even trigger watering based on weather or soil moisture sensors. In this series, I’ll walk through building a 4-zone irrigation controller using ESPHome, some off-the-shelf components, and Home Assistant integration. Series Overview As I publish parts of this series I will up
Andrew Townsend
Andrew Townsend
4 min read
Home Automation

Tracking Daily Power Usage and Cost with Shelly and Home Assistant - Part 2

One of the most rewarding parts of home automation is getting insights into how your home uses energy — and how much it’s costing you. If you’ve ever wondered what your washing machine, PC, or server rack really costs to run, you can easily find out using Shelly smart devices and Home Assistant. In this post, we’ll look at how to set up Shelly devices to monitor power usage, track daily totals with Home Assistant’s Utility Meter, and calculate energy costs automatically. Tutorial parts breakd
Andrew Townsend
Andrew Townsend
4 min read
Home Automation

Tracking Daily Power Usage with Shelly and Home Assistant - Part 1

One of the best parts of home automation is getting real data about how your home works — not just controlling things, but understanding them. If you’ve ever wondered how much energy your appliances are actually using, or wanted to see your daily consumption trends, you can do that easily with Shelly smart devices and Home Assistant. In this post, I’ll walk through how to integrate Shelly devices with Home Assistant and use them to track and visualise your daily power usage. Tutorial parts br
Andrew Townsend
Andrew Townsend
3 min read
Home Lab, Infrastructure

Building a Home Lab Dashboard with Homer

If you’ve been running a home lab for a while, you’ve probably collected a fair number of services — things like Home Assistant, Pi-hole, Proxmox, Uptime Kuma, Grafana, media servers, and more. The problem is, remembering all those URLs and ports gets messy fast. That’s where Homer comes in: a simple, customizable static dashboard you can host anywhere to keep your home lab neat and organized. What is Homer? Homer is a lightweight homepage for your self-hosted services. It’s just a single-pa
Andrew Townsend
Andrew Townsend
4 min read
Home Lab, Infrastructure

Monitoring Services with Uptime Kuma

If you run self-hosted apps, home lab services, or production infrastructure, you know the feeling: is it just me, or is the service down? Instead of waiting for someone to complain (or discovering it yourself when you try to use it), it’s better to have a monitoring tool that tells you when things break — and ideally before your users notice. That’s where Uptime Kuma comes in. What is Uptime Kuma? Uptime Kuma is a self-hosted, open-source status monitoring tool. Think of it as a free, self-
Andrew Townsend
Andrew Townsend
4 min read
AWS, Infrastructure, Home Lab

Setting Up Ghost with S3 Storage Using ghost-storage-adapter-s3: Part 2

If you haven't read Part 1 of this series it can be found here Setting Up Ghost with S3 Storage Using ghost-storage-adapter-s3: Part 1 Amazon CloudFront is a powerful CDN for speeding up content delivery. By default, when you create a distribution, AWS gives you a long, autogenerated domain like: d1234abcdef.cloudfront.net That works fine, but it’s not user-friendly. For production, you’ll usually want to use your own domain — for example, content.yoursite.com — so your assets are delivered u
Andrew Townsend
Andrew Townsend
3 min read
AWS, Infrastructure, Home Lab

Setting Up Ghost with S3 Storage Using ghost-storage-adapter-s3: Part 1

By default, Ghost stores uploaded images and media locally on the same server that runs Ghost. That works fine for small blogs, but if you want to run Ghost in a scalable environment (like Docker, Kubernetes, or multiple servers behind a load balancer), you’ll quickly run into problems. To make Ghost more flexible, you can use Amazon S3 (or an S3-compatible service like MinIO, DigitalOcean Spaces, or Backblaze B2) for media storage. This decouples your storage from the Ghost instance, ensuring
Andrew Townsend
Andrew Townsend
7 min read
Home Lab, Infrastructure

Linting Documentation with Vale: Consistent, Clear, and Error-Free Writing

If you’ve ever worked on a large documentation project, you know how quickly things can get messy. Different contributors bring different writing styles, terminology gets inconsistent, and small grammar mistakes sneak through. That’s where Vale comes in — a linter for prose that helps keep your docs clean, consistent, and professional. What is Vale? Vale is an open-source command-line tool for linting and style-checking text. Think of it like ESLint or Prettier, but for documentation and pros
Andrew Townsend
Andrew Townsend
3 min read