All blogs / Software / engineering practice
dylanbeattie.net
Dylan Beattie's personal web site, where he writes about code, technology and travel, and shares funny music videos about software development.
- Posts
- 345 from 5 Feb 2008 to 28 Oct 2026
- Posting
- monthly (20 in the last year)
- Kind
- personal blog
- Feed
- https://dylanbeattie.net/feed.xml
2026 12
- Music
- “Like Somebody’s Been Practising Prison Tattoos on a Dwarf Aubergine”
- Don’t Reinvent The Wheel: Use What Works
- Plus ça Change… Plus c’est la Même Chose
- How to Find the Stories
- Look, Sir! Comments!
- From the Twitter Archives: npm install skynet
- From The Twitter Vaults: The Music of Bomm Plaketty
- Learning Claude Code, Part 1
- State of the Browser 2026
- Ben Died
- Reflections on NDC London and PubConf
2025 29
- The Road to Excel
- So You Want To Speak At Software Conferences?
- Fifteen Electronic Devices... Is That A LOT?
- Is a 100% Discount The Same As “Free”?
- Choosing the Right Path
- On The Road Again...
- CSS Has 239 Different Ways To Make Something Blue
- Naming Things is Hard... Renaming Things is Harder
- The Subtle Art Of Deprecating API Endpoints
- We Miss You, Tommy Vance
- Could HTTP 402 be the Future of the Web?
- The Linebreakers Video Macro
- What The Fork Is Going On?
- On The Fungibility of Trains
- Sending Email with .NET: From Zero to Hero
- The Problem with “Vibe Coding”
- Lunch'n'Learn with the Amsterdam Java User Group
- 's-Hertogenbosch
- An Interactive CSS Flexbox Playground
- Metaphors
- "Open Source, Open Mind" - A Free Meetup with Info Support in Veenendaal
- Martin reckons it'll take me 20 minutes to write a blog post.
- Iconography is Hard: VS2022 Refresh Edition
- Visual Studio 2022 17.13.1 Broke My Syntax Highlighting
- Replaying Keystrokes with AutoHotkey macros
- “How To Be a Rockstar Developer” at DDD North
- Faking the HTTP Request URL in ASP.NET MVC
- Posting with SveltiaCMS from my phone
- SveltiaCMS, Jekyll and GitHub Pages
2024 7
- Windows Defender detects Trojan:Script/Wacatac.B!ml in a zipped .NET 9 AOT binary
- Running Corel Linux on QEMU
- Using the Contour ShuttleXpress with Camtasia
- Recording Meetups
- Custom Validation Attributes in ASP.NET Core 8
- Choosing a Chat App For Your Tech Event
- Fixing 'Version conflict detected for Microsoft.CodeAnalysis.Common'
2023 11
2022 9
- Modern Frontends Live
- The Road To Guitaraoke, Part 1: Vamp, Chordino, ImageSharp, and ffmpeg
- Fun with Docker and /etc/hosts
- Reinstalling Windows (again)
- Rebooting the London .NET User Group
- A VBA macro for storyboarding PowerPoint slide decks
- “The Art of Code” Workshops with fwdays to support Ukraine
- Database already exists when running EF Core migrations
- Securing Admin Pages with ASP.NET and Azure AD
2021 11
- Copying Your Hard Drive With Robocopy
- On The Road Again
- UK Road Signs (Redesigned by Google)
- How (Not) to Respond to a CFP
- Java Criminally Underhyped? Not Back in 1997.
- Introduction to Distributed Systems with .NET: A Live Online Workshop with fwdays
- The ONYX BOOX Note Air: Android 10.0 on an E-Ink Tablet
- Guru Meditation and Bad Error Messages
- Online Workshops in 2021
- Adding Events to a Google Calendar via a Link
- Petrucci: A Rockstar interpreter in TypeScript: Part 1 & 2
2020 49
- Dylan's Advent of Cool Nerd Things Day 25: Ninite
- Dylan's Advent of Cool Nerd Things Day 24: Mailtrap
- Dylan's Advent of Cool Nerd Things Day 23: Autoruns
- Holidays in the Holodeck
- Dylan's Advent of Cool Nerd Things Day 22: Beyond Compare
- Dylan's Advent of Cool Nerd Things Day 21: EarTrumpet
- Dylan's Advent of Cool Nerd Things Day 20: OBS
- Dylan's Advent of Cool Nerd Things Day 19: Canva and Unsplash
- Dylan's Advent of Cool Nerd Things Day 18: GitKraken
- Dylan's Advent of Cool Nerd Things Day 17: Carbon
- Dylan's Advent of Cool Nerd Things Day 16: 7-Zip
- Dylan's Advent of Cool Nerd Things Day 15: Paletton
- Solving Advent of Code in Amstrad LOGO
- Dylan's Advent of Cool Nerd Things Day 14: Typora
- Dylan's Advent of Cool Nerd Things Day 13: Chrome Dino Game
- Dylan's Advent of Cool Nerd Things Day 12: Open Hardware Monitor
- Dylan's Advent of Cool Nerd Things Day 11: Audacity
- Dylan's Advent of Cool Nerd Things Day 10: Fira Code
- Dylan's Advent of Cool Nerd Things Day 9: Microsoft PowerToys
- Dylan's Advent of Cool Nerd Things Day 8: Instant Eyedropper
- Dylan's Advent of Cool Nerd Things Day 7: ngrok
- Dylan's Advent of Cool Nerd Things Day 6: Franz
- Dylan's Advent of Cool Nerd Things Day 5: WClock
- Dylan's Advent of Cool Nerd Things Day 4: X-Box Game Bar
- Dylan's Advent of Cool Nerd Things Day 3: Reincubate Camo
- Dylan's Advent of Cool Nerd Things Day 2: WinDirStat
- Dylan's Advent of Cool Nerd Things Day 1: Sizer
- Spark - a tiny standalone HTTP server
- Using HTTPS with Kestrel in .NET Core
- Whatever Happened to "Don't Be Evil"?
- Where's the YouTube Video?
- How I Write Timed Talks
- Workshop: Introduction to Distributed Systems with .NET
- Using Canon DSLR Cameras as Webcams
- Stay In, Rock Out: I'm Playing Live Online!
- Locking Down & Levelling Up, Part 1: New Computer Time
- Running Jekyll on WSL2
- Piedroit: A Raspberry Pi-powered USB Footpedal (Part 2)
- Piedroit: A Raspberry Pi-powered USB Footpedal (Part 1)
- Microphone Tips for Remote Presentations
- Online Presentation Tips
- Going Virtual with NDC Copenhagen
- Going Virtual, Part 3
- Going Virtual, Part 2
- NDC Online Community Ambassador
- Going Virtual, Part 1
- Spleeter: Like Unbaking a Cake, but for Music
- Look! I Made a Company!
- Speaking and Playing at GOTO Oslo 2020
2019 8
2018 4
2017 24
- Thank you for flying Analysis Airways
- Goodbye Spotlight… Hello Skills Matter!
- London .NET User Group Open Mic Night
- Why You Weren’t Picked For NDC London
- London, London, Uber Alles
- Generating self-signed HTTPS certificates with subjectAltNames
- Deployment Through the Ages
- Securing Blogger with CloudFlare and HTTPS
- Summer 2017 .NET Community Update
- Use Flatscreens
- Interview with Channel 9 at NDC Oslo
- Interview with habrahabr.ru about HTTP APIs in .NET
- It Works On My Machine!
- Robert M. Pirsig on "Stuckness"
- There’s a problem with the phalange!
- The Pursuit of APIness: The Secret to Happy Code
- Goodbye ECMAScript; hello UKMAScript!
- It's a bug! It's a feature! It's… a limitation of the fundamental design of your test framework?
- Progressive.NET 2017 : Call for Themes
- Bring back alt.NET? But… why?
- Naming Things is Hard: Spotlight Edition
- Semantic Versioning with Powershell, TeamCity and GitHub
- Sharing a Dropbox folder using Bootcamp and exFAT
- My Life with the Microsoft Natural Keyboard
2016 30
- IdentityServer, OpenID Connect and Microsoft CRM Portals
- The Laws of Distributed Systems
- The Mystery of the Chinese Junk
- Upcoming Conferences and User Group Talks
- Affordances, Signifiers, and Cartographobia
- ASP.NET Authentication with Adxstudio
- ASP.NET Core 1.0 High Performance
- Why I'm Voting Remain: Social Media Redux
- Why I’m Voting to Remain in the European Union.
- Join us at the Progressive.NET Tutorials 2016!
- The Next Big(int) Thing
- We're Gonna Build a Framework!
- London.NET User Group – A Progressive.NET Special!
- Hintjens
- Coming Soon To A City Near You…
- The Axosoft GitKraken Songwriting Battle!
- Exupérianism: Improving Things by Removing Things
- How to *really* break the internet.
- The Mysterious Case of the Latin General: Collations in SQL Server
- Better Hypermedia Through Obfuscation
- “How Can Software Be So Hard?”
- Let’s Talk About Feedback
- “The Face of Things to Come” from PubConf
- Would you like to speak at London .NET User Group in 2016?
- Conway’s Law and the Mythical 17:00 Split
- The Rest of ReST at NDC London
- Confession Time. I Implemented the EU Cookie Banner
- Restival Part 6: Who Am I, Revisited
- Restival Part 5: Who Am I?
- In London next Saturday? Come to PubConf!
2015 15
- Restival Part 6: Who Am I, Revisited
- Restival Part 5: Who Am I?
- Membership and Dynamics CRM - How's It All Going, Then?
- Dynamics CRM Online: Any SMTP Server You Like! (as long as it's Gmail or Yahoo)
- As a Developer, I Want to Abolish User Stories, So That I Can Ship Great Products Faster.
- The Mysterious Case of the Missing Milliseconds
- REST Workshop at Progressive.NET 2015 next week
- Slides and code from NDC Oslo 2015
- Restival Part 4: Deployment and Fun with Case Sensitivity
- Restival Part 2 Revisited: Attribute Routing in WebAPI
- Restival Part 3: Hello, World!
- Restival Part 2: All Aboard The Routemaster
- One API, Four Frameworks: The Great .NET ReST Showdown
- Spotlight, Dynamics CRM, and the age-old question of “build vs buy”
- Spotlight, Dynamics CRM, and the age-old question of “build vs buy”
2014 3
2013 5
2012 8
- Adventures with Powershell and Amazon EC2 (part 1)
- The Joy of Forms Authentication, IIS7 and Device Profiles
- Rocksmith for Guitar Players
- Ripping Off Paying Customers the Ubisoft Way
- SECURITY_DENIED_BY_MIMEMAP Hosting WCF Services in IIS 7 Classic Mode
- Planning Poker… with LOLCATS
- Cross-Domain Forms Authentication with ASP.NET
- Snowcode 2012
2011 20
- GiveCamp UK 2011 – A Retrospective
- Moleskine + Kindle = ... Moleskindle?
- Software Development - HORSE-style
- SkillsMatter Progressive.NET Tutorials 2011
- Just Do It: Command-Query Segregation, Nike-Style
- How to install "Active Directory Users and Computers" on your Windows 7 Workstation
- Why Cloning Classic Games in Javascript Makes for a Great Hack Day
- Notes from the KaboomJS! LonDev Hack-Day
- Want to work for Spotlight?
- Slides and Notes from “So You Think You Know JavaScript”
- Churn-down Charts
- Development Methodologies
- I’ll be talking about JavaScript at Skills Matter on April 5th
- True Names, and Other Dangers: What Dr. Seuss Can Teach Us About SoA
- Making HttpContext.Current Available Within a WCF Service
- Check Out smtp4dev if You Build Mail-Enabled Software on Windows
- How to host Git in the same Apache server that comes with CollabNet Subversion
- Running IIS and Apache on the same Windows 2008 R2 Server
- “Choose Life” For DBAs
- Mapping a Drive Letter to a Subversion Repository with CollabNet, WebDrive and WebDAV
2010 18
- Christmas, Crisis and the Cloud
- Git Logos and Icons
- Sending Templated E-mail using the Spark View Engine
- Should “Cancel” cancel the cancellation, or just cancel the cancellation cancellation?
- “If It Ain’t Broke…” – Why Good Code Doesn’t Guarantee Happy Users
- Making iPhone Ringtones using Free Software
- /usr/bin/tawgo: Instant Geek Cred for Movies
- Stap Me Vitals! Scanning Domain Servers using System.Management
- Five Things I Wish My iPhone Did
- Fun with Powershell, SQL Backup and Automated Restores
- Want a Free Red Gate Tool to Support Your Open-Source .NET Project?
- .NET String Formatting Cheat Sheet
- Automating Secure FTP Backups to a Windows 2008 Server
- Heisenbug of the Day: IIS 7.0 Discarding POST Data From Firefox 3 when using Custom 404 Handlers
- Uncle Bob’s Bowling Kata in Functional C#
- Dynamic CSS with .less at the TechDays Open Source Evening
- A Manager’s Perspective - Why Attend Progressive.NET Tutorials?
- Fun and Games with NHibernate and String Keys
2009 46
- Fun with msdeploy, Extended Protection and Windows Authentication
- Axure RP: Lego For Software Designers
- A (Slightly Faster) URL Resolver Module for ASP.NET MVC
- A URL Resolver Module for ASP.NET MVC
- Code from my HTML5 / MVC2 Talk at SkillsMatter
- You Forgot to Say the Magic Word…
- Is doctype.com a License Too Far for Stack Overflow?
- Is There Such A Thing As Test-Driven Maintenance?
- There Can Be Only One. Or Two. Or Three, but Never Four.
- Hey… My World Wide Web Went Weird!
- RESTful Routing in ASP.NET MVC 2 Preview 2
- Coordinating Web Development with IIS7, DNS and the Web Deployment Tool
- A Neat Trick using Switch in JavaScript
- I love this photograph.
- A Better Example of Command-Query Separation
- AltNet Beers – Command/Query Separation with Udi Dahan
- Determining FluentNH Schema Mappings based on Entity Namespaces
- The Problem with Stack Overflow
- Alt.Net UK Conf – Unit Testing WinForms UIs
- Tool Time
- Managing Loosely-Ordered Collections : Lopsided Fun with NHibernate
- What If They Ran The Trains For Free?
- White Noise and Chaos
- NHibernate / Castle ByteCode provider – are you running the right number of bits?
- Just for Fun: The Webcam Teleprompter Shroud Experiment
- Speaking at SkillsMatter Open Source .NET Exchange III
- Room Service Oriented Architecture
- What If SQL Had Abstract Tables And Composite Types?
- Offsite Backup Recommendations for Really, Really Big Files?
- Unsubscribe (aka ‘the Internet Way of Saying “It’s Not You, It’s Me.”’)
- A Weird Little Quirk with Windows 7, Outlook 2007 and NormalEmail.dotm
- Hey, Apple. DVD + iPod - Make It Happen. Here’s How.
- Exifacto – a Nicer EXIF Library for .NET
- Just One More Reason to Love Red Gate Software
- Critical Mass
- Blog woes…
- A Post About Nothing, or, How I Learned To Stop Worrying And Love Nullable
- Specs, Bugs & Rock’n’Roll
- OCTV: Coming Soon to a Screen Near You?
- SQL Server 2005 Performance Dashboard
- Videos from SkillsMatter Open Source .NET Exchange
- Is a Crisp a Value Object?
- jQuery at WebTech Exchange 2009
- jQuery at SkillsMatter Open Source .NET Exchange
- The Story of the Lazy-Loading Lunchbox
- Two things I'd love to see in my next mobile phone
2008 32
- Mocking the QueryString collection in ASP.NET
- Open Source .NET Exchange
- Stuff You'll Wish You'd Known When You Switched To 64-bit Windows
- Fun with Server.GetLastError() in classic ASP on Windows Server 2008
- Lies, Damned Lies, and Statistics
- HQL-lo World
- Usability Tip of the Day: Label your Form Elements, Dammit.
- Working on ASP.NET MVC Beta and Preview code side-by-side
- A Rant about RAID, with a Bad Metaphor about Eggs, and No Happy Ending.
- The Roadcraft of Programming
- Huagati DBML Tools for Linq-to-SQL
- Help! I have Multiple Internet Personality Disorder!
- Adding a work-in-progress to Subversion
- Googling the Zeitgeist
- Updated VS2008 / Castle / NHibernate solution bundle
- Cycling, Eyedroppers and the Benefits of Laziness Applied with the Proper Tools
- ASP.NET MVC Preview 3 and Linq-to-SQL - One Month On
- A Ready-To-Hack Visual Studio 2008 Solution including NHibernate and Castle Active Record
- Making Your SVN mod_dav_svn Repository Firefox-Friendly
- Colour transformation in .NET and GDI+... aka "What Is The Matrix?"
- Crazy from the Heat...
- Gadgets and Gizmos Time...
- Strongly-Typed View References with ASP.NET MVC Preview 3
- Let's Usurp "Web 3.0" and Do Something Useful With It...
- The Future of Subversion?
- I Want Tony Stark's Build Server (with possible "Iron Man" Spoilers...)
- Subversion + WebDAV + Wiki = Cool. Fact.
- Getting Started with Confluence
- Firing Static Events from Instance Methods in C#
- The OUTPUT clause in SQL Server 2005
- Encoding videos for the Xbox 360 using ffmpeg
- Reflections on Alt.Net.UK