24 April 2023

44 links · Monday

Back to a senior engineer

I started my professional software engineer career around the year 2000. For the next 14 years I was in an individual contributor role. When I joined Allegro in 2014 I had a choice: be a senior software engineer or become a team leader. I wanted to try somethi…

The “const” Deception

The “const” keyword in JavaScript is used to create constants, variables that can't change. Curiously, though, we do seem to be able to edit objects and arrays that are created using “const”. In this tutorial, we're going to dig into the incredibly-important d…

Is this really an emergency?

One of the teams I worked with would do an “engineering pain-point” survey twice a year. During one of those surveys, the main complaint was that on-calls had a hard time getting help from other teams or even engineers from their own team. I shadowed an on-cal…

RPC over Websockets [or TCP]

IntroductionI write a lot of server side code. A common theme when writing server side code is that there is usually a client that connects over a network and sends messages/requests to communicate wi

Well-maintained Software

Two months ago, I was a guest on the Maintainable podcast. The first question the host Robby Russell asks is “What are a few characteristics of well-maintained software?”. This is such …

Local license key verification - Theory

If you’ve ever entered a license key for software activation you might’ve experienced the software verify the validity of the key without the need for internet connection. The most popular example would be a Windows installation, during that time your computer…

Live Coding Interviews

A quick exploration of the weaknesses of being over-reliant on live coding interviews.

Your Best Engineers Should Look After the Worst Systems

“Outdated tech stack and metaphorical gaffer tape holding together the code” - sound familiar? How about “We can’t recruit, because nobody wants to touch this legacy stuff”? Yet banks and governments would stop working if mainframes were switched off. Instead …

I like technology that is less complex.

My dad bought me a $20 dollar mp3 player off Amazon. I was actually pretty impressed by the quality for the price. You can watch videos on it and even read e...

Isolating Side Effects from Wolverine Handlers

For easier unit testing, it’s often valuable to separate responsibilities of “deciding” what to do from the actual “doing.” The side effect facility in Wolverine is an…

Being VP of Engineering is Harder than Being CEO

Being VP of Engineering is harder and lonelier than being CEO. In fact your VP is probably the loneliest person in your company - here's how to make it better.

Isle of Skye, Scotland

Isle of Skye, Scotland

Fight for every byte it takes: Storing raw numbers

I write databases for a living, which means that I’m thinking a lot about persistence. Here is a fun challenge that we went through recently. We have t...

C# 12: Preview of Three New Features Coming

Microsoft has published the release post which covers the three exciting new features that will be included in the upcoming release of C# 12, the latest version of its popular programming language. These features include primary constructors for non-record cla…

355: Previewing the Preview of C# 12

It is that time of year again! New C# features! That is right, .NET 8 Preview 3 just dropped and with it is the first preview features of C# 12 including Primary constructors for non-record classes and structs, using aliases for any type, and default values fo…

Internexit?

The UK’s storming off (again), blue-checkmate Elon, the dangerous rise of internet points, and more

The Importance of TLS with SQL Server

Invariably, when I ask people what Transport Layer Security (TLS) does, they say something like, “it protects my credit card info when I buy things online.”   The response is not incorrect, but it’s not the whole story, either, and let’s just ignore the server…

C# Design Patterns: The Strategy Pattern

Learn how to use the strategy pattern in C# to create flexible and reusable code. Replace if-statements and simplify your code with this design pattern.