9 ms·
“The Mess We're In” by Joe Armstrong at Strange Loop [video]
- _asciiker_ 12y agothis is so true.. we already spend a lot more time fixing and tweaking code than actually creating.
- sergiotapia 12y agoWhat is this about? Edit: Strange Loop is a multi-disciplinary conference that aims to bring together the developers and thinkers building tomorrow's technology in fields such as emerging languages, alternative databases, concurrency, distributed systems, mobile development, and the web. Strange Loop was created in 2009 by software developer Alex Miller and is now run by a team of St. Louis-based friends and developers under Strange Loop LLC, a for-profit but not particularly profitable venture.
- trenchwarfare 12y agonew to coding, and volunteered for a couple shifts in exchange for entry. first conference ever. this was AWESOME! incredibly well run, and obv not about the $$ - but they freaking deserve all the success they get, financial and otherwise!
- anigbrowl 12y agoBloat.
- zaroth 12y ago"In the middle of the pattern matching algorithm, there was this single comment that read # and now for the tricky bit." (~10:40) At ~28:00 is he saying that the optimal computing device could operate 27 orders of magnitude more efficiently that what we use today? At ~36:00, finally something to make me sit up. "content addressable store".
- xpe 12y agoHe mentions these topics with regards to distributed hash tables: * https://en.wikipedia.org/wiki/Chord_(peer-to-peer) * https://en.wikipedia.org/wiki/Kademlia
- everettForth 12y agoThermodynamically speaking, a perfectly reversible computer which erases no bits (and creates no entropy) approaches zero watts per operation to run. Kurzweil has pointed out that one can think of the 10^15 state changes per second going on inside a 1Kg rock with no outside energy input as a computation device. Ok, so at 28 minutes, he's referring to some quantum mechanical lower bound to change a bit. I imagine the rock is using that really tiny amount of energy from the outside environment.
- signa11 12y ago> At ~36:00, finally something to make me sit up. "content addressable store". "content addressable store" or cam (content-addressable-memory) is pretty well-known in cpu-arch, n/w equipment etc. domains. hashtables are s/w counterparts :)
- readerrrr 12y agoWow this guy doesn't know what he is talking about. Just a bunch of numbers without any arguments. I had to stop watching when a laptop was compared to a black hole. I'm sure the laymen are impressed though.
- orbifold 12y agoI think you missed the point, that slide was about the theoretical limits of computation, it is a very weak upper bound that won't be achieved.
- raspasov 12y agoFYI this guy designed Erlang :)
- jacquesm 12y agoYour bio bit says: > Please comment if you downvote. Or even better; just comment. So here you go: you are utterly clueless, before you write comments like these do your homework or you will get downvoted a lot. Or even better; just don't comment. Until you've done your homework, that is. It just increases the noise and does not add to the conversation at all.
- mlvljr 12y agoWe are.
- timClicks 12y agoThis talk attempts to provide a strategy for reducing complexity within software. The whole talk is really valuable, but if you're short of time.. skip to 36:00. In a real hurry? Start at 44:17.
- rdtsc 12y agoGreat talk. Very light-hearted and entertaining. Always impressed by Joe. Programming since the 60s and still programming, still writing, giving talks. He is a great role model. I wish I would be programming and be just as excited about it when I am at his age.
- jacquesm 12y agoI wished I would be half that excited about it at my present age!
- deleted 12y ago[deleted]
- dmourati 12y agoI like his speaking style and appreciate the intro to Kademlia and Chord. This page has some visual representations: http://tutorials.jenkov.com/p2p/peer-routing-table.html http://tutorials.jenkov.com/p2p/peer-routing-table.html
- p1mrx 12y agoDuring the last minute of the talk, he says: "Computers are becoming a big environmental threat. They're using more energy than air traffic." Is this actually true? Sure, the average person spends a lot more time on a computer than in a plane, but still it seems crazy that they'd be comparable. Or at least the comparison isn't very relevant, because the Internet can significantly reduce people's need to travel.
- tcopeland 12y agoHow much energy is used by inefficient government systems that are running on old minicomputers and such? I bet government data centers have hundreds of old clunkers that could all be run on one modern rack of 1U boxes.
- adamnemecek 12y ago"Save the environment, code in C."
- corysama 12y agoYou are getting downvotes, but energy efficient computation has been a large driver in the recent upsurge in interest in C++.
- adamnemecek 12y agoWait C++ is has been getting more popular? I'm not complaining (I mostly like C++), I guess I just didn't get the memo.
- pjmlp 12y agoLets see. - Symbiam was coded in C++ - GCC moved to C++ - Clang and LLVM are done in C++ - Mac OS X drivers are written in Embedded C++ subset - Windows team is moving the kernel code to be C++ compilable - JPL is moving to C++ - AAA game studios have dropped C around PS3/XBox 360 timeframe - It is the only common language available in all major mobile OS SDKs
- habitue 12y agoSo, while in general I've enjoyed other things Joe Armstrong has written, I think this talk is pretty discombobulated and doesn't have a coherent narrative. Here are some of the problems Joe posed: - bugs in software like Open Office, Keynote, grunt - code not being commented - computers booting slowly - computers using too much energy - code being written for efficiency rather than readability He talks about distributed hash tables at the end. An interesting topic, definitely cool, but they have nothing to do with the problems he posed earlier. This seems more like a disconnected list of gripes, plus a completely unrelated list of things he currently finds neat to think about. Which is totally fine, but I don't think it makes a particularly great talk.
- jacquesm 12y agoI think it goes with the title of the talk. 'The Mess we're in' is not limited to any one of those items in particular but a total view when you add all of those up. Bugs, badly documented code, slow boot, energy consumption and hard to understand code all contribute to the mess we're in. And it's far from an exhaustive list.
- pjmlp 12y agoMany of those would be fixed if there was a real concern for quality with corresponding responsibility when things go wrong.
- jacquesm 12y agoI think the bigger issue is the existence of 'disclaimers'. Software production is the only branch of industry that I'm aware of that is capable of getting out from under manufacturing defect claims in that we state categorically (as an industry) that we have no responsibility, liability or even obligation to fix in case we ship a defective product. That really needs to change.
- RickHull 12y agoDisclaiming liability and such is an important F/OSS norm. Of course, proprietary software will improve on this (only) if forced to by competition. The omnipresence of EULAs is a much bigger problem, though. I think the F/OSS norms are better all around.
- grondilu 12y agoI totally agree with the "abolish names and places". Why can't I just write: $ cp hash://<somehash> . and have my computer do whatever it takes to retrieve a file with this hash and copy it on my disk?
- wpietri 12y agoBecause this blocks the very human needs for error-checking and maintaining awareness of context. It's not like you're going to type that in. You're going to copy and paste it from somewhere. So it's just as good to use http://releases.ubuntu.com/14.04.1/ubuntu-14.04.1-server-amd64.iso http://releases.ubuntu.com/14.04.1/ubuntu-14.04.1-server-amd... as hash://b4ed952f6693c42133f73936abcf86b8 In either case, your computer can do whatever it takes to get the file. With a useful URL, you'll have a reasonable notion about what's coming down and whether it matches your intentions. Without that, the very natural question is, "Did I get the thing I wanted?" For example, it would be easy to paste the wrong hash code. There are other benefits, like real-time binding. A hash is going to point to a particular sequence of bits. But you may not want a particular file, but rather the best current mapping from an idea to a file. E.g., if Ubuntu discovers a an issue with their released ISO, they can make a new one and replace what gets served up by the URL.
- deleted 12y ago[deleted]
- oh_sigh 12y agoYou can. > aria2c magnet:?xt=urn:btih:1e99d95f....
- grondilu 12y agoDidn't know about this. Thanks :-)
- lomnakkus 12y agoHow would you remember the hash? I guess one could have some sort of directory-like system for mapping human-memorable names to hashes...
- _prometheus 12y agoJoe and I are thinking similarly :D I'm going to dump some ideas here. --- # JRFC 27 - Hyper Modular Programming System (moving it over to https://github.com/jbenet/random-ideas/issues/27 https://github.com/jbenet/random-ideas/issues/27) Over the last six months I've crossed that dark threshold where the desire of building a programming language has become an appealing idea. Terrifyingly, I _might_ actually build this some day. Well, not a language, a programming _system_. The arguments behind its design are long and will be written up some day, but for now I'll just dump the central tenet and core ideas here. ## > Hyper Modularity - write symbols once ### An Illustration You open your editor and begin to write a function. The first thing you do is write the ([mandatory](https://code.google.com/p/go-wiki/wiki/CodeReviewComments#Doc_Comments) https://code.google.com/p/go-wiki/wiki/CodeReviewComments#Do...) [doc comment](http://golang.org/doc/effective_go.html#commentary http://golang.org/doc/effective_go.html#commentary) describing what it does, and the type signature (yes, static typing). As you write, [your editor suggests](http://npmsearch.com/?q=factorial http://npmsearch.com/?q=factorial) lists of functions [published to the web](npmjs.org) (public or private) that match what you're typing. One appears promising, you inspect it. The editor loads the code. If it is exactly what you were going to write. You select it, and you're done. If no result fits what you want, you continue to write the function implementation. You decompose the problem as much as possible, each time attempting to reuse existing functions. When done, you save it. The editor/compiler/system parses the text, analyzes + compresses the resulting ASG to try to find "the one way" to write the function. This representation is then content addressed, and a module consisting of the compresses representation, the source, and function metadata (doc string, author, version, etc) is published to the [(permanent) web](http://ipfs.io/ http://ipfs.io/), for everyone else to use. ### Important Ideas - exporting a symbol (functions, classes, constants, ...) is the unit of modularity (node) - system centered around writing _functions_ and writing them once (node) - stress interfaces, decomposition, abstraction, types (haskell) - use doc string + function signatures to suggest already published implementations (node, Go) - content address functions based on compressed representations - track version history of functions + dependents (in case there are bug fixes, etc). (node) - if a function has a bug, can crawl the code importing it and notify dependents of bugfix. (node, Go) - use static analysis to infer version numbers: `<interface>.<implementation>` (semver inspired) - when importing, you always bind to a version, but can choose to bind to `<interface>/<implementation>` or just `<interface>` - e.g. `factorial = import QmZGhvJiYdp9Q/QmZGhvJiYdp9Q` (though editors can soften the ugly hashes) (node + ipfs) - all modules (functions) are written and published to the (permanent) web (public or private) - when importing a function, you import using its content address, and bind it to an explicit local name (`foo = import <function path>` type of thing) - the registry of all functions is mounted locally and accessible in the filesystem (ipfs style) - _hyper modular_ means both to "very modular" and "modules are linked and on the web" Note: this system is not about the language, it is about the machinery and process around producing, publishing, finding, reusing, running, testing, maintaining, auditing, bugfixing, republishing, and understanding code. (It's more about _the process of programming_, than _expressing programs_). This means that the system only expresses constraints on language properties, and might work with modified versions of existing languages.
- thallukrish 12y agoIt is a very interesting talk. Though it might take a while for some one to connect the dots Joe has sprayed all over. Somewhat related to this, I have been annoyed by the way apps scatter information and have been working to find a way of managing the mess. http://productionjava.blogspot.in/2014/07/the-broken-web.html http://productionjava.blogspot.in/2014/07/the-broken-web.htm... and http://productionjava.blogspot.in/2014/08/coding-can-be-punishing-at-timeswith.html http://productionjava.blogspot.in/2014/08/coding-can-be-puni...
- serve_yay 12y agoI'm guessing this is about what a disaster it is to use software, still to this day, but I just can't deal with his storytelling style. Takes forever to say "OpenOffice has a shitty bug".
- garretraziel 12y agoWhile I agree that his talk is a little bit "disconnected", I think that it served its purpose when I am reading some "think big" discussion that is going on here. While his talk doesn't have one clear topic, it does deliver huge and interesting thoughts.
- lifeisstillgood 12y agoI am lucky enough to work in a "internal open source environment" - I can and do search the whole code base for a major Fortune 500 daily for pieces that fit my needs. And I often find them - but the process of getting it refactored to fit my exact needs (and so improving their code and the overall reduction in entropy) is mostly impossible - because of humans No one is really willing to change someone else's code without talking to them, agreeing, getting past thier "yes I have tests but if you change it then I don't really know ..." It's a fundamental problem - good well maintained tests help but this is cultural not technical problem.
- dcre 12y agoThis was definitely not one of the better talks of the conference (though I was embarrassed to say so given the way people [rightly] idolize Armstrong), so I highly recommend checking out the rest: https://www.youtube.com/channel/UC_QIfHvN9auy2CoOdSfMWDw/videos https://www.youtube.com/channel/UC_QIfHvN9auy2CoOdSfMWDw/vid...