We are happy to announce that we have been sponsoring free webinars for over a year now. The feedback we have been receiving from the IT community has been overwhelmingly positive. We have been working towards producing a new webinar topic every month, and we plan to keep moving at that pace. In this webinar, Alexey Kuleshevich (Software Engineer at FP Complete) discusses "RIO, the standard library for Haskell." We had 377 people registered for the event which aired on Wednesday, March 6th at 10:00 am PST. The source code for this webinar can be found on Github.
In this month's webinar, Alexey Kuleshevich demonstrated just how easy it is to get started with RIO, the standard library for Haskell. As a recap, RIO is not only a library but is a collection of solutions to some of the most common problems in the Haskell ecosystem as well as a description of the best practices and design patterns. It also introduces the RIO monad, which promotes a drastic simplification over the common approach of an endless stack of transformers.
During the webinar we tried to answer these questions:
- What is RIO? Is it yet another Prelude, or a different workflow? What makes it different?
- Which scenarios are RIO good for and which ones aren't so much?
- What benefits do you get from using RIO?
- What's the difference between using RIO for library vs application development?
- Do you need to buy into the RIO type to use the library fully?
We decided to include the chat log for this webinar, and it can be seen at the end of this blog post.
Have you heard about our new Haskell Success Program?
We decided that to grow the Haskell community we need to make further investments towards that goal. Webinars, blogs, and open source contributions can only take us so far. That's why we created the Haskell Success Program. Whether you are a large scale enterprise using Haskell daily or a small company looking to leverage the power of Haskell, this program is for you. Of particular note is the cost of this program. If you do the math, our rates for this program are insanely low. So low, that we are not even profiting from the program. So why are we doing it? Two reasons, first, we want to promote the use of Haskell across the globe in large and small enterprises. Second, we want to expose you to our awesome engineering talent and help you maximize the use of Haskell in your organization. It's a win-win for all!. Check it out
Who is FP Complete in simple terms?
At FP Complete, we do so many things to help companies it's hard to encapsulate our impact in a few words. They say a picture is worth a thousand words, so a video has to be worth 10,000 words (at least). Therefore, to tell all we can in as little time as possible, check out our explainer video. It's only 108 seconds to get the full story of FP Complete.
We want your feedback for webinar topics
We would like to hear your suggestions for future webinar topics. The simplest way to accomplish this is to add a comment to this blog post with your suggestion. Alternatively, send your suggestion via email to firstname.lastname@example.org.
Webinar Chat Log
We find it useful to share what was chatted about during the webinar. You can see the chat flow below.
20:00:42 From Michael Snoyman : Welcome to the webinar everyone
20:00:57 From Agustin Camino : Hi!
20:01:05 From Dan Banta : Hello. :)
20:01:24 From paulrz to All Panelists : hello
20:01:24 From Jason Shipman : Hi!
20:01:28 From Maris Orbidans to All Panelists : hello
20:01:31 From Javier Jaramago Fernández to All Panelists : Hi everyone!
20:01:33 From Steve Bigham to All Panelists : Greets!
20:01:37 From Agustin Camino : Sounds good!
20:01:44 From Steven Leiva : Hi folks. FP Complete - thanks for hosting this. I won’t be able to participate in the chat since I don’t want to disturb others around me, but looking forward to soaking everything in.
20:02:06 From Han Joosten to All Panelists : Hi
20:06:46 From Andrew Starodubtsev to All Panelists : Hi all!
20:08:58 From Michael Snoyman : Unsafe ==> nasal demons
20:20:40 From Agustin Camino : Ha!
20:20:43 From Javier Jaramago Fernández to All Panelists : haha
20:33:29 From Michael Snoyman : The "sticky logger" stuff is what Stack uses when it shows you the "Progress: X/Y" while building a bunch of things
20:39:31 From Michael Snoyman : Stay tuned for more info in the future...
20:39:49 From Steven Leiva : +1
20:43:28 From Steven Leiva : Will the slides be available for download?
20:45:29 From Michael Snoyman : I believe the slides and code will be available afterward, but I'll ask Alexey both questions at the end of the presentation
20:46:19 From Michael Snoyman : PLOT TWIST :)
20:46:28 From Steven Leiva : Whoa! Mind blown.
20:46:28 From Javier Jaramago Fernández to All Panelists : haha what a twist
20:46:59 From Vassil Keremidchiev to All Panelists : Cool!
20:50:03 From Mark Watson to All Panelists : thanks Alexey, really interesting stuff.
20:51:31 From Han Joosten : How much effort would you guess would it be for a 100 module haskell codebase to use rio instead of prelude?
20:51:55 From Harold Carr : please paste the the github ink here
20:52:12 From Michael Snoyman : https://github.com/lehins/haskell-webshell
20:52:13 From Jascha Smacka : https://github.com/lehins/haskell-webshell
20:52:17 From Marek Dudek : What kind of adoption by community/industry do you have? How big do you count on it to be?
20:52:24 From Vladislav Sabanov : Have you working application online or at github that using RIO?
20:52:27 From Aniket Deshpande to All Panelists : For newbies does it makes sense to go the RIO route from the beginning? Or would you suggest to come to this library after experiencing some of the problems it intends to circumvent?
20:52:39 From Han Joosten : thanks. great answer
20:53:27 From Harold Carr : https://github.com/lehins/haskell-webshell
20:53:46 From Greg Manning : magicbane?
20:53:49 From jon schoning to All Panelists : to motivate RIO as a newtype, the reason is "typeclasses like MonadLogger define their instances on ReaderT to defer to the underlying monad". Could you explain why this forces a newtype? I it seems like MonadLogger should just default to IO
20:53:51 From Marek Dudek : Thanks
20:54:03 From Greg Manning : (I think is the name of the project that ties together RIO and other things)
20:54:20 From Javier Jaramago Fernández to All Panelists : So far everything we have seen in the default logging pattern, looks like will be very compatible by default to serve as a base for something like opentracing implementations (Haskell I think still lacks of one). What are your thoughts about using it as a default lib for something like this?
20:55:21 From Aniket Deshpande to All Panelists : Thanks
20:55:21 From Jason Shipman : No questions at the moment, but thank you for the excellent presentation!
20:55:22 From Marek Dudek : Follow up on currently being answered: which topics you need to understand to use RIO?
20:58:53 From Marek Dudek : Thanks
20:58:54 From Steven Leiva : There are good tutorials for exceptions and for the ReaderT pattern.
21:00:13 From Steven Leiva : :-)
21:00:20 From Michael Snoyman : Get started with runSimpleApp
21:00:20 From Vassil Keremidchiev to All Panelists : Thanks a lot for the great lecture!
21:00:30 From Harold Carr : thanks!
21:01:43 From Marek Dudek : Great presentation, thanks
21:02:12 From Andrew Starodubtsev to All Panelists : Thanks
21:02:18 From Han Joosten : Thanks again for another great webinar. Keep up the good work!
21:02:21 From Javier Jaramago Fernández to All Panelists : Great presentation + example project, thanks!
21:02:24 From Frank Stüss to All Panelists : super! thank you! please go on!
21:02:30 From Lauri Lättilä : Thanks for the presentation
21:02:33 From Martin ALLARD to All Panelists : Thanks for the presentation !
21:02:35 From Jascha Smacka : Thanks a lot!
21:02:38 From Greg Manning : thanks.
21:02:40 From Steven Leiva : thanks
21:02:41 From Agustin Camino : Thanks! Great presentation.
21:02:43 From Dan Banta : Fantastic presentation. Thank you! :D
21:02:43 From R Primus : Thank you both!
21:02:52 From Michael Usenko : Thank you.
21:02:52 From Jonathan Avinor : Thank you very much!
21:02:52 From Filip Federowicz to All Panelists : Thank you!
21:02:52 From Vladislav Sabanov : Thank you!
21:02:58 From Bruce Alspaugh to All Panelists : Thinks!