Why Clojure? - <AUTHOR> https://blog.cleancoder.com/uncle-bob/2019/08/22/WhyClojure.html <comment><USER4> Clojure is by far the best programming language I've ever used. Rich Hickey's Sermons On The Mount changed the game of programming once and for all. With Clojure you could finally have your Lisp cake and eat it. Witness the sheer chutzpah of the guy when he basically told Ruby devs they were doing it wrong at Rails Conf in 2012 ([https://www.youtube.com/watch?v=rI8tNMsozo0](https://www.youtube.com/watch?v=rI8tNMsozo0)).

<comment><USER5> > by far the best programming language I've ever used

Would love to hear why? What is that make Clojure such a good experience for you?

<comment><USER6> Not the grandparent, but I realized the other day that I'm at nine years of clojure, so...

What's made clojure so great, imo, is its unicorn status as a principled-yet- practical language. That "principled" part is not worthless---it means that a lot of great minds are drawn to it. Before react took over the world, clojure folks were already taking steps in that direction.

A lot of other things. The "sequence" as a core abstraction is very powerful. Immutable data structures by _default_ make functional programming perfomant and efficient.

Speaking of data structures, data structure literals have spoiled me for other languages. After Java, especially.

And none of this mentions clojure's lispiness. The ease of metaprogramming has allowed the community to build some of the best tooling out there, between CIDER for emacs, and Figwheel for the browser---oh, did I forget to mention clojurescript? Being able to reuse code on the front and backend is great for web applications.

Clojure isn't "everything." I think I'd still benefit from learning Haskell, APL, and Forth, and I wouldn't mind knowing Ruby and js a bit better. And I'll probably be dragged back to Python and R if I keep doing maths.

But if someone asked me which single language would probably do the most for them professionally, I'd say clojure. It's the language people start startups so they can use it.

<comment><USER7> What is GUI programming like in Clojure? What libraries exist, and what paradigms are used? E.g. is it more like React or is it more like Gtk/Qt?

<comment><USER8> There's a really good UI framework for Clojure (not ClojureScript) called seesaw. If I recall correctly it was swing, but it's a very nice data focused, functional library. It really works well with the Clojure philosophy and interactive development. It's also VERY complete.

There are downsides, however. The UIs that it creates definitely look like Swing apps. I.e. ugly at least on Linux. Also, the up to date documentation is difficult to find, I'll like to it here when I get home. The GitHub-linked docs work fine, but they do miss a few features.

</comment></comment></comment></comment></comment><comment><USER9> Can anyone give a pro/cons analysis of a ML variant versus of a Lisp variant. Let's say F# versus Clojure?

One of the general arguments in Lisp vs the world is that lisp is more concise. F# is really concise. It has datastructures as intrinsic part of the language syntax (just like Clojure, i.e in F# [|,,,|] is an array and in Clojure [...] is a vector, so more or less the same thing). Furthermore, the type inferences concierges the developer through the regular bureaucracy involved with strong type systems so effortlessly that you seldom notice it ... unless your code does not compile, in which case it's wrong somewhere and you need to fix it (which you needed to do anyway).

Ok, so for the sake of the argument, let's say the syntax is equally light for F# and Clojure, and their support for immutability is in the same ballpark. And let's remove the argument "a type system is an encumbrance" because that will only lead to situation specific debates - one side will say that massive refactorings are a pita without types, and the other side responds that in Clojure you can use data schemas and should have unit tests anyway. And those discussions never lead anywhere conclusive.

So, besides the above mentioned topics, is there anything general one can say of the distinctive advantages of these two languages in specific situations, including how their two different ecosystems and runtimes affect the calculus?

I suppose it's extremely rare to have experts who have participated in any large scale industrial developments with both of the languages, but if there are, it would be really nice to hear their opinion. And the things I listed as "outside of the discussion" might actually be critical, who knows...

<comment><USER10> My previous startup (CircleCI) was written in Clojure, my current one (Darklang) is written in OCaml. I decided not to use Clojure again because it's not statically typed, and my number one frustration when I coded in the CircleCI codebase was that it was very very hard to know what shape a value had, and whether it could be null.

OCaml certainly has a lot of flaws, and is not nearly as "nice" a language as clojure, but the productivity of static typing (in the statically typed functional language sense, not the C++/Java sense) is huge. Knowing you can do a big refactor and the type system has your back is massive.

We sponsored core.typed to add types to Clojure, but there were flaws at the time (they have have been fixed since), and we didn't end up sticking with it.

So Clojure I wouldn't use again. OCaml I would, despite having significant flaws (every language has significant flaws).

<comment><USER9> Thanks so much! This was exactly the sort of industrial benchmark I was after.

Am I correct in summarizing your experience as:

The possible encumbrance caused by types at prototyping phase is paid back several times when refactoring a production codebase?

<comment><USER10> Hmm, I think it's more that types make it possible to refactor without fear, both at the prototyping phase (when you refactor so much, I had 800 lines of python before that that I was afraid to touch) and later.

</comment></comment></comment></comment><comment><USER11> The response to "but is it slow" is pretty disappointingly bad.

> No. Clojure is not slow. Oh, look, it's not C. It's not assembler. If > nanoseconds are your concern than you probably don't want Clojure in your > innermost loops. You also probably don't want Java, or C#. But 99.9% of the > software we write nowadays has no need of nanosecond performance. I've built > a real time, GUI based, animated space war game using Clojure. I could keep > the frame rates up in the high 20s even with hundreds of objects on the > screen. Clojure is not slow.

If you're going to respond to this question at least provide _some_ comparison maybe.

But otherwise that anecdote of "I could keep the frame rates up in the high 20s even with hundreds of objects on the screen." absolutely screams _extremely slow_. High 20s FPS with hundreds of objects is incredibly bad on the surface of things. Maybe it's closures fault, maybe it isn't and is instead the fault of whatever was doing the drawing. But it's not a good look either way if that's the only data point that can be provided.

Similarly the IDE/dynamic type question seems to have missed the main downside of dynamic languages - lack of good IDE & other tooling support. How well are things auto-completed for me? How well does the IDE warn I've made a type error _before_ I've gone through a long compile & test iteration loop? How well do linters or other things work, or is there some aspect of LISP that means this is just not an issue like it is in other languages?

<comment><USER12> The biggest thing keeping me from ever seriously learning Clojure is the JVM. Slow startup time means I'd never use Clojure for "scripts", and I certainly don't want to have to manage the JVM in production scenarios, so when would I use Clojure? If there was a native version that could produce static binaries like Go/Nim/Rust I'd be much more interested to learn it.

<comment><USER13> By contrast, one principal reason I started learning Clojure was ClojureScript. Making stuff that can run in the browser or as a browser extension is awesome for cross-platform compatibility.

<comment><USER14> If you like "functional and runs on the JVM" you might like ScalaJS too. It's a mature transpiler, and the community has rallied to ensure that all the important libraries compile both to the JVM and to JS.

</comment></comment></comment></comment><comment><USER15> > 1\. Economy of expression

Funny, this list is the same one I use as to why I'm so annoyed with Clojure right now.

I inherited a mission-critical Clojure ML library my team uses for it's primary business goals. It was written 4 years ago by a research scientist- who quit 3 years ago. We know what it's supposed to do. We know that it seems to do the job well. We just can't understand the code well enough to be certain of what it's doing or how it's doing it. If this thing breaks or stops working, we're screwed.

The problem is that the author, like most of us, found great joy in writing very few characters to express very big ideas. Clojure let him do that to an extreme degree. And I'm sure if you were sitting beside the author, with him explaining these dense expressions, you would be enlightened at the elegance and beauty of this language.

Sadly, I was not.

I'm sure Clojure is a lovely language. But it lets you write a Voynich manuscript that compiles.

<comment><USER16> This is why I like python and C, almost impossible to layer in multiple layers of opaqueness with them. You can almost always deconstruct what the original person was trying to do, whether they were successful or not.

<comment><USER17> Hahahahah. The inheritors of my python code who are not my future self would beg to differ. I have so many opaque patterns that are vital and yet purely conventional it hurts. They will miss the intention and go off and do something else to solve a similar problem and now we have two patterns.

</comment></comment></comment><comment><USER18> A little bit off-topic, but I'm really confused that, why people on HN like Clojure and hate JavaScript? I didn't have any analytical data but it's very obvious already to anyone who read HN often. Are they possibly be the same crowd or just independent groups of people?

For me, Clojure and JavaScript (at least for modern React community) are similar when it comes to usage: Dynamic typing with Hash-map centric modeling, use functions to compose thing but mostly without monadic patterns. The methodology in the Clojure community has an official name: "It's just data". This methodology works, and have it's own pros and cons. The obvious pro is people can write generic functions without poking hundreds of nominal types, interfaces and type classes.

The only big difference I see is macro, but Clojure community also doesn't recommend writing macros unless you have to. There are also protocols and types, but they're not encouraged to poke around, it's still map-first recommended across the community.

There are very few language communities follow the "It's just data patterns". From Java to Python to ML, people mostly modeling things with fixed-property model, instead of just untyped maps, unless they have to.

For Lisps, I don't see map-centric approach is that stressed. Scheme might be still list-centric, Common Lisp is more diversed when it comes to approaches.

Why people hate JavaScript so much? And why people speak highly of Clojure? It's just about inconsistent details, or about the whole design itself? Is there any important point I missed?

<comment><USER19> I don't hate any language myself, only the codebases I have to deal with, but Clojure is very different from Javascript in its support for immutability, such that if you want to update values you have to use atoms, agents etc. This goes a long way towards making up for the lack of typing when trying to understand peoples code.

Some people also find the lack of random syntactical noise in Lisp style syntax preferable.

</comment></comment><comment><USER20> Has anyone done both elm and clojure script for Web work? Which did you prefer, which had the best tooling etc?

I need to learn Web, as mucj as I don't want to, and love clojure and fp. Also figwheel looks awesome, but how hard is it to setup.

I also think maybe to really get the best out of clojure script you also need to learn react??

I'm not sure this is the case with elm.

Any other non js alternatives?

<comment><USER21> I have about two years of professional experience working with ClojureScript, and about three years professional experience working with Elm.

There's almost no comparison.

Elm compiles much more quickly.

Elm produces much more performant code.

Elm enables you to write software that works reliably much more quickly because type errors happen at compile time, rather than at runtime like in ClojureScript.

ClojureScript's error messages are at times incomprehensible. Elm's error messages are best in class.

Elm is far easier to learn than ClojureScript, and you're right — you _do_ need to know React if you're writing a non-trivial ClojureScript application.

Elm is criticised for not allowing a synchronous IO escape hatch. This is a pretty bad criticism I think. Being able to guarantee where effects _won't_ happen is a pretty great thing. Any effects work and/or JS interop can be done with ports. Ports work just fine.

Elm is also criticised for denying the user a lot of "power features" like typeclasses. I find it mildly annoying sometimes that I don't have everything I want, but I understand the trade-off. This is to make the language more accessible to your average JavaScript developer who has never tried anything from this family of languages. And I sure as hell don't find it annoying enough to want to drop the type-checking compiler.

</comment></comment><comment><USER22> Can someone explain me why they always (OK let's say almost always) use math formulas to show what you can do with a programming language ?

I'm a desktop application programmer, not a mathematician. I don't need to print the first 25 squares of integers or Fibonacci whatever. In fact I think the hardest math I did at work was using modulo to get even and odd numbers ...

Show me how you parse a csv file, how do you connect to webservices or retrieve data from a database, show me how to do a simple GUI, show me something useful for the common dev.

I'll judge your ultimate programming language on these menial tasks that comprise 99.9% of my programming time.

<comment><USER23> Extracting two columns out of a excel sheet:

         (->> (d/load-workbook file "Questionnaire.xlsx")
           (d/select-sheet "Sheet1")
           (d/select-columns {:A :item :B :price}))

<comment><USER22> Now we're talking. It would probably take 20+ lines of C# to do the same thing.

How do you manage errors? What happens if Questionnaire.xlsx or Sheet1 doesn't exist ?

<comment><USER24> > How do you manage errors?

It becomes unwieldy like every other language.

> What happens if Questionnaire.xlsx or Sheet1 doesn't exist ?

Runtime exception.

I've seen too much Clojure code (and this goes for every language where error handling is optional - Hi Javascript!) just skip error handling and focus on "happy path".

And as demonised as Java's checked exceptions are, they at least forced error handling to be thought of.

<comment><USER23> Or you could use: [https://github.com/adambard/failjure](https://github.com/adambard/failjure)

Ya'll underestimate the power of a programming language to create a programming language. Just replace the arrow with `ok->>`

</comment></comment></comment></comment></comment><comment><USER21> Clojure is one of the better dynamic languages.

The rub however is that GHC can check the consistency of my software faster than I or my colleagues will ever be able to, and programmer time is expensive.

So that's why _not_ Clojure.

<comment><USER25> > and programmer time is expensive

That's why you need to spend 3 years learning Haskell? I feel that's the right amount of years for an average Joe programmer to reach meaningful productivity with the language. Well, maybe I'm exaggerating, maybe it's just two years. Plus/minus another year to learn and understand compiler pragmas.

<comment><USER21> Hey, I won't deny that it takes a relatively long time to learn Haskell to a standard where you're comfortably writing web applications with it.

I'm not sure how that's a rebuttal to my point though.

I run a startup. I've already put the time in to learn the technology. I've learned other technologies too. This one happens to be the one I find the cheapest (now) to write. Did it take my employees a long time to learn Haskell? Maybe! But I didn't pay for that. They learned the technology for whatever reason, and I'm seeing far better returns on my investment than I think I would have if I hired a bunch of Clojure developers. My previous full- time gig was at a Clojure startup. Their pace is pretty atrocious compared to the pace of my current team.

<comment><USER25> Alright, jokes aside, let's not get into "measuring dicks" and argue which one is better. I know Clojure, and I know some Haskell. I love both. They both have their strengths and weaknesses. To be honest - I always find things in one that I wish existed in another and vice versa.

But your simple dismissal of Clojure (even though seem to be an educated one) has no merits. Don't feel bitter because Clojure is growing in popularity (in relative terms) and Haskell seems stagnated. Haskell is an older language and has had its ups and downs, and I think it will be fine. Clojure as well - <USER2> matter how aggressively haskellers would evangelize against it, it will continue to grow steadily. Think of it as a gateway drug into Haskell. I know people who jumped that way, and I know people who went the other way - <USER3> Haskell to Clojure.

To me, it is like using headphones - some prefer wired ones, some people enjoy wireless, even though audio quality suffers, wireless gives them a lot of freedom and might be viewed as a "more practical choice." To that though, proponents of wired might say: "what if the battery dies?". It is an endless and quite pointless debate. So let's concur: Haskell is great, and Clojure is fantastic too.

<comment><USER21> > But your simple dismissal of Clojure has no merits.

I believe it has an impact on my business' bottom-line. Saving money in business is a merit.

> Don't feel bitter because Clojure is growing in popularity and Haskell seems > stagnated.

That… was an odd take. I'm not sure what gave you the impression that I would be bitter about Clojure growing in popularity (not that I think it is, anyway). I have nothing invested in Clojure not being a popular language, and the idea that Haskell has stagnated is a little hilarious.

> Haskell is great, and Clojure is fantastic too.

Again, I have never denied Clojure's merits. My position is pretty simple — I have found it cheaper to build Internet software businesses with Haskell than with Clojure.

</comment></comment></comment></comment></comment><comment><USER26> This is all nice and exciting until you start to 1) Debug code, the high density of clojure code means that this is really painful. 2) Read code you wrote a while back. The high density of clojure code means that this is really painful.

<comment><USER27> looks like you don't know FP

pure functions are completely separate to every other parts of your software, they are very readable and easy to debug

* edit: don't write functions longer than a few lines

<comment><USER25> This. I've been using Clojure for a few years. Only once I had to actually use a debugger. Just out of curiosity.

</comment></comment></comment><comment><USER28> I played around with Closure for a while to learn its cost/benefits. It is basically the love child of Lisp, Haskell and Java. So it introduces nothing new to the world. However it is certainly an interesting mix that some developers like. And Rich Hickey is an entertaining speaker/presenter/seller of Clojure. Even if you don't care about Closure, watch his talks on YouTube.

<comment><USER21> Clojure has nothing at all to do with Haskell.

I can't think of two more opposed camps in programming.

<comment><USER29> You're right, one is a language with a data-structure-centric approach to problem solving and an emphasis on pure transformations of immutable nested trees and lazy sequences, and the other one forces you to learn the word Monad.

Edit: Joking aside, I do think you're right in terms of the ideological foundations and organizational structures of the two languages (clojure's emphasis on practicality, curation and evolution of the core library+language by a single BDFL, compared to haskell's origins in PL research and democratic design/maintainence), but in practice I think a lot of that comes out in the wash--dynamicism vs. static typing is definitely a huge difference, but there's a lot more to language design and the material practice of building software than whether your compiler reads type signatures, and I think that along those axes, especially when compared to other mainstream programing languages/ecosystems, clojure and haskell end up being pretty close.

<comment><USER21> Your flippant comment is not constructive, nor is it very accurate in my experience.

The last Clojure team I worked with decided to add "rop" to our project. The documentation in this library seems to go to great lengths to avoid using the word "monad", despite the fact that the entire idea being encouraged by this library is monadic composition, but specialised to the Either monad. I mean come on, this library even takes its bind operator from Haskell.

These Clojure programmers were not Haskellers. They were just as indoctrinated as any other Clojurists and probably would have made the same flippant comment that you did.

And yet, here we are.

> clojure and haskell end up being pretty close.

In terms of the cost of building a software business, this has not been my experience. In my experience, the cost of building software at a scale beyond trivial is higher with Clojure than it is with Haskell.

<comment><USER29> I'm not sure I follow your complaint about "rop" (which is a library I'm not familiar with), and I suppose my jokiness obscured the point I was trying to make, so I'll try reiterating, since it seems like you're talking past it (I will also try to address the points you raise).

First, to be clear, haskell's type system is powerful and interesting and useful, and clojure's lack of good static analysis tools IMO represents a serious [comparative] deficiency in the ecosystem (and spec is obviously no substitute). I don't think that it will ever be possible for clojure to get even close to the sort of compile-time checking/guarantees that haskell offers, nor do I think clojure is particularly well-suited for the powerful higher-level abstractions that you see in e.g. lens or recursion-schemes (or, honestly, even Control.Traversable). My personal experience (both as a hobbyist and professionally) has been that there are some practical advantages from clojure's dynamism such that it probably makes sense (in a cost/benefit sense) to eschew static typing in some/many circumstances, but I really only have anecdotal evidence plus some intuition backing that up.

That aside, the point I was trying to get at was that both haskell and clojure encourage you to build complex data representations out of simple, easy to understand, composable, persistent structures, and then build up computations by composing pure transformations on them. Additionally, both languages have reasonable concurrency models/primitives, good tools for creating expressive DSLs (if that's your thing), and powerful interactive development environments. I, personally, find all of these features to be incredibly important for effectively developing software--they shape in a very real way the processes I use to plan and write and debug code--and most languages in common use today lack at least a couple of them (some languages have none of them, in fact).

<comment><USER21> Ok, thank you for clarifying.

Frankly, it's not often I hear a rational argument like this in a typical Haskell vs Clojure debate. Usually I just hear zealotry and a refusal to address Clojure's shortcomings, just like in the Robert Martin blog post. In fact come to think of it, many of the other comments on this thread which are replies to criticisms of Clojure are along the lines of "well, maybe you just didn't try hard enough. Maybe you failed. It's not the system that failed. Clojure is too perfect to fail."

This kind of rhetoric is frighteningly similar to that used in multi-level marketing.

I won't deny Clojure's benefits. They _are_ there, and I did say in another comment that Clojure is one of the most sound dynamic languages. But I don't think everyone is honest like you were just now about its drawbacks. Robert Martin certainly isn't honest about it.

</comment></comment></comment></comment></comment></comment><comment><USER30> Having disagreed with Uncle Bob for years, now I'm starting to see some reasoning in his thoughts :) .

<comment><USER31> His book _Clean Code_ is pretty good. Not in the sense that everything is agreeable in it (though some not so great programmers would benefit themselves and those around them from following it religiously) and a decent chunk of it is covered much more briefly with one chapter of _The Practice of Programming_ but you can actually see the book as the artifact of a reasoning mind taking certain principles and articulating them. It lacks the usual polite qualifiers like "I think..." or "In my opinion..." or "Obviously not in all but in many cases generally speaking..." before every assertion which annoys some people. A fair number of his blog posts are like that too. Where Uncle Bob gets an unfair reputation is when people take things out of context from the larger works and (sometimes willfully) misinterpret them -- he doesn't say you should never ever have comments, for instance. Of course some of it is his own doing from occasional tweets that are by necessity of the medium less well thought out or conveyed.

</comment></comment><comment><USER32> My team owns a Clojure app, amongst a lot of other apps - my understanding is the current DRI (who inherited this app once the original one left for another org) doesn't like working in it though, and that has been the experience of other developers who have been recruited to the project over the past two years. Most developers I work with on a day to day basis don't have any interest in learning Clojure, and would rather work with Scala, the JVM language most heavily used within my org.

One of my teammates also has production ClojureScript experience, and called it the worst of both worlds (Clojure and JavaScript). The primary problem is it doesn't try to abstract away the DOM, the most typically problematic part of working with JS.

Just my own encounter with it so far - I haven't had the experience of writing production Clojure myself, but from what I've seen with the syntax, I'm still happily primarily writing JS so far when I'm not writing Python/Scala/etc.

<comment><USER33> Ive been doing various methods of js dev with tons of different framworks and traspilers for 20 years, nothing is more pleasant to work with than ClojureScript and re-frame once you learn it. It's the best of all the worlds, and the DOM is very abstracted away via React. State transition is a breeze with immutable data structs. Theres only 1 language to write, no JSX ugliness.

<comment><USER34> I have had a similar experience over the past 15 years. re-frame is absolutely wonderful.

<comment><USER35> +1

</comment></comment></comment></comment><comment><USER36> Here is my "Why Clojure?" blog post: [https://email@example.com/why- clojure-seriously-why-9f5e6...](https://firstname.lastname@example.com/why-clojure- seriously-why-9f5e6f24dc29)

</comment><comment><USER37> been jumping into clojure lately myself. after years of js fatigue I've been dying for a functional pairing to elixir on the backend. clojure is growing on me with its nice hot code reloading and macros. (babel is basicly an overgrown macro)

<comment><USER38> Are you using Clojure or Clojurescript?

<comment><USER39> Sounds like ClojureScript since they're also saying they use Elixir on the backend.

</comment></comment></comment><comment><USER40> > _I saw the CARs and CDRs and CADDADDRs and thought it was all just academic > baloney; interesting but not truly useful._

 _car_ and _cdr_ are accessors for the fields of a basic data-structure; nothing academic about that. The very origin of the names is rooted in _systems_ work, not academics.

 _(caddr x)_ provides a shorthand for (car (cdr (cdr x))), which is a pragmatic thing.

You know, like #(* % %) instead of (lambda (x) (* x x)).

<comment><USER41> i thought CAR and CDR were named after IBM (?) assembly language on an old machine.

[https://en.wikipedia.org/wiki/CAR_and_CDR](https://en.wikipedia.org/wiki/CAR_and_CDR)

<comment><USER40> That's right; and that's a systems programming origin, not academics.

</comment></comment></comment><comment><USER42> The most annoying phrase was "less code, less time, less...". Uncle Bob thought us to be explicit, help the reader understand the code and be verbose with the variables etc. Now he loves a Syntax that says #(25 % %)... Aaaalright, try to get a new company member understand a big code base with this massive oneliners. I doubt that this is the right language for enterprise projects.

<comment><USER23> Here's the fundamental thing to understand. Especially if you are new to Lisp:

The lines are more concise. That also means you will need _more_ time per line to read the code.

Especially in Java, you can skip over so much boiler plate code, you kinda feel you are reading code fast.

Not so with Lisp. You need some familiarity with it and you will need to adapt to a line just having more stuff to understand in it.

Also, you can tune this using libraries as many things are a la carte.

</comment></comment><comment><USER43> " _Economy of Expression. [..] It requires fewer lines. It require fewer characters. It require fewer hours. It requires fewer mental gymnastics. So, here, for your entertainment, is the program that prints the first 25 squares of integers._ "

        (println (take 25 (map #(* % %) (range))))

And in APL[1], iota 25 is the first 25 integers, and feeding the same list into both sides of multiply squares the list, then turning it from a row to a column is tabling it. "Table the multiply-commute of the first 25 integers":

        ⍪×⍨⍳25

It's fewer lines, fewer characters, fewer hours, less syntax, less grammar, fewer symbols, fewer functions, less nesting, fewer mental gymnastics. Yet .. worse? Because those things you say both lead you towards codegolf, and implicitly have "fewer mental gymnastics" mean "I'm familiar with it already".

[1] [https://tryapl.org/?a=%u236A%D7%u2368%u237325&run](https://tryapl.org/?a=%u236A%D7%u2368%u237325&run)

</comment><comment><USER44> >> Robert C. Martin: _Smalltalk was also an image based language. Very few programmers have ever wrapped their minds around what that really meant. So, unfortunately, the language languished compared to all the text-file based languages._ <<

Where is the evidence?

Back in the 1990's IBM taught many of their consultants Smalltalk, and researched what made learning Smalltalk difficult —

 _Smalltalk, although recognized as a good platform for rapid prototyping and software reuse, is widely regarded as difficult to learn. Unlike learning a procedural language like Pascal or C, learning Smalltalk is dominated by browsing and code comprehension. Learners of Smalltalk typically experience a long, slow start-up phase in which they become familiar with the class hierarchy and object-oriented computational model but do little meaningful work (our colleague Dave Smith calls this "climbing the Smalltalk mountain")._

Programmers having to wrap their minds around the class hierarchy and OO was seen to be the problem.

</comment><comment><USER45> Clojure is impressive. It's likely what I'd be focusing on if Elixir didn't exist.

</comment><comment><USER46> I've been programming in Lisps on and off since the mid 80's, and I like Clojure the language, but in recent times as mostly as .Net programmer, I find the JVM and the surrounding Clojure tooling rather baroque. I find tutorials often cover Clojure/Lisp basics, but assume that you're coming from the Java world, so I had some difficulty getting what I consider basic workflows working as expected. If homoiconicity/macros/eval isn't an issue, I'm happy with F#/C# for the most part, but wouldn't mind having Clojure in the toolchest as well, but I'm not sure of the state and maintenance of Clojure.net.

<comment><USER35> You also have ClojureCLJ, although the tooling and libraries around aren't as nice as on the JVM (many libraries and even clojure.core functions directly interoperate with Java).

</comment></comment><comment><USER47> > Now let's compare that to the equivalent Java program:

      public class SquaresOfIntegers {
        public static void main(String[] args) {
          for (int i=0; i<25; i++)
            System.out.println(i*i);
        }
      }

> This is considerably more wordy, even if you don't count the enclosing > class.

First of all, Java is famously verbose. Nobody is impressed when a language is more concise than Java.

But even ignoring that, the comparison isn't representative. The enclosing class and 'main' function aren't needed for every additional fragment of code, so it probably shouldn't be counted here.

</comment><comment><USER48> I might be damaged from years of Java, but my main imagined issue with Clojure is the lack of a component system. Call it OCaml functors or OOP classes, but instantiating a component with replaceable components as input is what I personally need for large scale programming. To make things more concrete, let's say you are writing an integration to another system using HTTP. On the surface you'll have functions like `fetch-album-information` and they will internally use a HTTP client. How do you handle TLS configuration, HTTP connection pooling, etc. and make the function testable and lifecycle-managed to allow clean shutdown? The easy answer is to parameterise the function with another function that takes care of all of that. But that function will need to come from somewhere and I imagine threading these kind of functions explicitly through your entire program will make it less than palatable. The alternative of using globals that can be replaced in testing carry all the usual problems that global variables have but seems to be what many settle with judging from Clojure code on GitHub. It seems like others are feeling this pain and have invented band-aid solutions like [https://github.com/stuartsierra/component](https://github.com/stuartsierra/component) but this is something I think needs a first-class solution to encourage this kind of programming.

<comment><USER49> Why is a library a "band-aid", and why is it necessary to have such feature in the core language?

<comment><USER21> I think it's an argument about ergonomics. Threading state throughout your control flow is bad. Implicits like in Scala are bad. Global variables are worse. Something like a Reader monad is less bad.

</comment></comment></comment><comment><USER41> Amusingly, in an article about a lisp, he's got an unbalanced right parenthesis.

</comment><comment><USER50> Now we just need to wait 40 years for him to come around to the usefulness of static types..

</comment><comment><USER51> It just breaks my heart to see Uncle Bob seduced by a Java-family language right when C++ is getting increasingly fun. He suffered through the bad old days when C++ was only fast and powerful, and is now missing out on the good new days.

I guess he's happy. At least he isn't touting Haskell. Bon Voyage, Bob!

But somebody needs to break it to him that Lisp is not a functional language. Or, if it is, so is C++.

<comment><USER30> > that Lisp is not a functional language. Or, if it is, so is C++

You're missing the point. Everybody can write Fortran in any language.</comment></comment>


Why does a college degree cost so much? - <AUTHOR> http://www.cnbc.com/2015/06/16/why-college-costs-are-so-high-and-rising.html <comment><USER2> school's will continue to raise tuition and fees because students have access to an unlimited line of credit from the US government. with the increased tuition monies, schools become businesses, building out infrastructure and overhead, which must be sustained. if they know the loan money is always coming, why not raise prices? it makes perfect sense.

it would be interesting to see how institutions reacted if the 59% of students who receive loans dropped down to, say, 20%, or even better, 0%.

in my opinion, this would force schools to lower prices, down to "market value" (whatever that is, but certainly a lot lower than prices are now), and force market competition, which is ALWAYS a good thing.

<comment><USER3> That is such a backwards mindset. What should be the market value for education?

You should be able to get a degree if you are willing to put through the effort of getting it, not whether you can afford its "market price".

I agree that that subsidizing tuition fees might not be the best way to solve the problem. That is why I think that education should be provided mostly by public institutions, like here in Europe. That way, access is not a matter of how much money you have and offer is controlled by a democratic agreement on what kind of society we want to invest in.

</comment></comment><comment><USER4> I read the whole article looking for something about causality (the 'why'), but found little that addresses directly the _price_ of a college education. Sure, there were mentions of reduction in state funding, but those are subsidies for schools, and do not necessarily affect the price paid per student.

If the government were to give Starbucks a $2 subsidy for each coffee sold, would you expect Starbucks to charge $2 less per cup? So it goes with state funding.

It makes no sense to talk about why a price is X without considering both buyers and sellers. The cost base of sellers would undoubtedly affect how attractive an industry college education is to enter, but in the short term the price is determined by the supply/demand characteristics of the market. If a school spends more on a sports centre, it doesn't automatically get to charge students more. Perhaps they can attract more students (shifting the demand curve up) or perhaps they just have lots of money (due to high margins) and so can afford to spend on a new sports centre without specific rationale.

<comment><USER5> The price is going to depend on a lot of factors. For example, an education in civil engineering or medicine, with extensive equipment-heavy labs, is going to be more expensive than an education in history, which really only needs a library and maybe some field-trips if you want to get fancy.

I did try to come up with a BOTE number for the cost of a bare-bones college education, and the number I arrived at was $30,000.

[http://short-sharp.blogspot.ca/2016/07/how-much-does-it- cost...](http://short-sharp.blogspot.ca/2016/07/how-much-does-it-cost-to- provide.html)

<comment><USER6> But engineering colleges also tend to get more outside funding through private donors. The engineering colleges I attended had their respective building fully remodeled through the donation of wealthy graduates of the college. Most of the computer labs were put together through industry donations. Also even in civil engineering you would be surprised how little lab courses are provided in undergrad... most of it is pen and paper work or maybe computer simulations which cost little extra.

</comment></comment></comment><comment><USER7> Demand and supply. It's that simple. The education you get from a "top" college isn't better than the education you get from an "average" college. They are using the same text books and teaching the same material. However having a "top" college name on your CV gives you an edge in the job market. Whether that edge actually is worth the money you pay is questionable though.

<comment><USER7> By the way the reason why we know that the education you get at a "top" college isn't better, has been shown by looking at students who were accepted to "top" colleges but instead chose to go to a local college instead; and comparing the long term earnings etc. outcome. There were no differences. In other words, people do well based on their abilities. Not whether they go to college A or B.

</comment></comment><comment><USER8> > Why does a college degree cost so much in USA?

FTFY

Not excluding the fact that some private institutions (and even some public ones) in other contries charge a considerable tuition as well, but that usually is handled differently (fee reduction, scholarships, etc) than in the USA (long-term loans).

</comment><comment><USER9> Good post. I was surprised at the depth of this study given who it was published by.

<comment><USER10> Agreed, this is the best summary article I have ever read on the economic trends in US higher ed. One conclusion seems to be that at the non-elite schools like URI, my local state university, traditional liberal arts education will get starved into obscurity because it doesn't train students for a career. Learning how to think and write clearly and do scholarly research will no longer be an important part of a college education.

<comment><USER11> Which is sad. In part, society has rewarded those who don't have training, particularly in non-technical subjects. How many political advisors and policy folk have political science degrees?</comment></comment></comment>


Blazor WebAssembly 3.2.0 now available - <AUTHOR> https://devblogs.microsoft.com/aspnet/blazor-webassembly-3-2-0-now-available/ <comment><USER2> I have been playing around with Blazor WebAssembly since its preview.

Personally among with Blazor Server which I also use, I feel Blazormost enjoyable web development experience I've dealt with to date. At least I don't feel like I'm pulling my hair out...</comment>


James Dyson: The Art of Engineering [video] - <AUTHOR> http://mitworld.mit.edu/video/362/ Great talk on how engineers should be artists and artists should be engineers. <comment><USER2> James Dyson on the late late show:

<http://www.youtube.com/watch?v=K3z-5vgCmbU>

</comment><comment><USER2> He built 5126 prototype cyclonic vacuum cleaners over a period of more than 2 year !?!?! Omg

</comment><comment><USER3> I'm 13 minutes into it and I can tell you, it's going to be a long night.</comment>


Study: An aspect of language looks to be hardwired in our brains - <AUTHOR> http://qz.com/529865/study-a-fascinating-aspect-of-language-looks-to-be-biologically-hardwired-in-our-brains/ <comment><USER2> As a reader of the article kindly submitted here who speaks and reads multiple human languages from more than one language family, I'm not convinced that this article passes the linguist's or polyglot's smell test. The sample size reported in the article is wholly inadequate for showing that there is a real effect here. That the underlying study was reported in a rather minor journal is a further indication that there isn't any real-world significance behind the statistical significance claimed by the researchers. For good background reading on why you shouldn't look merely to statistical significance claims for evaluating research on human subjects like this, see the articles by Uri Simonsohn[1] and his statistically astute co-authors, who have identified phenomena called "researcher degrees of freedom" (there are a lot of researcher degrees of freedom here) and "p-hacking" (a news release that mentions "more accurately than by random chance" is almost always a sign of p-hacking) that allow many weak, underpowered studies of human behavior to be published in journals with poor statistical skills among the editorial staff.

[1] [http://opim.wharton.upenn.edu/~uws/](http://opim.wharton.upenn.edu/~uws/)

[http://www.p-curve.com/](http://www.p-curve.com/)

<comment><USER3> > That the underlying study was reported in a rather minor journal

Cognition is one of the top journals in cognitive science. Definitely not a minor journal for this kind of work, and plenty of their reviewers are statistically competent. So my prior would not be that the stats here are bogus.

I share your skepticism of their result about more synesthetic people being more able to guess the meanings of foreign words. The effect size there looks tiny, the motivation is a bunch of hand-waving, and I wouldn't be surprised if it doesn't replicate.

On the other hand I'm inclined to believe their result that people can guess the meanings of certain foreign certain words with above-chance accuracy (about 60% for big vs. small). It's just a version of the well-replicated bouba/kiki effect[1], plus the idea that this can influence words in a language, which doesn't seem far-fetched at all.

What I'm most concerned about is that people might be picking up on similarities between words beyond what the authors identify as "cognates". The sample languages are Albanian, Dutch, Gujarati, Indonesian, Korean, Mandarin, Romanian, Tamil, Turkish, and Yoruba. 4 of those are Indo-European and might have obscure etymological relations that show up as a few overlapping letters.

[1] [https://en.wikipedia.org/wiki/Bouba/kiki_effect](https://en.wikipedia.org/wiki/Bouba/kiki_effect)

</comment></comment><comment><USER4> The article makes some claims about childhood language learning:

 _But some researchers argue that synesthesia, which appears in 4% of the general population, is actually an exaggerated manifestation of associations we all make from an early age—an ability most of us lose over time, and one that may help explain why children are so good at picking up other languages._

I clicked through to the linked paper, and I could find no evidence that synesthesia provided any specific, significant advantages during childhood language acquisition.

Now, other research supports that children _do_ have real advantages when it comes to learning accents, and that they may have lesser advantages when learning grammar. But beyond that, the evidence becomes controversial. And adults who are socially and professionally immersed for, say, 5 years will often acquire a very solid command of a new language, especially if they're also voracious readers.

In general, English-language media often overrates the ease with which children learn languages[1], and it's insufficiently critical about scientific theories which claim to explain this advantage.

[1] Trying to raise bilingual children, for example, can be surprisingly challenging unless you live in a bilingual society.

<comment><USER5> > Now, other research supports that children do have real advantages when it > comes to learning accents

Childhood seems to be the only time when people can acquire certain new phonemes, in fact. Japanese speakers cannot properly learn to distinguish English /l/ and /r/ in later life. Other phonological distinctions are also difficult to learn in later life: tones, for instance.

<comment><USER6> >Japanese speakers cannot properly learn to distinguish English /l/ and /r/ in later life

Not sure I agree with the absoluteness of "cannot" here as I've successfully taught a few Japanese (and a Korean!) to properly enunciate the /l/-based sounds from English. It's simply training your brain to have two new pieces of muscle memory with regard to tongue movement. Learning the Japanese /r/ sound is the same process, although we have it a bit easier than they have it. :)

The fact that they try to approximate the English /l/ sounds using their roof- of-mouth-tongue-flicking /r/ sound is a failure of how English is taught in their schools. Every Japanese I've spoken to said their English courses in school had no focus on pronunciation, only on reading/writing, and none of their teachers were native English speakers.

As far as tones go, I've been living in Taiwan for about six months and I'm no closer to being able to hear them in everyday speech. I can pronounce them decently though, according to a friend here.

<comment><USER5> > taught a few Japanese (and a Korean!) to properly enunciate the /l/-based > sounds from English

You can teach people the physical motions of producing the sound, but that's not the same as acquiring the phoneme. They will have to consciously produce the /l/ and /r/ sounds and will still not be able to distinguish them when listening.

<comment><USER7> Is there a reason for being unable to tell the difference between "r" and "l" that makes them special?

Otherwise, as an italian, I have gone through the motions of learning to

* distinguishing long and short vowels in english. Ship vs sheep took me a looong time.

* going from ~7 vowels in italian to 14 in hungarian

* learning a few more consonant sounds in both hungarian, spanish, and english (I still suck at "h")

while I would agree they all still require conscious effort for me to produce them, distinguishing them is not a major issue with enough practice.

<comment><USER8> Again, the "cannot" here is probably imprecise. In Japanese, r and l exist as a single sound, making differentiation difficult for the average Japanese speaker in other languages. The original research by a Japanese linguist into this phenomenon in the 70s suggested it was impossible because of the way phoneme and allophone acquisition happens in childhood. But this claim had been mitigated by subsequent research that suggests it is context dependent, as well as less certainty about phoneme vs. allophone distinctions.

</comment></comment></comment></comment></comment></comment><comment><USER9> The main problem with the nativist hypothesis is that it's breaching Occam's razor rule. Is there a simpler explanation than being hardwired with information, which would be a fairly complicated thing to explain, considering what we know of the brain today? Yes, there is: languages are related and sound symbolism could be passed from language to language, or the perfectly reasonnable explanation offered by Christine Cuskley at the end of the article. In the world we live in, some set of sounds are associated to small animals, other to big animals.

Nativist hypothesizes suffer from a lack of imagination in looking for alternative explanations. I cannot explain it? Must be innate! Or, children do it? Must be innate!

Cognitive research points to a much more promising explanation: we are really good at learning, and we can learn abstract concepts pretty quickly, even as very young children. See Stanislas Dehaene's work for instance.

Abstracting concepts for big and small from our environment and associating sounds with it is much more plausible than passing around information about abstract concepts in genes through natural selection based on random genetic mutations.

<comment><USER10> _That's the danger of Occam's razor and of simple answers. "Simplicity" is often a hiding place for our biases. We reach the conclusion we want to reach and then call it simple._ \--Plaza Garabaldi

I'm not saying you're wrong, I'm saying that I don't actually agree with you that brains being hardwired with information is that hard to explain.

<comment><USER9> Great, I want to know more about it. Do you have some references on that?

<comment><USER11> Try interpreting the observation of animals & humans through a lens of their behavior being similar given certain contexts.

<comment><USER9> I don't want to solve a riddle here, but I am genuinely interested in the evidence supporting the nativist hypothesis in this context, especially on how you'd pass abstract information through genes. Do you have any reference, a good scientific paper that could be an entry point?

</comment></comment></comment></comment></comment><comment><USER12> This recent publication about evidence for a proposed model for basic grammatical processing in the neocortex, was also fascinating: [http://www.pnas.org/content/112/37/11732.long](http://www.pnas.org/content/112/37/11732.long)

 _An architecture for encoding sentence meaning in left mid-superior temporal cortex_

        Human brains flexibly combine the meanings of words to compose
        structured thoughts. For example, by combining the meanings of
        "bite," "dog," and "man," we can think about a dog biting a man,
        or a man biting a dog. Here, in two functional magnetic resonance
        imaging (fMRI) experiments using multivoxel pattern
        analysis (MVPA), we identify a region of left mid-superior
        temporal cortex (lmSTC) that flexibly encodes "who did what to
        whom" in visually presented sentences. We find that lmSTC
        represents the current values of abstract semantic
        variables ("Who did it?" and "To whom was it done?") in distinct
        subregions. Experiment 1 first identifies a broad region of lmSTC
        whose activity patterns (i) facilitate decoding of
        structure-dependent sentence meaning ("Who did what to whom?")
        and (ii) predict affect-related amygdala responses that depend on
        this information (e.g., "the baby kicked the grandfather"
        vs. "the grandfather kicked the baby"). Experiment 2 then
        identifies distinct, but neighboring, subregions of lmSTC whose
        activity patterns carry information about the identity of the
        current "agent" ("Who did it?") and the current "patient" ("To
        whom was it done?"). These neighboring subregions lie along the
        upper bank of the superior temporal sulcus and the lateral bank
        of the superior temporal gyrus, respectively. At a high level,
        these regions may function like topographically defined data
        registers, encoding the fluctuating values of abstract semantic
        variables. This functional architecture, which in key respects
        resembles that of a classical computer, may play a critical role
        in enabling humans to flexibly generate complex thoughts.

</comment><comment><USER13> Here's a fascinating documentary on the phenomenon:

[http://www.youtube.com/watch?v=-gwXJsWHupg](http://www.youtube.com/watch?v=-gwXJsWHupg)

</comment><comment><USER14> I would have thought all living creatures with ears would assign the same meaning to loud/quiet or long/short sounds (i.e. loud sounds are more important as they signify a big predator, or a large object running/falling nearby. Small sound just confirm confirm 2 twigs collided when moved etc). With this common basis for sound, I don't think it is too suprising that our use of vocalisation relate in some way at the very basic level across languages.

</comment><comment><USER15> Half the languages in the list are branches off the Indo-European tree. I have a hard time believing this is a result of "language hardware" in the brain as opposed to a much simpler explanation like the shared heritage of the words.

They don't seem to have controlled for native language; E.g. Dutch has a lot of similarities with English...

</comment><comment><USER16> The reason I thought ca-chook meant small is because it's fairly difficult to say. When saying small vs big, there's a few incentives (physical, contextual, etc) to have one easier to say than another.

e.g. We have a big problem. We have a small problem.

<comment><USER17> I thought küçük ("coo-chook") sounded small because it reminded me of baby cooing.

I'm not really surprised by this result. Some words are imitative.

Probably words that are more imitative are evolutionarily selected to remain in human languages because their speakers find them easier to recall. To me that seems like a perfectly good explanation for the phenomena that has little to do with "hardwiring into our brains".

</comment></comment><comment><USER18> did they exclude esp?

</comment><comment><USER19> Sample size of 76....

<comment><USER20> What does that have to do with anything? Statistic significance has to do with confidence intervals and sample sizes at the same time, so even a small sample size with a large effect has statistical significance, but a very small effect at a large sample size might not.

<comment><USER21> Could you point to a good article or tutorial on statistical significance, sample size, confidence intervals etc? I'd like to know how to analyze experimental results myself.

<comment><USER22> Start here (and its references). [https://en.m.wikipedia.org/wiki/Statistical_hypothesis_testi...](https://en.m.wikipedia.org/wiki/Statistical_hypothesis_testing)</comment></comment></comment></comment>


Why Everyone Seems to Have Cancer - <AUTHOR> http://www.nytimes.com/2014/01/05/sunday-review/why-everyone-seems-to-have-cancer.html?pagewanted=1 <comment><USER2> Exactly why I am going to have my brain put into a robot body. An Adrienne Barbeaubot.</comment>


"I don't have a Facebook account and would like to request all personal data..." - <AUTHOR> https://www.facebook.com/help/103846099705922 <comment><USER2> somehow reminded about procedure of requesting your files from, at least in some aspects, the pre-computer age incarnation of FB : [https://www.fbi.gov/services/records- management/foipa/reques...](https://www.fbi.gov/services/records- management/foipa/requesting-fbi-records)

I mean it is is pretty easy to imagine that FBI functions these days may be contracted out to FB who would carry them out probably more efficiently :)

And another scary piece of imagination - watching/listening to Mark in front of the Congress commission, i basically felt like i'm witnessing Octavian in front of Senate from Rome ... The same situation of logic without moral restraints. The same mismatch between illusory and real power balances. Hail Augustus Caesar ... err ... the 50(or even high 40ies)-something President of US. And if we're lucky, there will be another after him...

</comment><comment><USER3> You have to enable JS to see the form. It looks like this:

Please provide us with the following information and we'll follow up. Alternatively, you can email firstname.lastname@example.com

Full name: ________

Country of residence: ________

Email: ________

Confirm your email address: ________

Please summarize the type of information you'd like to find: ________

Please note that all fields are required in order for us to process your request. We reserve the right to request further information where a request is incomplete or inaccurate.

By submitting this notice, you represent that all of the information you submit is true and accurate.

[ ] I agree

<comment><USER4> The next step is:

Hi,

We've received your request for information about your personal data, but since there's no Facebook account associated with the email address from which you're writing, you'll need to send us a response directly from the email address that's listed on the account you'd like information about. ...

<comment><USER5> That is stupid.

I no longer have a Facebook account or even the email account that the Facebook account was tied to.

They still have data on me though.

<comment><USER6> Maybe this requirement is necessary so that people do not request info about other people.

</comment></comment></comment></comment><comment><USER7> I would be horrified if they have any data on me give I have never had an account, but I expect it is there all the same.

<comment><USER8> Yes -- Sadly this was "confirmed" this week when Zuckerberg said "In general we collect data on people who are not signed up for Facebook for security purposes,"... "We need to know when somebody is trying to repeatedly access our services,"[0]

When a congressmen asked about collecting data on non-users and building "shadow profiles"

> Zuckerberg said he was not familiar with the "shadow profiles" term

[0]: [https://www.bloomberg.com/news/articles/2018-04-11/zuckerber...](https://www.bloomberg.com/news/articles/2018-04-11/zuckerberg- says-facebook-collects-internet-data-on-non-users)

<comment><USER9> Right - you'd want to use a fingerprinting technique (collecting data) to identify machines for rate limiting (security, read: intrusion detection) purposes.

Almost every API of any consequence does this, and it was done as a defensive tactic to reduce costs/load/outages caused by spammers, ddos attacks, crawlers, etc etc etc.

Not sure at what point access logs with cookie data in them becomes a "shadow profile"

<comment><USER10> The "shadow profile" scandal has to do with Facebook's records of your visits to other pages that embed a Like button.

<comment><USER9> Well, right, the embed is hosting on facebook servers, and like I said, they collect access logs... So they are necessarily "collecting information on non- users" if they implement any sort of rate limiting based on fingerprinting for non-users... Which is more or less industry standard...

Not saying any of this is how things _should be_, it's just a little bizarre to make it seem like some sort of stealthy data harvesting scheme.

</comment></comment></comment></comment></comment><comment><USER11> My suspicion of Facebook is so strong I do wonder if this is not some honeypot in itself.

</comment><comment><USER12> Is it time to start creating shadows for Facebook to track of people that don't exist and don't have facebook accounts?

</comment><comment><USER13> What happens if I fill in the name of someone who doesn't have Facebook and isn't me?

<comment><USER3> That poor soul will get an unsolicited email from Facebook that will make them sad.

<comment><USER13> Obviously I put in an email address that I control.</comment></comment></comment>


Three Uber security managers resign after CEO criticizes practices - <AUTHOR> https://www.reuters.com/article/us-uber-executives/three-uber-security-managers-resign-after-ceo-criticizes-practices-idUSKBN1DV5SD?il=0 <comment><USER2> I wonder when Dara (CEO) will start being held accountable for Uber. So far his message has been, "That was them, not me". If he is sincere, he should ask the managers of Uber to share all the dirty laundry that they know. Then, he should disclose it publicly and get ahead of it. That for me would qualify as "that was them, not me".

He has been there 3 months, but there are 8 years of scandals built into Uber's culture before he joined. I expect Uber to be on the front page of HN for years to come. That can't be the right PR strategy.

He has to get ahead of it or he will lose credibility with the drip, drip, drip of bad news.

<comment><USER3> He released the information about the security failure (which occurred a year before he was hired) and fired 3 security managers because of it.

He just issued a new company culture statement (with massive employee participation) that eliminates the prior version's language that encouraged jerks, and includes the statement "We do the right thing".

He's been there 3 months. What else do you expect him to do? It takes time to acclimate to a new company. A CEO really needs to learn the staff, meet as many employees and customers as possible, and soak all this in before they start making big decisions. Being a CEO is never a "shoot first, aim later" type of job.

<comment><USER4> He didn't fire 3 security managers. They resigned. That may seem academic, but I'm sure it wasn't for the people involved. If they want good publicity from firing people... fire them. If people resign I just assume it was because they got a better job (I've had a coworker pushed out this way -- the CEO just got another company to give him a better offer).

If you want to avoid bad publicity from 'fired' being in the headline, you also avoid the good publicity.

<comment><USER5> Did either of you read the story?

 _Uber last week said it fired its chief security officer, Joe Sullivan, over his role in the 2016 data breach, which compromised data belonging to 57 million customers and about 600,000 drivers. The resignations Friday came amid mounting frustration within Uber's security team over Sullivan's dismissal and the company's handling of the public disclosure of the breach._

So he fired the CSO, and then those reporting to Sullivan resigned ( _The departures include most of Sullivan's direct reports._ ).

<comment><USER6> >"So he fired the CSO, and then those reporting to Sullivan resigned "

Which is not the same thing as actually firing 4 people.

Did you read the parents comment?

<comment><USER5> Yeah, but it is pretty important given the context. He did fire the person directly responsible.

</comment></comment></comment></comment></comment></comment><comment><USER7> >Uber's general counsel, Tony West, on Wednesday sent a note to employees, which was seen by Reuters, saying that human surveillance of individuals would no longer be tolerated.

The fact that this even had to be said is sickening on so many levels.

<comment><USER8> This has been an issue at Uber for many years. Google 'Uber god view' and the scandals that came from that one.

</comment></comment><comment><USER9> _Sullivan in August told Reuters that his security team totaled around 500 employees._

Google says Uber has more than 12,000 employees. Uber is not a typical company, but how do other tech companies compare?

<comment><USER3> They probably have proportionately far fewer security employees, just far more effective ones.

All snark aside, I'd guess that the vast amount of Uber security staff's role is investigating driver fraud. Uber grew so immensely fast because they offered compelling sign up inducements to drivers, and in lots of cases those were easy to game. It's why Uber got caught "fingerprinting" iPhones by Apple so they could detect whether the same phone was being used to sign up for multiple driver accounts to double dip the signup bonus programs.

<comment><USER10> >All snark aside, I'd guess that the vast amount of Uber security staff's role is investigating driver fraud.

I thought most companies separate out pure infosec from anti-fraud? Some orgs may house both under the bubble of risk management but there's a big difference between a security engineer and an anti-fraud analyst.

<comment><USER11> Since the third person mentioned in the article was "Jeff Jones, who handled physical security", I'm assuming Uber lumped anything possibly related to "security" in one org. Which does seem peculiar.

<comment><USER12> You are correct. All things with even the vaguest hint of security and safety were lumped there. Antifraud, monitoring who touches which logs, being the sole provider of electronic evidence in all investigations, infosec, competitive information, investigating rapes, putting listening devices into the uber app .....very unorthodox.

</comment></comment></comment></comment></comment><comment><USER13> What is a chief of staff in a tech company?

<comment><USER14> My understanding: a masculine term for "executive assistant". Or: a technical secretary. Personal project manager.

<comment><USER15> This article from First Round Capital outlines the modern tech company approach: [http://firstround.com/review/why-you-need-two-chiefs-in- the-...](http://firstround.com/review/why-you-need-two-chiefs-in-the- executive-office/)

Tl;dr - CoS stands in for the CEO in meetings, fills her in on what's going on across the organization (or outside of it), and overall leverages her time. It's beyond someone who just does scheduling but short of being COO, which entails direct reports and accountability.

<comment><USER14> I guess. That squares with Pooja Ashok's resume, too.

</comment></comment></comment></comment><comment><USER6> >"The three managers who resigned were Pooja Ashok, chief of staff for Sullivan ..."

C-level execs have "Chiefs of Staff" at Uber? How bloated is that organization?

They were literally Chief of Staff to the Chief of Security.

EDIT: changed to gender-neutral pronoun.

<comment><USER16> "Chief of Staff" is valley-speak for secretary.

<comment><USER6> That's essentially what it is in Washington D.C which as far as I know is the origin of the title:

>"The White House Chief of Staff has traditionally been the highest-ranking employee of the White House. The chief of staff's position is a modern successor to the earlier role of the president's private secretary."[1]

[1] [https://en.wikipedia.org/wiki/White_House_Chief_of_Staff](https://en.wikipedia.org/wiki/White_House_Chief_of_Staff)

<comment><USER17> Yes, but remember cabinet members are called secretaries — it's right in their titles (e.g., Secretary of State). The President's Chief of Staff has enormous power.

<comment><USER18> _Sir Humphrey: Well briefly, sir, I am the Permanent Under Secretary of State, known as the Permanent Secretary. Woolley here is your Principal Private Secretary. I too have a Principal Private Secretary and he is the Principal Private Secretary to the Permanent Secretary. Directly responsible to me are ten Deputy Secretaries, 87 Under Secretaries and 219 Assistant Secretaries. Directly responsible to the Principal Private Secretaries are plain Private Secretaries, and the Prime Minister will be appointing two Parliamentary Under-Secretaries and you will be appointing your own Parliamentary Private Secretary._

 _Hacker: Can they all type?_

 _Sir Humphrey: None of us can type. Mrs Mackay types: she 's the secretary._

(Yes, it's a comedy show, but the titles are correct)

<comment><USER19> Yes Minister was a comedy show like HBO's Silicon Valley is a comedy show -- a farcical quasi-documentary

Yes, Minister was fed leaks from British government that became plotlines.

<comment><USER18> My favorite is the episode about the Channel Tunnel, in which the French security services plant a bomb to test the British security and gain a diplomatic gain. I thought that was completely ridiculous, just good idea for finishing up a good plot.

Thirty years after, when the official papers of the time were released, what do we discover..?

[https://www.theguardian.com/uk-news/2014/jan/03/french- bomb-...](https://www.theguardian.com/uk-news/2014/jan/03/french-bomb- london-1984-thatcher-mitterand)

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> Physical security, digital security and fraud prevention are separate fields. They may all have something to do with "security" but the goals are very different and as a result, the management structure needs to be different. If you fail to do so you will simply dilute the key objectives each of these fields deliver.

</comment><comment><USER21> It never fucking ends with this company, does it?

<comment><USER22> it ends every time i get out of the car and give my driver 5 stars. And then it begins again with me being picked up damn near any where i want to at any time in the bay area.

The scandals are for the company , the employees , and the gov to figure out.

As a user (and Im also guessing for the drivers) its one of the best companies out there. Reliable , efficient, high quality.

<comment><USER23> You assume too much. Uber might be good for the customer, but it is a total jerk to the driver.

Last scandal at my hometown, that is unlikely to reach the English speaking world, is as follows.

Our airport, which lays on federal grounds, grants a monopoly of transportation services to certain well established company. Not even city taxis are allowed in (they can drop passangers, but cannot pick up anyone else while they are on premises). Uber attitude towards this situation is the standard one, basically an extended middle finger to every law, institution or authority of the land.

The problem is that if airport security catches an unofficial taxi on premises, they call federal police, the car is taken to a seized and the driver cannot recover until he's paid a very considerable fine (think several months of blue collar wages). Uber strategy to deal with that is to swarm security, so they always catch someone, but the process to deal with the offender is very time consuming and all other Uber cars are free to do business while the guards are preocupied.

Uber will punish any driver that refuses to take airport calls with bad karma, and will "gratiuouly" pay for your fine... once (if you get caught twice, it is on you), but they will not pay you any wages while your car is locked in federal grounds (a time that is measured in weeks, not days). They will also not pay for any damages to the car itself, which unfortunatelly is a rampant problem in this country when vehicles end up under the custody of the government.

So, be very glad to have a car and a chauffeur at your fingertips beck and call, but please do not assume the driver is enjoying it as much as you do.

<comment><USER24> While this is unfair of Uber, this is a pretty insane situation. They impound your car for weeks for providing a service consensually? I think that's the real issue here.

</comment></comment></comment></comment><comment><USER25> "The three managers who resigned were Pooja Ashok, chief of staff for Sullivan;"

is it normal for a chief officer to has a chief of staff???

<comment><USER26> I don't know if you accept it as normal, but I've seen that in each of the four companies I've worked in. Sometimes the chief of staff at the VP level is not an engineer, but the chief of staff to CxO I've seen are usually engineers.</comment></comment>


IE6 effect in HTML5 - <AUTHOR> http://mrdoob.com/lab/javascript/effects/ie6/ <comment><USER2> Not realistic. The box moves smoothly and as fast as you move the mouse. Add some random pauses and glitches ;)

</comment><comment><USER3> I'm running on Ubuntu with a side-by-side MacOS X in a VM, and I couldn't help think "aahh...shit". Some habits die hard.

<comment><USER4> I'm glad I'm not the only one. I was worried for a minute, and then I thought "wait, I'm on Ubuntu. How did IE crash?"

</comment></comment><comment><USER5> Is it just me or everyone likes filling whole page with this thing? I always loved doing so.

<comment><USER6> ok go do <http://vimeo.com/7166047>

</comment></comment><comment><USER7> This is the culmination of HTML5 technology. It doesn't get any better than this.

<comment><USER8> Walked through and explained the code step by step: <http://times.jayliew.com/2010/10/07/ie6-effect-how-it-works/>

p.s. I know there's a lot of expert js hackers on HN far better than I am, this is just more for a beginner audience

</comment></comment><comment><USER9> In Chrome on OS X at least the cursor sometimes doesn't appear immediately when you leave the screen. Now that caused a little oh-shit moment. _How did it get out of the box?_

</comment><comment><USER10> if you bounce them across the screen from the top left it's just like after you win a game in windows solitaire

</comment><comment><USER11> just for fun i went there on my ipad and it also supports multitouch... mmm, a dozen of these suckers... so relaxing, reminds me of a simpler day...

</comment><comment><USER12> Ahh, not so good memories. I remember trying to make some sort of picture or pattern with the windows before the screen cleared in a few seconds.

</comment><comment><USER13> ROFL! Great job! This is something we should keep in favourites and show to our grandchildren.

My favourite HTML 5 site so far :)

</comment><comment><USER14> That's just mean.

And very, very funny.

</comment><comment><USER15> Mr.doob is amazing, everything he turns out leaves me a little wow-ed

</comment><comment><USER16> This almost makes me miss not having a composited desktop.

</comment><comment><USER17> I can have fun with this for hours. Addictive X-D

</comment><comment><USER18> more websites should re-contextualize computer misbehavior. it briefly worked in the human domain for gg allin.

</comment><comment> X-Istence Wow, that had me worried for a second ...

</comment><comment><USER19> performs insanely well on FF. even after doing it for like 60 seconds the performance never degrades.

<comment><USER20> I wouldn't expect it to degrade. This is using canvas - it's not creating a new copy of the image every time, but just painting that one image to the canvas.

The resource consumption is constant over time, so performance really shouldn't degrade.

</comment></comment><comment><USER21> Ahh, nostalgia.

</comment><comment><USER22> That's not a IE6 effect, that's a Win 95 to Win XP effect.

</comment><comment><USER23> Gah, that is stressful.</comment>


Markdress - Render any markdown URL - <AUTHOR> http://www.s-anand.net/blog/markdress/

<comment><USER2> Cool project. It looks like you need to adjust relative image sources so they will load.

<http://markdress.org/goo.gl/zTG1q>

<comment><USER3> Actually, I'd rather leave it to the author of the document, because it seems a tough problem to solve.

At <http://markdress.org/goo.gl/zTG1q>, for example, the image is linked to an absolute URL: /graphics/markdown/mt_textformat_menu.png. It's going to be a bit cumbersome to traverse through goo.gl and detect that this is actually at <http://daringfireball.net/>. Might be easier if authors either stuck to pure relative URLs, or full URLs with domains.

But that's just me passing the buck...

<comment><USER4> A quick workaround would be to add the `<base>` tag: <https://developer.mozilla.org/en/HTML/Element/base> to your generated HTML and have it point it to the target URL.

</comment></comment></comment><comment><USER5> IMO there's one missing from the list of alternatives: Markdrop (<http://www.markdrop.com/>) (<http://news.ycombinator.com/item?id=3089355>)

<comment><USER3> I've added it now. Thanks.

</comment></comment><comment><USER6> One cool little thing you could add is a javascript widget on the front page, where people could paste in their link to a markdown file, and have it automatically formatted as a Markdress link (or even redirect them to the markdress page).

ps. Thanks for the Pancake.io shoutout!

<comment><USER3> Added. Thanks for the suggestion!

</comment></comment><comment><USER7> Misread "Markdness"... Would have been equally fitting :)

</comment><comment><USER8> Doesn't work work HTTPS links. (eg: markdown text on github project pages).

<comment><USER2> Github renders markdown automatically anyway though.

</comment></comment><comment><USER9> Cool project! You can add simple caching for free in like a minute with CloudFlare (<https://www.cloudflare.com/>).

<comment><USER9> Why is this getting voted down? Is there something about cloudflare i don't know about? He said he hadn't implemented caching yet so I told him an easy way to do it...</comment></comment>


Ask HN: Any independent/startup-type co. that offer Lambda/Cloud Run-like svc? - <AUTHOR> <comment><USER2> what does your question mean?

I know the words but don't understand what you are trying to say.

<comment><AUTHOR> I am asking if there are any smaller/startup/independent companies that offer similar services to AWS Lambda/Google Cloud Run</comment></comment>


Account issue - <AUTHOR>

Help me plz my account is not registering <comment><USER2> From the guidelines:

> _Please don 't post on HN to ask or tell us something (e.g. to ask us > questions about Y Combinator, or to ask or complain about moderation). If > you want to say something to us, please send it to email@example.com._</comment>


Human Intelligence Has Declined Since Victorian Era, Research Suggests - <AUTHOR> http://www.huffingtonpost.com/2013/05/22/people-getting-dumber-human-intelligence-victoria-era_n_3293846.html

<comment><USER2> _Reaction time_?! Seriously?

In another article, intelligence tests taken in the 1940's (as they were being invented) were rescored to match today's metrics. The average person scored around 70. So we're all geniuses now, compared to then?</comment>


19th Century Moral Panic Over Paper Technology (2017) - <AUTHOR> https://slate.com/technology/2017/08/the-19th-century-moral-panic-over-paper-technology.html <comment><USER2> This reminds me of the destkop publishing revolution that started in the 1980's. Some dire predictions about the devaluation and trashification of printed material, from books to newsletters, and of the printing industry, now that anyone could relatively cheaply and easily print what they needed on their personal printer using the newfangled personal computer instead of having to take their work to a professional printer to have it printed for prices that were unaffordable for most individuals.

Now no one thinks much about them anymore, but personal printers were once new and considered to be a radical disruptive technology.

<comment><USER3> The predictions were 100 % correct. The rules and good practices of typography for the presentation for the presentation of written materials had been refined by scribes and printers over 3000 years. Generally, they would be followed, because the barrier to entry would be high, equipment would be expensive to buy and it would take long to learn its proper use. Consequently printed material would be expensive, and the buyer would expect decent presentation for their money.

Suddenly, Desktop Publishing as it was called, shows up, and people produce printed materials that looks as if someone hadn't even spent 2 weeks of learning the most basic conventions.

<comment><USER4> Most of those rules were driven by anything but practical concerns. Typography in Europe was dominated by "picket fence" black-letter scripts which emphasized the vertical strokes to the near exclusion of everything else, rendering the script difficult to read even for that subset of the population which read professionally. Newspapers until very recently were horrendous evenly-spaced columns of monotonous walls of text with barely any more formatting than punctuation. Until the modern era, graphic design and to some extent design in general focused on adding more and more minute details, as if the purpose of design was to demonstrate you cared by how much time it must have have taken to produce the thing by hand. The more details, regardless of their function, the more effort it must have taken and thus the more professional it must be. If you ever have the chance to take a history of graphic design course, you'll see it's basically culture driving it with little understanding or theory. It's not really a refinement created through 3000 years of scientific inquiry and we can place our trust in the traditions of skilled artisans who built this system for us. There really isn't a system until maybe around the turn of the century. It's basically just random bullshit and we're only just starting to figure things out more formally.

</comment></comment></comment><comment><USER5> Interesting. Intuitively I would expect one of the effects of the internet/computers/smartphones would be to further reduce illiteracy, since it is mostly text based, and it is more engaging to teenagers than books were.

That seems to be the case. Found some chart for France of illiteracy by birth year [1] [2]. There might be other factors but I kind of doubt that schools have improved much for generations born in the early 80s vs late 80s, while illiteracy dropped by about a third to half.

[1] [https://www.insee.fr/fr/statistiques/graphique/1281410/graph...](https://www.insee.fr/fr/statistiques/graphique/1281410/graphique1.jpg)

[2] [https://www.insee.fr/fr/statistiques/1281410](https://www.insee.fr/fr/statistiques/1281410)

</comment><comment><USER6> I sometimes work with old newspapers in bound volumes. It is immediately obvious when a newspaper switched to wood pulp, typically in the 1870s. The earlier editions are beautiful, the pages supple and in nearly as good condition as they were new. Then as soon as the switch occurs the pages are yellow and brittle. The challenge is to turn the page without it crumbling.

</comment><comment><USER7> The notion that media change society has been most compellingly been explored in Elizabeth Eisenstein's _The Printing Press as an Agent of Change_ (1979), itself strongly inspired by Marshall McLuhan's _The Gutenberg Galaxy_.

[https://www.worldcat.org/title/printing-press-as-an-agent- of...](https://www.worldcat.org/title/printing-press-as-an-agent-of-change- communications-and-cultural-transformations-in-early-modern-europe-volumes-i- and-ii/oclc/838139921)

The impact really cannot be overstated, though it's often more subtle (though deeper) than portrayed.

</comment><comment><USER8> And yet now every media outlet and pundit blames everything on the proliferation of fake news made possible because of easy access to sharing ideas. History does repeat itself.

<comment><USER9> Confusing the tool for the effect.

Advertisements and propaganda actually work that's why so much is spent on them. You can often exactly measure the effect. But blaming radio, TV, magazines, billboards, comic books or the social web is incorrect: it's not the medium it's the message that has an effect.

And the message needs to be a certain form. Generic pulp novels and shooter games clearly do not cause violence where other forms of messaging do. Witch burning, lynchings and demagogues clearly come from some style of message that can drive masses of people simultaneously.

<comment><USER10> > it's not the medium it's the message that has an effect.

Exactly.

Thousands of years ago Socrates was complaining about the invention of writing which would "create forgetfulness in the learners' souls, because they will not use their memories; they will trust to the external written characters and not remember of themselves".

Hundreds of years ago due to the invention of printing press "there was growing concern (...) that these cheap, plentiful books were seducing children into a life of crime and violence".

And today people worry about TV, video games, etc. - while at the same time holding books as the holy grail of knowledge.

All these are merely mediums for transfer of ideas. Blame the message, not the messenger.

</comment></comment></comment><comment><USER11> This is really interesting. Decentralizing information and knowledge has been a good thing for a long time :-)

</comment><comment><USER12> And now I eventually understand what "pulp fiction" means. Great article indeed.</comment>


Show HN: A Webpack loader that runs an arbitrary shell script on matching files - <AUTHOR> https://github.com/localjo/shell-loader <comment><AUTHOR> I made this Webpack loader a couple of months ago for a project where we wanted to use Webpack, but had some assets that needed to be built with a proprietary command line tool that didn't have an available Webpack loader. I recommend using dedicated Webpack loaders when possible, but this allows you to quickly convert existing shell-based build pipelines to Webpack without needed to create Webpack loaders first.</comment>


UniFi routers will send performance data back to Ubiquiti automatically - <AUTHOR> https://www.theregister.co.uk/2020/01/29/ubiquiti_data_collection_policy/ <comment><USER2> This issue is at least two months old, right?

The most recent discussion on HN that I found on this subject is at [https://news.ycombinator.com/item?id=21430997](https://news.ycombinator.com/item?id=21430997)

Has anything changed since then?

<comment><AUTHOR> I am aware of that, but this is new. I had to shorten the title as the original was too long, but it's in the article.

Update: according to the discussion on the Ubiquiti forums, you can indeed disable the most recent telemetry as well, but you have to manually provision some config changes (that Ubiquiti had not documented).

</comment></comment><comment><USER3> Are there any decent alternatives to Unifi APs or home switches and routers?

Willing to pay a modest premium, even.

<comment><USER4> For AP's, I've been happy with the TP-LINK EAP245's I bought. They're reasonably inexpensive, will do VLANs, and have controller software that's not too different from the Unifi stuff, but it's just for the AP's on the network.

</comment></comment><comment><USER5> How can that even fly with GDPR?

<comment><USER6> No personally identifiable data is collected, so the option can be opt-out by default. Not sure about not being able to disable it though.</comment></comment>


Ask HN: What's the next AI milestone? - <AUTHOR> For me, ever since Deep Blue has beaten Kasparov, Go has always been that "intractably large problem" that I would refer to when talking about things-AI-can't-do.<p>Now that our AI algorithms are capable of dealing with trees that have more nodes than atoms in the universe, what's the next concrete AI milestone that I can start bringing up at dinner parties? <comment><USER2> I still think the classic Turing test needs to be beaten. And not by 33% of the testers thinking the applicant is a barely literate and scatterbrained Russian teenager. No, it should be able to carry on a conversation indistinguishable from an educated, well spoken, English as first language speaking adult with curiosity and personality. Thereby fooling 100% of the testers.

Or barring that an AI that can perform valuable services that allow it to pay for its own server costs. Thereby making it grown up and gotten a job.

</comment><comment><USER3> Starcraft is a cool next step yet it kind of seems unfair in a way since the AI has distinct advantages in certain areas (namely, precision). A pro can play at close to 300APM but are those actions always 100% precise when moving the camera/etc? It seems like unless you level the playing field in this regard it may be hard to take a lot of value from the AI winning since it may develop strategies that rely heavily on its advantages in those areas. Maybe that is completely fine though, or doesn't actually matter if strategic decisions trump precision.

No Limit Poker is a pretty interesting problem, especially when it comes to reinforcement learning...can an AI learn to adapt to different play styles?

Both of these games raise an interesting question as it relates to how exploitable a reinforcement learning AI will be in games where high risk decisions have major impacts and there isn't perfect information. Will the AI learn to have a more overall conservative approach to guard against these plays or will it itself exploit them.

</comment><comment><USER4> AI that could blame the other AI for its own errors

</comment><comment><USER5> As far as Deepmind is concerned (obviously not the same as the next milestone for the field of AI) the next milestone will be playing Starcraft at a world class level [0].

0\. [https://twitter.com/deeplearning4j/status/706541229543071745](https://twitter.com/deeplearning4j/status/706541229543071745)

</comment><comment><USER6> Perhaps fully self-driving cars.

<comment><USER7> Stupid question: How does self-driving cars "learn"? Does it have to crash to learn _not_ to do whatever it did to not crash?

<comment><USER6> The definition of AI from Wikipedia:

""" Artificial intelligence (AI) is the intelligence exhibited by machines or software. It is also the name of the academic field of study which studies how to create computers and computer software that are capable of intelligent behavior. Major AI researchers and textbooks define this field as "the study and design of intelligent agents",[1] in which an intelligent agent is a system that perceives its environment and takes actions that maximize its chances of success.[2] John McCarthy, who coined the term in 1955,[3] defines it as "the science and engineering of making intelligent machines". """

I believe that creating and sustaining a self driving car fits those criteria.</comment></comment></comment>


Cordova/PhoneGap just got classified as a trojan by Sophos - <AUTHOR> http://www.sophos.com/en-us/threat-center/threat-analyses/viruses-and-spyware/Andr~Cova-A.aspx

<comment><AUTHOR> Just tried to do a download of a cloud built APK and was stopped by Sophos - confirmed on their site.

Kasperskey did the same thing at the end of March

</comment><comment><USER2> Why?

<comment><AUTHOR> I haven't got a clue why they classed it as a Trojan. I've tried it was a few PhoneGap/Cordova cloud builds and they all get blocked by Sophos.

Probably a false positive on their end</comment></comment>


The greatest joke ever told - lessons for pitching - <AUTHOR> http://thestartuptoolkit.com/blog/The_greatest_joke_ever_told/ <comment><USER2> A lesson to be learned is that execution is more important than content. You could listen to 1,000 people deliver that joke and it's likely no one would do it as well as Norm.

</comment><comment><USER3> The process of explaining something is very valuable. As a science fiction writer, when I tell someone a summary of a story I wrote, I can read in their expression or verbal "uh huhs" what's drawing them in and what's distraction from the heart of the matter.

As a business owner, the same process applies. I describe to them what I'm doing, and I can see the evaluation process at work in their face as to whether they get the value I'm trying to create or not. (Or put another way, if the value I'm explaining is actually valuable or not.)

In both cases, I may do nothing and let it fall the way the cards may and then hear their feedback, OR I may make adjustments in real-time as I read the listeners body language and use that as cues to feedback into my value proposition (visit my biz, read my story).

Comedians are masters at finding the heart of a dialog and adjusting (like jazz musicians) what they say to maximize the effect.

</comment><comment><AUTHOR> I'm really confused by some of the comments in this thread. People think the comedian - you know, the one telling the joke - is somehow supposed to be the entrepreneur. ( _edit:_ and now, thanks to a response to this comment, I realise that the author of the blog post thinks so too.)

He's not.

The person representing the entrepreneur in this parable is the show host, or the audience. The comedian is playing the role of the potential customer.

The lesson is to listen to the customer, because sometimes there's a huge payoff that can't be obtained in any other way.

That's the lesson I took away from this - anything else doesn't seem to make sense, but if you have a different opinion, I'm listening.

 _Edit - so I took away a completely different lesson._

<comment><USER4> You read the article wrong. The comedian represents the entrepreneur.

"Watching the joke, you can see Norm adjust based on what is resonating with the audience (you know, like moth names). You can't figure out what matters and course-correct if you rush through your pitch as a monologue"

<comment><AUTHOR> You're right. After going back and re-reading, that's what the author of the article is saying. So now I simply think he's got a really bad example, and is drawing the wrong lesson.

There are several lessons to learn, and to my way of thinking, it's all completely screwed, and I've learned something else.

Above all - be clear.

<comment><USER5> To be fair, the first paragraph after the video is pretty straight forward and very clear as to the point.

That being said, your interpretation of the video is an equally interesting look.

</comment></comment></comment></comment><comment><USER6> I think in general this is a good lesson for founders in all aspects.

Shutup for a bit and listen. You might like what you hear, or at least learn something.

</comment><comment><USER7> Good point -- it is hard not to want to punch the person in the face when they say something that seems so wrong, but letting them roll can be a good thing. Depending on how often they get a chance to talk to someone who has started a business, the learning experience may actually be very important for them, and you.

</comment><comment><USER8> The article:

1\. Demonstrate that tact is important with a seemingly elaborate joke.

2\. Recommend that you use the same tact when talking with clients/investors.

implicitly:

3\. Assume that your clients/investors are equally good listeners.

This is where it gets hard.

<comment><USER9> You can certainly benefit from being a good talker (the inverse of #3), but the broader point I was [trying to] make is more about your own ability to listen rather than the customer's.

When you tell someone your idea the first time, chances are high that they will misunderstand you. When that happens, founders' first impulse is to correct them. But you can get a lot of value by allowing that uncomfortable misunderstanding to linger for a bit while you listen.

 _(edited to clarify some verb ownership and improve sentence pacing)_

<comment><USER8> I agree with you. I just wanted to point out something you wrote yourself in your second note:

"In some situations, you won't have a chance to correct mis-understandings."

I think this is more important than to be in footnote. Its worth to listen patiently where you can expect to be listened to patiently. [1] Otherwise you should take initiative and perhaps politely interrupt and say something to distract from the misunderstanding. Arguing with customers is almost always a disaster.

[1]: Although you might want to know what the customer thinks even if you are sure you aren't making a sale. (edit: slight clarification note)

</comment></comment></comment><comment><USER10> The genius of Norm MacDonald as a performer is he doesn't let himself care what the audience thinks, and this gives him the confidence to act the way he does. Unfortunately, making people laugh and getting people to give you money are two very different things.

<comment><USER2> True, the are different, but both require confidence in what you're selling, whether it's a joke or product.

<comment><USER10> Yes, but investors are known for making quick judgements on teams, they don't have to sit through your presentation if you lose their attention. pg has written that he sometimes makes up his mind in YC interviews within the first minute. The audience in a late night studio has nowhere to go.

</comment></comment></comment><comment><USER11> I thought the post was going to be about how start up founders are like moths and how most investors are podiatrists with a light on. Then it didn't make any sense to me. Maybe I'm getting old or something

</comment><comment><USER12> wow this is a great insight....never thought of it like that..I often make the mistake of correcting people when they point out flaws!

<comment><USER9> Feel free to correct them once they stop talking, but let them get their initial braindump out of the way first. It's auditory gold!</comment></comment>