Robin Hood Hashing should be the default hash table implementation (2013)
There’s a neat variation on open-addressing based hash tables called Robin Hood hashing . This technique isn’t very well-known, but it makes a huge practical difference because it both improves performance and space utilization compared to other “standard” hash tables (e.g. chaining ). It also eliminates the major…
Advanced programming languages (2009)
Students often ask for a recommendation on what language they should learn next. If you're looking for a job in industry, my reply is to learn whatever is hot right now: C++, Java and C#--and probably Python, Ruby, PHP and Perl too.
Stories and Tips: Interviews with Facebook, Twitter, Amazon and Others
Many of my students have been asking questions lately about how to do technical interviews, so I've decided to write about my interviewing experiences. I will start by giving a number of anecdotes because they're interesting to everyone, but the later parts of this post are mainly targeted at prospective students who…
$15 Production Kubernetes Cluster on DigitalOcean
As you might already know, I’m into containers , static configuration and self-service infrastructures . Naturally, I love Kubernetes , which I consider the most promising cluster scheduler around.
Operation Costs in CPU Clock Cycles
Quote: Back in 80s, it was possible to calculate the speed of the program just by looking at assembly. Another Quote: keep in mind that these days compilers ...
Verifying ARM processors against the official ARM specification
Researcher at Intel
Why I’m not speaking at CPDP: It’s the privacy-washing
13 Jan, 2016 The sponsorship of privacy and human rights conferences by corporations that erode our privacy and human rights is a clear conflict of interests that we must challenge. The revolution will not be sponsored by those we are revolting against.
Playing “Moneyball” on EA FIFA 16
I'm an EA FIFA enthusiast. More than that, I’ve played since 1994. Last year, I was talking with a friend about the game and he asked me if I was playing Career Mode. My first answer was: "That is boring ... I want to play the real game and not play as a manager". From that day, he decided to convince me to play…
Lumo – A fast, standalone ClojureScript REPL that runs on Node.js and V8
One common complaint of Clojure REPLs is their [startup time](http://puredanger.github.io/tech.puredanger.com/2013/12/01/clj-problems/). Although that complaint is often somewhat unfounded (and related to tooling), it still takes the bare Clojure JAR about 1 second to start on new hardware…
Extracting data from Wikipedia using curl, grep, cut and other bash commands
By using a combination of curl, grep, cut, sort, uniq and other common bash utilities it is possible to extract structured data from Wikipedia and compute insights without writing a full program.
Thousands of Hip Hop Mix Tapes, Why Not
For the past couple of weeks, I’ve been uploading thousands of Hip-hop Mixtapes into the archive. The resulting collection still has a way to go before it’s everything I have acquired a…
What My PhD Was Like
What it looks like to do a PhD: the view from my desk. Recently, I have been talking to many prospective Computer Science PhD students ...
The 39th Root of 92
My new office space suffers from a shortage of photons, so I’ve been wiring up light fixtures. As I was snaking 14-gauge cable through the ceiling cavity, I began to wonder: Why is it called 14-gauge? I know that the gauge specifies the size of the copper conductors, but how exactly? The number can’t be a simple…
Tips for beginning systems and software engineers
From time to time I’m toying with the idea to give a lecture to newcomers in the IT industry (systems or software engineers). Here are some of the points that I would include in it: Human fa…
AWS Java documentation is fucked
Update: Eron Hennessey from Amazon has responded below with a new updated Java SDK that’s much easier to grok. The title of this article has since been changed accordingly. The problem…
How your data is collected and commoditised via “free” online services
I get a lot of people popping up with data breaches for Have I been pwned [https://haveibeenpwned.com/] (HIBP). There’s an interesting story in that itself actually, one I must get around to writing in the future as folks come from all sorts of different backgrounds and offer
Thomas Jefferson and Apple versus the FBI
When Prohibition began, anti-alcohol crusaders demanded that the St. Louis Public Library burn every book that explained "the home production of alcohol for drinks". The librarian insisted on keeping the books but agreed to hide them from the "general public".
My url isn't your url
When I started the precursor to the curl project, httpget, back in 1996, I wrote my first URL parser. Back then, the universal address was still called URL: Uniform Resource Locators. That spec was published by the IETF in 1994. The term "URL" was then used as source for inspiration when naming the tool and … Continue…
Why I stopped using StartSSL (Hint: it involves a Chinese company)
StartSSL uses https://auth.startssl.com/ for the front-end to access to their PKIs (login to the PKI, create, revoke certificates...). It's the Core of their service and the critical part of their infrastructure.
Writing for Half-Life
(File dated November 9, 1998) PREFACE: Another file from the same disk with the Nihilanth sketches, this one, if it is to believed, written the day after we shipped Half-Life. I do believe it because the file’s creation date is indeed November 9, 1998, and I am not l33t enough to know how to fake […]
Securing a travel iPhone
These are dry notes I took in the process of setting up a burner iPhone SE as a secure travel device. They are roughly in setup order.
Why do we keep building rotten foundations?
APIs are like bones: sometimes you have to break them to mend them, and it fucking hurts. It’s not a perfect analogy, but it reflects an observation of (superficially) pragmatic behavioural t…