New
The latest blog posts to take off on Hacker News. 1,274 posts.
Rust 2018 is here, but what is it?
Starting today, the Rust 2018 edition is in its first release. With this edition, we’ve focused on making Rust developers as productive as they can be. Most of the language ...
Faster and simpler with the command line: deep-comparing JSON files with jq
As part of our recently announced deal with Apple Music [https://genius.com/a/genius-gets-smart-with-apple-music], you can now view Genius lyrics for your favorite music within the Apple Music app. We deliver our lyrics to Apple via a nightly export of newline-delimited JSON objects.
Pipenv: promises a lot, delivers very little
Pipenv is a Python packaging tool that does one thing reasonably well — application dependency management. However, it is also plagued by issues, limitations and a break-neck development process. In the past, Pipenv’s promotional material was highly misleading as to its purpose and backers.
Look ma, no locks
We describe a systematic approach for replacing locks with tasks. In this approach thread blocking is replaced by properly scheduling of tasks.
Announcing Open Source of WPF, Windows Forms, and WinUI
At Build 2018, I outlined our approach to helping you be more productive when developing apps, including the introduction of .NET Core 3.0. We also started decoupling many parts of the Windows development platform, so you can adopt technologies incrementally. Today at Microsoft Connect(); 2018 Conference we shared the…
A Not-Called Function Can Cause a 5X Slowdown
Subtitle: Making Windows Slower Part 3: Process Destruction In the summer of 2017 I wrestled with a Windows performance problem. Process destruction was slow, serialized, and was blocking the syste…
Building a Language and Compiler for Machine Learning
Since we originally proposed the need for a first-class language, compiler and ecosystem for machine learning (ML), there have been plenty of interesting developments in the field. Not only have the tradeoffs in existing systems, such as TensorFlow and PyTo...
How I Wrote a Modern C++ Library in Rust
Since version 56, Firefox has had a new character encoding conversion library called encoding_rs. It is written in Rust and replaced the old C++ character encoding conversion library called uconv that dated from early 1999. Initially, all the callers of the character encoding conversion library were C++ code, so the…
Developer on Call
For the system at work, I am on call one week every seven weeks. For most of the past ten years, I have been on organized on call rotations for the systems I have been developing. I think being on …
Pointers in C (2010)
This document comes with a companion example program, available as one file or as multiple files (zipped) .
How Does React Tell a Class from a Function?
We talk about classes, new, instanceof, prototype chains, and API design.
Algebras we love
If you work with anything that can be modeled mathematically, you most likely know that many things you work on can be expressed with algebras. However, if you are not a graduate of a computer science course or similar you might not know how ubiquitous they are and how often you rely on some of them. (And I don’t mean…
How Google Code Search Worked: Regex Matching with a Trigram Index (2012)
In the summer of 2006, I was lucky enough to be an intern at Google. At the time, Google had an internal tool called gsearch that acted as if it ran grep over all the files in the Google source tree and printed the results. Of course, that implementation would be fairly slow, so what gsearch actually did was talk to a…
A Programmer's Introduction to Mathematics
For the last four years I’ve been working on a book for programmers who want to learn mathematics. It’s finally done, and you can buy it today. The website for the book is pimbook.org, which has purchase links—paperback and ebook—and a preview of the first pages. You can see more snippets later in the book on the…
The Second Edition of “Refactoring”
I'm finishing a new edition of my Refactoring book. Here's details and periodic memos about my work.
AWS Lambda Supports Python 3.7
Discover more about what's new at AWS with AWS Lambda Supports Python 3.7
Portability of tar features
The tar format is one of the oldest archive formats in use. It comes as no surprise that it is ugly — built as layers of hacks on the older format versions to overcome their limitations. However, given the POSIX standarization in late 80s and the popularity of GNU tar, you would expect the interoperability problems to…
Falsehoods Programmers Believe About Names – With Examples
40 common false assumptions programmers make about names, debunked with real-world examples from global naming systems and identity practices.
UTF-7: a ghost from the time before UTF-8
On Halloween this year I learned two scary things. The first is that a young toddler can go trick-or-treating in your apartment building and acquire a huge amount of candy. When they are this young they have no interest in the candy itself, so you are left having to eat it all yourself.
How to design co-programs
I recently attended the Matthias Felleisen Half-Time Show, a symposium held in Boston on 3rd November in celebration of Matthias’s 60th birthday. I was honoured to be able to give a talk ther…
New for AWS Lambda: Use Any Programming Language and Share Common Components
I remember the excitement when AWS Lambda was announced in 2014! Four years on, customers are using Lambda functions for many different use cases. For example, iRobot is using AWS Lambda to provide compute services for their Roomba robotic vacuum cleaners, Fannie Mae to run Monte Carlo simulations for millions of…
Go 2, here we come
How Go 2 proposals will be evaluated, selected, and shipped.
Pythran as a bridge between fast prototyping and code deployment
As a researcher/engineer (really, an algorithm developer) in the general area of audio and speech processing, I've always run into the same difficulty at all the companies I've worked at: How to quickly prototype and develop algorithms, and subsequently turn them into efficient code that can be deployed to customers.
How Postgres is more than a relational database: Extensions
Extensions allow Postgres to be customized and extended in powerful new ways. Here we find a tour of extensions and how they can make Postgres into much more than a relational database