New
The latest blog posts to take off on Hacker News. 250 posts.
Systems Past: software innovations we actually use (2014)
Note: This is a position piece, not a technical article. Hat tip to Jake Skelcy for requesting such a piece. Computers didn’t always have operating …
Golang data races to break memory safety
Go is becoming more and more popular as a programming language and getting more scrutiny from a security point of view. You might remember m...
Getting Started with Tokio
If you're interested in writing servers in Rust, Tokio is a project that should definitely be on your radar. It promises to leverage the exciting new work on futures in Rust to make it easy to build extremely efficient networked servers with natural, composable code.
The State of Linux Security
This is the state of Linux security. With the most important updates around Linux and open source security. From conferences to self-protection.
V8: Behind the Scenes (December Edition)
Personal website of Benedikt Meurer, JavaScript Engine Hacker and Programming Language Enthusiast.
Reducing the maximum latency of a bound buffer in Erlang
Recently I came across two great articles on the Pusher blog: Low latency, large working set, and GHC’s garbage collector: pick two of three and Golang’s Real-time GC in Theory and Practice . The articles tell the story of how Pusher engineers reimplemented their message bus. The first take was done in Haskell. During…
Why is .NET reflection slow?
It’s common knowledge that reflection in .NET is slow, but why is that the case? This post aims to figure that out by looking at what reflection does under-the-hood.
I've been writing ring buffers wrong all these years
So there I was, implementing a one element ring buffer. Which, I'm sure you'll agree, is a perfectly reasonable data structure.
Haskell in the Datacentre
Bluesky: @simonmar.bsky.social Github: simonmar Email: marlowsd@gmail.com LinkedIn: Simon Marlow
Write a toy strace and gdb
Being able to peek into a process is a very helpful thing when we want to fully understand how a program behaves.
Say No to Paxos Overhead: Replacing Consensus with Network Ordering
Just say NO to Paxos overhead: replacing consensus with network ordering Li et al., OSDI 2016 Everyone knows that consensus systems such as Paxos, Viewstamped Replication, and Raft impose high over…
Write a Shell in C (2015)
A tutorial on how to write a Unix shell in C.
Introduction to strace
There will come a time when you will find yourself asking “What the heck is that process doing?”. To uncover the mysteries behind the behaviour of a process, we have a tool called strace .
15 Years of Concurrency
Joe Duffy's Blog | Adventures in the high-tech underbelly
Zero Cost Abstractions
Rust claims to enable abstraction without overhead. How does that claim hold up in practice?
Windows 10 in-place upgrades are a severe security risk
This is a big issue and it has been there for a long time. Just a month ago I finally got verification that the Microsoft Product Groups n...
Beating the Compiler
An oft-repeated fact on programming forums these days is that a decent optimizing compiler will always beat a puny human's attempt at hand-written assembler. There are rare cases, like MPEG decoders, where making good use of the SIMD instructions can allow assembly to massively beat the compiler. But generally you'll…
Learning to Read X86 Assembly Language
Writing assembly language is something best left for the experts. To write code that runs directly on your microprocessor you need to know how memory segmentation works, what the intended use of each register is, how codes executes in real and protected modes and much, much more. And, of course, modern compilers will…
My Distributed Systems Seminar's Reading List for Spring 2017
Below is the first draft list of papers I plan to discuss in my distributed systems seminar in the Spring semester. If you have some suggest...