Topics /

Software Engineering

The most popular blog posts about software engineering on Hacker News. 1,420 posts.

2017
572

Curl doesn’t spew binary anymore

One of the least favorite habits of curl during all these years, I've been told, is when users forget to instruct the command line tool where to store the downloaded file and as a direct consequence, curl instead sends a lot of binary "gunk" to the terminal. The end result of that is at best … Continue reading curl…

574

Windows 3.1 All Over Again

Reactive programming and thread sharing. Javascript, Node.js, Go, Rails, Elixir and Erlang. Rewind the clocks to Windows 3.1 In 1992 with Windows 3.1 we had this thing non-preemptive multitasking, i.e. “Cooperative Multitasking”. Cooperation is a funny term, it should actually be “Programmer Controlled Multitasking”…

575

On mutex performance and WTF::Lock

One of the things I’ve been doing this quarter is removing Gecko’s dependence on NSPR locks . Gecko’s (non-recursive) mutexes and condition variables now use platform-specific constructs, rather than indirecting through NSPR. This change makes things smaller, especially on POSIX platforms, and uses no dynamic memory…

577

Type-safe GraphQL with OCaml

In July 2016, I spent some time writing a GraphQL endpoint for an existing application in Go. I chose to implement the endpoint in Go based on prior experience, good concurrency support and the desire to have static type system. The GraphQL library for Go, graphql-go , worked pretty well, and I was able to build the…

581

Matrices from a geometric perspective

Graphics is all about geometry. In particular, there are points that have a certain color, and the pattern of colors gives you a certain picture. You can change the way the points are distributed by applying certain transformations like translation (movement), rotation and scaling. While most people familiar with the…

583

An Introduction to Deep Learning for Language Modeling

Language models assign probability values to sequences of words. Those three words that appear right above your keyboard on your phone that try to predict the next word you’ll type are one of the uses of language modeling. In the case shown below, the language model is predicting that “from”, “on” and “it” have a high…

585

Finding bugs in Haskell code by proving it

Last week, I wrote a small nifty tool called bisect-binary , which semi-automates answering the question “To what extent can I fill this file up with zeroes and still have it working”. I wrote it it in Haskell, and part of the Haskell code, in the Intervals.hs module, is a data structure for “subsets of a file”…

589

Compiler Optimizations are Awesome

Another reason for optimizing compilers: It allows us to write simple and obvious code expecting that the compiler will do the optimization. This both reduces the initial defect count and makes the code more maintainable in the long-run. Note that these are also often the simplest optimizations (e.g. a calculation…

596

Modernizing the DOM Tree in Microsoft Edge

The DOM is the foundation of the web platform programming model, and its design and performance impacts the rest of the browser pipeline. However, its history and evolution is far from a simple story. Over the past three years, we’ve embarked on an in-flight refactoring of the DOM in Microsoft Edge, with our eye on