{"@attributes":{"version":"2.0"},"channel":{"title":"Blog on Cal Bryant","link":"https:\/\/calbryant.uk\/","description":"Recent content in Blog on Cal Bryant","generator":"Hugo -- gohugo.io","language":"en-gb","copyright":"Callan Bryant - All rights reserved","item":[{"title":"Astralbrowser: designing an incredibly fast but niche file search engine","link":"https:\/\/calbryant.uk\/blog\/astralbrowser-designing-an-incredibly-fast-but-niche-file-search-engine\/","pubDate":"Sun, 18 Jan 2026 00:00:00 +0000","guid":"69a6ffe1-5417-4c17-afbf-ff9189f23290","description":"<p>This post covers the background and design of\n<a href=\"https:\/\/github.com\/naggie\/astralbrowser\">Astralbrowser<\/a> &ndash; a simple, fast file\nsearch engine I created. Here&rsquo;s a demo of the final implementation in action:<\/p>"},{"title":"Ctrl+Alt+Drink: Adventures building a garden bar with a hidden motorised drinks cabinet","link":"https:\/\/calbryant.uk\/blog\/ctrl-alt-drink-adventures-building-a-garden-bar-with-a-hidden-motorised-drinks-cabinet\/","pubDate":"Mon, 25 Aug 2025 00:00:00 +0000","guid":"0c4d1801-7248-4f20-acb1-1a4e2ae82641","description":"<p>Yep, that&rsquo;s me dressed as Jaws<sup id=\"fnref:1\"><a href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\">1<\/a><\/sup> from Moonraker. We had a 007 themed opening\nparty because everyone kept saying the motorised drinks cabinet looked like\nsomething from a Bond film.<\/p>"},{"title":"Training a new AI voice for Piper TTS with only 4 words","link":"https:\/\/calbryant.uk\/blog\/training-a-new-ai-voice-for-piper-tts-with-only-4-words\/","pubDate":"Wed, 02 Jul 2025 00:00:00 +0000","guid":"12600994-c0f6-403b-be87-c2e498733067","description":"<p>Over the last 15 years (!) I have used\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/Speech_synthesis\">Text-to-Speech<\/a> (TTS) systems\nfor various projects including a fairly elaborate home automation system,<sup id=\"fnref:1\"><a href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\">1<\/a><\/sup>\na distributed public announcement system and a monitoring system.<sup id=\"fnref:2\"><a href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\">2<\/a><\/sup><\/p>"},{"title":"Rackmounting that which should not be rackmounted","link":"https:\/\/calbryant.uk\/blog\/rackmounting-that-which-should-not-be-rackmounted\/","pubDate":"Sat, 01 Mar 2025 00:00:00 +0000","guid":"75a84de8-2b89-4308-8bdb-e39f9530ab65","description":"<p>A few years ago I developed a few clever ways of\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/19-inch_rack\">rackmounting<\/a> non-rackmount\nequipment so it could look neat in my HiFi rack enclosure.<sup id=\"fnref:1\"><a href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\">1<\/a><\/sup> The\ngoal was to have a professional-looking setup that would support input from my\nTV, spotify, Airplay, DJ controller and other sources while being able to drive\na subwoofer with room correction and integrated crossover.<\/p>"},{"title":"3D printing giant things with a python jigsaw generator","link":"https:\/\/calbryant.uk\/blog\/3d-printing-giant-things-with-a-python-jigsaw-generator\/","pubDate":"Sun, 19 Jan 2025 00:00:00 +0000","guid":"d1dad8c9-1b78-4d88-9b69-f1ef412b18b2","description":"<p>I really like the idea of a fully automated pipeline<sup id=\"fnref:1\"><a href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\">1<\/a><\/sup> when I build anything &ndash;\nit&rsquo;s highly satisfying to see a machine do all the work for you. Combine this\nwith parametric design, and it makes iteration and customisation a breeze. My\nflagship example is my recent <a href=\"https:\/\/calbryant.uk\/blog\/speakers\/\">speaker project.<\/a><\/p>"},{"title":"Design\/build of some curved, fully parametric speaker cabinets","link":"https:\/\/calbryant.uk\/blog\/design-build-of-some-curved-fully-parametric-speaker-cabinets\/","pubDate":"Wed, 01 Jan 2025 00:00:00 +0000","guid":"52e32985-1722-4ee8-b7e6-4b1420b12583","description":"<p>This post documents a saga of speaker design dating back to 2019. Since then,\nI&rsquo;ve been gradually working on a CAD model for a new set of what started as\n(yet another) subwoofer, but became some compact 2-way office ribbon speakers.<\/p>"},{"title":"Hacking GPS into the Meteor 75 Pro, a tiny FPV drone","link":"https:\/\/calbryant.uk\/blog\/hacking-gps-into-the-meteor-75-pro-a-tiny-fpv-drone\/","pubDate":"Fri, 25 Oct 2024 00:00:00 +0000","guid":"dd5d7ffa-7ff8-47d9-9d12-2cc11685b94f","description":"<div class=\"infobox\">\nI&rsquo;ve since managed to get it working reliably! Check the update I&rsquo;ve added to\nthe end of the article.\n<\/div>\n<p>Following on from my previous article I added GPS<sup id=\"fnref:1\"><a href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\">1<\/a><\/sup> (well,\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/Satellite_navigation\">GNSS<\/a>) to my tiny drone &ndash;\nthe Meteor 75 Pro. I wanted to add GPS so I could make use of <a href=\"https:\/\/betaflight.com\/docs\/wiki\/guides\/current\/gps-rescue-v4-5\">GPS\nrescue<\/a> in\nbetaflight as well as see the altitude, speed and distance in the OSD.<\/p>"},{"title":"A comprehensive guide to FPV drone technology","link":"https:\/\/calbryant.uk\/blog\/a-comprehensive-guide-to-fpv-drone-technology\/","pubDate":"Thu, 24 Oct 2024 00:00:00 +0000","guid":"44220a56-6ccc-40f5-824a-60a08944565d","description":"<h2 id=\"background\">Background<\/h2>\n<p>Since the mid-2000&rsquo;s hobbyists have been building and flying\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/Quadcopter\">quadcopter<\/a> drones.<sup id=\"fnref:1\"><a href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\">1<\/a><\/sup> Since\nthen, the technology has been improved &ndash; and commercialised.<\/p>\n<figure style=\"width:854px\">\n<a href=\"https:\/\/calbryant.uk\/blog\/a-comprehensive-guide-to-fpv-drone-technology\/fpv_hu_feab42ec49d1f734.jpg\" target=\"_blank\">\n<picture>\n<source\nonload=\"this.style.background='none'\"\nsrcset=\"https:\/\/calbryant.uk\/blog\/a-comprehensive-guide-to-fpv-drone-technology\/fpv_hu_4de5493af874b088.webp 1x, https:\/\/calbryant.uk\/blog\/a-comprehensive-guide-to-fpv-drone-technology\/fpv_hu_f75511739ccab6d.webp 2x\"\ntype=\"image\/webp\"\n>\n<img\nonload=\"this.style.background='none'\"\nsrc=\"https:\/\/calbryant.uk\/blog\/a-comprehensive-guide-to-fpv-drone-technology\/fpv_hu_cc95ee3a2ab26e70.jpg\"\nwidth=\"651\" height=\"480\"\nalt=\"The goggles view on my first flight\"\n>\n<\/picture>\n<\/a>\n<figcaption>The goggles view on my first flight<\/figcaption>\n<\/figure>\n<p>Despite the commercialisation, an incredibly diverse and open selection of\nhardware and software is available to hobbyists, in addition to the\noff-the-shelf ready-to-fly (RTF) drones.<\/p>"},{"title":"DIY FPV flight simulator using a VTX, control receiver and HDMI converter","link":"https:\/\/calbryant.uk\/blog\/diy-fpv-flight-simulator-using-a-vtx-control-receiver-and-hdmi-converter\/","pubDate":"Sat, 14 Sep 2024 00:00:00 +0000","guid":"fe3c880f-0b84-4c3c-a788-8093614b1cb0","description":"<p>I&rsquo;ve recently got into a bit of a rabbit hole with\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/First-person_view_(radio_control)\">FPV<\/a>\nquadcopter <a href=\"https:\/\/en.wikipedia.org\/wiki\/Drone_racing\">drones<\/a>.<sup id=\"fnref:1\"><a href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\">1<\/a><\/sup>\nSpecifically with a &ldquo;mini-whoop&rdquo; style drone, the Meteor 75 Pro.<\/p>\n<figure style=\"width:854px\">\n<a href=\"https:\/\/calbryant.uk\/blog\/diy-fpv-flight-simulator-using-a-vtx-control-receiver-and-hdmi-converter\/IMG_9043_hu_fafc1fc16df51e27.JPEG\" target=\"_blank\">\n<picture>\n<source\nonload=\"this.style.background='none'\"\nsrcset=\"https:\/\/calbryant.uk\/blog\/diy-fpv-flight-simulator-using-a-vtx-control-receiver-and-hdmi-converter\/IMG_9043_hu_1a8e992d3ed3f266.webp 1x, https:\/\/calbryant.uk\/blog\/diy-fpv-flight-simulator-using-a-vtx-control-receiver-and-hdmi-converter\/IMG_9043_hu_ae2cc3bba27e50ae.webp 2x\"\ntype=\"image\/webp\"\n>\n<img\nonload=\"this.style.background='none'\"\nsrc=\"https:\/\/calbryant.uk\/blog\/diy-fpv-flight-simulator-using-a-vtx-control-receiver-and-hdmi-converter\/IMG_9043_hu_b7337da648cf0328.JPEG\"\nwidth=\"796\" height=\"480\"\nalt=\"...sneak preview of the end product!\"\n>\n<\/picture>\n<\/a>\n<figcaption>...sneak preview of the end product!<\/figcaption>\n<\/figure>\n<p>As it turns out, it&rsquo;s possible to connect a real drone controller to a computer\nto practice flying with many different simulators. I&rsquo;ve tried a few of them,\nbut I think the best one is <a href=\"https:\/\/www.liftoff-game.com\/\">Liftoff<\/a> &ndash; it\nfeels the most realistic.<\/p>"},{"title":"Better PC cooling with Python and Grafana","link":"https:\/\/calbryant.uk\/blog\/better-pc-cooling-with-python-and-grafana\/","pubDate":"Fri, 01 Mar 2024 00:00:00 +0000","guid":"7b2975e2-6de8-4455-bfdf-a08fcdd3d0d9","description":"<p>I recently upgraded from a <a href=\"https:\/\/www.cpubenchmark.net\/compare\/3485vs3862\/AMD-Ryzen-7-3700X-vs-AMD-Ryzen-9-5950X\">Ryzen 3700X to a\n5950X.<\/a>\nDouble the cores, and nearly double the potential heat output. I didn&rsquo;t upgrade\nmy cooling solution, <a href=\"https:\/\/nzxt.com\/en-GB\/product\/kraken-x53\">a 240mm Kraken\nX53<\/a> AIO liquid cooler.<\/p>"},{"title":"Semi-automatic whole-house iPhone internet failover with NixOS","link":"https:\/\/calbryant.uk\/blog\/semi-automatic-whole-house-iphone-internet-failover-with-nixos\/","pubDate":"Sat, 10 Feb 2024 00:00:00 +0000","guid":"b6a62704-9e41-4dad-bfad-b0bbe663e4ac","description":"<p>I have a cable broadband connection at home.\nIt&rsquo;s actually reliable, which is refreshing\ncompared to the poor experience had with the\nsame provider as a student living in Leicester.<\/p>"},{"title":"CNC routing: speeds and feeds","link":"https:\/\/calbryant.uk\/blog\/cnc-routing-speeds-and-feeds\/","pubDate":"Sat, 25 Feb 2023 00:00:00 +0000","guid":"b9dae716-c4f0-43df-b2a7-51f13e14362a","description":"<p>A friend has his own CNC router; he built it himself in 2009 and has been\nupgrading it ever since &ndash; though it&rsquo;s been a while since it was last used. I&rsquo;m\nhelping get it running again, and help improve it further to cut a pair of\nspeakers I&rsquo;ve designed.<\/p>"}]}}