A blog about software engineering and architecture.
2024
-
Pull Requests are Just Fine, Thanks
If you search around, there's a lot of anti-PR sentiment to be found on software engineering blogs, but if you follow onto forums it doesn't seem to be a popular sentiment. Most of these criticisms are misdirected; in fact, pull requests are just fine.
-
Intuiting Jevon's Paradox
On the unintuitive pattern of resource consumption and how it relates to software engineering.
-
Book Club 11/2024: No
On forming quality opinions and saying 'no'
-
Three Laws
Some 'folk laws' that are commonly known but seldom applied.
-
Hot off the Press: .NET 9, C# 13
The AI will continue until morale improves!
-
Publish Your Blogroll Now
I've done it and so can you; in fact, I've made it easier for you - way easier!
-
I Have a Blogroll Now!
An actual blogroll, not just a blog post with a bulletted list of links!
-
Book Club 10/2024: Fallacies of Distributed Computing
Putting a pin in the series I wrote this year on the topic of these Fallacies
-
Many Dimensions of Heterogeneity
The final fallacy of distributed computing - 'The Network is Always homogenous' - has more dimensions than typically considered. These tie all the other fallacies together.
-
Guerrila DevEx Testing
Developer experience is subjective. Employ the 'hallway test' method to ascertain your code's quality.
-
Postgres: Use Views to Refactor to Soft Delete
Refactors are tough, database refactors are scary. Being a bit clever can save us a lot of pain!
-
I've Stopped Using Visual Studio
... mostly. And so can you!
-
Book Club 9/2024: Blogroll
I've been dying to ask you; I really want to know: where do you get your ideas from?
-
Learn the Old Languages
New languages are hip, old languages are erudite. Don't neglect these languages as you round out your skills.
-
Why I Have This Blog
Reflecting on the last year of blogging.
-
Book Club 8/2024: Labor
Using Labor Day as an excuse to wonder about some recent trends in the industry
-
There's Always Money in the Banana Stand
Except the 'banana stand' is the transport layer and instead of saving the money for later you're just always setting it on fire.
-
There Are Infinite Administrators
Yes, infinite, and they're inventing more each day! The larger the system, the greater the problem that nobody really knows how it all works.
-
Book Club 6&7/2024: Postgres
I have become further radicalized to the opinion that we should all just be using PostgreSQL
-
Don't Retro the Same Twice
Different retrospective formats are mostly the same thing in different flavors - don't argue about them; try all the flavors (at least once)
-
The Case for Single-Reviewer PRs
Or, strengthening your team and its code with communication, professionalism, and trust.
-
Deploying Your Prolog API with Docker
It can be tough living on the bleeding edge of modern technology. If you've jumped on the hype train and developed your latest API with Prolog only to find there aren't any tutorials to Dockerize it - look no further!
-
The Topologies They Are a-Changin'
Okay, dumb title, but could you really have done better? Shifting topologies have always presented problems for distributed computing, and modern infrastructure systems sometimes leave us worse off than ever before.
-
Using Interfaces
I'm on a quest to make it happen less
-
Scrum is not Agile
Taking a step back to try to be a bit more rigorous about these process terms we use.
-
There's More to Network Security than the Network
Assuming a secure network in a distributed system loses sight of all the ways vulnerabilities can creep into our systems. Just as distributed computing makes our systems 10x more complex, the same effect is felt on security.
-
Book Club 5/2024: SOLID
Is SOLID still relevant?
-
Roll Your Own C# Results
C# doesn't have discriminated unions yet, but that shouldn't stop us from adopting the result pattern to strengthen and simplify our code. It's not complicated at all to create result objects that give us all the expressiveness and safety we want!
-
Bandwidth is Infinite ... ly Troublesome
The bandwidth of the world-wide web has increased dramatically, but so has its demand. There's an abolute limit to how much data we can all transmit, and working around that requires dilligence.
-
Book Club 4/2024: I Don't Like ORMs
Object-relational mappers are more trouble than they're worth.
-
Roll Your Own End-to-End Encryption in Blazor WASM
Using the SubtleCrypto API to get simple end-to-end encryption for a collaborative Blazor WASM app.
-
Thing I Made: FreePlanningPoker.io
I made a free planning poker tool and named it aptly.
-
I've IndieWebbed My Site
A small, loose collection of formats and protocols, IndieWeb is an interesting supplement (maybe alternative) to social media
-
Latency is Zero and the Speed of Light is Getting Faster
Latency is a constant and unavoidable fact of nature, but we can plan for it, work around it, and respond to it.
-
Farewell, Twin Cities Code Camp
Looking back on my favorite local conference.
-
Book Club 3/2024: Simplicity
Everything is too complicated.
-
On Task Priority
Some thoughts on assigning priority to our tasks.
-
Book Club 2/2024: Recovering from TDD and Unit Tests
TDD and unit tests are overused and often misprescribed. What do we really hope to gain from our tests, and what testing practices support our goals?
-
The Network is Unreliable and Reliability is Scary
Indeed the network is unreliable, and this is especially concerning for modern, distributed system. The catch though is that it never can be 100% reliable, and we can't create systems that perfectly compensate for this.
-
It's Better to be Consistently Incorrect than Inconsistently Correct
On consistency in code and what it means for something to be 'incorrect'
-
Develop Effective Coding Standards
Bad coding standards are worse than no standards, and even good standards are sometimes unnecessary. What's the utility in coding standards, and what makes a good one?
-
Windows Users: Consider a Tiling Window Manager
Tiling window managers are what all the cool kids have been doing for 40 years, yet they're almost entirely overlooked on Windows.
-
Four Deeply-Ingrained C# Cliches
There's a lot to love about C# and .NET, and there are some things that I don't love as much. Then there are four bad habbits that are so deeply ingrained they've become cliches within our codebases.
-
Book Club 1/2024: What is a Software Architect?
A few meandering and maybe unhelpful thoughts on the title "Software Architect"
-
Eight Maxims
A few principles for thoughtful software engineering.
-
Just Use PostgreSQL
With a vast and growing ecosystem of database systems, data models, patterns, and paradigms, choosing the right one can be a long and complicated process. I prefer a simpler approach: Just use PostgreSQL.
2023
-
Book Club 12/2023: Workflow, Process, and Agile
Some thoughts on how to organize software development and teams, and how non-technical factors help (or hinder) us developing better software.
-
Reclaim Your Agile: The One Clever Trick Agile Coaches Don't Want You to Know
What if I told you there's one trick to being able to reshape your team's development process without your company knowing it? What if I told you that you can achieve actual Agile even though you work in a Scrum firm?
-
My (Continuing) Descent Into Madness
It started simply enough, when I asked myself if I should try an IDE other than Visual Studio. Mere months later, I'm now using a tiling window manager. This is the story of my (continuing) descent into madness.
-
90% of my Homepage was Useless
In a few days, I reduced the size of my homepage to 10% of what it had been, and sped it up by 50-66%.
-
Clean Meetings: A Software Engineer's Guide
If being in meetings all day isn't bad enough, spending more time thinking about them seems horrible. Here's a simple guide on making sure you're getting the most out of your meetings.
-
Write Your Own RDBMS Versioned Migration Boilerplate
Versioned migrations are an essential tool for systems using an RDBMS, and it's no work at all to start your applications the right way with this pattern.
-
Book Club 11/2023: New .NET, New C#
The release of .NET 8 brings a lot of features I'm excited for!
-
"Should I Learn (Insert Some Tech Here)?"
One of the most common questions - would it be good to learn this or that language, framework, database, etc? Taking even a little time to learn something new is good all around, but is it really worth making an investment in yourself to grow personally and professionally? Let's take a deep dive into this topic.
-
Adding a Database to our Railway App
Last time I looked at Railway, I got it up and running with a Blazor WASM app. Now, I'll look at adding a PostgreSQL database to it.
-
Quick & Dirty Sequential IDs in MongoDB
Mongo doesn't natively support generating sequential IDs. Here's a quick & dirty solution to get you up and going if you need sequential IDs.
-
Book Club 10/2023: Functional Patterns in C#
This month I've focused on functional domain modeling and related patterns. We're just a few weeks away from the release of the next version of C#, and like each previous version it'll introduce even more functional features.
-
Daily Grug
Need inspiration start day, made API.
-
A Scrum Odyssey
A journey away from daily scrum meetings, as a cycle of eight Shakespearean sonnets.
-
Book Club 9/2023: Papers I Love
Reflecting on the final Strange Loop conference, having attended several 'Papers We Love' talks, I'm motivated to share five papers I love.
-
Giscus Is Awesome
I can add comments to my statically generated blog? Using GitHub Discussions?? For Free??? And it works????
-
Deploying ASP.NET 7 Projects with Railway
Railway is a startup cloud infrastructure provider that has gained traction for being easy to use and cheap for hobbyists. Let's get a .NET 7 Blazor WASM app up and running with it!
Looking for an earlier article? All of my past articles are archived here.