"The Mess We're In" by Joe Armstrong
Strange Loop Conference10 HN recommenders · recommended in 8 months, 2014-2025
398K views · 12 years ago · talk · evergreen
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.
1:01:39"Simple Made Easy" - Rich Hickey (2011)
Strange Loop Conference
219K views • 5 years ago
43:04"Stop Writing Dead Programs" by Jack Rusher (Strange Loop 2022)
Strange Loop Conference
468K views • 4 years ago
1:02:28Computer Science - A Guide for the Perplexed • Joe Armstrong • GOTO 2018
GOTO Conferences
66K views • 8 years ago
1:01:39"Simple Made Easy" - Rich Hickey (2011)
ClojureTV
434K views • 5 years ago
49:36Joe Armstrong - Keynote: The Forgotten Ideas in Computer Science - Code BEAM SF 2018
Code Sync
40K views • 8 years ago
1:16:55Joe Armstrong & Alan Kay - Joe Armstrong interviews Alan Kay
Erlang Solutions
76K views • 9 years ago
44:38Joe Armstrong & Jeremy Ruston - Intertwingling the Tiddlywiki with Erlang | Code Mesh LDN 18
Code Sync
11K views • 7 years ago
1:06:45Let's #TalkConcurrency Panel Discussion with Sir Tony Hoare, Joe Armstrong, and Carl Hewitt
Erlang Solutions
13K views • 7 years ago
1:10:23"Systems that run forever self-heal and scale" by Joe Armstrong (2013)
Strange Loop Conference
85K views • 5 years ago
34:55"Outperforming Imperative with Pure Functional Languages" by Richard Feldman
Strange Loop Conference
98K views • 5 years ago
42:31"Datafun: a functional query language" by Michael Arntzenius
Strange Loop Conference
9K views • 9 years ago
43:58"The Economics of Programming Languages" by Evan Czaplicki (Strange Loop 2023)
Strange Loop Conference
141K views • 3 years ago
45:31The Do's and Don'ts of Error Handling • Joe Armstrong • GOTO 2018
GOTO Conferences
74K views • 8 years ago
1:09:38"How to Think about Parallel Programming: Not!" - Guy L. Steele Jr. (Strange Loop 2010)
Strange Loop Conference
9K views • 5 years ago
47:41"Programming Should Eat Itself" by Nada Amin
Strange Loop Conference
43K views • 12 years ago
40:27"Finding bugs without running or even looking at code" by Jay Parlar
Strange Loop Conference
42K views • 7 years ago
41:06"Unison: a new distributed programming language" by Paul Chiusano
Strange Loop Conference
45K views • 7 years ago
39:58"Production Prolog" by Michael Hendricks
Strange Loop Conference
58K views • 12 years ago
45:03Keynote: The Last Hope for Scala's Infinity War - John A. De Goes
Scalapeño
36K views • 8 years ago
40:56"Liberating the Smalltalk lurking in C and Unix" by Stephen Kell
Strange Loop Conference
25K views • 12 years ago
20 comments from Hacker News
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) ▶ this video . Robert Virding's public profile is not as high, but he's by no means in hiding either. link — or indeed link )
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. ▶ this video
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] ▶ this video
For those that enjoyed the video you linked, Joe Armstrong's "The Mess We're In" talk could be interesting as well ▶ this video
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] ▶ this video [1] link
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
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: ▶ this video
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] ▶ this video
> "The mess we're in" famous talk by joe amstrong For anyone else: ▶ this video Fantastic watch, thanks for recommending. Sad to hear that Joe Armstrong passed away a few weeks ago.
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] ▶ this video
Just re-watched his Strangeloop talk: “The mess we’re in”. Still so spot on. He will be dearly missed. ▶ this video
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 ▶ this video link I hope his family and friends can find some comfort in how much he was appreciated and admired in the development community.
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: ▶ this video
Madness! Or actually really similar to an idea that Joe Armstrong presented in Strange Loop one time (just the idea no demo or anything) ▶ this video
Joe Armstrong gives a very good talk about ideas in the article in "The Mess We're In" (2014): ▶ this video
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] ▶ this video
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 ▶ this video
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
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] - ▶ this video [2] [2] - link (thanks for the link)
I think Mr. Armstrong would approve, given his comments near the end of ▶ this 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.