From Rails to Elm and Haskell - Richard Feldman

Поділитися
Вставка
  • Опубліковано 29 жов 2024

КОМЕНТАРІ • 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!

  • @11am
    @11am 5 років тому +12

    I enjoy a Richard Feldman talk 😌

  • @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.

  • @HyrumCooper
    @HyrumCooper 3 роки тому +2

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

  • @vertie2090
    @vertie2090 5 років тому +25

    He's a good public speaker

  • @metinemiroglu1936
    @metinemiroglu1936 4 роки тому +4

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

  • @paroxyzm21
    @paroxyzm21 4 роки тому +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?

  • @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.

  • @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.

  • @uv6483
    @uv6483 4 роки тому +5

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

  • @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 :)

  • @kriswright5112
    @kriswright5112 4 роки тому +7

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

  • @takumicrary4396
    @takumicrary4396 Рік тому

    Thanks!

  • @polyrtm5545
    @polyrtm5545 5 років тому +13

    needs more cat pics

  • @odigity
    @odigity 3 роки тому

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

  • @joshuacochran727
    @joshuacochran727 4 роки тому

    Fantastic talk.

  • @Said75010
    @Said75010 5 років тому +3

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

  • @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

  • @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.

  • @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!

  • @willful759
    @willful759 5 років тому +1

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

  • @PaulSebastianM
    @PaulSebastianM 5 років тому +5

    Pretty lucky company.

  • @PaulSebastianM
    @PaulSebastianM 4 роки тому +2

    42:29 I yelled HOBBIT! XD

  • @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.

  • @bestintentions6089
    @bestintentions6089 5 років тому +3

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

  • @PaulSebastianM
    @PaulSebastianM 4 роки тому

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

  • @travel6212
    @travel6212 4 роки тому

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

  • @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.

  • @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?

  • @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

  • @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!

  • @kahnfatman
    @kahnfatman 3 роки тому

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

  • @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и

    If you search really good, practice first course for haskell, its may halp you: ua-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!