New
The latest blog posts to take off on Hacker News. 6,950 posts.
Asm.js AOT compilation and startup performance
With the recent announcement of a commercial game shipping using Emscripten and asm.js , I thought it’d be a good time to explain how asm.js is executed in Firefox and some of the load-time optimizations we’ve made since the initial landing of OdinMonkey in March. (OdinMonkey is an optimization module inside Mozilla’s…
Outage post-mortem
Dash knows your context, your team, and your work, so your team can stay organized, easily find and share knowledge, and keep projects secure, all from one place.
Finite State Entropy - A new breed of entropy coder
In compression theory, the entropy encoding stage is typically the last stage of a compression algorithm, the one where the gains from t...
Comparing Filesystem Performance in Virtual Machines
For years, the primary bottleneck for virtual machine based development environments with Vagrant has been filesystem performance. CPU differences are minimal and barely noticeable, and RAM only becomes an issue when many virtual machines are active.
How misaligning data can increase performance 12x by reducing cache misses
Here's the graph of a toy benchmark 1 of page-aligned vs. mis-aligned accesses; it shows a ratio of performance between the two at different working set sizes. If this benchmark seems contrived, it actually comes from a real world example of the disastrous performance implications of using nice power of 2 alignment…
Distributed systems for fun and profit (free ebook)
git , Single page HTML , Kindle .mobi , PDF , .epub , HTML for printing , book cover .
Memory cache optimizations
When optimizing memory access, and memory cache misses in particular, there are surprisingly few tools to help you. valgrind’s cachegrind tool is the closest one I’ve found. It gives you a lot of information on cache misses, but not necessarily in the form you need it.
The Lost Art of C Structure Packing
This page is about a technique for reducing the memory footprint of programs in compiled languages with C-like structures - manually repacking these declarations for reduced size. To read it, you will require basic knowledge of the C programming language.
Happy new year and goodbye bzip2
We started listing xz-compressed versions of kernel archives in all our announcements back in March 2013, and the time has come to complete the switch. Effective immediately, we will no longer be providing bzip2-compressed versions for new releases of the Linux kernel and other software. Any previously released…
Writing a full-text search engine using Bloom filters
A few minutes ago I came across a Hacker News post that detailed a method of adding search to your static site. As you probably know, adding search to a static site is a bit tricky, because you can’t just send the query to a server and have the server process it and return the results. If you want full-text search…
Knossos: Redis and Linearizability
A few weeks ago I criticized a proposal by Antirez for a hypothetical linearizable system built on top of Redis WAIT and a strong coordinator. I showed that the coordinator he suggested was physically impossible to build, and that anybody who tried to actually implement that design would run into serious problems. I…
Gap between asm.js and native gets narrower with float32 optimizations
asm.js is a simple subset of JavaScript that is very easy to optimize, suitable for use as a compiler target from languages like C and C++. Earlier this year Firefox ...
I now have Rust code for executing executables
Day 45: I now have Rust code for executing executables!
The Right Stuff: Breaking the PageSpeed Barrier with Bootstrap
The AppNeta award-winning suite of network monitoring tools allow unparalleled SaaS-based application end-user performance monitoring for 100% delivery confidence.
The Law of Leaky Abstractions (2002)
There’s a key piece of magic in the engineering of the Internet which you rely on every single day. It happens in the TCP protocol, one of the fundamental building blocks of the Internet. TCP…
Optimizing Nginx TLS Time To First Byte
TLS is not slow, it's unoptimized. A hands-on tour of optimizing nginx to deliver one-RTT Time To First Byte (TTFB) with TLS.
What are Linux containers and how did they come about?
Today's announced collaboration between Red Hat and dotCloud , the company behind Docker, is exciting for a lot of reasons. As the release n...
Call me maybe: Redis redux
In a recent blog post , antirez detailed a new operation in Redis: WAIT . WAIT is proposed as an enhancement to Redis’ replication protocol to reduce the window of data loss in replicated Redis systems; clients can block awaiting acknowledgement of a write to a given number of nodes (or time out if the given threshold…
How can C Programs be so Reliable? (2008)
C is, today, a unique programming language. Surprisingly few people can really program in C and yet many of us have quite strong opinions about it. Buffer overflows, stack smashing, integer overflows — C has many well publicised flaws, and these terms are often bandied about confidently, even by those unfamiliar with…
The cost of dynamic vs. static dispatch in C++
A couple of years ago I wrote an article about the Curiously Recurring Template Pattern in C++ , focusing on the motivation behind it and how to implement it.
Multiprocess Firefox
Since this January, David Anderson and I have been working on making Firefox use multiple processes. Tom Schuster (evilpie on IRC) joined us as an intern this summer, and Felipe Gomes, Mark Hammond…