Unfortunately, I’ve seen quite a few people use Azure Event Hubs, when what they really wanted was a queue.
Event Hubs are great for large-scale data ingestion, but if you just need to pass messages between your services — use something else. Here’s a few reasons why.
Event Hubs uses a partitioning model where messages sent to it are distributed among partitions.
Each partition has one reader that can read from concurrently, and the messages are always processed in order.
This means that if you have a message that’s taking a while to process, the rest of the messages on…
At my current job with SCADA MINDS I work with several different teams at the same time. That means I get to answer many questions. I’ve noticed that some teams are much, much better at asking questions and communicating than others.
Let’s take a look at two real interactions I’ve had that effectively illustrate the difference between good and bad communication in a remote setting. First, the example of bad communication. This was a question asked to me in private:
Next up — the better one. This was a question asked by an intern in a public development channel:
Twitter recently announced that they’re beginning to change many of the words they use, to “more inclusive” variants. They announced this on twitter. Which of course meant everyone wanted to fight about it.
How much of this is just white silicon valley folks changing words they think are offensive? Is this cancel culture just with words? Does this actually matter or is it just virtue signalling?
The words twitter are changing, and what they’re changing them to.
Honestly I’m not sure how much the inclusive language matters in regards to minorities. I haven’t heard many members of actual minority groups…
Microsoft Teams seems like it’s trying to be the one-stop tool for all your organisational needs. I think it works fine for chat and calls, but for knowledge management it is extremely unimpressive, often making things much harder than they need to be. Here’s four ways Teams is killing your knowledge management.
Teams has a “Files” tab where you can save files that are relevant for a channel.
The concept is good, but unfortunately it’s plagued by an unfortunate decision: If anyone posts a file inside a conversation it’s uploaded to the Files tab.
This makes it impossible to distinguish…
Recently I’ve been thinking a lot about what I call Death Spirals. The name might be a bit much but I like the dramatic flair.
A Death Spiral is a special kind of positive feedback loop. A positive feedback loop is something that’s self-reinforcing. Examples of positive feedback loops:
When I was first introduced to Observables in C#, they sounded pretty damn good. “They just model streams of data”, “It’s just data over time” and “It’s just the push equivalent of an IEnumerable”. After working with them for a little while, I don’t think they’re as good as I was told.
The statements above might be true. Observables might be simple from a birds-eye perspective. Unfortunately simple doesn’t always mean easy and there’s are some things that will end up biting you in the ass. Here’s five of them.
When searching for documentation and solutions to problems with Observables…
Not too long ago I was working on an unfamiliar project, with a technology stack I didn’t really know. I had a short deadline, and (what I thought was) a pretty short assignment. Turns out it wasn’t. Every time I thought I was done the requirements shifted slightly and every time I thought I had solved the last bug a new one appeared.
Because I was pressed for time, I did two things:
At my employer SCADA MINDS we’re currently working on implementing a data pipeline for one of the larger wind companies in the world. Wind turbines have a lot of sensors, that generate a lot of time-series data. For the amount of turbines we need to support, we need to be able to process upwards of 1GB/sec.
This is a blog post about how, using Azure Block blobs, we’ve made a performant API that can handle that amount of data, and still maintain a respectable latency when queried (<500ms for most cases)
When considering solutions we had a few criteria that…
New technology often comes along with a lot of promises. All the hard things? They’re easy now. All of your troubles? Shh, they’re all better now.
The reality is, of course different. New technology sometimes solve problems in wonderful ways, but just as often it doesn’t live up to the hype. It can be hard to determine whether something looks great because it solves a real problem or just because it’s new and shiny.
I work at SCADA MINDS, a consultancy company primarily doing green-energy software projects. We’re in the process of streamlining how we evaluate when to adopt new…
Recently while pair programming with a colleague, we got into discussing the best way to initialize new objects in C#. I’ve always just implemented constructors and left it at that, while he tended to favour static factory methods. This led to a lot of discussion and back-and-forth about the pros and cons of each type.
Just to clarify what I’m talking about, here’s an example of both
// Using the constructor
SqlConnection myConnection = new SqlConnection(connectionString);
// Using a static factory method
IDbConnection myConnection = SqlConnection.FromConnectionString(connectionString);
I’ve never considered implementing these static factory methods before and I naturally scorned what…