Talks to Watch

The Language of the System - Rich Hickey

175K views · Feb 28, 2013 · 1:02:50 · 10 HN recommenders · 15 mentions · discussed 2013–2025

Rich Hickey's 2013 talk applies language-design thinking to whole systems, covering names, queues, data, failure, and the interfaces between programs. It ends with a call to action for building systems holistically.

Why Hacker News points people here: HN recommends it as a key Hickey talk on system design that changes how people think about distributed state and interfaces.

“it has really changed the way I look at distributed persistent storage.”HN comment, 2015

What Hacker News said 15

Strongly recommendsdivs1210Oct 2015

“it has really changed the way I look at distributed persistent storage.”

Changed how commenter views distributed persistent storage

Full comment

I came across this after watching Rich Hickey's The Language of The System [1], and it has really changed the way I look at distributed persistent storage. Any thoughts? [1] this video

in “Avout: Distributed State in Clojure” · view on HN
Strongly recommendselamjeOct 2021

“strongest programming speaker I've found to date.”

Among the talks that made things click

Full comment

Simple Made Easy ( link ) The Language of the System ( this video ) The Value of Values ( link ) All by Rich Hickey (Clojure creator) - strongest programming speaker I've found to date.

in “Ask HN: Programming talks that made something click for you?” · view on HN
RecommendshueypJul 2014

“Also might be of interest to watch Rich Hickey's 'Language of the System'.”

Breaks a system into data store, queue, and other parts

Full comment

This paper describes ideas around #2: link But yes, your database stores the status of a message. At this point you could drop every single message on your queue and have enough information to resend them. Each message could have its own resend (SLA) semantics. Amazon Simple Workflows is an implementation of this pattern: link . I've never used SWF but the docs are great food for thought. [edit] Also might be of interest to watch Rich Hickey's 'Language of the System'. ( this video -- there are a few versions of this talk, not sure if this is the exact viewing I saw). The talk is not really about queues, but he tries to break things up a bit. You need a data store, you need a queue, etc. As soon as a queue tries to have durable messages it is becoming a database and has all of the problems a database has to deal with. Instead you could keep data storage being solved by the data storage provider and let queues focus on passing messages. This raises the issue of how to deal with dropped messages, but that can be solved without durable queues (like that paper describes / SWF / etc).

RecommendsnickikDec 2014

“Some of the importent keynotes from some of the early conjs are really importent”

One of the key Clojure design talks

Full comment

I would suggest to you that Clojure has a very clear "the Clojure Way" I would say, more so then almost any other language. It goes beyond syntax to a pretty deep design level. Its not even all that unique to clojure, you could do 'the clojure way' in other languages, but they usally dont. Some of the importent keynotes from some of the early conjs are really importent, and they really went deep in the community, you can see it in almost every major library. Another commenter has mentioned the notion of 'simple' but thats not really all that clear. I not enougth of a writer to tell you about it, but I can give you the resources: - This classic got Clojure on the map for many people: Are We There Yet? - Rich Hickey www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey - Simple Made Easy - Rich Hickey - link - Simplicity Ain't Easy - Stuart Halloway - link - Ousterhout's Dichotomy Isn't (Part 2 of the Simplicity/Power/Focus Series) - Stuart Halloway - link - The Language of the System - Rich Hickey this video - Hammock Driven Development - Rich Hickey link In addition to these, there are many talk that are about people trying to run with these ideas. Datomic is a example of taking these ideas to the max, it really standas as a nice example. You can find others in talks by David Nolan for example, but there are tons of applied talks. - The Design of Datomic - Rich Hickey link

in “A farewell note to a programming language” · view on HN
RecommendsoskarthOct 2015

“An interesting and useful criticism would first engage with the strongest arguments of Rich Hickey”

Hickey's arguments behind Transit and edn

Full comment

The downvotes are because it comes across as a shallow, middlebrow dismissal. An interesting and useful criticism would first engage with the strongest arguments of Rich Hickey (creator of Transit and edn). If you find something in his Language of the System talk ( this video ) that you either (a) disagree with (b) think XML solves already, I and many others would certainly be interested in having that conversation. Note that this doesn't mean the exposition of "Why Transit" can't be better, but that calls for constructive criticism on how explain the ideas better, or a question made in qood faith. What it doesn't call for is a hostile reply saying in effect "pff, already been done already, stop reinventing the wheel".

in “Transit: JSON Data Interchange Format” · view on HN
RecommendscarljvOct 2017

“I think a good companion to understanding this better is Rich's talk on "The Language of the System”

Explains why Clojure favors simple universal data structures for systems

Full comment

I love this talk, but it does throw out a lot of complicated ideas somewhat loosely, so I get why reactions and interpretations are all over the place. I think a good companion to understanding this better is Rich's talk on "The Language of the System" ( this video ). I interpret his overarching thesis as this: Most "situated" programs are in the business of processing information according to complex and changing rules, in cooperation with other programs (i.e., a system). Many languages, though, are overly-concerned with how they represent data internally: classes, algebraic types, etc. This "parochialism", he calls it and "concretion" about how data aggregates should work, make them hard to adapt when the rules, data, or other parts of the system change, and make it hard for their programs to work in systems. At some point your Java class or Haskell ADT has to communicate its data to other programs that have no notion of these things. So you end up w/ a ton of surface area in your code with mappers and marshallers totally unrelated to the content of the data and purpose of the program. The idea behind Clojure is to provide easy access to simple, safe, and relatively universal structures for holding data, and a library of functions to manipulate those structures. Its "big picture" design bits are about providing semantics for multiple "programs" (from threads to services) in a system to operate on data robustly and reasonably (concurrency semantics, time and identity models, pe

in “Effective Programs: 10 Years of Clojure” · view on HN
Recommendsdunk010May 2019

“gave a talk with some very relevant points in this space”

Relevant points on system interfaces

Full comment

Rich Hickey, the creator of Clojure, gave a talk with some very relevant points in this space (The Language of the System): this video

in “Why We’re Switching to gRPC” · view on HN
RecommendsISO-morphismNov 2019

“I would recommend Rich Hickey's talk "The Language of the System”

System design above language choice

Full comment

> Clojure with the same exact constructs represented with more C-like syntax would, at the level the presentation speaks to, allow the same level of simplicity. I don't think this is true. I think it would be easier for "most people," but definitely not simpler . Easy meaning close at hand, simple meaning one strand, one braid, independent, less context necessary. Clojure syntax is the AST of the program, right there in front of you, in literal notation. There are fewer special cases, fewer moving parts interacting. C syntax requires spinning up a virtual machine in your mind and executing multiple statements. C is easier because we've already spent the time and effort to familiarize ourselves with it, but it has more complexity. Compare a 954 line ANTLR grammar for C [1] with a 261 line Clojure grammar [2]. > Cognitive overhead is lower working with a language that at least "looks like", what you're used to, and more developers know C-like languages, thus a language like Kotlin is "easier to approach" but necessarily "easier" in the way the presentation talks about. I would agree, using Rich's definitions of simple and easy, that Kotlin is easier for the majority of developers than Clojure. This follows immediately from the definition of easy. > This is a misapplication of the presentation really. It speaks to a level above selecting a language and is really about the design of systems. I would recommend Rich Hickey's talk "The Language of the System" [3]. The programming la

in “Keep your source code SIMPLE” · view on HN
RecommendsjmiskovicMar 2020

“Maybe check out the talks below and see if they don't enRich you as software engineer.”

Approach to software composition and systems

Full comment

I would say Clojure more than substantial returns of invested time. Not just the language itself, but also the wider approach to software composition, feature accretion vs backward compatibility, schema'd dynamic typing seem benefictial no matter what your development tools you use. Maybe check out the talks below and see if they don't enRich you as software engineer. this video The Language of the System link Design, Composition, and Performance link Spec-ulation link Maybe Not

in “Clojure: A Lisp that wants to spread” · view on HN
RecommendstravisjungrothJan 2022

“A related talk by Rich Hickey that I think you'd find interesting”

Related talk the commenter thinks readers would find interesting

Full comment

EDN has some really good ideas in it. Here's the main spec: link The Learn X in Y Minutes: link A related talk by Rich Hickey that I think you'd find interesting: this video For a schema, I'd start with what CUE has done. The idea of types that constrain down as a lattice + a separate default path really resonates with me. link

in “Ask HN: Who wants to collaborate?” · view on HN
Cites itzachroseAug 2013

“Rich Hickey recently gave one of his talks[1]”

Hickey's remark on hypermedia and APIs

Full comment

This is the perfect case for hypermedia in the RESTful sense. Rich Hickey recently gave one of his talks[1] where at one point he offhandedly mentioned that hypermedia (which gives URIs for related HTTP resources, with some link-like metadata) doesn't make sense for APIs because APIs don't have human "drivers" that can read the link text and make meaningful sense of what relations actually mean in the domain model. I think the genius of RESTful hypermedia, though, could really come through in a system like this. How else do you show relations? Last time I checked, RailsAdmin can't do much for you here except provide the resource ID as a link to that resource's table and row. As a benign example, imagine a guest-party admin page. What today would look like "Guest: 'Pitt, Brad', Party: '43'", tomorrow could be be "Guest: 'Pitt, Brad', Party: 'Pitt-Jolie'" with a link to '/parties/43'. I sense that developers (or at least Crockford[2]?) don't want JSON to become overloaded with XML equivalents like XML schemas and metaschemas and XSLT...but think of what we could do! [1] this video [2] link ?

in “Show HN: AdminJS, the Backend-Agnostic Administration Framework” · view on HN
Cites itescherizeNov 2015

Data as separate concern, state as fact

Full comment

Is there a functional-programming-first curriculum? Even though knowing OOP is important (if even just for the vocabulary), I wonder if a lot of pain could be sidestepped by talking about data as a separate concern than ADTs, and state as a fact rather than a place. [1] [1] this video

in “How to Design Classes [pdf]” · view on HN
Cites itgeospeckMay 2019

“He is advocating Queues”

Hickey advocates queues to decouple requester from receiver

Full comment

I've watched one of Rich Hickey's talk and at some point he brings that issue on the table, what happens when the receiver is not responding to the message. He is advocating Queues and one of his arguments is that Queues decoupling the requester from the receiver. So you don't really have to worry about things like this by using a queue. [1] this video

in “Alan Kay and Missing Messages” · view on HN
Cites itMrMikardo93Mar 2024

“Rich Hickey says something similar to the "pipeline-oriented programming" piece”

Hickey says something similar about pipeline-oriented programming

Full comment

IIRC Rich Hickey says something similar to the "pipeline-oriented programming" piece in his talk about systems: this video

Cites itpuredangerAug 2025

“It even has a big section explicitly about "flow" which contains the germs of core.async.flow.”

2013 talk laying out ideas that preceded core.async.flow

Full comment

Rich Hickey actually did a talk called "Language of the System" this video way back in 2013 before core.async was even created that lays out a lot of the ideas. It even has a big section explicitly about "flow" which contains the germs of core.async.flow.