Krakow airport. Or, to give it its full official name, Krakow Balice John Paul II International Airport. Or, to give it its full name in Polish, which we probably should, because it is in Poland, Międzynarodowy Port Lotniczy im. Jana Pawła II Kraków-Balice. Or, to give it as much of its full name as you can read in the list of matches when you search for “airport” on Uber, “Międzynarodowy Port…
“Your scientists were so preoccupied with whether or not they could , they didn’t stop to think if they should .” When Jeff Goldblum’s rock star mathematician - sorry, chaotician - spoke those immortal lines in Jurassic Park , none of us had any idea how the craft of software development was going to unfold over the next few decades. It was 1994. The world wide web was a handful of academic…
It’s 2007 . I’m working on a big rewrite (yes, I know) of a big system; a database-driven web app built in C#. A significant part of the project is just the code to get data in and out of the database. Object-relational mappers are still very much in their infancy; somebody’s ported Java’s Hibernate project to .NET but it’s a little rough around the edges and involves quite a lot of XML. But no…
One of the folks who joined my presenter workshop last week (which was awesome, by the way!) emailed me this morning with a follow-up question: I first saw you speak at DDD South-West in Bristol (it was the “There’s No Such Thing as Plain Text” talk), and what stuck with me was your use of stories. They were interesting, quirky, and naturally interwoven with your talk. I try to bring elements of…
So I got an email earlier, which you’ll find out about in my next post, which made me think “hey, the reply to this would make a great blog post”, and then I thought “…and it would be even better if people could add their own comments to it”, and so I plugged in the rather excellent Giscus , so now you can leave comments on my blog posts. Go on, try it. It’s all running straight off GitHub…
I originally posted this as a Twitter thread in March 2018. It went viral, probably because Charles Stross quote-tweeted it with the comment “This thread. You read!” - yes, _that _Charles Stross. 😮 It was at https://twitter.com/i/web/status/976852582084808704, and I bookmarked it ‘cos CHARLES STROSS TOLD PEOPLE TO READ MY STORY, but he has since deleted his Twitter account and so it’s not there…
I used to post a lot of stuff on Twitter when it was good. It’s all still on there somewhere, and I have archives of it all, but I’m reposting this thread, which I originally wrote back in 2019 . Partly because I dug it out of some archives tonight and thought “hey, that’s not bad”, but also because, along with the rest of the internet, I recently discovered the astonishing microtonal…
I’ve been doing a series of live streams with Emmz Rendle over the last few weeks, getting up and running with Claude Code and using AI agents to write software. It’s been really interesting, but it’s also up to 15 hours of video and still running, and, well, quite a lot of it is us just chatting about stuff while Claude sits there grinding away on various little tasks… a bit like “Deal or No…
Walking into London’s Barbican Estate is like stepping into a parallel timeline, a concrete vision of what the 1960s thought the future would look like. When people first encounter the term “brutalist”, the association that usually springs to mind is “brutal” – harsh, cruel, merciless – but the term actually comes from “brut”, the same word you’ll see on bottles of champagne, where it means dry.…
Ben died. He wasn’t in a car crash. He didn’t have cancer. He wasn’t old. He didn’t get murdered, or fall off a cliff, or have an anvil dropped on him by a wily roadrunner, do any of the other things that people are supposed to do before they die. He just went to the pub, had a pint, went to bed at an uncharacteristically civilised hour because he had work in the morning, and died. I don’t know if…
NDC London was the first really big conference I ever went to - as a paying attendee, way back in 2014 (or was it 2013?), when I was trying to figure out ASP.NET MVC and jQuery and how to get all my team’s code out of Subversion and into this new Git thing everybody was talking about. I love it. I love welcoming everybody to my home city, I love the atmosphere, I love the location. It’s also where…
Chris Rea’s “The Road to Hell” is one of my favourite albums of all time. You probably remember the title track, but the rest of the album is fantastic - great tunes, great production, and some truly phenomenal guitar playing; Chris had a very distinctive hybrid slide playing style, something between Mark Knopfler and Ry Cooder, and it’s all over this record. Now, back in 2021, when the news…
I run a .NET user group here in London , and we host a lot of talks from people who are relatively inexperienced presenters. Sometimes they’ve done presentations internally but never spoken before a public audience. Sometimes they’re developers who have been in theatre or played in bands; people with plenty of stage experience but who haven’t presented on technical topics before - and sometimes…
Every airline’s cabin baggage regulations are subtly different. 10kg plus a personal item. 10kg INCLUDING a personal item. 8kg plus a personal item. 8kg, plus a personal item of up to 2kg. 8kg plus a laptop, umbrella, walking cane OR a personal item up to 2kg. 23kg as long as it’ll fit in the overhead locker (go British Airways!) For a long while LOT, Poland’s national airline, would let you…
For the last year or two, I’ve been giving a talk at conferences around Europe about free software. It’s called “open source, open mind: the cost of free software”, there’s a couple of recordings of it up on Youtube if you want to check it out, and, like a lot of my conference talks, it’s a mix of history, case studies, and my own experiences working in tech. One of the perennial challenges facing…
Srijan Singh pinged me on LinkedIn earlier today with a question: I’m in my early career as a backend dev at IBM, and something I often wonder about is choosing the right path: whether to stick with a big company and learn deeply, or test myself in a startup environment (remote vs in-person adds to the mix too). Since you’ve navigated such diverse experiences, I’d love to hear how you’d approach…
I’ve spent most of the summer so far writing a new course; if you follow me over on BlueSky - and you should - then you’ll have noticed I’ve been posting - skeeting? bleeting? I still don’t know what to call posting on BlueSky. Let’s go with bleeting. I’ve been bleeting about CSS a lot, because my new course is CSS for Software Engineers. The video course is going to be available on Dometrain…
I’m making a new video course for Dometrain at the moment, and it’s all about CSS - one of the three pillars of the open web, along with HTML and JavaScript. I love CSS, I’ve been working with it literally since it was invented, but I absolutely understand why so many developers don’t enjoy working with it. CSS has had to incorporate conventions and standards from a wider range of disciplines than…
You know those little things that you just sort of ignore, over over and over again, until finally one day the planets align and you’re like “No! I’m not putting up with this any more! There must be a way to fix it!” Welcome to my cameras. I have two Canon EOS M200 cameras, which I use for streaming, recording training videos, teaching online workshops, all kinds of stuff. One is black, one is…
I had an app fail in production the other day. Not seriously - only affected a couple of admin screens - but it failed because Hubspot had deprecated some of their API endpoints. (That’s nerd speak for “we were using a thing and they turned it off.”) https://developers.hubspot.com/changelog/breaking-change-removed-support-for-referencing-custom-object-types-by-base-name Sure, they announced in…
In 1990, BBC Radio 1 broadcast the “Monsters of Rock” festival live from Donington Park. Thunder, Quireboys, Poison, Aerosmith, Whitesnake - and before, between, and after the bands, the broadcast featured live commentary and interviews from Tommy Vance, Mick Wall roaming the backstage area talking to the stars who were in attendance, and Richard Skinner’s 4-part history of the Monsters of Rock.…
When Tim Berners-Lee first created HTTP, way back in the early 1990s, he included a whole bunch of HTTP status codes that seemed like they might turn out to be useful. The one everybody knows is 404 Not Found - because as human being, browsing around the web, you see that one a lot. Some of them are basically invisible to humans: every time you load a web page, there’s actually an HTTP 200 OK…
Anybody who’s seen the Linebreakers live knows that backing videos are a vital part of the show - partly ‘cos that’s where all the drums come from, ‘cos it’s way easier taking a Macbook on a plane than travelling with a drum kit, and partly ‘cos having all the lyrics up on screen makes it much easier for the audience to keep up with the jokes, and there are a lot of jokes. Those backing videos are…
I got two emails recently that have weighed heavily on my mind. One was from a restaurant booking service called The Fork. On Saturday afternoon, I had used their service to try to book a table for dinner at Garlic & Shots , a legendary rock’n’roll bar in Stockholm. I tried calling them first: no answer, but hey, they’re probably just not open yet, and there’s a link on their website to reserve a…
When’s a train not a train? I’m on my way from Antwerp to Budapest, via Amsterdam Schipol airport, on the delightfully fast and comfortable service that’s now called Eurostar but is still quite clearly a Thalys train with “Eurostar” painted on it. Except I’m on the wrong train. I have a ticket - and a seat reservation - for the 13:30 departure to Schipol, so when a Eurostar train headed for…
Last month I published my first video course on Dometrain, “ Sending Email with .NET: From Zero to Hero ”: I just got this review from somebody who completed the course: “⭐⭐⭐⭐⭐ Fantastic job! When I saw the course was over 9 hours, I wondered what you would talk about for that long. Now my head is swimming and it feels like 18 hours got packed into a 9 hour course. I didn’t realize how much I…
The whole “vibe coding” thing is another reminder that quite a lot of people working in tech don’t understand the difference between programs and products. To me, programs are “works on my machine” code. The kind of things many of us crank out a few times every week. Experiments, prototypes… that script you hacked up to rename all the MP4 files in a folder? You know the one. No error checking.…
I’m in the Netherlands. Last week was running some presentation training with a group at Info Support in Veenendaal, the weekend was catching up with friends in Amsterdam, and tomorrow I’m speaking at a student conference in Utrecht. One of the things about travelling for a living is that there’s no such thing as “out of office”, and the Todo List doesn’t stop just ‘cos you’re away for a week or…
There is a place in the Netherlands called ’s-Hertogenbosch . Yes, that’s not a typo. Its official legal place name begins with an apostrophe. The locals all call it Den Bosch (and never, ever mention that you won’t find Den Bosch on a map ‘cos why would anybody possibly need to know that?) And, seeing it on a railway departure board earlier this morning, it occurs to me that if there’s anywhere…
CSS flexbox is fantastic… but it’s also incredibly complicated. A flex container has half-a-dozen different CSS rules which control how content will flex and flow within the container, and figuring out the exact combination that you’ll need to implement a particular design can be a lengthy and error-prone process. So I built a thing to make it a little easier to see what’s going on. It’s an…
Back in 2020, when we all had a lot more time on our hands, I would occasionally hang out on /r/WritingPrompts . I stumbled across this old post today and figured I’d post it here. You know. For posterity. Writing Prompt: You’re on a space ship with a bunch of your crewmates. You’re the only human, and apparently metaphors are a strictly human behavior. You’ve learned to cope with this, but today…
On March 19th, I’ll be speaking at a free meetup in Veenendaal in the Netherlands, hosted by the wonderful folks over at Info Support , all about the history - and future - of “free software”. We’re coming up on half a century of folks giving their code away for free, but we’re still not entirely sure what “free software” is, how it works - or whether it’s possible to create a truly sustainable…
Martin is apparently dubious as to just how awesome Sveltia CMS is. (Martin also apparently isn’t entirely sure of the difference between Sveltia and Svelte, but I’m sure he’ll figure it out eventually). For the record, he made this comment at 18:29 UTC on 2025-02-27. 20 minutes? I make that 3 minutes, plus another 2 for GitHub Actions to build and publish the site.
I’ve spoken before about the four different styles of visual communication - pictographic, phonographic, ideographic and logographic: Pictographic writing is where the symbol is a picture of a thing . The smiley face emoji 😃 is a good example - regardless of what languages and alphabets you can read, you’ll see that picture and think “hey, a happy person!” Phonographic writing is where pictures…
Another day, another software update that breaks something you can’t quite believe anybody’s still messing around with… but hey, even here in 2025 I guess somebody at the Visual Studio team is looking at syntax highlighting and going “yeah, we could improve that”. Here’s a snippet of code from the workshop I’m writing, that I snapped a few days ago. This is Visual Studio 2022 Professional, version…
AutoHotkey is one of the strangest and most powerful things I’ve ever encountered in all the years I’ve been working with computers. It’s a macro programming language and interpreter for Windows that will let you automate just about anything - keystrokes, mouse clicks, MIDI, game controllers, window handles… if you for some bizarre reason wanted to control your Windows audio volume using a…
I’m off to Hull this weekend for DDD North where I’ll be presenting How To Be A Rockstar Developer - the story of how a programming language I invented in a bar as a joke got way out of hand, and ended up as a real thing, complete with a web assembly runtime, test suite, documentation… and lots of stupid jokes about Bon Jovi. I love DDD (which is short for Developer! Developer! Developer!,…
Because I always, always, forget how to do this: here’s how you fake, spoof, whatever you want to call it the HTTP request in ASP.NET Core. Useful if you’ve got controller actions that do things like generate absolute URL links to put into outgoing emails, and you want them to reflect the URL where the code was actually running (so code running on localhost sends mails with links to localhost ,…
And here’s the ultimate acid test for low-friction blogging… how quickly can I write and publish a post using my phone? Well, the layouts are a little janky: …but it works. Nice. Expect more off-the-cuff blogging.
I used to blog a lot. Back in the good old days of Windows Live Writer and Blogger, when I could click “New post”, bash out a few hundred words, paste an image or two, and… done. In 2020 I moved all my stuff from Blogger to Jekyll and GitHub Pages, because I wanted more control over the content on my site. It worked, and I love Jekyll dearly and it’s a fantastic tool, but it kinda killed my…
Earlier today, somebody alerted me that Rockstar binary releases for Windows were being blocked by Windows Defender… and sure enough, since I switched the build system from .NET 8 to .NET 9, the Windows ZIP file releases on the releases page are being incorrectly identified as being infected with Trojan:Script/Wacatac.B!ml malware. It’s not just Rockstar, though. It’s any .NET 9 binary compiled…
In my latest YouTube video, I talk about Corel Linux, which I think is one of the most interesting “what if?” scenarios in the history of mainstream computing, and show some clips of Corel Linux actually running. It’s not easy getting a 25-year-old Linux distro to boot on a modern PC - but here’s how I did it. Install QEMU VirtualBox, HyperV et al won’t work here - Corel Linux is just too old to…
The Contour ShuttleXpress is a controller designed for editing audio and video. I use it all the time in applications like Logic Pro X; the jog dial and shuttle wheel are brilliant for, well, jogging and shuttling around your project’s timeline. Camtasia is a screen recording and video editing app from the folks at TechSmith, which I use for doing the screen recordings I use in my presentations…
For the last few months, I’ve been recording the talks at the London .NET User Group on video so we can post them on YouTube after the event. The videos are online at https://www.youtube.com/@LondonDotNet , and I’ve had some questions about the setup I use to record them. Some from interested people looking to do something similar at their own events, some from people who show up early while I’m…
ASP.NET Core 8 rocks. It’s fast, powerful, cross-platform… and, yes, includes jQuery. Chill. jQuery’s fine. It’s solid, it’s proven, it works, and we’re not here to impress hipsters hiring frontend devs for their Web3 startup, we’re here to build stuff that works (and will probably still work next year.) Out of the box, ASP.NET Core includes jQuery, jquery.validate and…
WhatsApp, Telegram, Slack, Discord, Signal, Teams… seems like every event you go to these days has at least one “official” chat app, and probably at least half-a-dozen unofficial chat groups set up by attendees and speakers. If you’re running a conference or seminar, should you set one up? And if so, which one should you use? Let’s get the inevitable out of the way first: even a small community…
I’ve been upgrading projects from .NET 7 to .NET 8, and mostly it’s been remarkably smooth: edit the .csproj files, replace net7.0 with net8.0, then upgrade any 7.x NuGet packages to their 8.x counterparts, and so far, it’s just worked. Today I got a weird error message: error: NU1107: Version conflict detected for Microsoft.CodeAnalysis.Common. Install/reference Microsoft.CodeAnalysis.Common…
Hey folks. So… you know the thing where you agree to do something, because it’s literally months away, and you’ll totally have time to get it all prepared by then — and then somehow it’s not months away any more, it’s two weeks… and it’s not one thing, it’s about five things? Welcome to my week! I’m updating the course materials for the workshop I’m giving at the Copenhagen Developers Festival ,…
Hey folks. I’m still down in Camber, on the south coast of England, but the weather this week has cheered up significantly; blue skies, sunshine, a nice gentle breeze… which means it’s been a perfect week to sit at a laptop doing workshop prep, booking travel for the autumn conference season, designing new stickers and swag, and generally being a bit of a nerd. Dr. Timezone and the Airport Mayhem:…
Hello! This week’s THOTH is coming to you from Camber, a tiny village on the south coast of England, where I’m staying at my parents’ house for a couple of weeks while they’re away. This week so far has been torrential rain and 40 mph winds — aka “traditional English seaside holiday weather” — so the usual Camber activities of walking on the beach, swimming in the sea and cycling into Rye to enjoy…