Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 4,389 posts.
8 Bits Are Enough for a Version Number
As was pointed out to us stable kernel maintainers last week, the overflow of the .y release number was going to happen soon, and our proposed …
Power of small optimizations
In this post, I will talk about the importance of small optimizations that can provide a lot of performance improvements.
Parsing JSON faster with Intel AVX-512
Many recent Intel processors benefit from a new family of instructions called AVX-512. These instructions operate over wide registers (up to 512 bits) and follow the Single instruction, multiple data (SIMD) paradigm. These new AVX-512 instructions allow you to break some speed records, such as decoding base64 data at…
An Intel Programmer Jumps over Wall: First Impressions of ARM SIMD Programming
(the pictured dish is apparently materials for “Buddha Jumps Over The Wall”, named for its ability to seduce away vegetarians – sadly it uses shark fin so has some ethical issues&…
Goliath: Non-blocking, Ruby 1.9 Web Server
There are easily half a dozen of factors you need to consider when picking an app server: the choice of the VM, implementation model, performance and memory usage, driver and library availability, community support, and so forth. In other words, it is a complex set of requirements, and no one solution is likely to…
How Is Data Stored?
Invariably, it involves trying to trap electrons in increasingly complicated ways.
On lists, cache, algorithms, and microarchitecture
Lists are rather hardware-unfriendly data structure. However, having a closer look at why is that and what can be done to improve this can provide an interesting insight into how high-level algorithms performance is affected by the processor microarchitecture.
Jepsen: RethinkDB 2.2.3 reconfiguration
In the previous Jepsen analysis of RethinkDB , we tested single-document reads, writes, and conditional writes, under network partitions and process pauses. RethinkDB did not exhibit any nonlinearizable histories in those tests. However, testing with more aggressive failure modes, on both 2.1.5 and 2.2.3, has…
Consistent Hashing
Bluehost - Top rated web hosting provider - Free 1 click installs For blogs, shopping carts, and more. Get a free domain name, real NON-outsourced 24/7 support, and superior speed. web hosting provider php hosting cheap web hosting, Web hosting, domain names, front page hosting, email hosting. We offer affordable…
Profiling Go
Techniques and tools for profiling Go applications including pprof, benchmarks, and memory management analysis.
Avoid exception throwing in performance-sensitive code
There are various ways in software to handle error conditions. In C or Go, one returns error code. Other programming languages like C++ or Java prefer to throw exceptions. One benefit of using exceptions is that it keeps your code mostly clean since the error-handling code is often separate. It is debatable whether…
Low-level is easy
My previous entry has the amazingly interesting title "Blogging is hard". Gee, what a wuss, says the occasional passer-by. Gotta fix my image, fast. Think, think, think! OK, here's what I'm going to tell you: low-level programming is easy. Compared to higher-level programming, that is. I'm serious.
Benchmarking Cheap SSDs for Fun, No Profit
The price of Solid-state drives (SSDs) has dropped significantly over the last few years. It's now possible to buy a 1TB solid-state drive for less than €60. However, at such low price points, there is a catch.
Fedora Asahi Remix first impressions
My personal website and blog
Firefox nightlies for Linux are now using Gtk+3
As of last nightly (2015-07-23), Firefox for Linux is using Gtk+3 instead of Gtk+2.
Sandboxing all the things with Flatpak and BubbleBox
A few years ago, I have blogged about my approach to sandboxing less-trusted applications that I have to or want to run on my main machine. The approach has changed since then, so it is tim...
The Performance Cost of Integer Overflow Checking
How much overhead should we expect from enabling integer overflow checks? Using a compiler flag or built-in intrinsics, we should be able to do the check with a conditional branch that branches based on the overflow flag that add and sub set. Code that looks like
Why curl defaults to stdout
(Recap: I founded the curl project, I am still the lead developer and maintainer) When asking curl to get a URL it'll send the output to stdout by default. You can of course easily change this behavior with options or just using your shell's redirect feature, but without any option it'll spew it out to … Continue…
A deep dive into Multicore OCaml garbage collector
I recently gave a talk on the internals of multicore OCaml GC at Jane Street offices in NYC. The slides from the talk are available online . But I felt that the slides alone aren’t particularly edifying. This post is basically the slides from the talk annotated with notes.
Postgres full-text search is Good Enough (2015)
When you have to build a web application, you are often asked to add search. The magnifying glass is something that we now add to wireframes without even knowing what we are going to search.
NetBSD on a JavaStation
Hard as it may be to imagine, there was a time when Java was brand new and exciting. Long before it became the vast clunky back-end leviathan it is today, it was going to be the ubiquitous graphical platform that would be used on everything from cell phones to supercomputers: write once, run anywhere. Initially …
Using TLA+ in the Real World to Understand a Glibc Bug
TLA+ is a formal specification language that you can use to verify programs. It’s different from other formal verification systems in that it’s very pragmatic. Instead of writing proofs…
Parallelism and concurrency need different tools
In this piece, I disagree with Joe Armstrong and Rob Pike, basing my argument on the differences between vending machines and gift boxes (illustrated with drawings carefully prepared in Microsoft Paint).
Debugging bare-metal STM32 from the seventh level of hell
Here’s a not-so-brief story about troubleshooting a problem that was at times vexing, impossible, incredibly challenging, frustrating, and all around just a terrible time with the bare-metal STM32G4 firmware for the moteus brushless motor controller. Background First, some things for context: moteus has a variety of…
Emulate Mac OS 9 with QEMU
(Updated Dec 11, 2018)
Eighteen Years of ABI Stability
It has been eighteen years of libcurl ABI stability.
The GPU Banana Stand
Freshly whipped WebGPU, with ice cream