RSSAmplifier

Blog

Colin Douch

Recent content on Colin Douch

blog.colindou.chRSS feed ↗20 posts

Latest posts

My thoughts on AI

If there’s one thing that has come to define the modern era, it’s AI. From the early days of ChatGPT, to image generation, to the massive sweeping statements about how AI is going to “change the world”, and “replace (software engineers|writers|doctors)”, it seems like the train of LLM applications just keeps on chugging with no end in sight. One can’t help…

My time at Cloudflare: A Retrospective

It’s been just over a year since I left my 7 and a bit year stint at Cloudflare, and I’ve had a lot of time to mull over the experience. I have … a lot of thoughts, and I figured the best way to get them out is to write them down. Just upfront: These are my own lived experiences, but I’m not going to touch on the controversial stuff - Daily Stormer, Kiwi Farms, etc.…

Does Bing have a buffer overflow?

A few days ago, I was doing some Typescript work and went to search for a specific NPM package that I needed the docs for. I generally use DuckDuckGo these days, so I popped in my search and got back some results. These results were a bit odd: Having made a living off of writing C for a few years, I don’t like it when we get random looking byte strings in outputs. We’ve all seen the…

Is there a space for Serverless applications in the Open Source world?

I’m procrastinating writing my Monitorama talk , so here’s something that I’ve been thinking about for a while: Is there a space for Serverless applications in the Open Source world? We’ve built up a huge ecosystem of tooling to help us run serverless applications. We have platforms, we have observability, we even have databases, kv stores, queues, and everything else that…

Let's build an OS: WTF is /etc/gshadow

Every now and then on my OS journey I find weird things. Today is one of those days. When implementing my login system, I was looking at the standard login files - /etc/group, /etc/passwd, and /etc/shadow. Those are all well known and normal, right? Well imagine my surprise when a file I’ve never heard of popped up: /etc/gshadow. For the uninitiated, on Linux you have a set of groups that…

Let's build an OS: crypt(3) is a bit weird

Let’s go on an adventure. I’ve learnt a lot more Rust over the last year, and I want to get back into writing properly, so my plan is to write a Linux Operating System. While writing it, I’ll be taking notes in my repo - https://github.com/sinkingpoint/qos/tree/main/notes . And every now and then formalising them into more structured blog posts over here, once I’ve learnt…

Rabbithole: Shell Pipelines

In prepping for the next part of my OS journey (writing an init system!), I found a need to add pipelining to my shell . This entry is a quick jaunt into how that works. All the code we break down here can be found here . What actually is a pipe? Before we talk about a pipeline, it’s useful to know what a pipe is. Fundementally, a pipe is two File Descriptors (read: files, yes it’s a…

Let's build an OS: Mounting a disk

Let’s go on an adventure. I’ve learnt a lot more Rust over the last year, and I want to get back into writing properly, so my plan is to write a Linux Operating System. While writing it, I’ll be taking notes in my repo - https://github.com/sinkingpoint/qos/tree/main/notes . And every now and then formalising them into more structured blog posts over here, once I’ve learnt…

Let's build an OS: A basic shell

Let’s go on an adventure. I’ve learnt a lot more Rust over the last year, and I want to get back into writing properly, so my plan is to write a Linux Operating System. While writing it, I’ll be taking notes in my repo - https://github.com/sinkingpoint/qos/tree/main/notes . And every now and then formalising them into more structured blog posts over here, once I’ve learnt…

Rabbithole: A weird CPIO discrepancy

We learnt previously that an initramfs in Linux is a “CPIO archive”, so I set out to write something that can read and write them, in order to learn more about the format. What I found was an interesting discrepancy between how GNU cpio and the Linux Kernel parse CPIO files. It seems pretty innocuous, but I thought I’d document it for posterity. The CPIO header CPIO is an…

Let's build an OS: Booting Something

Let’s go on an adventure. I’ve learnt a lot more Rust over the last year, and I want to get back into writing properly, so my plan is to write a Linux Operating System. While writing it, I’ll be taking notes in my repo - https://github.com/sinkingpoint/qos/tree/main/notes . And every now and then formalising them into more structured blog posts over here, once I’ve learnt…

A look at RISON: Kibana's weird URL encoding

If you’ve used the ELK stack , you’ve probably had the joy of trying to share a Kibana URL with someone. If you were naive enough to just copy the link from your browser (rather than creating a shortlink), you’re faced with something that looks like this monstrosity:…

Runbooks and Dashboards: Scrapbooking for Engineers

It seems like every company these days has two things they turn to when first hitting an incident. a) Is there an Alert Reference / Runbook / Whatever (the actual term depends on who you talk to), and b) Is there a dashboard that can tell me exactly what’s wrong. In this post, I’m going to cover why these tools are not only unhelpful, but are actively harmful to your incident response.…

Cheating at Wordle

Like many these days, I’ve been having my Twitter feed filled up with endless tweets of “Wordle” . I was reluctant to learn what Wordle was until recently (mainly due to some hipster based stubbornness of not wanting to go with trends probably). My main hangup with these simple games is, rather appropriately, simple: I don’t find them fun. What I do find fun however, is…

Trawling Weird Google Autocompletes

A while back, I noticed that whenever I typed https:// into the search bar in Firefox on my phone, Google would helpfully try and autocomplete my search with a number of random domains. This immediatly nerd sniped me, so I thought it might be interesting to see what we can find amongst these recommendations. How Google Gets Recommendations Firstly, a quick dive into how we can automate fetching…

I Don't Think ElasticSearch Is A Good Logging System

I’ve been a heavy user of ElasticSearch for coming up 7 years now. During that time I’ve used it for a few main usecases: A Search Engine, An APM Solution (after NewRelic started being stupidly expensive), a backend for Jaeger , and as a log storage system. In all of those usecases I’ve really pushed ElasticSearch to its limits, with hundreds of terrabytes of data across dozens…

You Should Use Structured Logging

Logging (i.e. exporting text data from your application) is one of the very first things that any budding programmer learns to do. Who among us hasn’t started learning a programming language with a: 10 PRINT 'Hello World!' 20 END That’s a log! Not a good log, but a log nonetheless. And that is why the importance of logging in a systems observability is so often overlooked - everyone…

Are Grafana DSLs Actually Useful?

Grafana is one of, if not the most common tool for visualization of telemetry data from your applications. I myself use Grafana both at work, and for my own personal projects to plot all sorts of data, from my Plex server usage stats, to my houses power usage. Generally I use the WYSIWYG interface for building my dashboards, but in modern software development the push seems to be to Gitops…

I Think Prometheus Is Impossible for FAAS Applications

I recently had the experience of trying to orchestrate Prometheus metrics in a Function-As-A-Service (FAAS) application, which turned out to be a bit of a harrowing experience. Here’s what I learned. Prometheus in a FAAS World In a “standard” architecture, you have a long running service running on some machine somewhere. That service exposes an HTTP(S) endpoint that Prometheus…

The Tragedy of the Platform Commons

In many modern system architectures, there exists some common building blocks between systems. We generally call these the “Platform” (See Facebooks “Platform Engineer” role), which makes a nice analogy as these components are supposed to form a solid base for you to build a system on top of. But how should we manage these common pieces? Therein lies an interesting…