From Rails to Elm and Haskell - Richard Feldman

แชร์
ฝัง

ความคิดเห็น • 73

  • @bernardlowe5433
    @bernardlowe5433 5 ปีที่แล้ว +125

    I saw the title and was like, "Wow, Richard Feynman was into functional programming?". But then I read it again.

    • @Jake_2903
      @Jake_2903 5 ปีที่แล้ว +5

      Lol same here....

    • @bob1shh
      @bob1shh 5 ปีที่แล้ว +5

      Wow, jackie chan is into functional programming? ;-)

    • @bernardlowe5433
      @bernardlowe5433 5 ปีที่แล้ว +24

      @@bob1shh Well, if you examine ancient Chinese texts, Kung Fu stands for "功夫". Kung means pure and Fu stands reaction or function. In other words, your movement is just a pure reaction to what your opponent is doing. So, one could say that martial artists like Jackie Chan and Bruce Lee were recognizing the value of purity and functional thinking way before it even reached the mainstream consciousness in computer science. Ancient Chinese texts say that the highest mastery in Kung Fu can only be achieved after you spent many years meditating on the thought of being a pure function. And if this sounds like bullshit it's because it is. I just made this all up.

    • @bob1shh
      @bob1shh 5 ปีที่แล้ว +9

      ​@@bernardlowe5433 but it's fantastically good bullshit, though! Thanks for writing all this up) I'm glad you're not offended since I felt a bit weird about writing that comment. You're cool! ahah

    • @Evan490BC
      @Evan490BC 3 ปีที่แล้ว

      Feldman, Shmeldman!

  • @ProCoder2007
    @ProCoder2007 5 ปีที่แล้ว +21

    Awesome and honest talk. Made me again excited to have a look on elm.
    Haskell is still on my list - even when it is just for personal study.
    Thanks!

  • @striker865
    @striker865 5 ปีที่แล้ว +94

    I'd like to work with Haskell and Elm

    • @wliaputs
      @wliaputs 4 ปีที่แล้ว +1

      @BringerOfTheTruth what company?

    • @kahnfatman
      @kahnfatman 3 ปีที่แล้ว +2

      How's it going?

  • @wlcrutch
    @wlcrutch ปีที่แล้ว +2

    The Louis CK of programming. His tone and inflection is spot on.

  • @11am
    @11am 5 ปีที่แล้ว +12

    I enjoy a Richard Feldman talk 😌

  • @vertie2090
    @vertie2090 5 ปีที่แล้ว +25

    He's a good public speaker

  • @HyrumCooper
    @HyrumCooper 3 ปีที่แล้ว +2

    I will watch any presentation by Richard Feldman lol. What a fantastic speaker!

  • @paroxyzm21
    @paroxyzm21 5 ปีที่แล้ว +47

    One of the very few talks where you dont have to speed up the tempo

    • @kevinl.9657
      @kevinl.9657 3 ปีที่แล้ว +4

      Very true! I found this comment and I was like, wtf, I managed to finish this without speeding up the video?

  • @uv6483
    @uv6483 4 ปีที่แล้ว +5

    React is like that giant contraption made of 1000 tubes on breaking bad that shat out one cup of coffee.

  • @v__802
    @v__802 5 ปีที่แล้ว +9

    "Get programming with Haskell" by Will Kurt great book for beginners.

    • @joshuarowe8410
      @joshuarowe8410 5 ปีที่แล้ว +3

      Amen. 'Haskell Programming from First Principles' is the complete opposite and really slow and dry. Doesn't really teach you how to make anything it just gives you heaps of theory-based esoteric exercises, loved Get Programming with Haskell

    • @laughingvampire7555
      @laughingvampire7555 2 ปีที่แล้ว

      @@joshuarowe8410 that is funny, when I was in college I went ahead my class mates and learned C (plain C, not C++) by implementing esoteric number theory algorithms.

  • @metinemiroglu1936
    @metinemiroglu1936 4 ปีที่แล้ว +4

    Awesome talk! I feel one step closer to Elm and Haskell!

  • @CaptainWumbo
    @CaptainWumbo 3 ปีที่แล้ว +3

    I relate a lot to the points about small experiments with interesting technologies in production. That's one of the best things about working at a small company. Corporate programming is strict... strictly awful :) Would love to have found your company 5 years ago when I was getting interested in FP, totally relate to writing FP coffeescript lol, although not with coffeescript just with JS.

  • @kriswright5112
    @kriswright5112 4 ปีที่แล้ว +7

    if it walks like haskell, and it talks like haskell, and it's in production, it's elm

  • @TheAidsaids
    @TheAidsaids 5 ปีที่แล้ว +9

    good talk, i learned alot and i am glad that there is lots of use of pure functional in business logic and modern apps :)

  • @polyrtm5545
    @polyrtm5545 5 ปีที่แล้ว +13

    needs more cat pics

  • @willful759
    @willful759 5 ปีที่แล้ว +1

    "you may not recognize all these logos"
    shit, I do

  • @Said75010
    @Said75010 5 ปีที่แล้ว +3

    I would love to work with a company that has the same philosophy!

  • @declup
    @declup 4 ปีที่แล้ว +2

    Around 28:00, the presenter briefly mentions other technologies his company experimented with: Terraform, GraphQL, and Elixir.
    Around 43:19, he mentions other technologies: nix, kubernetes, and PostGraphile.

  • @PaulSebastianM
    @PaulSebastianM 5 ปีที่แล้ว +5

    Pretty lucky company.

  • @takumicrary4396
    @takumicrary4396 ปีที่แล้ว

    Thanks!

  • @PaulSebastianM
    @PaulSebastianM 4 ปีที่แล้ว +2

    42:29 I yelled HOBBIT! XD

  • @marlls1989
    @marlls1989 3 ปีที่แล้ว +1

    As a computer science PhD student I found Haskell very easy to learn

  • @aibh7903
    @aibh7903 4 ปีที่แล้ว +1

    Haskell was the first language I ever learned and I prefer writing in it more than I do any other language.

    • @thomaskember4628
      @thomaskember4628 4 ปีที่แล้ว

      Can you explain what a monad is? This question is to me the problem with Haskell.

    • @officebatman9411
      @officebatman9411 2 ปีที่แล้ว

      ​@@thomaskember4628 I'm a little late, but for me a monad is like an interface for computations, or anything that can contain a value. You can put a value in a monad with the unit function and you can "and then" the computation with bind.
      A great example for me is the Async type in FSharp - it represents an asyncriounos computation.
      You have a function from Async to T like unit and you have a way to run one after the other like with bind

  • @odigity
    @odigity 3 ปีที่แล้ว

    I'm curious why you changed your mind about Terraform.

  • @joshuacochran727
    @joshuacochran727 5 ปีที่แล้ว

    Fantastic talk.

  • @PaulSebastianM
    @PaulSebastianM 4 ปีที่แล้ว

    45:30 The question we're all thinking of today. Spoiler alert: the answer is not clear.

  • @lukashofmaier4642
    @lukashofmaier4642 5 ปีที่แล้ว +7

    Does anybody know which Haskell framework they use at NoRedInk?

    • @v__802
      @v__802 5 ปีที่แล้ว +2

      I don't know but the servant is very popular and powerful.

    • @ZnMgkbvprb
      @ZnMgkbvprb 3 ปีที่แล้ว

      At this time, you might also want to check IHP github.com/digitallyinduced/ihp

    • @digitalspecter
      @digitalspecter 3 ปีที่แล้ว +1

      @@ZnMgkbvprb delving into IHP was actually a jaw-dropping experience for me.. I highly recommend it!

  • @laughingvampire7555
    @laughingvampire7555 2 ปีที่แล้ว +1

    I don't agree with the term "pure functional language" I think it conveys the wrong idea, because it isn't really "pure", pure would mean there are no side effects and there is only functions returning values, however there are side effects, they are just organized and defined with clear referential transparent & composable semantics and code is typed so you identify what code is participating of a some side effect sequence, side effects are contained. All of this with the aim to help us reason about our code with just reading it.
    From Conal Elliot talks I think of it as decoupling platform implementation logic and details from business core logic, so we can express our business logic just in terms of data dependency and not database, web, disk, network dependencies, all of this mechanisms are composed through typed algorithms which is what I call monadic code that is used to contain side effects.
    So what name would be better? I don't know, maybe we need an acronym like SOLID to describe this type of composable, denotative, side effect isolating, value semantics, applicative programming.

  • @SwarangaSarma
    @SwarangaSarma 3 ปีที่แล้ว +1

    Really nice talk. I have a question on his comments about other programming languages resulting in random "crashes" - like what are these crashes really? Are these full application crashes? Or are these exceptions that get raised when an operation encounters an error (like talking to a database) and these result in crashing the whole application. How can someone get to a state where you get an NPE in production and you have no idea where it came from?
    I am most likely misunderstanding the problem but isn't defensive programming a thing? Like I would heavily sanitize my input at the boundaries of my service and check for nulls/invalid requests and process the request only when it is valid. Else it is a 400 to the client.
    Similarly if I am talking to a database, I will have lots of error handling; for instance if an insert operation fails may be the RDS instance I was talking to has now failed over to a new instance such that the old one is now a reader and we have a new writer. In such cases I will absolutely handle that exception and recycle my connection to connect to the new writer and try to give a successful response to the caller. May be that request will take a little longer but it is better than returning an internal failure. As much as possible, we do not bubble up internal errors to customers/callers and try to maintain high availability. All of these means expecting the worst and writing code to handle those gracefully. Of course not all such cases can be handled. But none of this is limited by the choice of programming language but by the coding principles or lack of it. Also tests, both unit tests and integrations tests should try to test not just happy cases but exceptional ones. May be Elm/Haskell just allows writing those error handling code easier? Is that built into the PostgreSQL library that he showed for instance? Would be nice to see an actual example of what kind of NPEs just went away after moving to Elm. Not sarcastic, genuinely want to know so I can also adopt some modern skills.
    Otherwise interesting talk and glad to see hiring has not been a challenge.

    • @nickr753
      @nickr753 3 ปีที่แล้ว +3

      The best kind of defensive programming is that where your safety guarantees are enforced by the compiler. This is a similar philosophy to Rust’s approach to memory management by using the borrow checker. On the contrary, most of the defensive programming tactics that you mention are things that you can leave out and your program will still compile.

    • @SwarangaSarma
      @SwarangaSarma 3 ปีที่แล้ว

      @@nickr753 Interesting. I am mostly familiar with Java, so the things that I can think of that a compiler would enforce are Checked exceptions. For instance, if I am writing a Database driver, and if I want to enforce clients deal with the known failure modes, most likely I would use checked exceptions. Of course, this does not prevent the user from handling it via a try-and-wrap-with-a-runtime-exception to prevent the checked exception from bubbling up but your point about "most of the defensive programming tactics that you mention are things that you can leave out and your program will still compile" is not universally true.
      How does a safer language like Elm/Haskell/Rust(?) enable this in say, the database example? Some practical examples would be real nice as I am trying to broaden my understanding.

  • @bestintentions6089
    @bestintentions6089 5 ปีที่แล้ว +3

    so what standard library replacement is good for starting to use haskell for webdev ?
    ...

  • @theg-room3256
    @theg-room3256 3 ปีที่แล้ว +3

    Great talk. One part kind of set me back. Hiring the creator of Elm to work for you isn't a strong indicator that Elm is a good solution over what you were using. Maybe you would have been just as happy if you could have snagged the creator of Rails or React to work for you. When i got to that part of the video i was like "if Elms so great and so easy to learn, why not just sponsor the creator instead of having him work for you? Is the direction of Elm primarily driven by your company? What happens to Elm if your interest change? Do i need to try and steal the guy who created Elm from you so my company can have a good experience with Elm?"

    • @gabriela.ts_
      @gabriela.ts_ 3 ปีที่แล้ว +2

      Evan didn't work for Prezi neither NoRedInk products, both companies hired them to work on Elm exclusively, supporting open source. Now he uses Elm Foundation funds and still works fulltime on Elm.

  • @Baekstrom
    @Baekstrom 5 ปีที่แล้ว +2

    Is it a job requirement to be a ginger to be hired in No Red Ink?

  • @kahnfatman
    @kahnfatman 3 ปีที่แล้ว

    When the crowd heard "Pure functional" + React, they LAUGHED SO HARD... Har Har Har.

  • @diegodorado
    @diegodorado 5 ปีที่แล้ว

    I would call that a very enthusiastic functional programming presentation!
    Made me want to work at noredink! I am based in Argentina.
    Here's my linkedin : www.linkedin.com/in/doradodiego/
    And here's my web: diegodorado.com/en/work
    Hope you see this!

  • @travel6212
    @travel6212 4 ปีที่แล้ว

    What is the language of the logo in red on the right to ocaml?

    • @PeerReynders
      @PeerReynders 4 ปีที่แล้ว

      Idris
      www.idris-lang.org/

  • @arubaga
    @arubaga 3 ปีที่แล้ว

    Can ELM retarget to LLVM?

    • @officebatman9411
      @officebatman9411 2 ปีที่แล้ว

      Only if javascript can...
      Elm is made strictly to run on web browsers. It does not even have a way to printf or get user input from a console

  • @HenkPoley
    @HenkPoley 4 ปีที่แล้ว +2

    I like the healthy NoRendInk developer team gender split in the picture at 3:34. Other companies just ignore about half of their potential team members.

    • @Sun0fABeach
      @Sun0fABeach 4 ปีที่แล้ว +3

      Yeah, companies just don't want to hire women, no matter what value they would bring to the business. In intersectional conspiracy land, that is.

    • @wlcrutch
      @wlcrutch 2 ปีที่แล้ว +1

      Or they just hire the best match?

  • @АнатолийПетрович-в8и
    @АнатолийПетрович-в8и 2 ปีที่แล้ว

    If you search really good, practice first course for haskell, its may halp you: th-cam.com/play/PLgkiApDiZ0KHacTxxunGYTLC_qG2fR-4S.html . But its on russian, but subtitles may help you.

  • @wlcrutch
    @wlcrutch 2 ปีที่แล้ว +1

    If Louis CK were a programmer, he’d be this guy…

  • @Jake_2903
    @Jake_2903 5 ปีที่แล้ว +3

    haskell is hell

    • @vertie2090
      @vertie2090 5 ปีที่แล้ว

      why?

    • @Jake_2903
      @Jake_2903 5 ปีที่แล้ว +4

      @@vertie2090 it isn't reallly, I'm just bitching because they added it to my university course as a mandatory subject and I am having a hard time getting used to working with it.

    • @amigalemming
      @amigalemming 5 ปีที่แล้ว +16

      @@vertie2090 I guess he meant, it's "hell" when you remove the "ask" from its name.

    • @vertie2090
      @vertie2090 5 ปีที่แล้ว +6

      @@Jake_2903 yeah it was mandatory in mine too, that's where I picked it up. Now I'm building web services with it.

  • @metinemiroglu1936
    @metinemiroglu1936 4 ปีที่แล้ว +5

    Awesome talk! I feel one step closer to Elm and Haskell!