Haskell Weekly: Recent Episodes

Taylor Fausak

Haskell Weekly covers the Haskell progamming language. Listen to professional software developers discuss using functional programming to solve real-world business problems. Each episode uses a conversational two-host format and runs for about 15 minutes.

View Details

Thanks to everyone who filled out the 2021 State of Haskell Survey! This week Cameron and Taylor review the results.

  • https://taylor.fausak.me/2021/11/16/haskell-survey-results/

View Details

This week Cameron and Taylor answer our first listener question: How should you structure large applications? We compare ReaderT with MTL along with other approaches.

  • https://join.slack.com/t/haskell-foundation/shared_invite/zt-mjh76fw0-CEjg2NbyVE8rVQDvR~0F4A

View Details

We’re back! After a month off, Cameron and Taylor get together to talk about what’s new in the Haskell world.

  • https://www.haskell.org/ghc/blog/20211029-ghc-9.2.1-released.html
  • https://haskellweekly.news/survey/2021.html

View Details

Cameron Gera and Taylor Fausak discuss Drew Olson’s adventures in looping. What should you do if you want to loop forever, but break out of the loop early sometimes?

  • https://blog.drewolson.org/adventures-in-looping

View Details

Special guest Tom Sydney Kerckhove talks with Taylor Fausak about a denial of service vulnerability in Aeson, a Haskell library for JSON.

  • https://cs-syd.eu/posts/2021-09-11-json-vulnerability
  • https://hackage.haskell.org/package/sydtest-0.4.0.0
  • https://hackage.haskell.org/package/genvalidity-0.11.0.2
  • https://hackage.haskell.org/package/yamlparse-applicative-0.2.0.0

View Details

Taylor Fausak talks with Cameron Gera about Evoke, Taylor’s latest GHC plugin for deriving instances without generics or Template Haskell.

  • https://taylor.fausak.me/2021/09/10/evoke/

View Details

Curious about dependent types? Special guest Vladislav Zavialov from Serokell breaks it down for us. We discuss comparisons to refinement types, sigma and pi types, interactions with linear types, and much more!

  • https://serokell.io/blog/developing-ghc-for-a-living
  • https://twitter.com/int_index

View Details

Stack, HLint, and Brittany, oh my! Cameron Gera and Taylor Fausak go on a deep dive into the ACI Learning tech stack.

  • https://www.acilearning.com

View Details

Back from summer break, Cameron Gera discusses the Witch library with it’s author, Taylor Fausak. Learn about the many motivations behind this simple library for converting values between various types.

  • https://taylor.fausak.me/2021/07/13/witch/
  • https://hackage.haskell.org/package/say-my-name-0.1.0.0

View Details

There’s a lot to like about Haskell, but what is it missing? We explore Alexander Granin’s post where he suggests some topics for books that could benefit the Haskell community.

  • https://github.com/graninas/The-Voids-Of-Haskell/blob/9b401e33af37f991dcb3ab2eedc023661237d845/README.md

View Details

Special guest Marco Sampellegrini talks with us about his recent book, The Simple Haskell Handbook. The book describes a project driven approach to Haskell development, using a continuous integration server as a motivating example.

  • https://leanpub.com/simple-haskell-book

View Details

Should you organize modules vertically or horizontally? This week we take a look at another article by Gabriel Gonzalez, this time about organizing projects and packages.

  • https://www.haskellforall.com/2021/05/module-organization-guidelines-for.html

View Details

How can you avoid deeply nested error handling code? This week we review Gabriel Gonzalez’s trick for keeping error handling flat.

  • https://www.haskellforall.com/2021/05/the-trick-to-avoid-deeply-nested-error.html

View Details

Curious about the Haskell Foundation? This week we interview Andrew Boardman, its Executive Director. He explains the Foundation’s purpose and how you can help.

  • https://haskell.foundation
  • https://fpchat-invite.herokuapp.com
  • https://funprog.zulipchat.com/login/
  • https://wiki.haskell.org/IRC_channel
  • https://discourse.haskell.org
  • https://twitter.com/myShoggoth
  • https://myshoggoth.com
  • https://joyofhaskell.com/posts/2021-02-24-why-stm.html

View Details

What happens to exceptions when you don’t explicitly handle them? This week we review Taylor’s blog post about default exception handlers.

  • https://taylor.fausak.me/2021/04/03/default-exception-handler-in-haskell/

View Details

Special guest Cody Goodman walks us through an interesting PostgreSQL bug. Handling async exceptions properly is trickier than you might expect!

  • https://www.parsonsmatt.org/2021/03/17/async_control_flow.html
  • https://github.com/codygman/tech-roam/blob/master/20210326113249-haskell_persistent_issues_postgres_connections_are_returned_to_pool_too_quickly.org

View Details

Byte string, text, and vector, oh my! This week we review Michael Snoyman’s proposal to unify vector-like types. Learn about boxed versus unboxed values, pinned versus unpinned memory, and more.

  • https://www.snoyman.com/blog/2021/04/haskell-base-proposal/

View Details

Special guests Michael Litchard and Brian Hurt talk with us about their new social networking site Chat Wisely. We hear about their experience using Haskell not only on the backend but also on the frontend through GHCJS.

  • https://www.chatwisely.com
  • https://www.patreon.com/chatwisely

View Details

Special guest Sandy Maguire talks with us about using Haskell Wingman for program synthesis, designing bulletproof abstractions with algebra, wrangling type level programming in Haskell, and managing effects with his Polysemy library.

  • https://www.patreon.com/wingman_for_haskell
  • https://leanpub.com/algebra-driven-design
  • https://leanpub.com/thinking-with-types
  • https://github.com/polysemy-research/polysemy
  • https://reasonablypolymorphic.com
  • https://sandymaguire.me

View Details

Linear types finally landed in GHC 9.0.1! We talk through what that means along with other news from the Haskell Foundation and Tweag.

  • https://discourse.haskell.org/t/haskell-foundation-executive-director-and-chief-technology-officer/1861
  • https://discourse.haskell.org/t/ghc-8-10-4-released/1847
  • https://discourse.haskell.org/t/ghc-9-0-1-released/1840
  • https://www.tweag.io/blog/2021-02-10-linear-base/

View Details

Come @ me bro! In this episode we review Zac Wood’s post about the type applications language extension.

  • https://zacwood.me/posts/haskell-type-application/

View Details

Special guest Matt Parsons talks to us about his upcoming book, Production Haskell.

  • https://leanpub.com/production-haskell
  • https://twitter.com/prodhaskell

View Details

Is Maybe problematic? Well, maybe. Robert Peszek thinks that Maybe is overused. Cameron Gera and Taylor Fausak break it down and consider alternatives.

  • https://rpeszek.github.io/posts/2021-01-17-maybe-overuse.html

View Details

Christian Charukiewicz at Foxhound Systems wrote a list of reasons to prefer Haskell for building production systems. Cameron Gera and Taylor Fausak review the list and share their experience at ITProTV.

  • https://www.foxhound.systems/blog/why-haskell-for-production/

View Details

Using Adam Wespiser’s blog post as a jumping off point, Cameron Gera and Taylor Fausak look back on a year of Haskell.

  • https://wespiser.com/posts/2021-01-03-Lessons-Learned-From-A-Year-Of-Haskell.html

View Details

Are you curious about how Parsec is implemented behind the scenes? Cameron Gera and Taylor Fausak follow Antoine Leblanc’s walkthrough.

  • https://hasura.io/blog/parser-combinators-walkthrough/
  • http://dev.stephendiehl.com/fun/002_parsers.html

View Details

Can Haskell’s deriving mechanism be simplified? Cody Goodman, Cameron Gera, and Taylor Fausak walk through the changes that Matt Parsons suggested.

  • https://www.parsonsmatt.org/2020/11/10/simplifying_deriving.html

View Details

Newtypes let you give things names, but is that type safety? Andres Schmois, Cameron Gera, and Taylor Fausak explore a blog post by Alexis King.

  • https://lexi-lambda.github.io/blog/2020/11/01/names-are-not-type-safety/
  • https://www.youtube.com/watch?v=MEmRarBL9kw
  • https://www.reddit.com/r/haskell/comments/jnwg7i/haskell_foundation_ama/

View Details

Even well-designed languages have rough edges. Cameron Gera and Taylor Fausak review some of the bad parts of Haskell.

  • https://www.snoyman.com/blog/2020/10/haskell-bad-parts-1
  • https://haskellweekly.news/survey/2020.html

View Details

Does the idea of -XGHC2021 excite you? Cameron Gera and Taylor Fausak work through this proposed set of language extensions.

  • https://np.reddit.com/r/haskell/comments/je1t82/does_the_idea_of_xghc2021_excite_you/
  • https://github.com/ghc-proposals/ghc-proposals/pull/372
  • https://hacktoberfest.digitalocean.com
  • https://github.com/kowainik/learn4haskell

View Details

Learn how to answer common technical interview questions with Haskell. Cameron Gera and Taylor Fausak discuss Chris Penner’s blog post.

  • https://chrispenner.ca/posts/interview
  • https://hacktoberfest.digitalocean.com
  • https://github.com/kowainik/learn4haskell

View Details

Sara Lichtenstein, Cameron Gera, and Taylor Fausak get recursively drunk on semigroups and monoids.

  • https://dev.to/sshine/getting-recursively-drunk-with-monoids-2jek

View Details

Cameron Gera and Taylor Fausak discuss the pros and cons of various deriving strategies.

  • https://kowainik.github.io/posts/deriving
  • https://hacktoberfest.digitalocean.com
  • https://dev.to/tfausak/how-to-define-json-instances-quickly-5ei7
  • https://www.parsonsmatt.org/2019/11/27/keeping_compilation_fast.html
  • https://www.youtube.com/watch?v=pwnrfREbhWY

View Details

Jose Silvestri and Cameron Gera go over the 2019 State of Haskell Survey and encourage you to fill it out.

  • https://haskellweekly.news/survey/2019.html
  • https://taylor.fausak.me/2018/11/18/2018-state-of-haskell-survey-results/
  • https://taylor.fausak.me/2017/11/15/2017-state-of-haskell-survey-results/

View Details

Jose Silvestri and Dustin Segers give a whirlwind tour of FRP, exploring what it is and why you might want to use it.

  • https://begriffs.com/posts/2015-07-22-essence-of-frp.html
  • https://www.seas.upenn.edu/~cis194/fall16/lectures/11-frp.html
  • https://apfelmus.nfshost.com/blog/2011/05/06-frp-why-functors.html
  • https://stackoverflow.com/questions/1028250/what-is-functional-reactive-programming
  • https://wiki.haskell.org/FRP_explanation_using_reactive-banana
  • https://wiki.haskell.org/Reactive-banana/Examples
  • https://github.com/gelisam/frp-zoo

View Details

Cameron Gera and Taylor Fausak discuss using types to guide refactoring toward better design.

  • http://h2.jaguarpaw.co.uk/posts/good-design-and-type-safety-in-yahtzee/

View Details

Cody Goodman and Taylor Fausak explore the event log that GHC can produce when compiling or running.

  • https://www.well-typed.com/blog/2019/09/eventful-ghc/

View Details

Sara Lichtenstein and Taylor Fausak discuss converting between numeric types with polymorphic functions.

  • https://typeclasses.com/featured/rounding

View Details

Cameron Gera and Andres Schmois talk about practical uses for profunctor lenses and optics.

  • https://thomashoneyman.com/articles/practical-profunctor-lenses-optics/

View Details

Cody Goodman and Taylor Fausak walk through inventing monads from scratch in JavaScript.

  • https://blog.kabir.sh/posts/inventing-monads.html

View Details

Sara Lichtenstein and Andres Schmois discuss quickly learning Haskell by studying annotated examples.

  • https://typeclasses.com/news/2019-07-phrasebook

View Details

Dustin Segers and Cody Goodman talk about developing video games using Haskell.

  • https://linearity.itch.io/peoplemon
  • http://jxv.io/blog/2018-02-28-A-Game-in-Haskell.html
  • https://www.indiedb.com/games/nikki-and-the-robots/downloads
  • https://github.com/FailWhaleBrigade/water-wars
  • https://www.allureofthestars.com/
  • https://np.reddit.com/r/haskellgamedev
  • https://mmhaskell.com/blog/2019/3/25/making-a-glossy-game-part-1
  • https://ocharles.org.uk/posts/2013-12-10-24-days-of-hackage-gloss.html
  • http://andrew.gibiansky.com/blog/haskell/haskell-gloss/
  • https://fumieval.github.io/rhythm-game-tutorial/
  • https://cdry.wordpress.com/2016/10/11/tetris-in-haskell-in-a-weekend/
  • https://blog.aas.sh/posts/2018-09-10-Making-A-Game-With-Haskell-And-Apecs/
  • http://keera.co.uk/blog/2013/03/19/creating-board-games-in-haskell/
  • https://www.youtube.com/watch?v=1MNTerD8IuI
  • https://jshaskell.blogspot.com
  • https://ocharles.org.uk/blog/posts/2013-08-18-asteroids-in-netwire.html
  • https://prog21.dadgum.com/23.html
  • https://github.com/meteficha/Hipmunk

View Details

Cameron Gera and Taylor Fausak talk about how function calls are evaluated in Haskell with regards to non-strictness.

  • https://treszkai.github.io/2019/07/13/haskell-eval

View Details

Andres Schmois and Cody Goodman talk about using the Refined library to turn runtime checks into types.

  • https://danieljharvey.github.io/posts/2019-07-05-refined-types.html

View Details

Cameron Gera and Taylor Fausak talk about why the Semantic team at GitHub decided to use Haskell.

  • https://github.com/github/semantic/blob/eaf13783838861fe5eb6cd46d59354774a8eb88d/docs/why-haskell.md

View Details

Dustin Segers and Cody Goodman talk about formatting Haskell source code with automated tools like Ormolu.

  • https://www.tweag.io/posts/2019-05-27-ormolu.html

View Details

Sara Lichtenstein and Taylor Fausak talk about improving the performance of Haskell programs by profiling them.

  • https://blog.jez.io/profiling-in-haskell/

View Details

Cameron Gera and Taylor Fausak talk about how Haskell encourages you to use the ports and adapters architecture.

  • https://blog.ploeh.dk/2016/03/18/functional-architecture-is-ports-and-adapters/

View Details

Jason Fry and Cameron Gera talk about four small ways to improve Haskell as a language.

  • https://medium.com/daml-driven/four-tweaks-to-improve-haskell-b1de9c87f816

View Details

Cameron Gera and Cody Goodman talk about enforcing best practices with HLint and refactoring.

  • https://medium.com/co-star-engineering/continuous-improvement-with-hlint-code-smells-e490886558a1

View Details

Cameron Gera and Taylor Fausak talk about how regular expressions compare to parser combinators in Haskell.

  • https://williamyaoh.com/posts/2019-04-11-cheatsheet-to-regexes-in-haskell.html

View Details

Jason Fry and Taylor Fausak talk about getting fast feedback when developing Haskell by using ghcid.

  • https://functor.tokyo/blog/2019-04-07-ghcid-for-web-app-dev

View Details

Cameron Gera and Taylor Fausak talk about build tools in Haskell, including Stack and Cabal.

  • https://sakshamsharma.com/2018/03/haskell-proj-struct/

View Details

Dustin Segers and Taylor Fausak talk about avoiding boolean blindness by using custom types.

  • https://runtimeverification.com/blog/code-smell-boolean-blindness/

View Details

Jason Fry and Taylor Fausak compare frontend and backend languages, including PureScript and Elm.

  • https://www.parsonsmatt.org/2015/10/03/elm_vs_purescript.html

View Details

Sara Lichtenstein and Taylor Fausak talk about the good and bad of upgrading from Elm 0.18 to 0.19.

  • https://engineering.itpro.tv/2019/03/01/upgrading-elm-to-v19/

View Details

Cody Goodman and Taylor Fausak talk about handling errors in Haskell by using exceptions.

  • https://markkarpov.com/tutorial/exceptions.html