"The Mess We're In" by Joe Armstrong

Strange Loop Conference10 HN recommenders · 2014–2025
398K views · talk · evergreen · Uploaded 2014-09-19

Joe Armstrong, co-inventor of Erlang, gives a funny and opinionated Strange Loop talk on the tangled state of software: build tools, package managers, entropy and the physical limits of computation. He argues for ideas like naming things by content hash and throwing away your first version.

HN returns to it constantly as a witty, still-accurate diagnosis of why software is bloated and messy, and as a go-to recommendation in any thread on modules, package managers or software quality.

Watch on YouTube

20 comments from Hacker News

@doty2014 · in “Why do we need modules at all? (2011)”

I think Mr. Armstrong would approve, given his comments near the end of [VIDEO] , where he opines that the web would be great if, instead of URLs, every published document were just named with a hash of its content.

@Verdex2014 · in “Why do we need modules at all? (2011)”

I saw Joe's strange loop talk [1] a while ago and I get the same vibe reading his post as I did when watching the video. It sounds very cool, but I can't shake the feeling that it only works for 85% of the code. That is to say if you program in exactly the right way, you will be able to do everything you want and it will work with this system, but there are ways of programming that won't work with this system. More specifically I feel like there are two problems. 1) It feels suspiciously like there's a combination of halting problem and diagonalisation that shows there are an uncountably infinite number of functions that we want to write that can't be named (although I would want to have a better idea of how this is supposed to work before I try to hammer out a proof). 2) I don't understand how it's possible for any hashing scheme to encode necessary properties of a function such that the function with necessary properties has a different hash than an otherwise identical function without these properties. For example can we hash these functions such that stable sort looks different than unstable sort? Wouldn't we need dependent typing to encode all required properties? And if that's the case couldn't I pull a Gödel and show that there's always one more property not encodable in your system? [1] - [VIDEO] [2] [2] - [LINK] (thanks for the link)

@ChaoticGood2014 · in “JavaScript's Future seems very bright”

Lets not forget that the usage of javascript correlates with need to target the omnipresence of browser and not for merits of javascripts idioms or design pattern paradigms. Javascript is a great hacker language. All the improvements as stated above will extend the capacity of js to quickly hack up mvp apps. With that said I think the argument can be made that javascript was never designed from the ground up to support this new omnipresent realtime persistent application platform. For me the question remains to be seen answered if a server that was designed the ground up to be a server such as netty offers a more stable solution then node.js I think some might say that ES6 is like putting lip stick on a pig therefore patching up JS to keep evolving as more expressive language. Every time I run NPM install I wonder what kinds of incidental complexities I am I getting myself into. Then dred if I have learn yet another build system. Every time I run NPM I think of an old Jim Breuer joke [1] -- NPM is the "tequila" in the JS party of complexity. ASM.js is amazing, but are we getting a little too drunk on our technologies. ASM.js just might be amazing koolaid when it comes to the sobering decision to build something from "the feet up" to serve on purpose and serve it well. JS can be the jack of all trades and master of none and that can be a bad thing. One thing is for sure JS is really fun, but I would not go making a stock market exchange out a javascript codebase. Speed is not

@kylebrown2015 · in “Do we need browsers?”

Javascript package managers like npm tend to work much more seamlessly than the old unix ones. Wouldnt mind scrapping them all for [LINK] Also, the reason package managers suck is because.. entropy. See Joe Armstrong, The Mess We're In [VIDEO]

@0xmohit2016 · in “Ask HN: What's your favorite tech talk?”

How To Design A Good API and Why it Matters [0] The Principles of Clean Architecture [1] The State of the Art in Microservices by Adrian Cockcroft [2] "The Mess We're In" by Joe Armstrong [3] [0] [LINK] [1] [LINK] [2] [LINK] [3] [VIDEO]

RecommendsView on HN
@hepek2017 · in “Physical Limits of Computation (2009)”

Joe Armstrong gives a very good talk about ideas in the article in "The Mess We're In" (2014): [VIDEO]

RecommendsView on HN
@gandreani2018 · in “VFS shim that allows a SQLite database to be appended to another file”

Madness! Or actually really similar to an idea that Joe Armstrong presented in Strange Loop one time (just the idea no demo or anything) [VIDEO]

@randomsearch2018 · in “The problem with programming and how to fix it”

I'd say your comment is not constructive: you're asking me to name all the solutions, otherwise my observation has no merit? I'll expand a little. Let's take a single example: developing a single page web application. To know how to do that, I need to learn HTML, CSS, JS Frameworks, web pack or whatever. Linters, preprocessors, package management .... Contrast that to building flash app where a designer could use a GUI to produce a beautiful interactive app in no time at all. Yep, we all hated Flash, but in terms of accessibility to creators, it was beautiful compared to the mess we've made. A little off-topic but good for perspective: [VIDEO]

@dpeck2019 · in “Joe Armstrong has died”

That is so sad, he was in his late 60s and it seemed like he had a lot of life left in him, talking about how software can get better and having a great (and sometimes snarky) outlook on the profession. Highly recommend his thesis (2003) and a few of his great interviews/presentations for anyone who isn’t familiar with Joe, it captures a lot of what he thought about and pushed for in his professional life. [LINK] [LINK] [VIDEO] [LINK] I hope his family and friends can find some comfort in how much he was appreciated and admired in the development community.

Strongly recommendsView on HN
@tosh2019 · in “Joe Armstrong has died”

Just re-watched his Strangeloop talk: “The mess we’re in”. Still so spot on. He will be dearly missed. [VIDEO]

RecommendsView on HN
@zaph0d_2019 · in “Joe Armstrong has died”

This is absolutely devastating! His talk "The Mess We're In" was one of those talks which were incredibly funny and informative at the same time. I absolutely lost it, when he told the story of the single comment his coworker put into the Erlang code.[1] Rest in peace! [1] [VIDEO]

Strongly recommendsView on HN
@leonroy2019 · in “John Carmack on QuakeWorld latency and business model (1996)”

> "The mess we're in" famous talk by joe amstrong For anyone else: [VIDEO] Fantastic watch, thanks for recommending. Sad to hear that Joe Armstrong passed away a few weeks ago.

Strongly recommendsView on HN
@camgunz2019 · in “Software Architecture Guide”

Agree, but people tend to stop at Fowler and live it as gospel. There is a profound richness in the different ways to think and talk about computers, engineering, and information science, far more wonderous than any one person can catalog. Read SICP, Knuth, Code Complete, Codd. Hell, just YouTube around. If your vocabulary is prescribed by literally one guy in a fedora, you gotta get out there. Might I suggest Joe Armstrong [1] :) [1] [VIDEO]

RecommendsView on HN
@svieira2021 · in “Tz: A Time Zone Helper”

Your travails reminds me of Joe Armstrong's talk _The Mess We're In_ where he talks about the pains he had getting his slides for the talk ready: [VIDEO]

@j-pb2021 · in “What memory model should Rust use?”

Thanks for the Paper! I'm looking forward to spend my weekend with it. Normally I'm a huge fan of a philosophy of backwards compatibility. Clojure has shown that it is possible with enough dedication. But I feel like it's a liability with the lineage you describe for Rust, the problem space was just too unexplored and vast, and the language has grown too large. Joe Armstrong has a joke in one of his keynotes [1], that after you've written the first version of something you should throw it away completely, because you didn't understand the problem at all when you wrote your solution, and now you understand it a bit better. A bit like how the web would be a much less ghastly ecosystem if we hadn't abandoned versioning for living documents which force every behaviour ever to interact, and god forbid be compatible, with one another, in a combinatorial hairball. Modern browsers would be less unwieldy if they just shipped 30 different rendering engines, one for each major revision, than ship a blob that purportedly is able to still render everyones Dogs website from the 90s (which is not true of course, it's just that nobody from the 90s is here to complain). It's a bit ironic that Rust fell into the same trap that caused the complexity that inspired its inception in the first place. Maybe once the major "features" for safe system programming were identified a new language (revision) should have started with only those features at its core. I fear that if such a language were to cr

@badsectoracula2021 · in “C64 OS: make a Commodore 64 feel fast and useful”

Luddite is someone who is opposed to new technology, which doesn't apply here as the sentiment isn't about being opposed to the new tech but about the new tech not being taken advantage of. The software we build today is "vastly" more powerful in the sense that, strictly speaking, you can do more stuff, but it is way less powerful - and often broken - than what it could be, considering what you can see being possible on older hardware and what seems to be done in modern hardware. Also it isn't really something that happens today, here is a nice (and funny) talk from Joe Armstrong on the topic from almost 8 years ago[0]. Though this sort of sentiment goes way back, e.g. Wirth's classic "Plea for lean software" article from 1995[1]. (Joe's talk is more about the broken part and IMO he misidentifies the issue being about trying to make things fast when the real issue -that he also mentions- is that pretty much nobody knows what is really going on with the system itself) [0] [VIDEO] [1] [LINK]

RecommendsView on HN
@mhitza2022 · in “Ask HN: How do you explain the sloppiness of modern software?”

For those that enjoyed the video you linked, Joe Armstrong's "The Mess We're In" talk could be interesting as well [VIDEO]

RecommendsView on HN
@mif2024 · in “Did we lose our way in making efficient software?”

Reminds me of some of the remarks Joe Armstrong made a while ago [1], and which I came across via another submission a couple of weeks ago (which escapes me). It’s a great talk about the physical limits of computers and computation. [1] [VIDEO]

RecommendsView on HN
@gavmor2025 · in “SaaS is just vendor lock-in with better branding”

The discovery tax is actually something like O(n log n), because you have to also search and also compare. It's part of The Mess We're In[0]. 0. [VIDEO]

@leoc2025 · in “How I fell in love with Erlang”

It isn't entirely true though. The original Erlang guys made Erlang: The Movie [LINK] and the sadly missed Joe Armstong made plenty of blog posts [LINK] and public appearances and expressed a number of strong opinions (though genially) [VIDEO] . Robert Virding's public profile is not as high, but he's by no means in hiding either. [LINK] — or indeed [LINK] )