Long Form Posts The RSS feed for Long Form Posts.

  • Mainboard Mayhem

    Project update on Mainboard Mayhem, my Chip’s Challenge fan game. I didn’t get it finished in time for the release deadline, which was last weekend. I blame work for that. We’re going through a bit of a crunch at the moment, and there was a need to work on the weekend. The good news is that there wasn’t much left to do, and after a few more evenings, I’m please to say that it’s done. Continue reading →

  • Early Version of This Blog

    I was looking for something in GitHub the other day when I found the repository for the first iteration of this blog. I was curious as to how it looked and I’d thought that I’d boot it up and post a few screenshots of it.1 It started life as a Hugo site. There a two reasons for that, with the first being that I didn’t have the patients to style a website from scratch, and Hugo came with some pretty nice templates. Continue reading →

  • On Tools and Automation

    The thing about building tools to automate your work is that it’s hard to justify doing so when you’re in the thick of it. Easy to see all the time you save in the aggregate, but when you’re faced with the task in your day to day, you’re just as likely to say “I can build a tool which will let me do this task in a couple of seconds, but it’ll take me an hour to build it verses the 5 minutes it’ll take for me to just do the task. Continue reading →

  • 🔗 XML is the future - Bite code!

    I wanted to write something about fads in the software development industry when the post about Amazon Prime Video moving away from micro-services back to monoliths was making the rounds. A lot of the motivation towards micro-services can be traced back to Amazon’s preaching about them being the best way to architect scalable software. Having a team from Amazon saying “micro-services didn’t work; we went back to a monolith and it was more scalable and cheaper to run” is, frankly, a bit like the Pope renouncing his Catholic faith.

    I didn’t say anything at the time as doing so seemed like jumping on the fad wagon along with everyone else, but I have to agree with this article that this following along with the crowd is quite pervasive in the circuits I travel in. I did witness the tail end of the XML fad when I first started working. My first job had all the good stuff: XML for data and configuration, XSLT to render HTML and to ingest HL71, XForms for customisable forms. We may have used XSD somewhere as well. Good thing we stopped short of SOAP.

    The whole feeling that XML was the answer to any problem was quite pervasive, and with only a few evangelists, it was enough to drive the team in a particular direction. And I wish I could say that I was above it all, but that would be a lie. I drank the cool-aid like many others about the virtues of XML.

    But here lies the seductive thing about these technology fads: they’re not without their merits. There were cases where XML was the answer, just like there are cases where micro-services are. The trap is assuming that just because it worked before, it would work again, 100% of the time in fact, even if the problem is different. After all, Amazon or whatever is using it, and they’re successful. And you do want to see this project succeed, right? Especially when we’re pouring all this money into it and your job is on the line, hmm?

    Thus, teams are using micro-services, Kubernetes, 50 different middleware and sidecar containers, and pages and pages of configuration to build a service where the total amount of data can be loaded into an SQLite3 database2. And so it goes.

    So we’ll see what would come of it all. I hope there is a move away from micro-services back to simpler forms of software designs; one where the architecture can fit entirely in one’s head. Of course, just as this article says, they’ll probably be an overcorrection, and a whole set of new problems arise when micro-services are ditched in favour of monoliths. I only hope that, should teams decide to do this, they do so with both eyes open and avoid the pitfalls these fads can lay for them.


    1. HL7 is a non-XML format used in the medical industry. We mapped it to XML and passed it through an XSLT to extract patient information. Yes, we really use XSLT to do this! ↩︎

    2. Ok, this is a bit of an exaggeration, but not by much. ↩︎

  • Code First, Tests After

    Still doing the code first, tests after at work and I’m really starting to see the benefits from it. Test driven development is fine, but most of our recent issues — excess logging or errors that are false positives — have nothing to do with buggy business logic. It’s true that you can catch these in unit tests (although I find them to be the worst possible tests to write) but I think you gain a lot more just from launching the application and seeing it run. Continue reading →

  • On The Reddit Strike

    Ben Thompson has been writing about the Reddit strike in his daily updates. I like this excerpt from the one he wrote yesterday: Reddit is miffed that Google and OpenAI are taking its data, but Huffman and team didn’t create that data: Reddit’s users did, under the watchful eyes of Reddit’s unpaid mod workforce. In other words, my strong suspicion is that what undergirds everything that is happening this week is widespread angst and irritation that everything that was supposed to be special about the web, particularly the bit where it gives everyone a voice, has turned out to be nothing more than grist to be fought over by millionaires and billionaires. Continue reading →

  • Truthful Travel Talk

    It’s time to be honest: I think overseas travel is wasted on me. We were driving down from Antibes to Genova today. It was a nice trip, complete with picturesque towns passing us by as we drove along the motorway. My friend was oohing and ahhing at each one: remaking about how nice it would be to see them, stay in them for a while. He was also remarking on what we would do when we arrived at our destination. Continue reading →

  • Where Have I Been

    List of countries I’ve vistied. Continue reading →

  • Full Width Notes In Obsidian

    More custom styling of Obsidian today. This snippet turns off fixed-width display of notes, so that they can span the entire window. Useful if you’re dealing with a bunch of wide tables, as I am right now. body { --file-line-width: 100%; } div.cm-sizer { margin-left: 0 !important; margin-right: 0 !important; } I wish I could say credit goes to ChatGPT, but the answer it gave wasn’t completely correct (although it was close). Continue reading →

  • F5 To Run

    While going through my archive about a month ago, I found all my old Basic programs I wrote when I was going through school. I had a lot of fun working on them back in the day, and I though it would be nice to preserve them in some way. Maybe even make them runnable in the browser, much like what the Wayback Machine did with the more well-known DOS programs. Continue reading →

  • Twitter, Public Alerts, And Federated Protocols

    So apparently Twitter’s leadership team has discovered the value it has for public alerts: Of all the changes Elon Musk has made to Twitter, blocking emergency and public transit services from tweeting automated alerts might have been his least popular. User backlash roared, as National Weather Service accounts got suspended. Then, one of the country’s largest public transit services, Metropolitan Transportation Authority (MTA), had so much trouble tweeting, it decided to quit posting updates to Twitter. Continue reading →

  • Content Warning: About A Spider

    This spider was hanging around my garage door opening button for a few weeks now. I didn’t think much of it until today, when I noticed that it was actually a redback. Not the largest redback I’ve seen, but one located pretty close to a button I push quite frequently. Photo of said redback (it's small, but the photo is a close-up) If you look closely you can see a bit of the classic red stripe on the spider's abdomen. Continue reading →

  • About Those Checkmarks

    This posts going to be about Twitter. Yes, I know; another one out there. It’s also going to be a bit speculative in nature, so feel free to skip it if you like. I’ve been reading the coverage over the “retirement” of the legacy verification system, both in the news and on the socials. And what I find interesting about this whole affair is all the new Twitter Blue subscribers complaining about people that had the checkmark choosing not to sign up. Continue reading →

  • Day One and Project Jurassic

    So, Day One is in danger of being sherlocked by rumor’s of Apple’s upcoming journaling app: Mayne echoes the sentiment of several app developers who have been frustrated when Apple launched in-house competitors to the apps they have introduced to the ecosystem, often copying features those apps innovated and adding functionality that only Apple can offer, per the iPhone’s privacy and security policies and APIs. I’m a user of Day One and I have my doubts that Apple’s app would be a drop-in replacement for my journaling needs. Continue reading →

  • Nerd Counterflex

    You know that Washington Post article that has the list of websites Google used to train Bard? I been seeing people post screenshots of their sites in the training set on their blogs and Mastodon. This morning I read a post from Chris Coyier about it: My largest corpus of writing to date is on the web at css-tricks.com (along with many other writers), so naturally, I’m interested in seeing if it was used. Continue reading →

  • First Posts Of The Day

    It’s bit strange how the first post of the day can always feel like the hardest to get out. Every one after it is so much easier to write. I wonder if it’s because when faced with an empty text-box, there are these grand plans about what I’m going to write, as if everyone reading this is hanging on my every word: it’ll be my masterpiece of wit, inspiration, and insightfulness that will spread far and wide and blow the minds of everrryyywoonnneee1. Continue reading →

  • Reheating Chicken Schnitzel in a Microwave

    Some tips for heating up chicken schnitzel that you had for dinner in a 1.1 kW microwave for lunch the next day. This is something I occasionally do, and today I found a process that works that I’d like to document for the future. First, don’t use the high setting on the microwave. A minute at high will heat the schnitzel up, but would also harden the crumbling, making it rubbery and unpleasent to eat. Continue reading →

  • Photos Of Churchill Island

    Yesterday, my parents and I went to Churchill Island for afternoon tea and a walk around the homestead. Here are a few photos of that outing. Apologies that some of them are not great — they were taken in a bit of a hurry. Continue reading →

  • Hiding Your Attachment Folder In Obsidian's Outline

    A useful little CSS snippet for anyone using Obsidian that wants to hide their attachment folder from their outline. .nav-folder.mod-root>.nav-folder-children .nav-folder>.nav-folder-title[data-path^="Attachments"], .nav-folder.mod-root>.nav-folder-children .nav-folder>.nav-folder-title[data-path^="Attachments"] + .nav-folder-children { display: none; } To use: Go to the directory $VAULT/.obsidian/snippets where $VAULT is the directory of you vault. If the snippets directory doesn’t exist, create it. Copy the CSS snippet into a new CSS file. Open you vault settings and go to Appearance. Scroll to the bottom to where you see CSS snippets. Continue reading →

  • To Wordpress Or Not To Wordpress

    I’m facing a bit of a dilemma. I’ve been asked to setup a new website for someone who wants to stand up a new business. In therory this is something that I can do quite easily. I know HTML and CSS. I’ve made a living building backends for web-apps. I do have an undeveloped eye for design, but I like to think I have an idea of the principal of good website usability; and as long as I’m not too ambitious, and aim for a minimal usable site, I can probably put together a simple static website. Continue reading →

  • Quotes Around Names In Error Messages

    I saw this error a few minutes ago: failed to process input: RUNTIME ERROR: function has no parameter stack This threw me for a minute as I was trying to work out which parameter stack went missing, what I did to cause it to go missing, and what the heck a parameter stack actually is anyway. But it had nothing to do with any sort of stack. The error message was showing up because a function call was expecting a parameter with name “stack” which was missing from the function definition. Continue reading →

  • Web Search Works With Blogs Too

    Here’s one more reason to write (or syndicate) to your blog instead of post directly to social media: you can use web search engines to find what you need. I hear a lot of people complain about the crappy search in Twitter or the lack of search in Mastodon, but this won’t be a problem if you post to your site and let public search engines crawl it. They’re incentivised to make sure their search is good, so you’re more likely to get better results more quickly. Continue reading →

  • Less Consuming, More Creating

    Mike Crittenden posted a good quote from a random Hacker News commenter: Less consuming, more creating. Doesn’t matter what it is, doesn’t matter if it’s bad. This quote actually sums up this blog quite nicely. The first line explains why it came to exist. The second line describes how it continues to exist. Happy 1,000th post. Continue reading →

  • Ballarat Beer Festival 2023

    My friends and I returned to Ballarat today for the Beer Festival. It was another stunning day for it: sunny, mild, not too hot. Much like last year I took an earlier train to walk around Ballarat a little. Not much to report here: very little has changed. But I never see Ballarat so it’s good to walk around a little. My friends were on the train behind mine and I caught up with them when I boarded at Ballarat. Continue reading →

  • Ignoring Bard to Speak to Paulie

    So this happened today. Our team was testing the integration between two systems. The first system — let’s call it Bard — can be configured to make API calls directly to Stripe, or be configured to use the second system — let’s call it Paulie — to call Stripe on it’s behalf. Bard has a REST API that is used by the HTML front-end to handle user requests. Paulie is designed to be completely isolated from the front-end and has a simple gRPC API that Bard calls. Continue reading →