New

The latest blog posts to take off on Hacker News. 14,543 posts.

Software Engineering
Any year
9032

Nobody's just reading your code

Most programmers agree that we don't read enough code. The interviews in Peter Seibel's book, “Coders at work” highlight a comical contradiction: almost all the programmers interviewed by Seibel recommend that others read code for fun, but none of them routinely do so themselves. Seibel even asked Hal Abelson (of SICP…

9033

Reasoning with Types in Rust

Hi, I'm Ariel (she/her), a newly-minted member of the Swift team at Apple ! Previously, I helped lead the Luau team at Roblox where my efforts primarily focused on the design and implementation of Luau 's type system. I also led the creation of Lute to support using Luau both to build developer tooling, and as a…

9038

An SVG that always shows today's date

For my contact page, I wanted a generic calendar icon to let people view my diary. Calendar icons are almost always a skeuomorph of a paper calendar, but I wondered if I could make it slightly more useful by creating a dynamic icon. Here it is, an SVG calendar which always display's today's date: The background image…

9039

A Crash Course on ML Modules (2015)

I was having lunch with a couple of Haskell programmers the other day and the subject of the ML family came up. I’ve been writing a lot of ML lately and mentioned that I thought *ML was well worth learning for the average Haskeller. When pressed why the best answer I could come up with was “Well.. clean language, Oh!…

9042

Versioned Go Commands

What does it mean to add versioning to the go command? The overview post gave a preview, but the followup posts focused mainly on underlying details: the import compatibility rule , minimal version selection , and defining go modules . With those better understood, this post examines the details of how versioning…

9049

Go and Versioning: Minimal Version Selection

A versioned Go command must decide which module versions to use in each build. I call this list of modules and versions for use in a given build the build list . For stable development, today’s build list must also be tomorrow’s build list. But then developers must also be allowed to change the build list: to upgrade…

9052

Go += Package Versioning

More precisely, we need to add the concept of package versions to the working vocabulary of both Go developers and our tools, so that they can all be precise when talking to each other about exactly which program should be built, run, or analyzed. The go command needs to be able to tell developers exactly which…

9056

What Made Lisp Different (2002)

(This article came about in response to some questions on the LL1 mailing list. It is now incorporated in Revenge of the Nerds .) When McCarthy designed Lisp in the late 1950s, it was a radical departure from existing languages, the most important of which was Fortran . Lisp embodied nine new ideas: