Way back when, I was working on a Java service. We used Spring and Hibernate, and we'd also started to use Postgres' new-fangled UUID types. Further, we'd integrated Lucene into our application, via Hibernate Search, to give our users full-text search capabilities. This seemed great, until Spring released their next major version and dropped support for the version we were using. Hibernate…
When I'm out and about, I don't always have a full set of dice because I carry a small bag. This is sometimes of critical importance when an impromptu game of D&D breaks out. In 5e, you usually only need a d20, but there are cases you need a d4, d6, d8, d10, d12, or even a d100. Fortunately, you can easily use a d20 and some mental arithmetic to simulate all of these dice with the humble d20. You…
Back in May of this year, Sam Taylor published an article on XmRit, " Variation Is King, Not The Average ". I agree entirely with the article, and I privately published the following addition on a private forum. I find myself referring to this somewhat regularly, so it's worth making it more widely available. You can model many (most?) systems as a queue with a consumer, which means you can use…
The " Sold a Story " podcast explores how COVID lockdowns sent kids home from school, revealing to parents working from home that their kids couldn't read, despite positive reports from schools. Dan Luu looks at many online arguments with unusual clarity. For example, he took up the oft-claimed " search engines suck now " torch by running around 42 searches (7 search terms across 6 search…
Recently, I've started "reading" podcasts. I started when I noticed I wasn't following them properly; in the best case I'd zone out, but in the worst case I'd find I'd agreed with some claim or argument that did not stand up to scrutiny. On occasion, the speaker would say something I knew to be false, which would provoke me into checking their other claims, which would be similarly shaky. I had…
Do you have a colleague who, when asked for their opinion, replies "ChatGPT says ..."? You have a route to influence them that you may not know about. You have a route to subtly influence all users of ChatGPT and similar tools. Large language models (LLMs) are sold as "artificial intelligence" (AI), but they do not create new ideas or opinions, they pull from the existing body of works on the…
I love my small, poorly-written scripts. I enjoy that they're in a random assortment of languages – Python, Shell, aliases, and even some in JavaScript. I often forget they're there, but I miss them when they break. Sometimes, the problem they solve changes, so I need to tweak them. They gradually accrete, like layers of sediment, each building on the last, assuming the layers below are doing…
When I was at school, I played rugby on the D team. For reference, that's the worst team. There were good reasons – my knees were liable to do a weird thing and get "stuck" – but one thing the coach used to say has stuck with me. He said "a little and often" about getting water. His reasoning was that if you drank large gulps irregularly you would overwhelm yourself and maybe throw up. I have…
I write under a creative commons license so that others can learn. I also get "intangible" benefits from writing -- people talk to me about the ideas I put forward, I learn from them, and form some small relationship. It's also something I can point to that I did, that I made. Some public part of me that might go on after I'm no-longer here. After reading "“Wait, not like that”: Free and open…
UUIDs are a 128-bit number, represented as groups of hexadecimal digits, separated by - characters. For example, a UUIDv4 looks like 62b5dcd2-1549-4e1c-8315-0e83b2518b35 . They're primarily intended as identifiers, and they have a few versions that have different properties. I'm going to focus on UUIDv4 here and why you might not need them. Side quest: Why not use sequential integers? If you use a…
Bottom line up-front, I think there are at least 4 types of estimate: Delivery date Cycle time Dev-time Relative I only intend to define these here, not advocate for any specific type. Delivery date Estimates like "we'll have it to you by 2024-Oct-01" are delivery date estimates. They're pinned to a specific date in the calendar and most often given to customers and used for sequencing "resources"…
There have been a couple of posts on Statistical Process Control (SPC) recently. The most common objections are that you can't measure software development, that software development is too intrinsically variable for these techniques to be worthwhile, or the measures have no effect on outcomes that matter (e.g., Free cash flow (FCF), return on invested capital (RoIC), etc.). Here's an incomplete…
About a year ago, Amazon Music switched their offering to a "shuffle-only" model. This is fine for most albums, but there are some albums that I love to listen to in-order. Think, Miles Davis' "Kind of Blue" or literally anything by Tool. I'd been a Prime subscriber for well over a decade, but I wasn't about to pay extra for a feature they'd previously offered. Especially not one that seems to…
In the Twelve Factor App , section III. Config , Wiggins writes that config should be stored in environment variables, including "Credentials to external services such as Amazon S3 or Twitter". However, this neglects one important aspect of service-to-service credentials: rotation. Credentials are one of the few configuration values that need to be regularly changed in running systems. To rotate a…
On 2023-Dec-31, Keybase had an outage because a TLS certificate expired. Expired TLS outages have happened at GitHub , Oculus/Meta , Microsoft Teams , and Vim . It doesn't seem to matter if you're a large organisation or an Open Source project. Expired TLS certs keep causing outages. I've even seen automated renewal systems fail from time to time. Failure modes Getting a TLS cert is cheap and easy…
In the noughties, I found a blog post that showed how to setup vim as a Python IDE. I lost that config and I've been on the look out ever since. I've also been looking for the "components" of it -- what gave the file explorer? How did it split the screen? etc. Today, Ben Eater released a video about writing a BIOS for his homebrew 6502 computer . At about 09:14, he split the vim window, opening a…
Changes aren't free. They're low cost, but not free. Changes are also risky, any change can cause an outage. Many places require code review for every change, so it's not just your time you're choosing to spend. I apply two rules and a judgement call. I make a change when: It moves us towards a new customer feature. It fixes a customer-relevant bug, including security problems. It will improve our…
Back in the day, at $Job-N , I was "in charge" of security things. This was after the Heartbleed fiasco, so we were trying to get our ducks in a row. We decided to regularly patch our Debian "fleet." We had 3 or 4 servers at that time, one of which was our test server. Each of the live servers housed 2 to 5 customers, depending on customer size. They also had a database cluster on each server, and…
I've worked with Terraform for about 1.5 years now and I'm not impressed. I think I was spoiled by Amazon's internal (and later, external) tools. Terraform unfortunately falls short in many (fixable!) ways. Let's get into it. Open-loop control Open-loop and closed-loop control is a concept from control systems. An open-loop control system makes changes. A closed-loop system makes changes and…
Let's start with a thought experiment. Someone says you can bet $100 on a loaded coin flip. You get $200 if you're right and lose your stake otherwise. You can also decline to bet. Ignoring the the really deep questions like "why is this weirdo carrying around a loaded coin?", "if they're offering me a bet they expect to profit, right?", and "how do I get them to go away?" we continue with the…
Small businesses have less capital than larger businesses, so they need better judgement to manage that capital. A string of unlucky outcomes can wipe out a small business more easily than a larger business. We can use the Kelly Criterion to see this in action: When you don’t have a lot of capital, each “bet” takes up a larger fraction of your total capital. When you stake more you can withstand…
What is noise in software estimates? Noise is the variability in human judgements, either between people or when people disagree with themselves. With software estimates, this is the difference between people's estimates, or unjustified changes to an estimate. For example, I led a small project with 2 other devs to add a feature to a system. At the outset we wrote a short design doc, and I asked…
I recently bought a Retroid Pocket 2 from GoRetroid for USD 132.00 including all shipping and taxes. The Retroid Pocket 2 I've made a few crossings on the ferry since then and it's been really nice. I used to play my GameBoy (Advance) almost every day on the bus to school. I loved it. Getting this back is a huge throwback. It's a lovely little machine. It feels well built, the buttons are nice to…
We have a beautiful fur baby. Her name is Figueroth Turner-Hallow ( Fig for short). She was born on 2022-01-23. Her dad is a border collie and her mum is a border collie-corgi mix. On the ferry ride home Big eyes on the sofa Snoozing on a cushion on the sofa Bean tax We love her with all our heart.
I spotted two misleading statistics on CBC yesterday. I think that both have a similar cause: there wasn't enough context for the reader to easily see that they were being misled. Vaccine efficacy: just, like, your opinion man On 2021-Dec-03, CBC News posted an opinion piece that argued public health measures are "government overreach." As part of this argument, Richarz tries to cast doubt on the…
In my previous article on audiobooks I showed a short script that converts *.mp3 audiobook files into much smaller *.ogg files. At the end of that article I mentioned that I have a very ugly process for handling whole zip archives of audiobooks. Today I show another terrible shell script! You guessed it, it fixes some of the problems of my first script. #!/bin/sh # Safer shell scripting. -x also…
As far as possible, I track all of my work time. Meetings, projects, tickets, Slack, email, filing expense forms. Even my breaks (lunch, snacks, or otherwise) are timed. What good is time tracking? I have one big reason and one small reason for timing everything. First, I need to be able to look back and answer the question: "did I waste my time?" Second, I want to know how long future work will…
We use barcodes to track many physical things. Groceries, over-the-counter medications, computer parts, housewares, books, CDs, DVDs. Barcodes even make their way into weird places. My health card has a barcode on it, as does my library card. Even some medical samples get a barcode. Barcodes are everywhere. An example UPC-A barcode Recognise me? Of these, UPC-A [1] is probably the most…
Finally safe Just like before this was a very simple affair. I went through a fast and efficient two stage queue, got my vaccine, waited to see what happened for 15 mins, and left. I did a sudoku while I waited, it was that uneventful. What this represents to me is more important. I am not at-risk and I am only fully-vaccinated because of where I live -- somewhere rich. On a global scale, these…
Let's say that you want to record the day's mean temperature accurately. You hook up a temperature sensor to an analogue-to-digital converter, then record that value with a Raspberry Pi. When building this kit, you measure the output of your temperature sensor with your Fancy oscilloscope, and see a signal: A continuously-varying signal between 100 and 101 mV Your oscilloscope output. A nice…
I recently got my basic amateur radio certificate . It was a lot of fun and I want to share some of what I've learned. I found this information hard to find or scattered, so I'll take a run at it. This blog post explains how CW works conceptually, not how to build a CW transmitter or receiver. What's CW? CW stands for "continuous wave", which is a bit of a misnomer. We use it to send Morse code by…
The good A lot of good things happened to me this month. Most of them were down to chance, but I trace a few of them to my own decisions and actions. I got vaccinated ! This is our first step towards getting back to normal. My partner and I have started planning where we'll go, date nights, and so on for when we've had our second dose. We're both really excited. I passed my basic radio…
I've never been able to build a tone generator or the lines on any platform. I understood that cat /dev/urandom | /dev/dsp made a white noise generator, but that was it. Times have changed, and I want something more sophisticated. Tools We'll use a few tools: Rust -- because I want to learn it better pacat -- To send our sound to the speakers sox and ffmpeg to convert the output to something…
I feel like this should be a huge thing, but it was a simple affair. Understated importance I got my dose at the Victoria Conference Centre. There were Canadian Red Cross vounteers helping to check folks in, give sanitiser, etc. There were two queues; both single file, multi-server. The first queue went to the registration desk. From there, you joined the second queue to see your vaccinator. A few…
Montano posted photos from the Tuscaloosa Tornado . Looking over the photos I saw a few had damaged buildings with a weird 'X' marking on them. I didn't understand it, so I looked it up! My search took me to the National Urban Search & Rescue (US&R) Response System Rescue Field Operations Guide from the Federal Emergency Management Agency (FEMA). That had the answers I wanted, and a bunch of other…
I listened to Chesley B. Sullenberger's memoir "Highest Duty: My Search for What Really Matters". It is a clearly written memoir, with both humour and heartbreak. The good Sullenberger recounts many of his experiences: learning to fly, his military career, significant events in his personal life, and the events of Flight 1549. It felt comprehensive but every detail also felt important.…
Today, I sat my Canadian Basic Amateur Radio exam and passed! I have chosen the call-sign VE7YRK . VE7 is the "area prefix" for British Columbia. YRK is to link back to my home area, Yorkshire, UK. In this article, I'll explain how I studied. History I built small receivers (and the odd low-power transmitter) when I was a teenager. I also played around a lot with CB radios. I never got my UK…
The good So far, my self-care has been going well. I generally feel much better. In January I recorded 11 "negative moods", 8 in February, and only 4 so far in March. 3 data-points isn't enough to call a trend, and I'm not yet willing to rule out the improving weather. It's encouraging none-the-less. My partner and I have had some wonderful times together. We've watched anime, listened to…
On 2020-Mar-03, I left work with a headache. I think I'd not slept well the night before or something. I went home and slept on the sofa until my headache went away, then I did some more work. I went into work once more before 2020-Mar-13, then the stay home order came down in BC. A week or so before my headache, I sat on my bed and confessed to my partner that I was scared by the pandemic. I'd…
This was a little bit of trial an error. First, I tried Aurora Net , but I couldn't hear anything. I tried VE6SLP's KiwiSDR , and I still couldn't get it. One day I thought it'd be nice to have some "company" while working, so I loaded up VE6SLP's site around 15:00 Pacific time. I found folks on Aurora Net, including some British Columbia call signs! Next, I tried my SDR again at the time I'd…
I listened to Malcolm Gladwell's "Talking to Strangers" recently. It's made it onto several best seller lists and received good reviews generally. It falls disasterously short. The Good Gladwell says that the audiobook is like a "well polished podcast." He's right, he narrates it well and the music choice is good. Where possible, he includes actual audio from interviewees and other quotes. This…
I am a bit of a digital pack-rat. I buy fairly large disks for my machines, then never upgrade. I hate moving computer almost as much as I hate moving house. I am constantly at or near the limits of my disks. This usually isn't a problem, but it's presented a unique challenge for audiobooks. I found out that I rather enjoy them, but I don't really have the disk space for them. I have, however,…
I had great fun building simple radios as a kid, I even had a CB radio. I didn't set it up again after we moved house. I didn't use them all throughout my late teens or either of my degrees. Eventually, I left them in the UK when I moved out to Canada. Enter RTL-SDR I bought an RTL-SDR , a cheap Software Defined Radio (SDR) receiver. I also got a set of three cheap antennas (not an affiliate…
This originally appeared on my Medium on 2018-Jun-30 . Sometimes the shit hits the fan. You need to stop the HIT going to more workers and you need to stop it now. This is what an Andon is for in manufacturing. Cancel, stop, abort, or otherwise halt immediately. This happened to me tonight. I setup an academic experiment as a HIT, piloted the test with friends and family, trialled it manually in…
I estimate there is 8% probability of the WHO declaring a new pandemic in any given year. I estimate it's 7% in 2021. Historically, there is an 8% chance of the WHO declaring a new pandemic. An on-going pandemic does not stop a new one starting, but COVID-19 controls may help stop an outbreak, like the it has made this year's flu activity much lower. There are reasons to be pessimistic: more…
This originally appeared on my Medium on 2019-Mar-28 . This is not my story, but it is one I’ve seen it several times now. It’s a story worth telling because it happens time and time again. It is an excellent example of deeper problems in software and systems engineering. Let’s follow a system’s growth over several years to explore the problem. In the beginning, the system was built. Users were…
When the on-call's pager goes off, they should be able to react quickly. If the system has a lot of false alarms, they may waste time checking if there is a real problem. If there are too many false alarms, the on-call may need prioritize some pages and ignore others. This lowers system availability as the time-to-repair increases. There's also the human side of false alarms. On-calls will make…
GJOpen asks : "Before 7 May 2021, will the Bank of England set its Bank Rate to below zero?" I estimate the probability that Bank of England will set its Bank Rate below 0 is 6% . Base rate Since 1900, the Bank of England has released over 400 rates. It has never released a negative bank rate. Naively, the base rate is less than 1%: > options(digits=2) > binom.test(0, 400) Exact binomial test…
Theme? A theme is similar to a new year's resolution. Most folks set new year's resolutions to accomplish something, like losing weight. They're the reason gyms are packed in mid-January and ghost towns by April. A theme sets a broad direction, something to think about throughout the year. It's hard to fail at a broad direction, so you're less likely to avoid it. Any effort counts. The idea comes…