Тёмный

From Rails to Elm and Haskell - Richard Feldman 

ChariotSolutions
Подписаться 9 тыс.
Просмотров 69 тыс.
50% 1

When I joined NoRedInk in 2013, we had a typical Ruby on Rails web application. In 2015 we introduced Elm, a pure functional programming language for building Web UIs, and it spread like wildfire to become our primary tool for front-end programming. In 2019 we have over 300,000 lines of Elm code powering the user interface our millions of users rely on.
The positive experience we had with Elm led us to seek out a pure functional language to use on the back-end, and in 2017 we introduced Haskell to our stack. This talk discusses the reasons we tried these technologies, what we hoped to get out of them compared to what we got, what went well and what didn’t, and the strategies we used to adopt them incrementally inside a mission-critical code base.
Come find out what this production transition to a purely functional stack was like!
Philly ETE 2019 Playlist: • Philly ETE 2019
On the Chariot Solutions site: chariotsolutions.com/screencasts/

Наука

Опубликовано:

 

28 июн 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 73   
@bernardlowe5433
@bernardlowe5433 4 года назад
I saw the title and was like, "Wow, Richard Feynman was into functional programming?". But then I read it again.
@Jake_2903
@Jake_2903 4 года назад
Lol same here....
@bob1shh
@bob1shh 4 года назад
Wow, jackie chan is into functional programming? ;-)
@bernardlowe5433
@bernardlowe5433 4 года назад
@@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 4 года назад
​@@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!
@11am
@11am 4 года назад
I enjoy a Richard Feldman talk 😌
@wlcrutch
@wlcrutch 11 месяцев назад
The Louis CK of programming. His tone and inflection is spot on.
@striker865
@striker865 5 лет назад
I'd like to work with Haskell and Elm
@wliaputs
@wliaputs 3 года назад
@BringerOfTheTruth what company?
@kahnfatman
@kahnfatman 2 года назад
How's it going?
@ProCoder2007
@ProCoder2007 5 лет назад
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!
@vertie2090
@vertie2090 4 года назад
He's a good public speaker
@HyrumCooper
@HyrumCooper 2 года назад
I will watch any presentation by Richard Feldman lol. What a fantastic speaker!
@metinemiroglu1936
@metinemiroglu1936 4 года назад
Awesome talk! I feel one step closer to Elm and Haskell!
@paroxyzm21
@paroxyzm21 4 года назад
One of the very few talks where you dont have to speed up the tempo
@kevinl.9657
@kevinl.9657 3 года назад
Very true! I found this comment and I was like, wtf, I managed to finish this without speeding up the video?
@joshuacochran727
@joshuacochran727 4 года назад
Fantastic talk.
@TheAidsaids
@TheAidsaids 5 лет назад
good talk, i learned alot and i am glad that there is lots of use of pure functional in business logic and modern apps :)
@v__802
@v__802 5 лет назад
"Get programming with Haskell" by Will Kurt great book for beginners.
@joshuarowe8410
@joshuarowe8410 4 года назад
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 Год назад
@@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.
@polyrtm5545
@polyrtm5545 5 лет назад
needs more cat pics
@takumicrary4396
@takumicrary4396 Год назад
Thanks!
@uv6483
@uv6483 4 года назад
React is like that giant contraption made of 1000 tubes on breaking bad that shat out one cup of coffee.
@majorhumbert676
@majorhumbert676 7 месяцев назад
That was "the best coffee" though
@CaptainWumbo
@CaptainWumbo 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.
@Said75010
@Said75010 4 года назад
I would love to work with a company that has the same philosophy!
@kriswright5112
@kriswright5112 4 года назад
if it walks like haskell, and it talks like haskell, and it's in production, it's elm
@PaulSebastianM
@PaulSebastianM 3 года назад
42:29 I yelled HOBBIT! XD
@odigity
@odigity 3 года назад
I'm curious why you changed your mind about Terraform.
@bestintentions6089
@bestintentions6089 4 года назад
so what standard library replacement is good for starting to use haskell for webdev ? ...
@lukashofmaier4642
@lukashofmaier4642 5 лет назад
Does anybody know which Haskell framework they use at NoRedInk?
@v__802
@v__802 5 лет назад
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 года назад
@@ZnMgkbvprb delving into IHP was actually a jaw-dropping experience for me.. I highly recommend it!
@travel6212
@travel6212 3 года назад
What is the language of the logo in red on the right to ocaml?
@PeerReynders
@PeerReynders 3 года назад
Idris www.idris-lang.org/
@PaulSebastianM
@PaulSebastianM 4 года назад
Pretty lucky company.
@willful759
@willful759 4 года назад
"you may not recognize all these logos" shit, I do
@SwarangaSarma
@SwarangaSarma 2 года назад
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 2 года назад
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 2 года назад
@@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.
@Baekstrom
@Baekstrom 4 года назад
Is it a job requirement to be a ginger to be hired in No Red Ink?
@marlls1989
@marlls1989 2 года назад
As a computer science PhD student I found Haskell very easy to learn
@aibh7903
@aibh7903 4 года назад
Haskell was the first language I ever learned and I prefer writing in it more than I do any other language.
@thomaskember4628
@thomaskember4628 3 года назад
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
@PaulSebastianM
@PaulSebastianM 3 года назад
45:30 The question we're all thinking of today. Spoiler alert: the answer is not clear.
@arubaga
@arubaga 2 года назад
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
@declup
@declup 3 года назад
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.
@diegodorado
@diegodorado 4 года назад
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!
@laughingvampire7555
@laughingvampire7555 Год назад
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.
@user-fx5hz6eq8i
@user-fx5hz6eq8i Год назад
If you search really good, practice first course for haskell, its may halp you: ru-vid.com/group/PLgkiApDiZ0KHacTxxunGYTLC_qG2fR-4S . But its on russian, but subtitles may help you.
@theg-room3256
@theg-room3256 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_ 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.
@kahnfatman
@kahnfatman 2 года назад
When the crowd heard "Pure functional" + React, they LAUGHED SO HARD... Har Har Har.
@HenkPoley
@HenkPoley 4 года назад
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 года назад
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 года назад
Or they just hire the best match?
@wlcrutch
@wlcrutch 2 года назад
If Louis CK were a programmer, he’d be this guy…
@Jake_2903
@Jake_2903 4 года назад
haskell is hell
@vertie2090
@vertie2090 4 года назад
why?
@Jake_2903
@Jake_2903 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 4 года назад
@@vertie2090 I guess he meant, it's "hell" when you remove the "ask" from its name.
@vertie2090
@vertie2090 4 года назад
@@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 года назад
Awesome talk! I feel one step closer to Elm and Haskell!
Далее
Richard Feldman - The Next Paradigm Shift in Programming
1:08:07
Elm at Scale: More Surprises, More Pain Points
29:09
Просмотров 21 тыс.
A Taste of Roc - Richard Feldman
1:13:20
Просмотров 47 тыс.
Haskell is Not For Production and Other Tales
38:19
Просмотров 100 тыс.
"Make Data Structures" by Richard Feldman
53:13
Просмотров 28 тыс.
Developer Happiness on the Front End with Elm
45:49
Просмотров 43 тыс.
Rust: A Language for the Next 40 Years - Carol Nichols
55:08
Richard Feldman - Keynote - Elm Europe 2019
49:36
Просмотров 7 тыс.
Will the battery emit smoke if it rotates rapidly?
0:11
#miniphone
0:16
Просмотров 3,6 млн
Дорогие компы БЕСПОЛЕЗНЫ?
1:00
Просмотров 745 тыс.