I continue to encounter highly-opinionated discussions about how to divide some problem space into microservices. I’ve seen multiple assertions that there is A Right Way™ to do this. (*sigh*) We need to talk.

First, y’all, let’s get this thing right out into the open. You’ve got to have high technical, operational, and organizational capability to do microservices well. I go into a lot of detail in the last module of my Pluralsight course about what specific things you’ve got to have right before you even consider microservices. They’re hard. They cost a lot in complexity, and you’d better be sure…

I recently went through a miserable bout of tech support nonsense with my cable internet provider, Cox. Right around Friday, February 5, I started seeing my internet connectivity drop completely for spurts of up to 2 or 3 minutes. This affected my laptop, our phones, our tablets, our TV streaming devices, everything. Others in my neighborhood’s Facebook group complained about similar issues starting around the same time. This was Super Bowl weekend, so I chalked it up to a temporary problem, and thought little of it. It continued throughout the weekend, so I reached out to Cox the following Monday…

I recently had a friend reach out to me asking for my thoughts about some questions about doing business in the software industry:

  • How do I explain how software development really works to CEOs and CFOs?
  • How do you explain what’s wrong and course correct when C-levels are frustrated with their IT departments about schedule slips and cost overrun?
  • How do you explain why seemingly simple changes take days, and often creates breakage?

Rather than just send my responses to him, I thought I’d post my thoughts publicly so that maybe more than just him would benefit.

You’ve Got to Manage Scope

I wrote about…

I feel compelled to write about what I’ve seen as a result of this blog article, “The Disinvitation,” by Robert C. Martin, a.k.a. “Uncle Bob”. Bob was uninvited from a tech conference recently because other speakers insisted that they would not speak if they had to share a stage with him, presumably, because of his political views.

I once shared a stage with Uncle Bob, and I still consider it an honor to have done so. I consider it an honor despite the backlash he’s gotten for his political views. I disagree with many of those views, and, honestly, some…

I needed a typeahead for a project. Not just any typeahead, mind you, I need a typeahead for US state & county. I need to be able to positively select a US state and county within that state, and do so easily. Something a bit like this:

Quick UI flowthrough for a state/county picker

When I select a state & county, I don’t want the typeahead’s value to be some monstrous string that I then have to parse to get the state & county back out of it, I want an object that has those fields on it.

Here are some of the concerns that I have…

Many software development organizations believe that there’s a tradeoff between quality and speed; that is, in order to improve quality, they believe that you have to slow down. Conversely, speeding up, such organizations believe, necessitates compromising quality (all other things being equal). This is just not true.

In reading Gregor Hohpe’s fantastic book The Software Architect Elevator, he suggests that we should consider quality and speed as separate axes on a two-dimensional plane. The false perception that many organizations believe, if we visualize it in Hohpe’s way, is that there’s a linear tradeoff. More quality means less speed:

Misconception: speed and quality are a linear tradeoff. Go as fast as possible without drifting into the unacceptable quality zone.

The trouble…

Here’s a quick rundown on how to make an EF Core app migrate itself automatically when it starts up. This is handy for simplifying DevOps pipelines and making development flow work well.

TL; DR warning: You probably want the gist at the bottom of this article.

The most basic code looks like this:

This fits well into an ASP.Net Core app where you need to get a scoped DbContext (called MyDbContext here) and make sure that it gets disposed and doesn’t leak the scope. …

One of the communities I’m proud to be a part of is Techlahoma. A discussion among my techlahomies recently came up regarding using a pi-hole for home internet. If you don’t know what a pi-hole is, it’s a software suite that creates a “black hole” for most internet advertisement traffic. What does that mean? Well, it means that the pi-hole device will intercept most of the traffic pertaining to loading advertisements that you’d see in the margins of web pages, meaning that you may just see nothing, like this:

A pi-hole also blocks invisible ad tracking information, too. These are…

One of my clients is working on retiring some older systems and replacing them with more robust, cloud-native services. However, they still need to facilitate some interoperability between the old and the new. So, we have a handful of VMs inside GCP communicating with on-prem resources in a setup that works something like this:

The challenge I recently encountered was attempting to write some serverless resources that would also communicate across the VPN to the on-prem resources. These are simple jobs run periodically via Cloud Scheduler. The obvious choice seemed to be Cloud Run, which lets you run an arbitrary…

I just learned today that there’s an active and vocal advocacy for removing the in memory provider for Entity Framework Core. If that doesn’t mean anything to you, Entity Framework Core is the latest ORM from Microsoft for .Net languages (like C#), and the in memory provider allows you to execute code against an in-memory datastore that behaves mostly like a relational database (and we’ll come back to that mostly bit in a sec — hang tight). I feel like that’s throwing the baby out with the bathwater, and said as much in the issue tracker for this topic.


Floyd May

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store