New
The latest blog posts to take off on Hacker News. 498 posts.
How Firefox Got Fast Again
Over the past seven months, we’ve been rapidly replacing major parts of the engine, introducing Rust and parts of Servo to Firefox. Plus, we’ve had a browser performance strike force ...
1.1B Taxi Trips on BrytlytDB 2.0
Benchmarks & Tips for Big Data, Hadoop, AWS, Google Cloud, PostgreSQL, Spark, Python & More...
Software architecture is failing
I doubt there has ever been a time when software architecture was seen as a raging success. The “three-tier architecture” of the web has held up extremely well and is an excellent place for many people to start. The “12 Factor App” approach has encouraged developers to adopt practices that make deployment and scaling…
How should you build a high-performance column store for the 2020s?
Though most relational databases (like MySQL) are "row oriented", in that they keep rows stored together... experience has taught us that pivoting the data arrow so that columns, and not rows, are stored together can be beneficial. This is an old observation that most experienced programmers know about as the…
LavaRand in Production: The Nitty-Gritty Technical Details
As some of you may know, there's a wall of lava lamps in the lobby of our San Francisco office that we use for cryptography. In this post, we’re going to explore how that works in technical detail.
Profiling Go
Techniques and tools for profiling Go applications including pprof, benchmarks, and memory management analysis.
My VM is lighter and safer than your container
My VM is lighter (and safer) than your container Manco et al., SOSP’17 Can we have the improved isolation of VMs, with the efficiency of containers? In today’s paper choice the authors investigate …
Linux containers in 500 lines of code (2016)
I've used Linux containers directly and indirectly for years, but I wanted to become more familiar with them. So I wrote some code. This used to be 500 lines of code, I swear, but I've revised it some since publishing; I've ended up with about 70 lines more.
Blockchains Considered Harmful: Is Brute-Force Processing Replacing Good Design?
Emerging cryptocurrencies, such as Bitcoin and Ethereum have reached market capitalizations in the billions of U.S. dollars and transactions volumes in the hundreds of millions of U.S. dollars per …
Scaling the GitLab database
An in-depth look at the challenges faced when scaling the GitLab database and the solutions we applied to help solve the problems with our database setup.
Can You Afford It? Real-World Web Performance Budgets
Performance budgets are an essential but under-appreciated part of product success and team health. Most partners we work with are not aware of the real-world operating environment and make inappropriate technology choices as a result. We set a time budget of less than 5 seconds first-load Time-to-Interactive and less…
Suicide Linux
You know how sometimes if you mistype a filename in Bash, it corrects your spelling and runs the command anyway?* Such as when changing directory, or opening a file. I have an idea: Suicide Linux. Any time - any time - you type any remotely incorrect command, the interpreter cr...
Introducing Amazon EC2 P3 Instances
Discover more about what's new at AWS with Introducing Amazon EC2 P3 Instances
Why does one Nginx worker take all the load?
Scaling up TCP servers is usually straightforward. Most deployments start by using a single process setup. When the need arises more worker processes are added.
Filesystem error handling
We’re going to reproduce some results from papers on filesystem robustness that were written up roughly a decade ago : Prabhakaran et al. SOSP 05 paper , which injected errors below the filesystem and Gunawi et al. FAST 08 , which looked at how often filesystems failed to check return codes of functions that can…
An ode to pack: gzip’s forgotten decompressor
The latest 4.13.9 source release of the Linux kernel is 780MiB, but thanks to xz compression, the download is a much more managable 96 MiB (an 88% reduction)
UEFI Programming – First Steps (2009)
In this article, I will describe steps needed to start on with development of real UEFI applications on x86 PC, and share some practical experiences with problems doing so. I will focus on 64-bit version of UEFI, because the 32-bit version isn't much used in this area (most likely due to Microsoft decision not to…
The First PS4 Kernel Exploit: Adieu
Now we will step back a bit and explain how we managed to jump from the browser process into the kernel such that ps4-kexec et al. are usable.
HolyJit: A New Hope
tl;dr: We believe there is a safer and easier way of writing a Jit. Current State Today, all browsers’ Jits share a similar design. This ...
Writing a Bootloader
This post describes how to write a simple Hello world bootloader
Using cgroups to limit I/O
Developers running their apps on tsuru can choose plans based on memory and cpu usage. We were looking at adding I/O usage as one of the plan’s features, so one could choose how many I/O operations per second or bytes per second a container may be able to read/write. Being able to limit I/O is particulary important…
URG
If you asked software engineers some of their “least hated” things, you’ll likely hear both UTF-8 and TCP. TCP, despite being 35 years old, is rock-solid, stable infrastructure that we take for granted today; it’s hard to sometimes realize that TCP was man-made, given how well it’s served us. But within every single…