New
The latest blog posts to take off on Hacker News. 4,389 posts.
Benchmarks of Cache-Friendly Data Structures in C++
Suppose you’re a savvy C++ developer who knows all about data-oriented design and the importance of optimizing for cache locality if you want a prayer of running fast on modern hardware. Now suppose you want to go beyond basics—”just use std::vector ” is a good starting point, but you want more!
How I ended up writing a new real-time kernel (2015)
You're reading the original article in English. You can as well read the translation in Russian .
Building a “Simple” Distributed System – Formal Verification
In the last post , we described a protocol that should satisfy the requirements and invariants established in the first post . Today we will look at formal verification with TLA+. Formal verification is just another (niche) tool in the toolbox. Some tools require more skill than others to use. So
The potential risk to ZFS created by the shift in its userbase
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
Writing an OS in Rust: Advanced Paging
This post explains techniques to make the physical page table frames accessible to our kernel. It then uses such a technique to implement a function t…
Evolution of the x86 context switch in Linux (2018)
Tracing the x86 context switch in Linux throughout time
Let’s stop copying C (2016)
Ah, C. The best lingua franca we have… because we have no other lingua francas. Linguae franca. Surgeons general? C is fairly old — 44 years, now! — and comes from a time when there were possibly more architectures than programming languages. It works well for what it is, and what it is is a relatively simple layer of…
Remote code execution vulnerability in apt/apt-get
tl;dr I found a vulnerability in apt that allows a network man-in-the-middle (or a malicious package mirror) to execute arbitrary code as root on a machine i...
Switching my parents over to Linux saved me a lot of headache and support calls
During me being at my parents over the holidays (Christmas 2017) I had the usual IT-support stuff to do, that always happens to tech sa...
Inside the C Standard Library
After diving into the C language through K&R, and then studying portability (see C Portability Lessons from Weird Machines ), my next challenge was to take a systematic look at the standard library. To do this I worked through P. J. Plauger’s book The Standard C Library (ISBN 978-0131315099) where he examines an…
Pixelbook and “Nami” Chromebooks the First to Get Linux GPU Acceleration
The Pixelbook and four other fairly new Chromebooks have the special flag to enable GPU acceleration, making these the first to get the new feature for Linux. This should bring the Android emulator and improved gaming capabilities to Project Crostini.
Introduction to TLA+ Model Checking in the Command Line
Otherwise known as “wait, you mean I can use the TLA toolbox from the command line?”
Performance Tuning for .NET Core
Some of you may know I've been spending whatever time I can scrounge together grinding away at a new serialization library for .NET. Serializers can be complicated beasts. They have to be reliable, flexible, and fast beyond reproach. I won't convince you that serialization libraries have to be quick — in this post…
Writing an OS in Rust: Introduction to Paging
This post introduces paging, a very common memory management scheme that we will also use for our operating system. It explains why memory isolation i…
Serverless computing: one step forward, two steps back
Serverless computing: one step forward, two steps back Hellerstein et al., CIDR’19 The biennial Conference on Innovative Data Systems Research has come round again. Today’s paper choice is su…
Adding Glue to a Desktop Environment
In this article we will put some light on a lot of tools used in the world of Unix desktop environment customization, particularly regarding wmctrl, wmutils, xev, xtruss, xwininfo, xprop, xdotools, xdo, sxhkd, xbindkeys, speckeysd, xchainkeys, alttab, triggerhappy, gTile, gidmgr, keynav, and more. If those don't make…
Do Not Use Task Manager for Memory Info
Task Manager can be lacking as a memory tracker. Let's cover alternatives to replace it. First, let’s discuss how memory allocations work in Windows.
A Primer on Database Replication (2017)
A Primer on Database Replication
AVX512 VBMI – remove spaces from text
Removing spaces from a string is a common task in text processing. Instead of removing single character we often want to remove all the white space characters or the punctuation characters etc.
Using TLA+ to Understand Xen Vchan
The vchan protocol is used to stream data between virtual machines on a Xen host without needing any locks. It is largely undocumented. The TLA …
Learning KVM – implement your own kernel
Few weeks ago I solved a great KVM escaping challenge from TWCTF hosted by @TokyoWesterns . I have given a writeup on my blog: [Write-up] T...
Even more fun with building and benchmarking Firefox with GCC and Clang
Recent switch of official Firefox builds to Clang on all platforms has triggered some questions about the quality of code produced by GCC c...
It is fast or it is wrong
Fast programs are always fast, slow programs are slow even on a most powerful computers. Knowing that fast solution exists makes slow one plain wrong.
AirPods get stuck in low-quality 16 kHz audio mode when starting a VM
I always love when I find a really dumb solution that works reliably to fix a problem that should never really be a problem in the first place. But having worked with audio devices before—though nothing nearly as complex as the AirPods—I am willing to cut Apple some slack in building a seamless aural experience with…