Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 2,470 posts.
Counting Clojure Code
For better or worse, we count lines of code. We (hopefully) feel a little dirty when we do it, because it's a flawed metric. But we do it . We do it on large codebases and small code snippets . Even badass hacker David Nolen does it .
Singular Value Decomposition for Programmers
Today's article is a short one. Not because Singular Value Decomposition (SVD) is not important, but because it is so ubiquitous that we'll touch it in other...
Comparing C and C++ usage and performance with a real world project
The relative performance of C and C++ is the stuff of folk legends and Very Strong Opinions. There are microbenchmarks that can prove differ...
Ends, Means, and Antitrust
Google is a monopoly, and almost certainly a bad actor: shopping, though, is a terrible example that shows how regulators can go wrong.
The Great Moon Hoax
On August 25, 1835 the <i>New York Sun</i> announced the discovery of life on the moon. It explained that the discovery had been made by the famous British astronomer Sir John Herschel, who had invented a new telescope of vast dimensions and an entirely new principle. Over the course of the next week the <i>Sun</i>…
SaaS Pricing (2013)
SaaS pricing is a mystery to many developers. Here is how to do it better.
Words growing or shrinking in Hacker News titles: a tidy analysis
In May, some friends and I built Tagger News, a real-time automatic classifier of Hacker News articles based on their text (see here for more about how we built it). This process started me down some interesting paths, particularly analyzing trends in titles. By finding words that became more or less common in Hacker…
Caffeine Smalltalk – Livecode the Web
Livecode all the JS things from Smalltalk!
Teaching an AI to play a simple game using Q-learning
In this post I will walk you through how to teach a computer to master a simple video game using the q-learning reinforcement learning algorithm. We will implement the algorithm from scratch in Ruby without the use of external gems. To enable us to illustrate the inner workings of the algorithm we will be teaching […]
Select(2) is fundamentally broken
In a previous blog post we discussed a brief history of the select(2) syscall . The article concludes that some I/O multiplexing was necessary to do console emulation, games and non-trivial TCP/IP applications.
Self-Replicating Functions
These are notes I’m creating for myself as I explore functions \(f\) that can be written as a sum \(f = g_1 + g_2\) where \(g_1\) and \(g_2\) are shifted and possibly reflected versions of each other, both strongly resembling the original function \(f\) . When a function \(f\) has these properties, I informally call…
How people talk about marijuana on Reddit: a natural language analysis
In honor of today being April 20th, I thought it would be interesting to do some NLP on Reddit comments about marijuana (shout out to…
Smalltalk Envy
I myself was not on the famous C3 (Chrysler Comprehensive Compensation System) project in 1996-2000 that is pivotal to ‘Extreme Programming’ (XP). That project used Smalltalk, and team contribution was provided by Object Technology International’s ENVY version control system. I wanted to know more about that so I…
Language Models, Word2Vec, and Efficient Softmax Approximations
The Word2Vec model has become a standard method for representing words as dense vectors. This is typically done as a preprocessing step, after which the learned vectors are fed into a discriminative model (typically an RNN) to generate predictions such as movie review sentiment, do machine translation, or even…
Kernel debugging for newbies
This week, I’ve been working on an application that sets up IPsec connections. PF_KEYv2 is the standard interface for configuring IPsec. PF_KEYv2 is widely-available; even systems with more advanced IPsec stacks (like XFRM on Linux) provide a PF_KEYv2-compatible wrapper. I want my application to work on OS X and…
Little Lisp interpreter
Little Lisp is an interpreter that supports function invocation, lambdas, lets, ifs, numbers, strings, a few library functions, and lists. I wrote it for a l...
The browser bugs and edge cases of HTTP/2 push
There are lots of edge cases I hadn't considered, and it's very inconsistent between browsers. Here's what I found…