A while ago, someone was talking to me about a design idea they had. They were thinking about adding some logic to their infrastructure with the hope of improving reliability. One part of the discussion reminded me that — in spite of best intentions — adding complexity to a system can make it less reliable.
Fortunately, there are some useful tricks that can guide you in the right direction when thinking about designing for higher availability.
In one of my classes at university, we spent what seemed to be a horrific amount of time learning about reliability and failure. In…
How much time do your teams spend patching vulnerabilities on servers, or puzzling why something failed in production, when it worked just fine in lower environments?
These are classes of problems which are solved without compromise by institutionalizing a pipeline approach called an Image Factory.
First of all… you know all that Chef or Puppet configuration you keep around, and how it nearly always works? Get ready to throw it away. Please.
Every line of configuration you write is a liability and will become technical debt. The less stuff you have, the easier it will be to maintain.
A sandbox is an isolated and safe place to play and learn.
It’s easy to imagine that there are strong parallels between developers who are learning new skills and children playing in a physical sandbox.
But that is an unwise simplification, unless you want to factor in various toys that have been materialized from the void and then abandoned, random buried piles of cat poop, and occasional visits from a rabid dog.
In this article, I’ll go over some of the tricks we used to make our cloud sandbox safe, reliable, and low maintenance.
As always, if you have another…
A delivery pipeline is the thing that takes freshly written software out of the hands of a developer, and turns it into running services, potentially accessible to the public. Most (probably all) Software-as-a-Service products use a delivery pipeline.
There’s a spectrum of technologies and approaches that are used by companies, but there are two extremes.
I was explaining this to a friend the other day with an analogy.
First consider a mechanical watch.
The movement in mechanical watches are often engineering masterpieces! Craftsmen have developed this machine that has so many intricately connected moving components. …
Previously, we looked at the code that tested the video controller, read-only program memory, and some of the RAM.
This is an important milestone, since now the machine has confidence that it can perform basic operations like run programs and display text.
Last time, I covered how the machine configured the video controller. Now I’ll talk about the steps that the machine goes through on boot to verify integrity of the program EPROM and RAM.
It’s essential to have high confidence in the EPROM (read-only program memory) since a flipped bit would cause unpredictable behavior during program execution.
The RAM (read-write memory) comes in two flavors: display memory, and memory that is used in program execution. …
Right. So hopefully by now you read the previous intro and know a bit about Z80 assembler. It’ll make these next few articles a lot more easy if you have! It’ll also help if you’ve read the schematizing article that explains some of the hardware.
To make things more manageable, I’ve broken down the assembly listings into pages, and then subdivided each page into functional blocks.
Each of these blocks build on the last. So — for example — I’ll go into detail on performing operations on the input-output bus once, but will then assume that you know what I’m…
A while ago, I wrote an article about some quick-wins you can look at to cut your cloud spend. Perhaps you took a look at all of that low hanging fruit, and are in better shape than you were. But there’s almost always more that can be done to save money.
Here are a few things to look at. If you know of others, then please leave a comment or send me a note!
There are some things that require strategic attention to resolve, like retrospectively adding auto scaling to a service that wasn’t designed for it. …
So the machine is (more or less) back together, we have an understanding of how all of the components connect, and its time to take a deeper dive into the software that the machine runs. Perhaps now is the time to learn what the beep-boop sounds mean?
In the next article, I’ll talk a little bit about what I learned by spelunking through the first kilobyte or so of program space — enough to get an understanding of the start-up and self-test code. I wanted to know at least enough that I could begin to write my own software to…
Discovering all of the traces on the PCB was exhausting, and I took a few months off to work on other projects, while the Triad looked at me in an abandoned and accusing sort of way. But after a break, it was great to finally get the machine reassembled and start to look deeper.
I should have thought about this idea sooner, but I spent ages counting pins early in the project… like I know that a signal ran to a certain pin, but which number was that? So eventually, I thought of creating a little card that sits on…