New
The latest blog posts to take off on Hacker News. 1,304 posts.
TensorFlow 0.12 adds support for Windows
Native support for TensorFlow on Windows was one of the first requests we received after open-sourcing TensorFlow. Although some Windows users have managed to run TensorFlow in a Docker container, we wanted to provide a more complete experience including GPU support.
Real-time event aggregation at scale using Postgres with Citus
Citus is commonly used to scale out event data pipelines on top of PostgreSQL. Its ability to transparently shard data and parallelise queries over many machines makes it possible to have real-time responsiveness even with terabytes of data.
The lack of a case against Python 3
A point-by-point rebuttal of Zed Shaw's Unicode and 2to3 complaints, with a trainer's view on which Python version to teach beginners in 2016.
Beating the Compiler
An oft-repeated fact on programming forums these days is that a decent optimizing compiler will always beat a puny human's attempt at hand-written assembler. There are rare cases, like MPEG decoders, where making good use of the SIMD instructions can allow assembly to massively beat the compiler. But generally you'll…
Visualizing How Developers Rate Their Own Programming Skills
As it turns out, there is no correlation between programming ability and the frequency of Stack Overflow visits.
Modern C is now feature complete
You find the latest version of my book at the usual place at This now contains all the material that I plan to put into it. New are “experience” parts about performance, function-like m…
Base-122 – A space efficient alternative to base-64
A space efficient UTF-8 binary-to-text encoding
Interactive Numerical Optimization Tutorial
Numerical Optimization is one of the central techniques in Machine Learning. For many problems it is hard to figure out the best solution directly, but it is relatively easy to set up a loss function that measures how good a solution is - and then minimize the parameters of that function to find the solution.
The New Haxe Target: HashLink in depth, part 1
Find out more about HashLink, the newest Haxe target, a virtual machine used to develop system/server/desktop applications.
Typed, modular macros for OCaml
As part of my OCaml Labs research project, I implemented a new macro system for OCaml, based on a design by Leo White and Jeremy Yallop [1] .
Lessons Learned from Shenzhen I/O
Shenzhen I/O is a brilliant game. In case you haven’t heard of it, it’s a game about programming micro-controllers. It distills programming down to the fun parts, removing the inertia, …
“Your program is stupid. It doesn't work,” my wife told me (2010)
<img src="http://stevehanov.ca/blog/wheel1.png"/>
Add-ons in 2017
A little more than a year ago we started talking about where add-ons were headed, and what the future would look like. It’s been busy, and we wanted to give ...
Open Source .NET – 2 years later
A little over 2 years ago Microsoft announced that they were open sourcing large parts of the .NET framework and as Scott Hanselman said in his recent Connect keynote, the community has been contributing in a significant way:
A Rebuttal for Python 3
Zed Shaw, of Learn Python the Hard Way fame, has now written The Case Against Python 3. I’m not involved with core Python development. The only skin I have in this game is that I like Python 3. It’s a good language. And one of the big factors I’ve seen slowing its adoption is that respected people in the Python commu
Curl Security Audit
"the overall impression of the state of security and robustness of the cURL library was positive." I asked for, and we were granted a security audit of curl from the Mozilla Secure Open Source program a while ago. This was done by Mozilla getting a 3rd party company involved to do the job and footing … Continue…
List of scientific papers found in OpenJDK source code
List of Scientific Papers found in Java source code
Procedural Dungeon Generation: Cellular Automata
Last time we looked at generating random dungeons for video games using the Drunkard’s Walk algorithm. The Drunkard’s Walk is fun to play with, and often generates cool levels, but it’s also pretty unreliable. That’s not good enough for my purposes: I want to reliably generate big, open, cave-like maps, with lots of…
How to speed up the Rust compiler some more
I recently wrote about some work I’ve done to speed up the Rust compiler . Since then I’ve done some more.
The Case Against Python 3
This document serves as a collection of reasons why beginners should avoid Python 3 as of November 22nd, 2016. I give two sets of reasons as I see them now. One for total beginners, and another for people who are more knowledgeable about programming. The first section attempts to explain the case against starting with…