RSSAmplifier

Blog

Ian Wold

Ian Wold's Blog

ian.wold.guruRSS feed ↗108 posts

Latest posts

Book Club 5, 6, & 7/2026: Reasonably LLM Use

My least favorite topic in software engineering is, at any given time, the subject of the current hype cycle. At least LLMs are more useful than blockchain! Truly though, the last three years have really reworked how almost all of us write software. That's both good and bad. For every instance of the LLMs saving me time or being genuinely helpful, I'm sent an incomprehensible 30-file PR that, in…

Brandon Sanderson's Laws of Software Architecture

Just hear me out on this one: software architecture is like magic in fantasy novels. Not perfectly, and maybe they only bear a passing resemblance, but so too do ERD diagrams and building blueprints. I will not explicitly propose that we retitle architects as wizards, but I also won't stop you from reading that into my post here. Magic systems are created by authors of fantasy novels to provide a…

The Ontology Doc

You know how you're not supposed to start an essay with a dictionary definition? Just as well that this one starts with a question. Anyway, Webster's defines ontology as: a particular theory about the nature of being or the kinds of things that have existence Software engineers deal in ontology every day, but we usually use the word "domain" to refer to this concept. "Domain" has become laden with…

Book Club 4/2026: Work/Life Balance

Greetings from Nottingham! I'm on vacation this month, you might have noticed that I haven't posted a blog in April. I'm still keeping up (somewhat) with side projects, and that includes this blog. However, I haven't been researching anything in the domain of software for a bit now, so since I promise to use this book club to track what is currently on my mind, here's some thinking on taking time…

Book Club 3/2026: Nerdy Type Theory Links

This book club is a bit of a throwaway on a subject that's more esoteric than my usual; in my defense, I've been spending most all my time on a major effort at work (hello, boss: I promise I'm actually working!) Following my last book club post , I've been reading more type theory things in my free time. I figure that type theory is an important thing for most software engineers to have a grasp…

Create Typed SignalR Clients with ... TypedSignalR.Client

SignalR is, I think, a good bidirectional networking library. I like its interface; it offers fully-typed server implementations without onerous reflection overhead - other libraries like MediatR are no-gos for me due to this. However, the typing experience in SignalR doesn't extend to its C# clients. Microsoft's own documentation recommends magic strings, disappointingly. Curiously, Microsoft…

Book Club 2/2026: Constraints

Constraints, in a very broad sense, have been on my mind this last month. I have spent, as I imagine we all have, a lot of my career wrangling systems suffering from constraint problems. I mean "constraint" in the technical sense; the data or rules of the system have not been appropriately constrained. Interestingly, the age of a system doesn't seem to correlate to systems having…

Looking Beyond GitHub

Like most folks in our industry, I've been using GitHub extensively for a long time, and I've become very familiar with it (and, as a consequence, Git). For the most part, I do like doing version control in Git. There's a number of efforts afoot to try to propose alternate VC systems that solve common issues with Git, but I don't really see these gaining a huge traction. Then again, there's a lot…

Provocative Holub Opinion Tier List

If you're new to my blog, one important thing to note is that my thinking regarding team and organizational practices tends to align with that of Allen Holub , at least so far as what I've gleaned from a number of talks and blog posts he's done. Holub has come upon a number of beliefs which, while not necessarily being among the most controversial opinions in our industry, are nonetheless…

Thing I Made: Question of the Week

I like asking dumb questions each week as a teambuilding thing; I made a site to show a random question each week: QuestionOfTheWeek.io !

Minneapolis, January 2026

If you've visited my blog before, you know that I live in Minneapolis. I state that on my about page, my now page, my GitHub profile, and in plenty of articles I've written on this blog. I've always loved this city, and I love living here. Unless you've been living under a rock for the last month, you've seen that my city is in an interesting way right now. Several colleagues have reached out to…

Book Club 1/2026: C#, Without Allocation

I'm not very good at coding for performance. I can do some rudimentary profiling, and if you give me a couple metrics to optimize for I can do a pretty good job getting those numbers down. When I sit down to write a piece of software though, performance is maybe my second or third concern, after ensuring the software works properly, it's well-formed (for readability and extensibility), it's…

How do you Enforce Architectural Decisions?

"My best-architected projects were the ones that never had an Architect." I was recently told this by a former project manager who retired feeling unimpressed by colleagues over-eager to adopt the title architect . I can't blame him, on this blog I've documented a number of observations I've made of flawed attitudes towards architecture. That is, attitudes about the nature of software architecture…

Okay but Seriously, Why Don't we Work in Single-Week Increments?

Even if you're not following the Scrum Guide , a "sprint" has become the default unit of time for software engineering teams to encapsulate a single chunk of deployable work. This seems natural: we increment the product, test it, release it, then repeat. If you're not using Scrum you're probably still using sprints, and even if you rename it something dumb like "cattle drive" it's still a sprint.…

I've Switched to Linux

I guess this is more of a short announcement post, but I would encourage other .NET engineers to consider doing the same. As .NET has progressed, its support on Linux has gotten better and better. The VS Code C# Dev Kit has all of the features from VS that I ever need to develop, and I don't find myself needing to develop a whole lot of super-Windows-specific desktop applications anymore. With the…

Book Club 10&11/2025: .NET 10, C# 14

Happy Turkey Day! Last year when I published my newsletter on Thanksgiving, I was thankful for my colleagues who make a habit of saying "no." . This year I'm thankful for my colleagues who keep .NET applications updated to the latest versions; it's not just a burden to have to maintain many codebases at different versions, but each new .NET is a significant improvement over the last. .NET…

.NET: From Framework to 10

It's been more than six years since the last major version of .NET Framework (4.8) was launched along with C# 7.3, and the .NET world has come a huge way in that time. Last week Microsoft released .NET 10 and C# 14, continuing a trend of releases that significantly rework how software is written on the .NET platform. While Microsoft, and most brand-new .NET development along with them, have been…

How to Write an App in One Day

I've been pretty short on time in the last few months; my recent rate of output on this blog might attest to that. Between learning the ropes at a new role at work and a large number of personal engagements, I haven't had a lot of time to get a lot of coding in. Nonetheless, I've gotten a number of projects up and going. I previously wrote about what makes a successful personal project , but I'm…

Book Club 8&9/2025: Async

These last two months, the interesting thing that I'm researching is asynchronous communication patterns. Last year I wrote a whole series on the Fallacies of Distributed Computing exploring some common dos and don'ts for systems that rely on network communication. Asynchronous communication (which, I'm just going to type "async" here on out) is a common solution to reach for as the number of…

Shenanigans as an Accelerator

If you're a fan of Wordle -ing with your work colleagues, you've probably run into a similar problem as I have. The NYTimes app has a feature to compete with friends on Wordle, but you'd (presumably) be signing into the NYTimes app with a personal account. Or, not everyone has the app, or a NYTimes account. Both of these are barriers to friendly office Wordling. My company uses Slack, which makes…

Book Club 6&7/2025: OOP

Happy summer! It's been a couple months since I checked in on my newsletter; I've been busy enjoying sweltering heat, lots of rain, and wildfire smoke. In truth, I've been focusing more on a new role at work than my blog, but I promise I have found plenty of gripes there that I will resume my regular posting cadence here shortly! These last two months though, I've been thinking about…

Successful Personal Projects

I have this one specific psychic power, when I speak to a software engineer I can tell them how many half-finished, abandoned, sometimes barely-started personal projects they have scattered between source control providers and dusty hard drives. I can even prove to you I have this psychic power! Just focus your mind on your favorite color, and I'll tell you now how many such projects you have.…

I Like Petite-Vue

I like simple things in software: simple engineering, simple architecture, simple tools. The primary, almost entire, focus of our jobs in software is to wrangle the demon spirit complexity , the best tool for which is a focus on necessity: what is necessary to build a thing, and what is necessary about that thing? If you need a personal site (hello!) then a statically generated page is much…

.NET 10's Single File Feature is Perfect ... Almost

.NET 10 is finally introducing a feature that is some 20 years (give or take a few) too late, allowing a single CS file to be ran as a standalone program, not requiring any solution, project, or Nuget files. This is something I've been needing for some time - yes, needing, not wanting - so I just installed the preview version for .NET 10 and I'm glad to see that it's very nearly working perfectly…

Book Club 4&5/2025: Incidents and Resiliency

In March I moved to a different role at my current firm, and the thing that's changed the most for me is incidents. In the past quarter I have had to respond to more incidents than I had in the two and a half years prior. Comes with the territory sometimes, I suppose, but that puts the topic into my mind! I'm very happy to have been subscribed to Lorin Hochstein's blog Surfing Complexity , which…

Deploy Your Own NocoDB on Railway

NocoDB is an interesting open source project I came across some weeks ago; it aims to be an OSS alternative to Airtable . Airtable is a "nocode" solution for line-of-business applications, focusing on business process automation. It's like an enterprisey IFTTT (although; IFTTT would probably want you to think of them as the enterprisey IFTTT). NocoDB is in its early stages but seems to want to…

The Best Business Brunch in Minneapolis (So Far)

I've been working as a software engineer in the Twin Cities for quite some time, and I value keeping up with my colleagues here. The best way to meet up with folks is a well-timed Business Brunch™, and Minneapolis offers many great options for a successful business brunch. What I look for in a place is fast service, food that's good and familiar, an atmosphere that allows conversation, and…

CFWeaver Version 1.0.0 Published

I've just published verion 1.0.0 of [CFWeaver, my test generation project]! This tool has helped me on a few complicated projects at work, sorting out how systems behave. In fact, while I developed it to help generate integration test scenarios, I've used it more to help me map the functionality of some legacy bits of code. You can read my previous writing about CFWeaver or more generally about…

Book Club 2&3/2025: Slack: Communication, Organization, Teams

So a bit ago I got shuffled around onto a new position, I am now the leader of the team responsible for PLPs, PDPs, and such item-related things at crateandbarrel.com . New team = new ideas, and being a remote worker throughout my whole career ideas about communication are particularly at the fore. My firm uses Slack to communicate, and I think Teams and other tools present a similar experience.…

Building a Documentation Habit

Two weeks ago I started working with a new team at my company, and the first (real) meeting I attended with the team was a manager's attempt to start increasing the documentation the team kept. This being the manager's goal (and, being clear, I'm talking about a good manager with a good goal), this is my goal to some extent. How do we take a longstanding team and build a habit of writing…

How I am Super Techy in my Gherkin

A few weeks ago I wrote about how it's okay to be a bit techy in your Gherkin , by which I mean that it's okay to include technical sorts of language in your Gherkin. Gherkin is designed to abstract away the specific technical details of automated tests to make it easy for engineers to collaborate with non-engineer stakeholders over automated tests for a codebase. The general guideline goes that…

Principles for Successful Teams

There's a heck of a lot of blabbering that's been written on the topic of what makes a team, department, or firm successful. It's (almost) entirely crap, in my experience. The bulk of it seems to be an exercise in justifying the unjustifiable jobs that middle managers and consultants take up; this is a relatively wealthy bunch so I suppose it makes some sense to sell snake oil to them. No doubt…

The Modular Monolith Won't Save You

It seems like it was just the other day that microservices were the cool thing to be doing, but as fads come and go the microservice fad has waned. What are the evangelists to evangelize now? Some have dipped their toes into the "modular monolith," which at times has both pleased and confused me. I've been pleased that conversation has shifted to the benefits of monolithic codebases, although it…

Thing I Made: CFWeaver

Last week, I wrote about some thoughts I had related to test generation and control flow in business logic. This followed an effort at work that naturally turned out to be a good candidate for a model-based testing strategy. From this, I developed the tool CFWeaver to generate test scenarios from control flow models, which I've worked on over the last couple of weeks to get into a state that might…

Book Club 1/25: Results, Railways, and Decisions

I've written before on my enthusiasm for the result pattern, but I'm going to expand on that a bit here and how it relates to testing. I've spent a fair chunk of my past work-month standing up a new distributed service at work, and it's such a simple project as to almost have completely written itself, except for one opportunity I took: I wanted to see how many ways I could approach black-box…

Oops, I noindexed the Blog!

Many months ago, I set up Umami to track views on my blog. It doesn't track users, just counts page hits and referring sources and the like. The results were encouraging: I do get a fair amount of traffic. Hello! I realized too that about 50% of it is from mobile devices. There goes my theory that I don't need to make it look good on mobile... Last month I noticed a trend: I was getting many fewer…

The Art of Hype-Driven Development

From microservices to blockchain, from the dotcom bubble to AI, our industry has a surprisingly high hype cycle density. Many of us find this distasteful. However, as the old saying goes: if you can't beat them, join them; in this spirit I've developed the following principles to guide any aspiring grifters through the hypeverse. If you grind hard enough at conferences and social media -…

Testing Logging in ASP.NET Core

While I'm not much a fan of unit tests, I'm a big fan of integration tests, particularly for distributed services. I'm in agreement with Grug that this is the right level for long-lived automated tests , and I try to structure my projects in such a way that everything which I need to test can be and is tested this way. Now, this strategy doesn't apply to every project type, but any project that…

It's Okay to be a Bit Techy in Your Gherkin

No, the title is not an innuendo, I mean tests written in Gherkin , the language developed to facilitate better BDD practices. Gherkin provides an abstraction between the definition of a test and the code which executes the test, allowing non-coding stakeholders to collaborate with engineers over automated tests for a project. While it's not the only way to shift testing left in the development…

Book Club 12/2024: Team Metrics and KPIs

Happy holiday season and new year to you all! In the week between the holidays here I'm thinking about metrics and KPIs and the whatnot that we use in our team processes. Are they useful? My typical answer for any such question on this blog: yes of course, if they're being used well for a particular situation and so on and so forth. Measuring things can be good or bad. Is there a feeling that…

Pull Requests are Just Fine, Thanks

There's a degree of popularity around claiming that pull requests are bad and we shouldn't do them. I'm not sure that this is the majority opinion, but it's one that over the years has been popularized by some notable voices like Dave Farley , eched by a host of easy-to-find blog posts about the their disadvantages or their dysfunctionality or even how they are hated . A review of these articles…

Intuiting Jevon's Paradox

I wrote in a recent post about Jevon's Paradox, and I received some feedback on that; more than I usually do. As always, I'm grateful when you all contact me though continue to encourage use of the excellent comment feature or, if you want to be one of the cool kids, webmentions , both of which I recently included on this blog! Anywho, I want to expand on this topic. Jevon's Paradox is one of…

Book Club 11/2024: No

Happy Turkey Day gobble gobble! Those of us in the US are celebrating Thanksgiving Day, and today I'm thankful for all my colleagues who make a habit of saying "no". Does the period go inside the " in this case? I've always been unclear. Anyway, I'm not a big fan of "yes" - "yes, we can add all those features", "sure you can add those extra layers to the architecture", "Decompose our microservices…

Three Laws

There is plenty of conventional "folk"-ish wisdom to be had, and a lot of it is widely known if sometimes unintuitive. This knowledge coalesces in the form of popular "laws," particularly in areas like management and economics. Plenty has been written about the application of these laws to the software industry, to varying degrees of acceptability. The implications they have for us can be…

Hot off the Press: .NET 9, C# 13

The new .NET and C# are out as of yesterday, and I'm underwhelmed. Well, maybe since we've known for some time what was in this release I should just be whelmed. AI being the current hype, Microsoft is placing front and center what it can find related to AI. On the positive side, this means some updates to Tensor<> and vectors, though these don't impact me on the day-to-day. Most of what they've…

Publish Your Blogroll Now

Do you read blogs? Of course you do! How do you keep those blogs saved? How do you keep up with their latest posts? How do you share these blogs with everyone else? I recently became motivated (by the realization that I keep forgetting about my RSS reader ) to answer these questions by creating a blogroll. But not just any blogroll, no! A super cool blogroll - a standalone, statically generated…

I Have a Blogroll Now!

A bit ago I collected a list of links to blogs that I enjoy tuning into. I think this is a good list of blogs; these are the ones I enjoy coming back to with some regularity - even the ones which haven't posted in a while have great articles that are worth revisiting. There's a couple problems here though. First, I'm generally averse to blog posts with lots of updates; I think a post is a…

Book Club 10/2024: Fallacies of Distributed Computing

Happy Halloween! Boo! I'm celebrating now for two reasons. First, the weather is very nice where I'm at; I prefer wearing more layers and Fall is the perfect month for that. Second, I just finished my series on the fallacies of distributed computing - perhaps the world didn't really need it but I was here to provide it. Much earlier this year I figured that writing this would be a good way to…

Many Dimensions of Heterogeneity

The eighth and final fallacy of distributed computing is "the network is homogenous," originally referring to network hardware. The caution at the time was to not overlook the challenges in dealing with different physical routers, switches, servers, and the like when dispatching requests across a network. Over time software protocols have been able to alleviate most hardware concerns for…

Guerrila DevEx Testing

I first became aware of hallway usability testing (also referred to as "guerrila" testing) at the beginning of my career when I was encouraged to read The Joel Test , a now-famous article on what makes a good team. It's a brilliant article, and at more than two decades on I think it's still foundational as to how I think about the health of a team or a project. It contains the following…