Game servers: UDP vs TCP
When writing networked games, the question of UDP vs TCP will eventually come up. Typically you will hear people say things like: “Unless you’re doing action games, you can use TCP̶…
Making an embedded Linux computer
Designing and soldering a small ARM Linux board with 217 ball BGA package and 0402 passive components
Systemd redux: The end of Linux
I figured it was about time for a followup on my systemd post. I’ve been meaning to do it for a while but time hasn’t allowed.
Why systemd?
This blog post is based on a talk I gave on 2014-05-21. For a few years now, GNU/Linux distributions have been migrating away from SysV ini...
Myths about /dev/urandom
Randomness, entropy, and the Linux kernel.
Call me maybe: RabbitMQ
RabbitMQ is a distributed message queue, and is probably the most popular open-source implementation of the AMQP messaging protocol. It supports a wealth of durability, routing, and fanout strategies, and combines excellent documentation with well-designed protocol extensions. I’d like to set all these wonderful…
Bitcoins the hard way: Using the raw Bitcoin protocol
All the recent media attention on Bitcoin inspired me to learn how Bitcoin really works, right down to the bytes flowing through the netwo...
Pipes and Filters
Pipelines are an extremely useful (and surprisingly underused) architectural pattern in modern software engineering. The concept of using pipes and filters) to control the flow of data through...
Introduction to Coreboot, an open source BIOS
Deze pagina bestaat niet of is niet meer beschikbaar. Oude XS4ALL-homepages zijn soms nog terug te vinden via webarchieven.
How Unreliable is UDP?
Unlike TCP, UDP doesn't provide any delivery or ordering guarantees. Put into practice, just how bad, or good, is UDP?
Queues Don't Fix Overload
People misuse queues all the time. The most egregious case being to fix issues with slow apps, and consequently, with overload. But to say why, I'll need to take bits of talks and texts I have around the place, and content that I have written in more details about in Erlang in Anger .
Make your program slower with threads
Years ago, while taking a numerical methods course, I wrote some code to calculate the expected number of shared birthdays in a group. The code is very simple: each attempt constructs a vector of N birthdays, then counts the duplicates. The outer loop runs millions of attempts, and calculates the mean number of shared…
A quick tutorial on implementing C memory management functions
This is basically an expanded explanation of what I did after reading this tutorial by Marwan Burelle and then sitting down and trying to write my own implementation, so the steps are going to be fairly similar. The main implementation differences are that my version is simpler and more vulnerable to memory…
Gridlock vs. Bottlenecks: A visual explanation
"Emails show [Chris Cristie]'s aides did plan bridge gridlock," says Salon . To a transportation engineer, the aides are innocent: bridges can't have gridlock. While we often say "gridlock" to mean "bad traffic," it has a technical meaning.
Emacs standing alone on a Linux Kernel
Nano How-To explaining how to setup a root file system with only emacs.
A performance comparison between Java and C on the Nexus 5
Android phones have been growing ever more powerful with time, with the Nexus 5 sporting a quad-core 2.3 GHz Krait 400; this is a very powerful CPU for a mobile …
Running OS X Mavericks under QEMU with KVM
This domain name is available, own it today. Affordable payment options. Fast and professional service.
HFS+ Bit Rot
HFS+ is a terribly old filesystem with serious flaws. I sincerely hope that Apple comes with an update of the filesystem for WWDC 2015. After all they have been working on Swift for the past 4 years and we have just learned about it last week. HFS+ is seriously old HFS+ was released in 1998, in the era of Mac OS…