Issue 127
Welcome to another issue of Haskell Weekly! Haskell is a safe, purely functional programming language with a fast, concurrent runtime. This is a weekly summary of what’s going on in its community.
Featured
-
Komposition: The video editor built for screencasters (in Haskell!)
Komposition is the video editor built for screencasters. It lets you focus on producing and publishing quality content, instead of spending all of your time in complicated video editors. Komposition automatically detects scenes in screen capture video, automatically detects sentences in voice-over audio recordings, and features a high-productivity editing workflow based on keyboard navigation.
-
Testing Our Ruby and Haskell Implementations Side-By-Side
After almost ten years of continuous development, Mpowered’s calculation engine has become a maintenance and innovation bottleneck. We decided to extract and replace the Empowerment component with a new solution built in Haskell. This posts describes how we are testing during the transition.
-
Capability: The
ReaderT
pattern without boilerplateIn this post, we’ll argue why capabilities are important, why you should use them, and tell you about what it took to design a library of capabilities with good ergonomics. It turns out that a brand new language extension that shipped with GHC 8.6,
-XDerivingVia
, has a crucial role in this story. -
Haskell in production: A GHC upgrade success story
Version upgrade nightmares are so common that they have become almost expected. Update the compiler one patch level, or a library version, and the work spirals into a much larger project. This is a story of going forward two versions in GHC, 8.0.2 to 8.4.3, and updating our libraries at the same time.
-
Introducing Haskell to a company
This post makes the assumption that the reader understands why they themselves would want to use Haskell and what its benefits are, so instead focuses on how we’ve made it a successful part of our own company’s development culture.
-
Keep your types small and your bugs smaller
The more precisely our types describe our program, the fewer ways we have to go wrong. Ideally, we can provide a correct output for every input, and we use a type that tightly describes the properties of possible outputs.
-
In one of my recent posts, I’ve mentioned gathering metrics for my Haskell application. Some people asked me about my setup, so I will try to describe how I configured and structured my application.
-
Rewrite rules and a specific fold: Use optimization techniques from
GHC.Base
Alga, a functional implementation of graphs, defines a foldable structure with a fold (named
foldg
) specialized for the graph data. Can we use the same tricks thanGHC.Base
to optimize compositions offoldg
withfmap
? Spoiler: Yes, and we can do it without any pain! -
Announcing Pure-C: A C backend for PureScript
Pure-C is an alternative backend for PureScript, a strongly typed, purely functional programming language that compiles down to native code via the Clang compiler toolchain.
-
Haskell study plan: An opinionated list of resources for learning Haskell
This guide is an opinionated list of resources for learning Haskell. It is aimed at more experienced programmers that would like a denser Haskell tutorial.
Jobs
-
Software engineer at Opolis in Denver
Opolis is hiring for a full time mid-to-senior level software engineer. We’re located in the beautiful front range of Colorado, we have an office in Denver, and are very flexible with remote work.
-
Haskell programmers at Digital Asset in New York/Zurich
I am currently working at Digital Asset, working on our DAML programming language. We’re seeking 3 additional Haskell programmers to join, 2 in New York and 1 in Zurich.
-
Developers at Groq in Portland
Come work with us! Multiple roles in compilers, software testing + validation, drivers & firmware. Doing most things in Haskell. Portland and Bay Area.
-
Interns at Tsuru Capital in Tokyo
Tsuru Capital is a proprietary trading fund focused on options market-making. In-house software is mainly developed in Haskell. We are hiring interns!
-
Engineer at Mercury in San Francisco
Mercury is building a bank for businesses. We are currently 8 people and have raised $6m from a tier A VC. We are close to alpha launch and are looking to grow our team.
In brief
- Announcing Stackage nightly snapshots with GHC 8.6.1
- Applicative functors
- GHC 8.6.1 is badly broken
- Hacktoberfest 2018: Call for participation
- Introduction to singletons: Part 3
- Mocking effects using constraints and phantom data kinds
- Monthly Hask Anything: October 2018
- Overloaded type families
- Productive Haskell in enterprise
- Stuck in the middle: Adding middleware to a Servant server
- Upcoming Haskell events: Haskell eXchange, Courses, MuniHac
Package of the week
This week’s package of the week is Hakyll, a library for generating static sites. It’s mostly aimed at small-to-medium sites and personal blogs.
Call for participation
Looking to participate in the fifth annual Hacktoberfest? Check out some of these issues with the “Hacktoberfest” label from Haskell repositories on GitHub!
- AutoBench: Visualising runtime results given as 3 dimensional co-ordinates
- spacchetti-cli: Provide some spacchetti package management commands
Events
- 2018-10-04 in Durham, NC, USA by Durham Haskell Meetup: Morning Haskell (and Rust!) coding session
- 2018-10-04 in Las Vegas, NV, USA by Las Vegas Functional Programming User Group: Functional Programming Meetup
- 2018-10-04 in Santiago, Chile by Santiago Scala Meetup: Santiago Scala Meetup
- 2018-10-04 in Graz, Austria by Functional Programming Graz: Functional Programming Graz: Akka Typed and other Type Systems for Actors
- 2018-10-04 in Mumbai, India by DelhiNCR Haskell And Functional Programming Languages Group: FPNCR Monthly meetup
- 2018-10-04 in Taipei, Taiwan by Functional Thursday: Functional Thursday #68
- 2018-10-04 in Brasov, Romania by PentaBAR Brasov // Tech Meetup by Pentalog: PentaBAR #41 // Functional Programming – A Beginner’s Guide to Haskell
- 2018-10-04 in Singapore, Singapore by HASKELL.SG: October Singapore Haskell Meetup
- 2018-10-04 in 28046 Madrid, Spain by Madrid Haskell Users Group: Coq for Haskell programmers
- 2018-10-06 in Chilliwack, BC, Canada by ChilliHask Haskell User Group: Weekly Haskell Coding Meetup
- 2018-10-06 in Boston, MA, USA by Weekly Functional Programming Meetup: Hang out, chat FP, work on some code
- 2018-10-07 in Bangalore, India by Bangalore Functional Programmers Meetup: Reader & State in Haskell
- 2018-10-08 in Charlottesville, VA, USA by Charlottesville Haskell Book Reading Group: Chapters 20 & 21 - Foldable & Traversable
- 2018-10-08 in Irvine, CA by Orange Combinator - Functional Programming In OC: Combinating - The Weekly Function
- 2018-10-08 in Saint Louis, MO by STL Elm: Elm Code Night
- 2018-10-08 in Sydney, Australia by Sydney Type Theory: Homotopy Type Theory
- 2018-10-08 in Pittsburgh, PA, USA by Pittsburgh Functional Programming Meetup: Shell Scripting in Haskell
- 2018-10-08 in Johannesburg, South Africa by Lambda Luminaries: Functional Strategies in AI Game Bots - “One weird FP trick that made us rich!”
- 2018-10-09 in Vancouver, BC, Canada by Vancouver Functional Programmers: Haskell Lunch Study Group • Fall ’18 Cohort (new group)
- 2018-10-09 in Sofia, Bulgaria by Lambda Dojo Sofia: Conference Talk Preview #2: PHP CE & ClojuTRE recap
- 2018-10-09 in Vancouver, BC, Canada by Functional Programming Vancouver: Our first ‘Functional Programming Vancouver’ meet and greet!
- 2018-10-09 in Brisbane, Australia by Brisbane Functional Programming Group (BFPG): BFPG Monthly Meetup
- 2018-10-10 in Fortaleza, Brazil by Programação Funcional em Fortaleza: Programação Funcional em Fortaleza
- 2018-10-10 in Tucson, AZ, USA by Tucson Functional Programmers: Monthly Get Together
- 2018-10-10 in Vancouver, BC, Canada by Vancouver Functional Programmers: Haskell Lunch Study Group • Spring ’18 Cohort