For the last year or so I’ve been running three eSIMs on my iPhone: personal, work, and a data-only travel SIM that swaps in whenever I’m abroad. iOS only lets two eSIMs be active at any one time, which meant a small but constant dance of enabling and disabling profiles depending on what I was doing that day. I’ve now ported both my personal and work mobile numbers to VoIP, and…
I’ve been using VeraCrypt for encrypted vaults for a while now. I mount and dismount vaults multiple times a day, and typing out the full command each time gets old fast: --text , --mount , --pim=0 , --keyfiles="" , --protect-hidden=no . There’s nothing wrong with the CLI, it’s just repetitive, and repetitive is what aliases are for. The GUI exists, but I spend most of my time in…
Before I get into this: there are probably a hundred ways to achieve what I’m about to describe, and most of them are equally valid. My setup didn’t arrive fully formed. It evolved over several months of trying things, breaking things, and slowly landing somewhere I’m actually happy with. If your approach is different, that’s fine. This is just what works for me. I wrote…
Fair warning: this post contains spoilers for both Daemon and Freedom™. Then again, the books came out twenty years ago. If you haven’t read them by now, you probably weren’t going to. I highly recommend them both though, if you haven’t read them yet. I finished re-reading Daniel Suarez’s Daemon and its sequel Freedom™ a few weeks ago. I first picked them up years back and…
A Fortune survey doing the rounds this week has thousands of CEOs admitting that AI has had no measurable impact on employment or productivity. It’s being treated as vindication by the sceptics and a crisis by the vendors. I read it and thought: these people are using AI wrong. I use AI tools every day. Claude helps me write code. OpenClaw handles the kind of loose, conversational thinking I…
About a year ago I moved my personal messaging to Signal as part of a broader push to take ownership of my digital life. That went well. Most of my contacts made the switch, and I’m now at roughly 95% Signal for day-to-day conversations. But Signal is still one company running one service. If they shut down tomorrow or change direction, I’m back to square one. XMPP fixes that.…
If you’ve read much of this blog, you’ll know I have a thing for privacy . Whether it’s running my blog over Tor , blocking ads network-wide with AdGuard , or keeping secrets out of my dotfiles with Proton Pass , I tend to think carefully about what data I’m exposing and to whom. Last weekend I built Bluehood , a Bluetooth scanner that tracks nearby devices and analyses…
One of the frustrations with traditional network-wide ad blocking is that it only works when you’re at home. The moment you leave your network, you’re back to seeing ads and trackers on every device. But if you’re already running Tailscale, there’s a simple fix: run AdGuard Home on a device in your tailnet and point all your devices at it. The result? Every device on your…
I wanted to make this blog available as a Tor hidden service. Not because I expect many visitors via Tor, but because it felt like a small contribution to a more private web. If someone wants to read my posts without revealing their IP address, they should be able to. The setup has two parts: a Docker container running Tor and Nginx on my home server, and an HTTP header on the regular site that…
If you manage dotfiles in a public Git repository, you’ve probably faced the dilemma of how to handle secrets. API keys, passwords, and tokens need to live somewhere, but committing them to version control is a security risk. Proton has recently released a CLI tool for Proton Pass that solves this elegantly. Instead of storing secrets in files, you fetch them at runtime from your encrypted…
One of the small joys of running a static blog is scheduling posts in advance. Write a few pieces when inspiration strikes, set future dates, and let them publish themselves while you’re busy with other things. There’s just one problem: static sites don’t work that way out of the box. The problem with static sites With a dynamic CMS like WordPress, scheduling is built in. The…
I’ve been a Spotify subscriber for years. It’s convenient, the catalogue is vast, and the recommendations used to be genuinely useful. But lately, I’ve found myself increasingly uncomfortable with the direction the platform is heading. The Spotify problem It’s hard to pin down exactly when Spotify stopped feeling like a music service and started feeling like something else…
A few weeks ago, I came across A Word on Omarchy which highlighted some security gaps in Omarchy’s default configuration. Things like LLMNR being enabled, UFW configured but not actually running, and relaxed login attempt limits. The post resonated with me. Omarchy is a fantastic opinionated setup for Arch Linux with Hyprland, but like any distribution that prioritises convenience, some…
I’ve been exploring ZeroNet recently, a peer-to-peer web platform that’s been around since 2015 but still feels like a glimpse of what the internet could be. It’s not mainstream, and it’s not trying to be. But for anyone who cares about decentralisation and censorship-resistance, it’s worth understanding. What It Is ZeroNet is a decentralised network where websites…
I recently passed my advanced motorcycle test with the IAM. A F1RST, no less. The highest grade. And within hours of getting the result, I’d already started telling myself it wasn’t that impressive. This happens every time. The thing I’ve been working toward, the qualification, the goal, the milestone, suddenly feels smaller the moment I reach it. Not worthless, exactly.…
I’ve been chasing the perfect productivity setup for longer than I care to admit. The signs are all there: a Downloads folder cluttered with productivity apps, browser bookmarks organised by system acronyms, and that familiar feeling of starting fresh with yet another note-taking tool, convinced that this time will be different. My digital graveyard is extensive. NotePlan, Microsoft OneNote,…
Six months ago, I wrote about my privacy reboot — a gradual shift toward tools that take both privacy and security seriously. It was never about perfection or digital purity, but about intentionality. About understanding which tools serve me, rather than the other way around. Here’s how it’s actually gone. The Wins Ente continues to impress. The family photo migration is complete, and…
We’ve all seen them: those productivity YouTubers with perfectly lit home offices explaining how they maintain “deep work” for 12+ hours a day. They sit there, looking impossibly serene, selling us a vision of superhuman concentration that I’ve come to believe is complete nonsense. I used to buy into this. I’d feel like a failure when my brain checked out after three…
We like to believe we’re in control. That privacy is something we can protect if we just check the right boxes, read the fine print, toggle the right settings. But that belief is crumbling. In 2025, privacy isn’t something we manage — it’s something we quietly surrender, one tap, click, and scroll at a time. Lately, I’ve been thinking about how much I rely on Google. Not in…
Tucked away in a parenting book I read nearly two decades ago — title and author long lost to time — was a metaphor that lodged itself in my brain and never left. “Life is a balance, or rather, a juggle of balls. Some are glass. Some are plastic." The idea is simple but enduring: drop a plastic ball, and it bounces. Drop a glass one, and it shatters. The trick — the real tightrope act — is…
Is there some magic in writing every day for 100 days? Maybe. Maybe not. But that’s not quite the right question. A better one might be: What would I hope to get out of writing every day for 100 days? For starters, I’d get better at clarity — saying what I mean without losing the thread halfway through. I’d build speed: less dithering, more straight-from-brain-to-fingers. And…
Six Month Update Curious how this privacy reboot actually worked out? I wrote a detailed follow-up after six months of living with these changes — covering what worked, what didn't, and the pragmatic compromises along the way. Read the Six Month Check-In → The line between privacy and security isn’t always clear — and in tech, it’s often treated like they’re the same thing. But…
I have, for a long time, been looking for a better alternative to Google Photos. Although Google Photos does exactly what I want, and isn’t that expensive, I do often consider the fact that all of my photos are in Google’s hands. I did move to Synology Photos a few years ago. The move itself was straight forward enough, but the user experience leaves quite a lot to be desired. Anyone…
It is the time of year again where I decide to update my local computer configuration, as well as any remote linux server(s) that I am maintaining. I really appreciate having a familiar prompt and alias setup whenever I login to any of my servers/workstations. As per usual, I cannot remember which specific packages and plugins I use; so I’ve am using this post for future me to discover how I…
When running a powershell script, I often find I need to run the script in an elevated prompt. The nature of my job is that often these scripts will be run by people that don’t really know what Powershell is. I have found it quite useful to first create a bash script that the user executes, which in turn calls the actual Powershell script as an elevated user. To keep this handy, I’m…
More and more I find myself quickly spinning up a new Windows VM on my unraid server. It is always a ‘temporary’ VM which, after setting up exactly how I like, I invariably then wish I’d set a much larger virtual disk size. The standard VM disk size is 30G and that always seems to be enough. Fast forward an hour or two and I really wish I had set something more realistic. The…
When accessing remote servers that I am responsible for, I always initiate a tmux session along with the SSH session. This means I am always in a tmux session and I will never forget to start a tmux session manually. There is something particurly frustrating about starting a process on a remote server only to realise that you I forgot to start a tmux session and the process is going to take > 1…
I finally had chance to get a dedicated server at Hetzner for my own projects and use. No client requirements, no deadlines and no specification requirements. Seems like a simple thing but just about every ‘proper’ server I have ever worked on has been for a client or work project. Now that I had access to my own server, it was time to configure it exactly how I wanted. As usual, I…
The latest version of Ubuntu has recently been released (20.04 LTS) and along with it comes the latest version of tmux. Tmux is now at release 3.0a and this version is pre-installed with Ubuntu 20.04 LTS. The problem is, when you want to import a tmux configuration file from tmux 2.9 or below, you get many errors. The fix for me was simple… tmux kill-server Once I killed all old sessions…
I recently purchased another Raspberry Pi 4 but this time I wanted to use Ubuntu 20.04 and I wanted to use a USB 3 1TB external hard drive as the boot disk. The reason for using a large boot disk is mainly to avoid SD card corruptions in future as all read/writes (once booted) will be on the external USB drive not on the SD card. The first step is install Ubuntu 20.04 onto an SD card. Connect the…
I recently noted in a blog post that I use a short snippet to either connect to an existing tmux session when I start a new SSH connection, or create a new tmux session if an existing one doesn’t exist. The problem is, I have been using Termius more often than not recently and using the snippet feature as mentioned in the previous blog post . I needed to make this work within a normal…
I have been using Teckin smart plugs around the house for quite some time now. They’re really handy as they integrate with Google Home via the Smart Life app ecosystem. This means that each night we can tell Google to “turn everything off” and our lamps all switch off at the wall socket. What I have wanted to do for some time, after seeing my friend do it with great success, was…
When using RemoteApp on Microsoft Server 2016 I noticed that whenever you add the RemoteApp workspace feed to iOS or iPadOS devices, the resources are listed under ‘Work Resources’. Although this works perfectly, it becomes a problem when you connect to different RemoteApp servers and they are all titled ‘Work Resources’. The solution is simple and takes about one minute,…
Over the years I have used many different methods of failover for primary to secondary, sometime tietary, wan links on Mikrotik devices. Along with manual routing table entries, I have always relied on scripts of some sort that are triggered when one of the WAN links goes down. I have had varying success with this approach. One of the biggest problems I have had when switching from a primary WAN…
I have been using tmux as an alternative to screen for a couple of years so far. It works very well and I very quickly got used to the shortcuts for it - especially after changing the shortcut key to CTRL + A. One thing that I wanted to do was ensure that I was always in a tmux session. There’s little worse than running a command that is going to take some time but realising that…
I have used PiVPN for many projects over the past few years. It makes setting up a VPN gateway really easy and now supports Wireguard as well as OpenVPN. I have started using it more often since they added the ability for it to be installed on a vanilla Ubuntu installation, it no longer needs to be run on a Raspberry Pi. One of the problems I have come across a few time with PiVPN is when the…
After a lot of trial and error getting a test Cisco 7906G handset working with an Asterisk PBX I thought it would be useful to make a note of the configuration options I used and the files that finally worked. They are all hosted on [GitHub] https://github.com/dannymcc/Cisco-7906G-SIP . TFTP/DHCP Configuration During boot the handsets will discover the TFTP server via DHCP option 66 and/or DHCP…
I recently needed to receive .txt files from a laboratory analyser, convert it to PDF and then transfer it to a local SMB share - but - the analyser results text file has to be over 30 minutes old before the whole process begins. Once the file has been converted, it needs to be deleted from the analyser server sl that it doesn’t fill up the local hard drive. The analyser server in this…
This is the first post of this new blog. I have made many blogs over the years and not one of them lasts more than a few weeks, or in some cases, days. My aim is to use this as a unified location for everything that I want to remember in the future. Let’s see how that goes… It’s entirely possible that this blog will not be updated very often, but, I hope it is. To help me feel…