Live data from Hacker News

Ask HN: Best talks of 2018?

news.ycombinator.com

171–180 of 205 posts

Re: Ask HN: Best talks of 2018?

#171

Lessons Learned Implementing Common Lisp with LLVM https://www.youtube.com/watch?v=mbdXeRBbgDM

Author here - thanks folks! I'm glad you liked it.

I will take this opportunity to thank you. Not only was your talk very interesting and informative, I also found it very inspiring. It really made me rethink what my goals are as a developer. Hope to see more from you.

Re: Ask HN: Best talks of 2018?

#172

Earlier quoted context omitted.

I haven't seen any of Rich's contributions to any major open source Haskell project. I can't really speak to his experiences with Haskell in proprietary code bases. Has he been a prolific Haskell contributor/hacker/user? From his talk he hasn't convinced me that he understands Haskell's type system. Not only does he misunderstand the contract given by `Maybe a` but he conflates `Either a b` with logical disjunction w…

I think this comment is a bit too harsh, and I would rather we just discuss the points he makes, not his credibility. The man has decades of experience in software system development and architecture, and has built one of the most popular programming languages in the world, as well as Datomic. If that hasn't given him the right to give his opinion during the keynote of a conference for the language he built, then I d…

> I think this comment is a bit too harsh, and I would rather we just discuss the points he makes, not his credibility.

I was trying to address the points he made but parent appealed to his authority which I haven't found convincing.

> To apply your own standards, have you been a prolific Clojure contributor/hacker/user? Have you contributed to any major open source Clojure projects?

I have been a user on a commercial project. It's a fine enough language. I wouldn't call myself an expert. And I haven't given a keynote address where I call out Clojure for getting things I don't understand completely wrong.

> Can you actually say what about Maybe/Either he got wrong because it seems like he understands it perfectly well, speaking as a Scala developer.

His point about Maybe was misguided at best. The function `a -> Maybe a` is a different function than `a -> a`. Despite his intuition that the latter provides a stronger guarantee and shouldn't break code, callers may be expecting the Functor instance that the `Maybe` provides and therefore is a breaking change.

His point about `Either a b` was perhaps further from the mark. It is not a data type that represent logical disjunction. That's what the logical connective, disjunction, is for. Haskell doesn't have union types to my knowledge. Either is not a connective. It's a BiFunctor. His point that it's not "associative" or "communtative" or what-have-you simply doesn't make sense. In fact he calls Either "malarky" or, charitably, a "misnomer."

To his credit he says he's not bashing on type systems, only Maybe and Either. But he later contradicts himself in his conclusions. He goes on about reverse and how "the categoric definition of that is almost information free." And then, "you almost always want your return types to be dependent on their argument..." So basically, dependent types? But again, "you wouldn't need some icky category language to talk about that."

So again, I think he has some surface knowledge of type systems but I don't think he understands type systems. I'm only a beginner at this stuff and his errors were difficult to digest. I think if he wanted to put down Maybe and Either he should've come with a loaded weapon.

He's had better talks to be sure! I just don't think this one was very good. And in my estimation was one of the poorer talks this year.

Re: Ask HN: Best talks of 2018?

#173
post #158

"Maybe Not" by Rich Hickey: https://www.youtube.com/watch?v=YR5WdGrpoug Another excellent talk by the creator of Clojure, and like the previous ones, relevant for all programmers.

After having code reviewed a lot of Haskell code and managing library dependencies, his talk makes a TON of sense. Some refactorings of code are basically just relaxation of requirements or tightening of return values - and Maybe is littered everywhere / changed everywhere. It just makes the the code hard to read and a lot of busy work - but to no real value. This is the same in Java code. Too many Optional / Nullabl…

[deleted]

Re: Ask HN: Best talks of 2018?

#174

Earlier quoted context omitted.

I think this comment is a bit too harsh, and I would rather we just discuss the points he makes, not his credibility. The man has decades of experience in software system development and architecture, and has built one of the most popular programming languages in the world, as well as Datomic. If that hasn't given him the right to give his opinion during the keynote of a conference for the language he built, then I d…

> I think this comment is a bit too harsh, and I would rather we just discuss the points he makes, not his credibility. I was trying to address the points he made but parent appealed to his authority which I haven't found convincing. > To apply your own standards, have you been a prolific Clojure contributor/hacker/user? Have you contributed to any major open source Clojure projects? I have been a user on a commercia…

> The function `a -> Maybe a` is a different function than `a -> a`. Despite his intuition that the latter provides a stronger guarantee and shouldn't break code, callers may be expecting the Functor instance that the `Maybe` provides and therefore is a breaking change.

I don't really follow that. How can it be a breaking change? Can you give an example?

Re: Ask HN: Best talks of 2018?

#175
post #81

Recent but great talk posted here, What Bodies Think About: Bioelectric Computation Outside the Nervous System [1] by Prof. Michael Levin. He talks about how long term low energy electrical networks between all cells in living organisms shape how the organism grows. I think what he talks about will be the future of medicine as it allows for an amazing degree of high level control over how animals grow. 1. https://www…

What an amazing talk. I do stream monitoring and have heard about planaria and have seen specimens. I did not know it is such an amazing creature. What a beautiful talk.

Re: Ask HN: Best talks of 2018?

#176

Earlier quoted context omitted.

I thought this was one of the notably bad talks this year. The whole premise that a function of Maybe a should be a function of a without an API change is neither intuitive to me nor really justified by Hickey. Different things are different. It's sad to see someone build such a wall around himself when faced by something (type theory) that he doesn't understand.

I agree. Further his exposition on `Either a b` was built on a lack of understanding of BiFunctors. The icing on the cake was his description of his own planned type theory. What he described was, as I could decipher from his completely ignorant ravings, a row-based polymorphic type system. However he passes off his insights as novel rather than acknowledging (or leveraging) the decades of research that have gone int…

Well, in his defense, type theory is supposed to make software engineering simpler, not more difficult. So if even he doesn't understand it, then how can we expect a random programmer to?

Re: Ask HN: Best talks of 2018?

#177
post #91

Earlier quoted context omitted.

His argument for spurious API breakage is strictly logically correct, but seems practically dubious to me. When have you ever had to unnecessarily break API compatibility because something you thought was an Option[T] result turned out to be really a T, always? Maybe I'm wrong and someone will post some convincing examples, but I currently don't see this as a problem that needs solving. Union Types don't compose stra…

> When have you ever had to unnecessarily break API compatibility because something you thought was an Option[T] result turned out to be really a T, always? That would be a breaking change. And should be, if you're into that sort of thing. The objection is to the opposite case: What was a T is now an Option[T]. I don't know Scala specifically, but that's a breaking change in every typechecked language I know. Rich is…

Nope, it's not the opposite case, I was just to lazy to spell it out. Which way around it is depends on whether it's a return value or parameter. Covariant vs contravariant. If it's a parameter an API change from T to Option[T] shouldn't break (you require less), whereas with a return type it's from Option[T] to T (you promise more).

Re: Ask HN: Best talks of 2018?

#178
Eugenia Cheng: "The Art of Logic: How to Make Sense in a World that Doesn't"

https://www.youtube.com/watch?v=YHZKX0H6cUE

I saw an other version at Scala Exchange but that one requires registration [1] and it's seems to be almost the same talk.

It's very impressive summary of her latest book ("The Art Of Logic") about the importance of abstract logic in every day life and how abstraction can help us to understand each other (together with emotions).

[1]: https://skillsmatter.com/skillscasts/12089-keynote-conveying...

Re: Ask HN: Best talks of 2018?

#179

Earlier quoted context omitted.

I think this comment is a bit too harsh, and I would rather we just discuss the points he makes, not his credibility. The man has decades of experience in software system development and architecture, and has built one of the most popular programming languages in the world, as well as Datomic. If that hasn't given him the right to give his opinion during the keynote of a conference for the language he built, then I d…

> I think this comment is a bit too harsh, and I would rather we just discuss the points he makes, not his credibility. I was trying to address the points he made but parent appealed to his authority which I haven't found convincing. > To apply your own standards, have you been a prolific Clojure contributor/hacker/user? Have you contributed to any major open source Clojure projects? I have been a user on a commercia…

>His point about `Either a b` was perhaps further from the mark. It is not a data type that represent logical disjunction. That's what the logical connective, disjunction, is for. Haskell doesn't have union types to my knowledge. Either is not a connective. It's a BiFunctor. His point that it's not "associative" or "communtative" or what-have-you simply doesn't make sense. In fact he calls Either "malarky" or, charitably, a "misnomer."

I don't agree with Hickey, but isn't there a connection between Either as a basic sum type and logical disjunction via the curry-howard correspondence?

And wouldn't "forall a b. Either a b" be the bifunctor, since it has a product type/product category as it's domain, while the result "Either X Y" (where X and Y are concrete types, not type variables) has the semantics of logical disjunction ie. it represents a type that is of type X or type Y?

Re: Ask HN: Best talks of 2018?

#180
post #47

"Maybe Not" by Rich Hickey: https://www.youtube.com/watch?v=YR5WdGrpoug Another excellent talk by the creator of Clojure, and like the previous ones, relevant for all programmers.

Was about to suggest this myself. I see a few that didn't like this and I can see why, but I thought it was interesting to listen too. Always interesting to hear someone knowledgeable argue for something you don't think you agree with. It is also interesting since Rich is in the quite unique position of handling a functional language with dynamic types (a dying breed in the functional space imo). I don't think Rich f…

I think dynamic FP programming is actually doing quite well these days. Apart from Clojure & ClojureScript, there's Erlang and Elixir, and the Racket community, and in addition it's become popular to write FP code in Javascript using Ramda, immutable.js & etc - not to mention the FP nature of React.
Post reply on HN