Haskell Weeklyhttps://haskellweekly.news/newsletter.atom2024-03-14T12:00:00Zhttps://haskellweekly.news/issue/411.htmlIssue 4112024-03-14T12:00:00ZHaskell Weeklyinfo@haskellweekly.news<p>Welcome to another issue of Haskell Weekly!
<a href="https://www.haskell.org">Haskell</a> 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.</p>
<h2><a id='featured'></a>Featured</h2>
<ul>
<li>
<p><a href="https://haskell-cryptography.org/blog/botan-first-milestone/">Botan: The first milestone</a> by the Haskell Cryptography Group</p>
<blockquote>
<p>What are you using cryptography for? Would you be interested in trying something new? Perhaps an alternate backend for your cryptography needs?</p>
</blockquote>
</li>
<li>
<p><a href="https://www.tweag.io/blog/2024-03-07-dps-haskell/">Extending destination-passing style programming to arbitrary data types in Linear Haskell</a> by Thomas Bagrel</p>
<blockquote>
<p>Three years ago, a blog post introduced destination-passing style (DPS) programming in Haskell, focusing on array processing, for which the API was made safe thanks to Linear Haskell. Today, I’ll present a slightly different API to manipulate arbitrary data types in a DPS fashion, and show why it can be useful for some parts of your programs. The present blog post is mostly based on my recent paper Destination-passing style programming: a Haskell implementation, published at JFLA 2024. It assumes basic knowledge of Linear Haskell and intermediate fluency in Haskell.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.haskell.org/ghc/blog/20240313-ghc-9.10.1-alpha1-released.html">GHC 9.10.1-alpha1 is now available</a> by Ben Gamari</p>
<blockquote>
<p>The GHC developers are very pleased to announce the availability of the first alpha release of GHC 9.10.1.</p>
</blockquote>
</li>
<li>
<p><a href="https://well-typed.com/blog/2024/03/ghc-activities-report-december-2023-february-2024/">GHC activities report: December 2023–February 2024</a> by Well-Typed</p>
<blockquote>
<p>This is the twenty-second edition of our GHC activities report, which describes the work on GHC, Cabal and related projects that we are doing at Well-Typed. The current edition covers roughly the months of December 2023 to February 2024.</p>
</blockquote>
</li>
<li>
<p><a href="https://thunderseethe.dev/posts/bet-on-cbpv/">I’m betting on Call-by-Push-Value</a> by Thunderseethe</p>
<blockquote>
<p>You come upon a function argument at a fork in the road. If it takes the left road, it’ll evaluate itself and then be passed to its function. If it takes the right road, it’ll pass itself to the function to be evaluated somewhere down the road (🥁🐍). Let’s bet on which road will be faster.</p>
</blockquote>
</li>
<li>
<p><a href="https://stevana.github.io/towards_zero-downtime_upgrades_of_stateful_systems.html">Towards zero-downtime upgrades of stateful systems</a> by Stevan</p>
<blockquote>
<p>Most deployed programs need to be upgraded at some point. The reasons vary from adding new features to patching a bug and potentially fixing a broken state. Even though upgrades are an essential part of software development and maintenance, programming languages tend to not help the programmer deal with them in any way.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.michaelpj.com/blog/2024/03/11/defunctionalization-thoughts.html">Why is defunctionalization good?</a> by Michael Peyton Jones</p>
<blockquote>
<p>Most explanations of defunctionalization focus on the fact that it turns higher-order programs into first-order programs. I think there is another way to look at it: defunctionalization <em>changes the representation of closures</em> in the program. In particular, it makes their representation <em>visible</em> in the source program. This opens up opportunities for optimization by both the user and the compiler.</p>
</blockquote>
</li>
</ul>
<h2><a id='jobs'></a>Jobs</h2>
<p>Trying to hire a Haskell developer?
You should <a href="https://haskellweekly.news/advertising.html">advertise with us</a>!</p>
<h2><a id='in-brief'></a>In brief</h2>
<ul>
<li>
<p><a href="https://www.reddit.com/r/haskell/comments/1b9pmus/ann_copilot_319/">Copilot 3.19</a> by u/ivanpd</p>
<blockquote>
<p>We are very excited to announce Copilot 3.19. Copilot is a stream-based EDSL in Haskell for writing and monitoring embedded C programs, with an emphasis on correctness and hard realtime requirements. Copilot is typically used as a high-level runtime verification framework, and supports temporal logic (LTL, PTLTL and MTL), clocks and voting algorithms.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/double-x-encoding-encoding-scheme-to-encode-any-unicode-string-with-only-0-9a-za-z/8997">Double-X-Encoding - Encoding scheme to encode any Unicode string with only <code>\[0-9a-zA-Z_\]</code></a> by Adrian Sieber</p>
<blockquote>
<p>And as we’ve been using it for the last year in production on airsequel.com without any problems and we like how it solves the “Unicode Identifier” problem, we’re now confident enough to share it with you!</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/ann-scotty-0-22/9005">Scotty 0.22</a> by ocramz</p>
<blockquote>
<p>Another small but mighty release, with some bugfixes and some QoL improvements, as well as a number of new tests.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/ann-stack-2-15-3/8983">Stack 2.15.3</a> by Mike Pilgrem</p>
</li>
</ul>
<h2><a id='show-tell'></a>Show & tell</h2>
<ul>
<li><a href="https://discourse.haskell.org/t/ive-released-a-package-candidate-integrating-katip-with-effectful/9036">I’ve released a package candidate integrating katip with effectful</a> by Eldritch Cookie
<blockquote>
<p>Provides a Katip and KatipContext instance for the Eff Monad and re-exports all of Katip’s API.</p>
</blockquote>
</li>
</ul>
<h2><a id='call-for-participation'></a>Call for participation</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/cfp-haskell-symposium-2024/9025">CFP: Haskell Symposium 2024</a> by J. Garrett Morris</p>
<blockquote>
<p>The ACM SIGPLAN Haskell Symposium 2024 will be co-located with the 2024 International Conference on Functional Programming (ICFP). The Haskell Symposium presents original research on Haskell, discusses practical experience and future development of the language, and promotes other forms of declarative programming.</p>
</blockquote>
</li>
<li>
<p><a href="https://github.com/scotty-web/scotty/issues/387">scotty: Don’t export ParseRequestBodyOptions</a></p>
</li>
<li>
<p><a href="https://github.com/xmonad/xmonad-contrib/issues/880">xmonad-contrib: Create a migration guide for <code>X.H.StatusBar</code> in the release announcement</a></p>
</li>
</ul>
https://haskellweekly.news/issue/410.htmlIssue 4102024-03-07T12:00:00ZHaskell Weeklyinfo@haskellweekly.news<p>Welcome to another issue of Haskell Weekly!
<a href="https://www.haskell.org">Haskell</a> 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.</p>
<h2><a id='featured'></a>Featured</h2>
<ul>
<li>
<p><a href="https://haskell.foundation/podcast/44/">Episode 44 – José Manuel Calderón Trilla</a> by The Haskell Interlude</p>
<blockquote>
<p>Wouter and Niki interview Jose Calderon, the new Executive Director of the Haskell Foundation. Jose tells why he applied for the job, how he sees the foundation developing over the coming years, and how you can get involved in the Haskell community.</p>
</blockquote>
</li>
<li>
<p><a href="https://iagoleal.com/posts/value-iteration-haskell/">Playing with Value Iteration in Haskell</a> by Iago Leal de Freitas</p>
<blockquote>
<p>Today we are going in a similar exploration of Decision Processes, a close cousin to Finite Automata from the not-so-close field of Optimal Control. These are multistage decision problems with the same kind of dynamics as finite automata. Furthermore, we can formulate Value Iteration — one of the usual to optimize them — compactly using the Haskell machinery.</p>
</blockquote>
</li>
<li>
<p><a href="https://nicaudinet.github.io/2024/03/03/hmatrix-reshape/">Reshape in Hmatrix</a> by Nicolas Audinet de Pieuchon</p>
<blockquote>
<p>The goal of this post is to implement a type-safe <code>reshape</code> function using the Hmatrix Static API.</p>
</blockquote>
</li>
<li>
<p><a href="https://well-typed.com/blog/2024/03/haskell-unfolder-episode-21-testing-without-a-reference/">The Haskell Unfolder Episode 21: testing without a reference</a> by Andres Löh, Edsko de Vries</p>
<blockquote>
<p>The best case scenario when testing a piece of software is when we have a reference implementation to compare against. Often however such a reference is not available, begging the question how to test a function if we cannot verify what that function computes exactly. In this episode we will consider how to define properties to verify the implementation of Dijkstra’s shortest path algorithm we discussed in Episode 20; you may wish to watch that episode first, but it’s not required: we will mostly treat the algorithm as a black box for the sake of testing it.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.haskellforall.com/2024/02/the-siren-song-of-domain-specific.html">The siren song of domain-specific languages</a> by Gabriella Gonzalez</p>
<blockquote>
<p>I’ve seen a lot of engineering teams mistakenly believe that they can author domain-specific languages for less technical users on a budget. In particular they seem to believe that if they create this domain-specific language then the less technical users will be able to thoughtlessly churn out a bunch of code in that language and there won’t be any problem and they can then move onto the next project. This rarely works out in the way that people hope it will.</p>
</blockquote>
</li>
</ul>
<h2><a id='jobs'></a>Jobs</h2>
<p>Trying to hire a Haskell developer?
You should <a href="https://haskellweekly.news/advertising.html">advertise with us</a>!</p>
<h2><a id='in-brief'></a>In brief</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/haskell-foundation-february-2024-update/8965">Haskell Foundation February 2024 Update</a> by José Manuel Calderón Trilla</p>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/ann-haskell-language-server-2-7-0-0/8925">Haskell Language Server 2.7.0.0</a> by Fendor</p>
<blockquote>
<p>The HLS team is pleased to announce the release of Haskell Language Server 2.7.0.0</p>
</blockquote>
</li>
<li>
<p><a href="https://www.reddit.com/r/haskell/comments/1b43z62/minipat_a_music_pattern_language_live_coding/">minipat - a music pattern language + live coding environment</a> by u/charolastrauno</p>
<blockquote>
<p>I have been working on minipat, which is largely Tidal-compatible but hopefully makes it easy to add new backends!</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/one-billion-row-challenge-in-hs/8946">One Billion Row challenge in Haskell</a> by ocramz</p>
<blockquote>
<p>The 1BRC is a fun challenge in data processing that was originally restricted to JVM languages. Essentially, you have to compute averages and extreme values of a set of recordings.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.reddit.com/r/haskell/comments/1b6mbd9/open_telemetry_instrumentation_plugin/">Open Telemetry Instrumentation Plugin</a> by Aaron Allen</p>
<blockquote>
<p>I’ve just released a compiler plugin that allows for auto-instrumenting an application for emitting open telemetry traces based on user configured rules. It relies on the wonderful hs-opentelemetry project by Ian Duncan for all open telemetry functionality.</p>
</blockquote>
</li>
</ul>
<h2><a id='show-tell'></a>Show & tell</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/do-your-taxes-with-haskell/8942">Do your taxes with Haskell!</a> by Mario Blazevic</p>
<blockquote>
<p>The last year’s debut of the canadian-income-tax package came rather late in the tax season, because I only realized it was possible when I went to do my own taxes. I had a year to prepare since then, so you can use the just-released version 2023.0 now, 2023 signifying the tax year it’s for. But it’s not only the tax year that’s different!</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/some-data-science-in-haskell/8926">Some data science in Haskell</a> by Emir Uz</p>
<blockquote>
<p>Here is a UK property price model in Haskell. It interpolates the price of a UK house across all time from just public price paid data. It features a fairly large sparse non-linear regression problem solved with a custom implementation of the Adam optimiser (adamax variant), the ad autodiff package and a bit of wrangling in about 55 lines of code.</p>
</blockquote>
</li>
</ul>
<h2><a id='call-for-participation'></a>Call for participation</h2>
<ul>
<li><a href="https://github.com/well-typed/grapesy/issues/97">grapesy: Deal with duplicate header names for custom metadata</a></li>
</ul>
https://haskellweekly.news/issue/409.htmlIssue 4092024-02-29T12:00:00ZHaskell Weeklyinfo@haskellweekly.news<p>Welcome to another issue of Haskell Weekly!
<a href="https://www.haskell.org">Haskell</a> 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.</p>
<h2><a id='featured'></a>Featured</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/ghc-9-8-2-is-now-available/8880">GHC 9.8.2 is now available</a> by Zubin Duggal</p>
<blockquote>
<p>The GHC developers are happy to announce the availability of GHC 9.8.2.</p>
</blockquote>
</li>
<li>
<p><a href="https://oleg.fi/gists/posts/2024-02-27-more-qualified-do.html">More QualifiedDo examples</a> by Oleg Grenrus</p>
<blockquote>
<p>Qualified do-notation, <code>QualifiedDo</code>, is a nice syntactical extension in GHC. Probably its best property is that it changes semantics only locally, by using explicit “annotation”: by qualifying the <code>do</code> keyword. This means that enabling the extension doesn’t change meaning of other & existing code.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.haskellforall.com/2024/02/unification-free-keyword-type-checking.html">Unification-free (“keyword”) type checking</a> by Gabriella Gonzalez</p>
<blockquote>
<p>From my perspective, one of the biggest open problems in implementing programming languages is how to add a type system to the language without significantly complicating the implementation.</p>
</blockquote>
</li>
<li>
<p><a href="https://jappie.me/announcement-updated-esqueleto-text-search-postgis-bindings.html">Updated Esqueleto text-search & PostGIS bindings</a> by Jappie J. T. Klooster</p>
<blockquote>
<p>I’ve updated the esqueleto bindings for esqueleto-textsearch to include a tutorial and documentation so it no longer requires guesswork. Furthermore I’ve also created new esqueleto bindings for PostGIS.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/when-is-a-module-too-big-when-is-a-module-too-small/8865">When is a module too big? When is a module too small?</a> by Ignat Insarov</p>
<blockquote>
<p>I am going to try and answer myself but you will see my success is modest.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/why-are-partial-functions-so-prevalent-in-prelude/8896">Why are Partial Functions so prevalent in Prelude?</a> by Helgard</p>
<blockquote>
<p>Why does the Prelude seem unsafe - or rather why does the Prelude seem less safe than it should be?</p>
</blockquote>
</li>
</ul>
<h2><a id='jobs'></a>Jobs</h2>
<p>Trying to hire a Haskell developer?
You should <a href="https://haskellweekly.news/advertising.html">advertise with us</a>!</p>
<h2><a id='in-brief'></a>In brief</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/haskell-selected-for-gsoc-2024/8916">Haskell Selected for GSoC 2024</a> by Aaron Allen</p>
<blockquote>
<p>The Haskell.Org committee is pleased to announce that Haskell is one of the organizations selected to participate in the Google Summer of Code 2024 program!</p>
</blockquote>
</li>
<li>
<p><a href="https://github.com/DanRyba253/smh">smh</a> by Dani Rybe</p>
<blockquote>
<p>A string manipulation tool written in haskell.</p>
</blockquote>
</li>
</ul>
<h2><a id='show-tell'></a>Show & tell</h2>
<ul>
<li><a href="https://discourse.haskell.org/t/advent-of-code-2022-complete/8872">Advent of Code 2022 Complete</a> by Emir Uz
<blockquote>
<p>Here are my complete Advent of Code 2022 solutions in an average of 27 lines of code (LOC). My main emphasis was solving everything using minimum LOC and minimal vocabulary whilst maintaining reasonable performance.</p>
</blockquote>
</li>
</ul>
<h2><a id='call-for-participation'></a>Call for participation</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/haskell-video-archive-call-for-volunteers/8863">Haskell Video Archive: Call for Volunteers</a> by José Manuel Calderón Trilla</p>
<blockquote>
<p>As some of you may have heard, Skills Matter, the organization that ran the Haskell eXchange for many years, is no longer running. Fortunately the Haskell Foundation was able to archive a significant majority of the Haskell-related videos before they became unavailable. This was done with the permission of Skills Matter, who provided us with the access. However, we have only the videos, we do not have descriptions or the name of the speaker. So we need your help organizing the material.</p>
</blockquote>
</li>
<li>
<p><a href="https://github.com/haskell/cabal/issues/9746">cabal: <code>cabal clean</code> should fail if not in a cabal directory</a></p>
</li>
<li>
<p><a href="https://github.com/unisonweb/unison/issues/4732">unison: give more info for “You appear to be offline”</a></p>
</li>
</ul>
https://haskellweekly.news/issue/408.htmlIssue 4082024-02-22T12:00:00ZHaskell Weeklyinfo@haskellweekly.news<p>Welcome to another issue of Haskell Weekly!
<a href="https://www.haskell.org">Haskell</a> 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.</p>
<h2><a id='featured'></a>Featured</h2>
<ul>
<li>
<p><a href="https://taylor.fausak.me/2024/02/17/gild/">Announcing Gild, a formatter for Haskell package descriptions</a> by Taylor Fausak</p>
<blockquote>
<p>I’m happy to announce Gild, a formatter/pretty-printer for package descriptions (<code>*.cabal</code> files).</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/ann-botan-bindings-botan-low-0-0-1-0-released/8800">botan-bindings & botan-low 0.0.1.0 released</a> by Apotheca Labs</p>
<blockquote>
<p>This is the result of more than 7 months of sustained effort to provide a series of bindings to the Botan C++ cryptography library, and was made possible through support from the Haskell Foundation and funding provided by Mercury.</p>
</blockquote>
</li>
<li>
<p><a href="https://haskell.foundation/podcast/43/">Episode 43 – Ivan Perez</a> by The Haskell Interlude</p>
<blockquote>
<p>In this episode, Wouter and Andres interview Ivan Perez, a senior research scientist at NASA. Ivan tells us about how NASA uses Haskell to develop the Copilot embedded domain specific language for runtime verification, together with some of the obstacles he encounters getting to end users to learn Haskell and adopt such an EDSL.</p>
</blockquote>
</li>
<li>
<p><a href="https://blog.ploeh.dk/2024/02/19/extracting-data-from-a-small-csv-file-with-haskell/">Extracting data from a small CSV file with Haskell</a> by Mark Seemann</p>
<blockquote>
<p>This article is part of a short series of articles that compares ad-hoc scripting in Haskell with solving the same problem in Python. The introductory article describes the problem to be solved, so here I’ll jump straight into the Haskell code.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/reactimate-a-new-afrp-library/8852">Reactimate - A new AFRP library</a> by Simon</p>
<blockquote>
<p>I have been working on a new AFRP (Arrowized Functional Reactive Programming) library for about a month which I wanted to share. It is called reactimate and is heavily inspired by the great <code>Yampa</code> library.</p>
</blockquote>
</li>
<li>
<p><a href="https://kazu-yamamoto.hatenablog.jp/entry/2024/02/21/093743">Status report of dnsext</a> by Kazu Yamamoto</p>
<blockquote>
<p>This article reports the current status of the dnsext packages in Haskell.</p>
</blockquote>
</li>
<li>
<p><a href="https://well-typed.com/blog/2024/02/haskell-unfolder-episode-20-dijkstras-shortest-paths/">The Haskell Unfolder Episode 20: Dijkstra’s shortest paths</a> by Andres Löh, Edsko de Vries</p>
<blockquote>
<p>In this (beginner-friendly) episode, we will use Dijkstra’s shortest paths algorithm as an example of how one can go about implementing an algorithm given in imperative pseudo-code in idiomatic Haskell. We will focus on readability, not on performance.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.reddit.com/r/haskell/comments/1av4g1g/what_do_you_use_haskell_for/">What do you use Haskell for?</a> by u/HearingYouSmile</p>
<blockquote>
<p>Folks using Haskell professionally: what’s your role/industry? How did you get into that type of work? Do you have any advice for someone interested in a similar career?</p>
</blockquote>
</li>
</ul>
<h2><a id='jobs'></a>Jobs</h2>
<p>Trying to hire a Haskell developer?
You should <a href="https://haskellweekly.news/advertising.html">advertise with us</a>!</p>
<h2><a id='in-brief'></a>In brief</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/ann-fourmolu-0-15-0-0-released/8842/2">Fourmolu 0.15.0.0 released</a> by Brandon Chinn</p>
<blockquote>
<p>Fourmolu 0.15.0.0 has been released! This release adds one new configuration option, <code>single-deriving-parens</code>, to determine if <code>deriving</code> clauses with a single type should be parenthesized. The release also contains changes from the latest ormolu release, including better comment placement for if blocks and respecting newlines better in data declarations.</p>
</blockquote>
</li>
<li>
<p><a href="https://pandoc.org/releases.html#pandoc-3.1.12-2024-02-14">Pandoc 3.1.12 released</a></p>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/stack-all-0-5-released/8839">Stack-all 0.5 released</a> by Jens Petersen</p>
<blockquote>
<p>I made a new release of stack-all, a tool which can build a project with stack across different Stackage versions.</p>
</blockquote>
</li>
<li>
<p><a href="https://mrmr.io/til/prettier">Why is Prettier rock solid?</a> by Manav Rathi</p>
<blockquote>
<p>Of course, this is not to take away from the authors of Prettier and the years of work that has subsequently gone into it – I’m just chirping about how Haskell continues to enrich my life even when I’m not using it.</p>
</blockquote>
</li>
</ul>
<h2><a id='show-tell'></a>Show & tell</h2>
<ul>
<li>
<p><a href="https://taylor.fausak.me/2024/02/20/purple-yolk/">Announcing Purple Yolk, a dumb Haskell extension for VS Code</a> by Taylor Fausak</p>
<blockquote>
<p>I’m happy (although maybe not that proud) to announce Purple Yolk, a dumb Haskell extension for VS Code. It basically just runs GHCi in the background for you in order to get squiggly underlines. Also it can run HLint to get code quality hints. And it can format Haskell and Cabal files with the formatter of your choice. That may not sound like much, but I’ve found it to be enough for an effective Haskell IDE!</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/devops-weekly-log-2024-02-14/8798">DevOps Weekly Log, 2024-02-14</a> by Bryan Richter</p>
<blockquote>
<p>Over the last three days, I worked to fix the search functionality on Stackage.org. The root cause was not related to the ongoing migration I’m performing, but fixing the problem took longer than it would have previously, because I still have a lot to learn about how Stackage works. The good news is it’s fixed now.</p>
</blockquote>
</li>
</ul>
<h2><a id='call-for-participation'></a>Call for participation</h2>
<ul>
<li><a href="https://github.com/JacquesCarette/Drasil/issues/3693">Drasil: Forbid capital letters in various sentence and noun phrase constructors</a></li>
</ul>
https://haskellweekly.news/issue/407.htmlIssue 4072024-02-15T12:00:00ZHaskell Weeklyinfo@haskellweekly.news<p>Welcome to another issue of Haskell Weekly!
<a href="https://www.haskell.org">Haskell</a> 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.</p>
<h2><a id='featured'></a>Featured</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/2024-call-for-nominations-for-the-haskell-foundation/8778">2024 Call for Nominations for the Haskell Foundation</a> by Andres Löh</p>
<blockquote>
<p>The Board of Directors of the Haskell Foundation is pleased to announce the nomination process for Board seats. The Board provides the strategic leadership for the Foundation, and is the final decision-making body for everything the Foundation does. More specifically, it ensures that the Foundation is working toward achieving its mission, and it appoints and supervises senior members of Foundation staff.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/botan-cryptography-3rd-monthly-status-report/8754">Botan Cryptography 3rd Monthly Status Report</a> by ApothecaLabs</p>
<blockquote>
<p>This is the third monthly report for the Botan Cryptography Project 12, and it comes with some very satisfying news!</p>
</blockquote>
</li>
<li>
<p><a href="https://www.youtube.com/watch?v=kOyVxj7p4lI">Effective Haskell • Rebecca Skinner & Emily Pillmore • GOTO 2024</a> by GOTO Conferences</p>
<blockquote>
<p>Rebecca Skinner, author of “Effective Haskell,” discusses key topics from her book in an interview with Emily Pillmore. The conversation touches on teaching philosophy, the practical approach to learning Haskell, the use of GHC versus building a system, and the significance of laziness in Haskell. Skinner shares insights on Monad Transformer Library (MTL) choices and hints at future explorations. The interview concludes with a focus on Skinner’s programming journey, emphasizing the joy of coding and the importance of embracing failure as a crucial part of the learning process in Haskell.</p>
</blockquote>
</li>
<li>
<p><a href="https://nicaudinet.github.io/2024/02/11/hmatrix-zeros-to-hero/">Hmatrix - from zeros to hero</a> by Nicolas Audinet de Pieuchon</p>
<blockquote>
<p>The goal of this post is to give a brief introduction to <code>hmatrix</code>’s Static API and show how to implement a type-safe <code>zeros</code> function in two different ways.</p>
</blockquote>
</li>
<li>
<p><a href="https://blog.ploeh.dk/2024/02/12/range-as-a-functor/">Range as a functor</a> by Mark Seemann</p>
<blockquote>
<p>This article is an installment in a short series of articles on the Range kata. In the previous three articles you’ve seen the Range kata implemented in Haskell, in F#, and in C#. The reason I engaged with this kata was that I find that it provides a credible example of a how a pair of functors itself forms a functor. In this article, you’ll see how that works out in three languages. If you don’t care about one or two of those languages, just skip that section.</p>
</blockquote>
</li>
<li>
<p><a href="https://kazu-yamamoto.hatenablog.jp/entry/2024/02/15/112519">Releasing tls library version 2.0.0 in Haskell</a> by Kazu Yamamoto</p>
<blockquote>
<p>I needed to implement the session ticket mechanism for my project. In addition to this coding, I decided to improve the <code>tls</code> library in Haskell drastically. So, I have spent three months to do so and finally released <code>tls</code> version 2.0.0. This version is secure by default and its code readability is improved. This article explains what changed.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/seeking-feedback-on-language-editions-proposal/8780">Seeking feedback on language editions proposal</a> by Richard Eisenberg</p>
<blockquote>
<p>I’ve been spending a bunch of time recently thinking how to streamline GHC’s interface – mostly by trying to tame the unwieldy pile of extensions and warning flags that GHC supports. I’ve thus come up with a proposal about language editions.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.stackbuilders.com/blog/a-quickcheck-tutorial-generators/">A QuickCheck Tutorial: Generators</a> by Juan Pedro Villa</p>
<blockquote>
<p>From reversing lists to rolling dice and crafting generators for your data types, this tutorial will enhance your programming skills and help you get started with property-based testing in Haskell.</p>
</blockquote>
</li>
</ul>
<h2><a id='jobs'></a>Jobs</h2>
<!-- Runs on 2024-02-08 & 2024-02-15. -->
<ul>
<li><a href="https://jobs.channable.com/o/haskell-software-engineer-02-2024-2025">Haskell Software Engineer (Utrecht, NL)</a> (ad)
<blockquote>
<p>We are looking for 2 talented Haskell Software Engineers! In this position, you will be responsible for the design, development, and maintenance of new and old features in our application. You will also be working on scaling our Haskell applications to the next level, where we can handle another order of magnitude increase in throughput while keeping our app fast and responsive. We value the readability, maintainability, and testability of our codebase. Do you?</p>
</blockquote>
</li>
</ul>
<p>Trying to hire a Haskell developer?
You should <a href="https://haskellweekly.news/advertising.html">advertise with us</a>!</p>
<h2><a id='in-brief'></a>In brief</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/functor-monad-package-is-released/8755">Functor-monad package is released</a> by Koji Miyazato</p>
<blockquote>
<p>This package provides FFunctor and FMonad, each corresponds to Functor and Monad but higher-order.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/ann-stack-2-15-1/8767">Stack 2.15.1</a> by Mike Pilgrem</p>
</li>
</ul>
<h2><a id='show-tell'></a>Show & tell</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/semantic-highlighting-in-haskell-language-server/8760">Semantic highlighting in haskell language server</a> by Patrick Wales</p>
<blockquote>
<p>I have implemented semantic tokens plugin for haskell language server. It helps to highlight the code semantically.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/th-deepstrict-enforcing-deep-strictness-of-datatypes-using-th/8789"><code>th-deepstrict</code>: enforcing deep strictness of datatypes using TH</a> by Teo Camarasu</p>
<blockquote>
<p><code>th-deepstrict</code> is a library for enforcing (at compile time) that datatypes are deep strict. Deep strictness allows us to guarantee that evaluating a structure evaluates all thunks in all subparts of the structure. This gives us strong guarantees that a type cannot cause a space leak through excessive laziness.</p>
</blockquote>
</li>
</ul>
<h2><a id='call-for-participation'></a>Call for participation</h2>
<ul>
<li><a href="https://github.com/swarm-game/swarm/issues/1764">swarm: Support jump-to-definition</a></li>
</ul>
https://haskellweekly.news/issue/406.htmlIssue 4062024-02-08T12:00:00ZHaskell Weeklyinfo@haskellweekly.news<p>Welcome to another issue of Haskell Weekly!
<a href="https://www.haskell.org">Haskell</a> 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.</p>
<h2><a id='featured'></a>Featured</h2>
<ul>
<li>
<p><a href="https://www.stackbuilders.com/blog/a-quickcheck-tutorial-generators/">A QuickCheck Tutorial: Generators</a> by Stack Builders</p>
<blockquote>
<p>Learn how to use QuickCheck’s combinators to create simple generators of random values. From reversing lists to rolling dice and crafting generators for your data types, this tutorial will enhance your programming skills and help you get started with property-based testing in Haskell. This popular post was originally written in 2015 and updated in January 2024 to reflect QuickCheck library changes up to the most recent version (2.14.3) as well as other minor fixes.</p>
</blockquote>
</li>
<li>
<p><a href="https://magnus.therning.org/2024-02-03-bending-warp.html">Bending Warp</a> by Magnus Therning</p>
<blockquote>
<p>In the past I’ve noticed that Warp both writes to stdout at times and produces some default HTTP responses, but I’ve never bothered taking the time to look up what possibilities it offers to changes this behaviour. I’ve also always thought that I ought to find out how Warp handles signals.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.youtube.com/watch?v=UBgam9XUHs0">Exploring Verse, Haskell, Language Design and Teaching (with Simon Peyton Jones)</a> by Developer Voices</p>
<blockquote>
<p>We discuss how programming languages are made, focusing on a big design idea from both Haskell and Verse: building a large language from a small, tightly designed core. Then we move into Simon’s current work exploring Functional Logic Programming, the big new idea that underpins Verse. It’s an idea that blends the fundamentals FP with the core ideas of logic languages like Prolog in an entirely new way. Not even Simon knows exactly where the idea will lead, but it’s a fascinating idea that could potentially bring constraint-solving and deduction right into the heart of modern software.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.textql.com/blog/why-haskell">Haskell in Production: TextQL’s Ontology Service</a> by Mark Hay</p>
<blockquote>
<p>The ontology is a knowledge graph describing all of a TextQL customer’s key business concepts and how they map onto the user’s data warehouse. Think of it as a mix of an ERD diagram and a semantic layer UI where the data team can map business concepts onto the ontology’s core set of data types: Nouns, links, measures, dimensions, and metrics.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.channable.com/tech/haskell-exploding-call-stacks">Haskell’s problem with exploding call stacks</a> by Channable</p>
<blockquote>
<p>By default, Haskell does not provide call stacks when errors occur. To get call stacks, one can add the <code>HasCallStack</code> constraint to any function to request it. However, did you know that doing this carelessly can cause memory usage to explode? We didn’t either!</p>
</blockquote>
</li>
<li>
<p><a href="https://duckrabbit.tech/articles/learning-haskell.html">How I learned Haskell in just 15 years</a> by Evan Silberman</p>
<blockquote>
<p>Fifteen years or so ago, for reasons I can no longer remotely recall, I started learning Haskell. Now, I have finally written a useful program in Haskell, and I am pretty sure I can do it again, if I ever need another computer program.</p>
</blockquote>
</li>
<li>
<p><a href="https://bartoszmilewski.com/2024/02/07/linear-lenses-in-haskell/">Linear Lenses in Haskell</a> by Bartosz Milewski</p>
<blockquote>
<p>Haskell has essentially solved the concurrency and parallelism problems by channeling mutation to dedicated monads, but resource management has always been part of the awkward squad. The main advantage of linear types in Haskell, other than dealing with external resources, is to allow safe mutation and non-GC memory management. This could potentially lead to substantial performance gains.</p>
</blockquote>
</li>
<li>
<p><a href="https://overcoming.software/2024/02/07/persistent_models_are_views.html">Persistent Models are Views</a> by Matt von Hagen (Parsons)</p>
<blockquote>
<p>The Haskell <code>persistent</code> library provides a <code>QuasiQuoter</code> syntax for defining a Haskell datatype, along with code to convert it into a database table. However, there’s a bit of a subtlety here.</p>
</blockquote>
</li>
<li>
<p><a href="https://blog.ploeh.dk/2024/02/05/statically-and-dynamically-typed-scripts/">Statically and dynamically typed scripts</a> by Mark Seemann</p>
<blockquote>
<p>I was recently following a course in mathematical analysis and probability for computer scientists. One assignment asked to analyze a small CSV file with data collected in a student survey. The course contained a mix of pure maths and practical application, and the official programming language to be used was Python. It was understood that one was to do the work in Python, but it wasn’t an explicit requirement, and I was so tired that I didn’t have the energy for it. I can get by in Python, but it’s not a language I’m actually comfortable with. For small experiments, ad-hoc scripting, etc. I reach for Haskell, so that’s what I did.</p>
</blockquote>
</li>
</ul>
<h2><a id='jobs'></a>Jobs</h2>
<!-- Runs on 2024-02-08 & 2024-02-15. -->
<ul>
<li><a href="https://jobs.channable.com/o/haskell-software-engineer-02-2024-2025">Haskell Software Engineer (Utrecht, NL)</a> (ad)
<blockquote>
<p>We are looking for 2 talented Haskell Software Engineers! In this position, you will be responsible for the design, development, and maintenance of new and old features in our application. You will also be working on scaling our Haskell applications to the next level, where we can handle another order of magnitude increase in throughput while keeping our app fast and responsive. We value the readability, maintainability, and testability of our codebase. Do you?</p>
</blockquote>
</li>
</ul>
<p>Trying to hire a Haskell developer?
You should <a href="https://haskellweekly.news/advertising.html">advertise with us</a>!</p>
<h2><a id='in-brief'></a>In brief</h2>
<ul>
<li>
<p><a href="https://github.com/solomon-b/kindly-functors">A category polymorphic Functor library based on IcelandJack & Ed Kmett’s ideas</a> by Solomon</p>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/github-hosted-runner-for-macos-aarch64/8717">GitHub-hosted runner for macOS/AArch64</a> by Mike Pilgrem</p>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/haskell-foundation-december-2023-january-2024-update/8713">Haskell Foundation December 2023|January 2024 Update</a> by José Manuel Calderón Trilla</p>
</li>
<li>
<p><a href="https://github.com/matthunz/conduct">Sneak peek at Conduct - A Haskell UI framework using Tauri</a> by Matt Hunzinger</p>
</li>
</ul>
<h2><a id='show-tell'></a>Show & tell</h2>
<ul>
<li><a href="https://discourse.haskell.org/t/devops-weekly-log-2024-02-07/8750">DevOps Weekly Log, 2024-02-07</a> by Bryan Richter
<blockquote>
<p>It’s another weekly log dominated by CI issues.</p>
</blockquote>
</li>
</ul>
<h2><a id='call-for-participation'></a>Call for participation</h2>
<ul>
<li>
<p><a href="https://github.com/haskell/cabal/issues/8128">cabal: Documentation help wanted: Educate users on making flag-dependent APIs in cabal files</a></p>
<blockquote>
<p>We want to educate our users regarding APIs exposed (or not) depending on a cabal flag. The user manual should reflect that this is a bad idea.</p>
</blockquote>
</li>
<li>
<p><a href="https://github.com/haskell/lsp/issues/555">lsp: Consider a <code>onVFSChange</code> callback</a></p>
</li>
</ul>
https://haskellweekly.news/issue/405.htmlIssue 4052024-02-01T12:00:00ZHaskell Weeklyinfo@haskellweekly.news<p>Welcome to another issue of Haskell Weekly!
<a href="https://www.haskell.org">Haskell</a> 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.</p>
<h2><a id='featured'></a>Featured</h2>
<ul>
<li>
<p><a href="https://www.stackbuilders.com/blog/a-sneak-peek-at-our-haskell-training-course/">A Sneak Peek at our Haskell Training Course</a> by Stack Builders</p>
<blockquote>
<p>Our Haskell training course is a unique part of working as an engineer in Stack Builders. It helps to build our community and helps engineers see problems in new ways, regardless of whether they’re working on Haskell projects, or in languages. We hope that this high-level overview helps you to find the motivation to learn Haskell.</p>
</blockquote>
</li>
<li>
<p><a href="https://haskell.foundation/podcast/42/">Episode 42 – Jezen Thomas</a> by The Haskell Interlude</p>
<blockquote>
<p>Jezen Thomas is co-founder and CTO of Supercede, a company applying Haskell in the reinsurance industry. In this episode, Jezen, Wouter and Joachim talk about his experience using Haskell in industry, growing a diverse and remote team of developers, and starting a company to create your own Haskell job.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.well-typed.com/blog/2024/01/ghc-eras-profiling/">Eras profiling for GHC</a> by Matthew Pickering, Zubin Duggal</p>
<blockquote>
<p>Eras profiling is a new GHC profiling mode that will be available in GHC 9.10. For each closure it records the “era” during which it was allocated, thereby making it possible to analyse the points at which closures are allocated much more precisely.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/ghc-steering-committee-call-for-nominations-2024/8666">GHC Steering Committee Call for Nominations 2024</a> by Adam Gundry</p>
<blockquote>
<p>The committee scrutinizes, debates and eventually decides to accept or reject proposals to change the language or major features supported by GHC. Our processes are described in the GitHub repository where proposals are submitted. In particular, please have a look at the committee bylaws.</p>
</blockquote>
</li>
<li>
<p><a href="https://well-typed.com/blog/2024/01/haskell-unfolder-episode-19-a-new-perspective-on-foldl/">The Haskell Unfolder Episode 19: a new perspective on foldl’</a> by Andres Löh, Edsko de Vries</p>
<blockquote>
<p>In this beginner-oriented episode we introduce a useful combinator called <code>repeatedly</code>, which captures the concept “repeatedly execute an action to a bunch of arguments.” We will discuss both how to implement this combinator as well as some use cases.</p>
</blockquote>
</li>
</ul>
<h2><a id='jobs'></a>Jobs</h2>
<p>Trying to hire a Haskell developer?
You should <a href="https://haskellweekly.news/advertising.html">advertise with us</a>!</p>
<h2><a id='in-brief'></a>In brief</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/ann-first-release-candidate-for-stack-2-15-1/8659">First release candidate for stack-2.15.1</a> by Mike Pilgrem</p>
<blockquote>
<p>I would to like thank @theobat. His sustained efforts cleared a long-standing issue and Stack can now build packages with dependencies on public sub-libraries of other packages.</p>
</blockquote>
</li>
<li>
<p><a href="https://github.com/CrystalSplitter/ghcitui">GHCiTUI: A TUI for GHCi that Mimics pudb and cgdb Is Now Publicly Available</a> by Jordan R AW</p>
</li>
<li>
<p><a href="https://www.reddit.com/r/haskell/comments/1ae5cwm/ann_nothunks020_is_published_on_hackage/">nothunks-0.2.0 is published on Hackage</a> by Marcin Szamotulski</p>
<blockquote>
<p>The new version can point out exact location of unwanted thunks (which could lead to space leaks).</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/proposal-for-multiline-string-literals-accepted/8664">Proposal for multiline string literals accepted</a> by Brandon Chinn</p>
<blockquote>
<p>If anyone has any tips for implementing this in GHC, send them my way!</p>
</blockquote>
</li>
</ul>
<h2><a id='show-tell'></a>Show & tell</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/devops-weekly-log-2024-01-31/8685">DevOps Weekly Log, 2024-01-31</a> by Bryan Richter</p>
<blockquote>
<p>The last week had some variety due to competing deadlines and emergent issues. In terms of issues, I had three different things to deal with. First, I wrapped up my recent work with mitigating spurious failures in GHC CI, which had gotten unbearable lately.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/dockerfile-for-webassembly-backend/8681">Dockerfile for WebAssembly Backend</a> by John Hope</p>
<blockquote>
<p>This creates a larger image (about 1GB) but I might be able to optimize it further. It exposes wasm32-wasi-ghc and wasm32-wasi-cabal, which can be used to build projects with the target being a wasm module.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/i-would-like-to-share-a-compiler-i-am-building-for-fun-that-uses-anf-monadic-form-as-an-intermediate-language/8674">I would like to share a compiler I am building for fun that uses ANF/monadic form as an intermediate language</a> by manifold93</p>
<blockquote>
<p>I’m building a compiler to pass the time and it uses ANF/monadic normal form as an intermediate language. So far it can compile <code>if True then print(2); else print(3);;</code> to correct assembly that gets run with gcc.</p>
</blockquote>
</li>
</ul>
<h2><a id='call-for-participation'></a>Call for participation</h2>
<ul>
<li><a href="https://github.com/ndmitchell/hlint/issues/1563">hlint: fix -Wx-partial in Hint.Lambda and Hint.Extensions</a></li>
<li><a href="https://github.com/cdepillabout/password/issues/75">password: Regression tests / Golden tests for password hashes</a></li>
</ul>
https://haskellweekly.news/issue/404.htmlIssue 4042024-01-25T12:00:00ZHaskell Weeklyinfo@haskellweekly.news<p>Welcome to another issue of Haskell Weekly!
<a href="https://www.haskell.org">Haskell</a> 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.</p>
<h2><a id='featured'></a>Featured</h2>
<ul>
<li>
<p><a href="https://www.tweag.io/blog/2024-01-18-linear-desugaring/">A look under GHC’s hood: desugaring linear types</a> by Arnaud Spiwack</p>
<blockquote>
<p>I thought I’d take the opportunity to discuss some of GHC’s inner workings and how they explain some of the features of linear types in Haskell. We’ll be discussing a frequently asked question: why can’t <code>Ur</code> be a newtype? And some new questions such as: why must linear let-bindings have a <code>!</code>?</p>
</blockquote>
</li>
<li>
<p><a href="https://www.joachim-breitner.de/blog/811-GHC_Steering_Committee_Retrospective">GHC Steering Committee Retrospective</a> by Joachim Breitner</p>
<blockquote>
<p>After seven years of service as member and secretary on the GHC Steering Committee, I have resigned from that role. So this is a good time to look back and retrace the formation of the GHC proposal process and committee.</p>
</blockquote>
</li>
<li>
<p><a href="http://www.doscienceto.it/blog/posts/2024-01-23-ffi.html">Haskell FFI</a> by Joe Warren</p>
<blockquote>
<p>I’ve recently written a library for doing declarative CAD in Haskell. This is a wrapper to a 3D geometry library, called OpenCascade, which is written in C++. This involved doing a fair amount of Haskell / C++ interop.</p>
</blockquote>
</li>
<li>
<p><a href="https://cdsmithus.medium.com/pair-programming-with-chatgpt-haskell-1c4490b71da6">Pair Programming with ChatGPT & Haskell</a> by Chris Smith</p>
<blockquote>
<p>Here, I present the (lightly edited) story of using ChatGPT conversationally to solve a non-trivial problem in Haskell. It definitely gets some things wrong, and it’s still unclear whether co-developing this with ChatGPT made anything easier than it would have been otherwise. But in any case, it was definitely a <em>different</em> and less lonely experience than just programming on my own.</p>
</blockquote>
</li>
<li>
<p><a href="https://stevana.github.io/parallel_stream_processing_with_zero-copy_fan-out_and_sharding.html">Parallel stream processing with zero-copy fan-out and sharding</a> by Stevan</p>
<blockquote>
<p>The Disruptor is a low-latency high-throughput queue implementation with support for multi-cast (many consumers can in parallel process the same event), batching (both on producer and consumer side), back-pressure, sharding (for scalability) and dependencies between consumers. In this post we’ll recall the problem of using “normal” queues, discuss how Disruptor helps solve this problem and have a look at how we can we provide a declarative high-level language for expressing pipelines backed by Disruptors where all low-level details are hidden away from the user of the library. We’ll also have a look at how we can monitor and visualise such pipelines for debugging and performance troubleshooting purposes.</p>
</blockquote>
</li>
<li>
<p><a href="https://summer.haskell.org/news/2024-01-20-summer-of-haskell-2023-results.html">Summer of Haskell 2023 Results</a> by Aaron Allen</p>
<blockquote>
<p>On behalf of the Haskell.org committee, I’m pleased to announce the results of the Summer of Haskell 2023. Many impressive and valuable contributions were made to the Haskell ecosystem which I’m excited to share with you in this post. I’d like to extend a big thank you to the sponsors that made this program possible: The Haskell Foundation, Kadena, Jane Street, Holmusk, MLabs, Flipstone, Gershom Bazerman, and Edward Kmett. Gratitude is also due to the wonderful mentors who kindly donated their time to helping bring these projects to fruition and fostering the next generation of Haskellers.</p>
</blockquote>
</li>
</ul>
<h2><a id='jobs'></a>Jobs</h2>
<p>Trying to hire a Haskell developer?
You should <a href="https://haskellweekly.news/advertising.html">advertise with us</a>!</p>
<h2><a id='in-brief'></a>In brief</h2>
<ul>
<li>
<p><a href="https://simplex.chat/blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.html">SimpleX Chat: free infrastructure from Linode, v5.5 released with private notes, group history and a simpler UX to connect</a> by SimpleX</p>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/zurihac-2024-takes-place-8-10-june-registration-now-open/8599">ZuriHac 2024 takes place 8-10 June, registration now open</a> by Jasper Van der Jeugt</p>
<blockquote>
<p>It is our pleasure to announce that ZuriHac 2024 will take place Saturday 8 June - Monday 10 June 2024 as a physical event at the Rapperswil-Jona campus of the OST Eastern Switzerland University of Applied Sciences.</p>
</blockquote>
</li>
</ul>
<h2><a id='show-tell'></a>Show & tell</h2>
<ul>
<li><a href="https://discourse.haskell.org/t/devops-weekly-log-2024-01-17/8584">DevOps Weekly Log, 2024-01-17</a> by Bryan Richter
<blockquote>
<p>I’ll try to keep it short, although I’ve been hard at work. I am still working on taking ownership of Stackage.org.</p>
</blockquote>
</li>
</ul>
<h2><a id='call-for-participation'></a>Call for participation</h2>
<ul>
<li><a href="https://github.com/obsidiansystems/commutative-semigroups/issues/14">commutative-semigroups: Add instances for <code>Max</code> and <code>Min</code></a></li>
<li><a href="https://github.com/PostgREST/postgrest/issues/3171">postgrest: Dump config through Admin API</a></li>
</ul>
https://haskellweekly.news/issue/403.htmlIssue 4032024-01-18T12:00:00ZHaskell Weeklyinfo@haskellweekly.news<p>Welcome to another issue of Haskell Weekly!
<a href="https://www.haskell.org">Haskell</a> 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.</p>
<h2><a id='featured'></a>Featured</h2>
<ul>
<li>
<p><a href="https://work.njae.me.uk/2024/01/17/advent-of-code-2023-review/">Advent of Code 2023 review</a> by Dr Neil Smith</p>
<blockquote>
<p>Yet again, I’ve solved all 25 days of AoC in Haskell and written up my comments on my blog.</p>
</blockquote>
</li>
<li>
<p><a href="https://github.com/tonyday567/checklist">A Haskell checklist. For starting off, rebooting, or just freshening up</a> by Tony Day</p>
<blockquote>
<p>A completely revamped Haskell [C]hecklist has been published, including a quick-start guide. Hope you find it useful!</p>
</blockquote>
</li>
<li>
<p><a href="https://haskell.foundation/podcast/41/">Episode 41 – Moritz Angermann</a> by The Haskell Interlude</p>
<blockquote>
<p>Today, Matthías and Joachim are interviewing Moritz Angermann. Moritz knew he wanted to use Haskell before he knew Haskell, fixed cross-compilation as his first GHC contribution. We’ll talk more about cross-compilation to Windows and mobile platforms, why Template Haskell is the cause of most headaches, why you should be careful if your sister calls and tells you to cabal install a package, and finally how we can reduce the fear of new GHC releases, by improving stability.</p>
</blockquote>
</li>
<li>
<p><a href="https://mmhaskell.com/blog/functional-programming-vs-object-oriented-programming">Functional Programming vs. Object Oriented Programming</a> by Monday Morning Haskell</p>
<blockquote>
<p>Functional Programming (FP) and Object Oriented Programming (OOP) are the two most important programming paradigms in use today. In this article, we’ll discuss these two different programming paradigms and compare their key differences, strengths and weaknesses. We’ll also highlight a few specific ways Haskell fits into this discussion.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/haskell-security-response-team-2023-july-december-report/8531">Haskell Security Response Team - 2023 July–December report</a> by Fraser Tweedale</p>
<blockquote>
<p>The Haskell Security Response Team (SRT) is a volunteer organization within the Haskell Foundation that is building tools and processes to aid the entire Haskell ecosystem in assessing and responding to security risks. In particular, we maintain a database of security advisories that can serve as a data source for security tooling. This report details the SRT activities from July to December 2023. The SRT is supposed to report quarterly, but we missed giving a Q3 report. We’ll try not to let that happen again.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.youtube.com/watch?v=VJyedDQJUHE">Have You Tried These Popular Haskell Programs? (You Should!)</a> by DistroTube</p>
<blockquote>
<p>Do you have any Haskell programs installed on your computer? I ask this because I hear so many people, especially in the Linux community, say that they do not have any Haskell installed on their computer. And they say they don’t want any Haskell programs on their computer…</p>
</blockquote>
</li>
<li>
<p><a href="https://well-typed.com/blog/2024/01/haskell-unfolder-episode-18-computing-constraints/">The Haskell Unfolder Episode 18: computing constraints</a> by Andres Löh, Edsko de Vries</p>
<blockquote>
<p>Sometimes, for example when working with type-level lists, you have to compute with constraints. For example, you might want to say that a constraint holds for all types in a type-level list. In this episode, we will explore this special case of type-level programming in Haskell. We will also revisit type class aliases and take a closer look at exactly how and why they work.</p>
</blockquote>
</li>
</ul>
<h2><a id='jobs'></a>Jobs</h2>
<!-- Runs from 2023-12-28 to 2024-01-18. -->
<ul>
<li><a href="https://www.heilmannsoftware.com/de/jobs/haskell-softwareentwickler/">Haskell Engineer at Heilmann Software</a> (ad)
<blockquote>
<p>We are expanding our Haskell team to include two developers starting in April 2024.</p>
</blockquote>
</li>
</ul>
<p>Trying to hire a Haskell developer?
You should <a href="https://haskellweekly.news/advertising.html">advertise with us</a>!</p>
<h2><a id='in-brief'></a>In brief</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/haskell-language-server-2-6-0-0-is-now-available/8563">Haskell Language Server 2.6.0.0 is now available</a> by Zubin</p>
</li>
<li>
<p><a href="http://blog.vmchale.com/article/ir-instances">Num Instances for ASTs</a> by Vanessa McHale</p>
<blockquote>
<p>One can define a Num instance in Haskell for ASTs of expressions, viz.</p>
</blockquote>
</li>
</ul>
<h2><a id='show-tell'></a>Show & tell</h2>
<ul>
<li><a href="https://discourse.haskell.org/t/devops-weekly-log-2024-01-10/8521">DevOps Weekly Log, 2024-01-10</a> by Bryan Richter
<blockquote>
<p>I’m continuing to do devops for the Stackage migration. I’m in Phase 3 now, which is the data migration. As mentioned last time, there are Haddocks for nearly every package in every Stackage snapshot in existence living in a bucket, and I need to move that data into a new location.</p>
</blockquote>
</li>
</ul>
<h2><a id='call-for-participation'></a>Call for participation</h2>
<ul>
<li><a href="https://github.com/Qqwy/haskell-vary/issues/2">haskell-vary: Missing <code>VEither</code> implementations for <code>Show1</code>, <code>Generic1</code> and a few others</a></li>
</ul>
https://haskellweekly.news/issue/402.htmlIssue 4022024-01-11T12:00:00ZHaskell Weeklyinfo@haskellweekly.news<p>Welcome to another issue of Haskell Weekly!
<a href="https://www.haskell.org">Haskell</a> 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.</p>
<h2><a id='featured'></a>Featured</h2>
<ul>
<li>
<p><a href="https://developereconomics.net/?member_id=haskell">Help the world understand developers!</a> (ad)</p>
<blockquote>
<p>Calling all coders, creators, and tech enthusiasts! Contribute to the Developer Nation Survey and steer the course of the tech ecosystem. Your insights can win you fantastic tech gear and rewards! <a href="https://developereconomics.net/?member_id=haskell">Start now!</a></p>
</blockquote>
</li>
<li>
<p><a href="https://mrmr.io/num">1 vs 1.0</a> by Manav Rathi</p>
<blockquote>
<p>Real numbers and integers are entirely different things. They’re often incorrectly equated because both are plotted on the same number line.</p>
</blockquote>
</li>
<li>
<p><a href="https://blog.ploeh.dk/2024/01/08/a-range-kata-implementation-in-haskell/">A Range kata implementation in Haskell</a> by Mark Seemann</p>
<blockquote>
<p>This article is an instalment in a short series of articles on the Range kata. Here I describe my first attempt at the exercise.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/botan-cryptography-monthly-status-report-1/8497">Botan Cryptography Monthly Status Report #1</a> by ApothecaLabs</p>
<blockquote>
<p>This is the second* monthly report for the Botan Cryptography Project, and it is far overdue; I must apologize for the latency, and I do hope you’ll forgive me. I kept putting off writing the update in favor of coding, and suddenly it’s days later. Good thing I have plenty to talk about!</p>
</blockquote>
</li>
<li>
<p><a href="http://h2.jaguarpaw.co.uk/posts/foldl-traverses-state-foldr-traverses-anything/"><code>foldl</code> traverses with <code>State</code>, <code>foldr</code> traverses with anything</a> by Tom Ellis</p>
<blockquote>
<p>Avi Press gave an excellent talk at Scale By the Bay 2023 about difficulties using Haskell at a startup. He mentions that even experienced Haskellers don’t always know how to use fundamental parts of the language. In particular, “even experienced Haskell engineers aren’t always going to know whether to foldl or foldr.” In this article I’ll deduce a firm rule that allows you to make the correct choice. I will stick to the versions of these functions that operate on lists.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/go-get-tested-test-your-supported-ghc-versions-in-github-actions/8483">Go get tested! Test your supported GHC versions in GitHub Actions</a> by Hécate Moonlight</p>
<blockquote>
<p>Two years ago I created get-tested, a tool that reads your cabal file, extracts the tested-with stanza and produces a test matrix for GitHub Actions. It has served me well to this day, but it also recently received a very useful contribution from @turion, who wrote a reusable Github Action for it! I am extremely grateful for this effort.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/ghc-9-6-4-is-now-available/8502">GHC 9.6.4 is now available</a> by Zubin</p>
<blockquote>
<p>The GHC developers are happy to announce the availability of GHC 9.6.4.</p>
</blockquote>
</li>
<li>
<p><a href="https://mmhaskell.com/blog/comments-in-haskell">How to Write Comments in Haskell</a> by Monday Morning Haskell</p>
<blockquote>
<p>Comments are often a simple item to learn, but there’s a few ways we can get more sophisticated with them! This article is all about writing comments in Haskell.</p>
</blockquote>
</li>
<li>
<p><a href="https://readerunner.wordpress.com/2021/09/13/diagrams-for-penrose-tiles/">Penrose Kite and Dart Tilings with Haskell Diagrams</a> by Chris Reade</p>
<blockquote>
<p>As part of a collaboration with Stephen Huggett, working on some mathematical properties of Penrose tilings, I recognised the need for quick renderings of tilings. I thought Haskell diagrams would be helpful here, and that turned out to be an excellent choice. Two dimensional vectors were well-suited to describing tiling operations and these are included as part of the diagrams package.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/stackage-lts-22-released-and-nightly-on-ghc-9-8/8469">Stackage LTS 22 released and Nightly on ghc-9.8</a> by Jens Petersen</p>
<blockquote>
<p>Finally we put out a short post about the recent Stackage releases and updates last month.</p>
</blockquote>
</li>
<li>
<p><a href="https://well-typed.com/blog/2024/01/when-blocked-indefinitely-is-not-indefinite/">When “blocked indefinitely” is not indefinite</a> by Edsko de Vries</p>
<blockquote>
<p><code>thread blocked indefinitely in an STM transaction</code>. Occasionally, however, the runtime will throw this exception even when progress is possible.</p>
</blockquote>
</li>
</ul>
<h2><a id='jobs'></a>Jobs</h2>
<!-- Runs from 2023-12-28 to 2024-01-18. -->
<ul>
<li><a href="https://www.heilmannsoftware.com/de/jobs/haskell-softwareentwickler/">Haskell Engineer at Heilmann Software</a> (ad)
<blockquote>
<p>We are expanding our Haskell team to include two developers starting in April 2024.</p>
</blockquote>
</li>
</ul>
<p>Trying to hire a Haskell developer?
You should <a href="https://haskellweekly.news/advertising.html">advertise with us</a>!</p>
<h2><a id='in-brief'></a>In brief</h2>
<ul>
<li><a href="https://discourse.haskell.org/t/free-listt-transformer/8463">Free ListT transformer</a> by Manuel Bärenz
<blockquote>
<p>I created a new <code>ListT</code> library. It has a lawful list monad transformer based on free monads and an applicative transformer isomorphic to the “old” <code>ListT</code>.</p>
</blockquote>
</li>
</ul>
<h2><a id='show-tell'></a>Show & tell</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/devops-weekly-log-2024-01-03/8457">DevOps Weekly Log, 2024-01-03</a> by Bryan Richter</p>
<blockquote>
<p>Yesterday, after resolving an issue with Hoogle search on Stackage.org, I made the DNS switch that moved Stackage to its new home on Haskell Foundation-managed hardware!</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/code-snippet-how-to-compile-a-string-to-an-optimised-coreexpr-using-the-ghc-api/8490">How to compile a <code>String</code> to an optimised <code>CoreExpr</code> using the GHC API</a> by Sebastian Graf</p>
<blockquote>
<p>Since it took me a while to figure out what would be the best way to compile just an expression instead of a full module using the GHC API, here’s a small end-to-end example to do that, in the hope that it encourages a few people to play around with it.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/monocle-workspace-for-haskell-projects/8508">Monocle workspace for Haskell projects</a> by tristanC</p>
<blockquote>
<p>Monocle is a free software (GPL) written in Haskell, it helps teams and individuals efficiently organize daily duties.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.reddit.com/r/haskell/comments/18zgsrp/tinytools_a_monospace_unicode_diagram_editor/">tinytools - a monospace unicode diagram editor</a> by u/cmspice</p>
<blockquote>
<p>Making a short post to announce the first official release of tinytools, a monospace unicode diagram editor written in haskell and reflex-vty for the terminal based frontend.</p>
</blockquote>
</li>
</ul>
<h2><a id='call-for-participation'></a>Call for participation</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/gsoc-2024-call-for-ideas/8485">GSoC 2024 Call for Ideas</a> by Aaron Allen</p>
<blockquote>
<p>Google Summer of Code is a long-running program by Google that supports Open Source projects. Haskell has taken part in this program almost since it’s inception! It allows everyone (since 2022, before that it was only students) to contribute to projects for a stipend. However, in order to do that, we need to have some ideas of what to contribute to. In the past, this has led to many improvements for GHC, Cabal, HLS, Hasktorch… and it can include your project as well! This is a great way to find contributors for your project (even after the summer ends) – many past participants have become involved long-term.</p>
</blockquote>
</li>
<li>
<p><a href="https://github.com/swarm-game/swarm/issues/1709">swarm: Use cabal-fmt on swarm.cabal</a></p>
</li>
<li>
<p><a href="https://github.com/pschachte/wybe/issues/437">wybe: Implement <code>fmt</code> function for float type</a></p>
</li>
</ul>
https://haskellweekly.news/issue/401.htmlIssue 4012024-01-04T12:00:00ZHaskell Weeklyinfo@haskellweekly.news<p>Welcome to another issue of Haskell Weekly!
<a href="https://www.haskell.org">Haskell</a> 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.</p>
<h2><a id='featured'></a>Featured</h2>
<ul>
<li>
<p><a href="https://developereconomics.net/?member_id=haskell">Win new gear by taking this global developer survey</a> (ad)</p>
<blockquote>
<p>Do you use any new tools, platforms & technologies? The Developer Nation Global Survey is out! Shape the key trends among developers for 2024, donate and enter amazing prize draws! Hurry up! <a href="https://developereconomics.net/?member_id=haskell">Start now!</a></p>
</blockquote>
</li>
<li>
<p><a href="https://dev.to/chshersh/8-months-of-ocaml-after-8-years-of-haskell-in-production-h96">8 months of OCaml after 8 years of Haskell in production</a> by Dmitrii Kovanikov</p>
<blockquote>
<p>I’ve been using Haskell in production for the previous 8 years. I’ve been quite active in the Haskell community, and some of you may remember my past contributions to the community and the ecosystem. For the last 8 months, I’ve been using OCaml at Bloomberg, and my focus switched to a different language from the ML family. I wrote a blog post comparing two languages from my POV.</p>
</blockquote>
</li>
<li>
<p><a href="https://haskell.foundation/podcast/40/">Episode 40 – Mike Sperber</a> by The Haskell Interlude</p>
<blockquote>
<p>In this episode, Andres and Matti talk to Mike Sperber, CEO of Active Group in Germany. They discuss how to successfully develop an application based on deep learning in Haskell, contrast learning by example with the German bureaucratic approach, and highlight the virtues of having fewer changes in the language.</p>
</blockquote>
</li>
<li>
<p><a href="https://notes.abhinavsarkar.net/2023/standalone-haddock">Generating Standalone Haddock Docs For A Multi-Package Haskell Project</a> by Abhinav Sarkar</p>
<blockquote>
<p>What I wanted was to generate API docs and source code that linked to local ones only for the packages in my project, and to the Hackage ones for all my project’s dependency libraries. This just doesn’t seem possible with Haddock.</p>
</blockquote>
</li>
<li>
<p><a href="https://blog.jle.im/entry/i-nixified-my-blog.html">I nixified my blog</a> by Justin Le</p>
<blockquote>
<p>I get a lot of similar joy using nix to organize my projects as I did when I was first learning Haskell. My path to re-organizing all of my personal projects to using nix has lead me back to one of my more “longer-running” pieces of legacy code – my 10 year old blog.</p>
</blockquote>
</li>
<li>
<p><a href="https://gregorias.github.io/2023/12/29/parsing-recipe-pattern.html">Parsing Recipe Pattern</a> by Grzegorz Milka</p>
<blockquote>
<p>This note introduces the parsing recipe pattern. This Haskell parsing pattern addresses the newtype proliferation problem that arises with typeclass-based generic parsers like Cassava or Aeson. At the same time, the recipe pattern keeps the ergonomy of auto-deriving parsers. It’s a pattern I haven’t seen yet anywhere else as of December 2023 , and I think it could be a good addition to Haskell’s parsing ecosystem.</p>
</blockquote>
</li>
</ul>
<h2><a id='jobs'></a>Jobs</h2>
<!-- Runs from 2023-12-28 to 2024-01-18. -->
<ul>
<li><a href="https://www.heilmannsoftware.com/de/jobs/haskell-softwareentwickler/">Haskell Engineer at Heilmann Software</a> (ad)
<blockquote>
<p>We are expanding our Haskell team to include two developers starting in April 2024.</p>
</blockquote>
</li>
</ul>
<p>Trying to hire a Haskell developer?
You should <a href="https://haskellweekly.news/advertising.html">advertise with us</a>!</p>
<h2><a id='in-brief'></a>In brief</h2>
<ul>
<li><a href="https://tony-zorman.com/posts/fixing-lsp-mode.html">Fixing Lsp-Mode’s Hover Signatures</a> by Tony Zorman
<blockquote>
<p>Lsp clients have the option of showing useful things on hover. In most languages, there is an obvious candidate for this: the type signature of the thing at point. Sadly—for some languages—the implementation of the feature is… not great.</p>
</blockquote>
</li>
</ul>
<h2><a id='show-tell'></a>Show & tell</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/pre-hftp-fault-tolerant-ghc-compiler-pipeline/8445">Pre-HFTP: Fault-tolerant GHC compiler pipeline</a> by Michael Peyton Jones</p>
<blockquote>
<p>This would solve the problem where errors from earlier stages (such as parsing) mask errors from later stages (such as typechecking); as well as benefiting tools that use the compiler, which could then work on partially broken programs.</p>
</blockquote>
</li>
<li>
<p><a href="https://blog.cachix.org/posts/2024-01-02-stamina-haskell-library-for-retries/">Stamina: Haskell library for retries</a> by Domen Kožar</p>
<blockquote>
<p>Heavily inspired by Hynek’s Stamina for Python, we’re releasing Stamina for Haskell.</p>
</blockquote>
</li>
</ul>
<h2><a id='call-for-participation'></a>Call for participation</h2>
<ul>
<li><a href="https://github.com/scotty-web/scotty/issues/371">scotty: Dependency upper bounds</a></li>
<li><a href="https://github.com/alunduil/template.hs/issues/24">template.hs: Switch to shelly</a></li>
</ul>
https://haskellweekly.news/issue/400.htmlIssue 4002023-12-28T12:00:00ZHaskell Weeklyinfo@haskellweekly.news<p>Welcome to another issue of Haskell Weekly!
<a href="https://www.haskell.org">Haskell</a> 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.</p>
<h2><a id='featured'></a>Featured</h2>
<ul>
<li>
<p><a href="https://developereconomics.net/?member_id=haskell">The new global Developer Nation survey is here!</a> (ad)</p>
<blockquote>
<p>What’s the biggest development trend for 2024? Take the Developer Nation survey, share your opinion about tools and technologies and win! Among the 200+ prizes you can find an Apple MacBook Pro 13-Inch (M2), Asus Chromebook C223, Keychron K2 Mechanical Keyboards, MX Master 3S mouses, Amazon, Apple, ExpressVPN gift cards, and much more! <a href="https://developereconomics.net/?member_id=haskell">Start now!</a></p>
</blockquote>
</li>
<li>
<p><a href="https://reasonablypolymorphic.com/blog/yampa-frp/index.html">FRP in Yampa: Part 1</a> by Sandy Maguire</p>
<blockquote>
<p>I’ve been writing some Haskell lately, for the first time in a year, and it’s a total blast! In particular, school is out for the holidays, so I had some spare time, and thought I’d waste it by making a video game. In Haskell.</p>
</blockquote>
</li>
<li>
<p><a href="https://well-typed.com/blog/2023/12/ghc-activities-report-october-november-2023/">GHC activities report: October–November 2023</a> by Well-Typed</p>
<blockquote>
<p>This is the twenty-first edition of our GHC activities report, which describes the work on GHC and related projects that we are doing at Well-Typed. The current edition covers roughly the months of October and November 2023.</p>
</blockquote>
</li>
<li>
<p><a href="https://serokell.io/blog/ghc-dependent-types-in-haskell-2">Serokell’s Work on GHC: Dependent Types, Part 2</a> by Serokell GHC team</p>
<blockquote>
<p>We have reached another milestone on our journey towards Dependent Haskell: Visible forall, part 2 has been implemented.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.joachim-breitner.de/blog/810-The_Haskell_Interlude_Podcast">The Haskell Interlude Podcast</a> by Joachim Breitner</p>
<blockquote>
<p>For most episodes we also have a transcript, so you can read the interviews instead, if you prefer, and you should find the podcast on most podcast apps as well. I do not know how reliable these statistics are, but supposedly we regularly have around 1300 listeners. We don’t get much feedback, however, so if you like the show, or dislike it, or have feedback, let us know (for example on the <a href="https://discourse.haskell.org/">Haskell Discourse</a>, which has a thread for each episode).</p>
</blockquote>
</li>
</ul>
<h2><a id='jobs'></a>Jobs</h2>
<!-- Runs from 2023-12-28 to 2024-01-18. -->
<ul>
<li><a href="https://www.heilmannsoftware.com/de/jobs/haskell-softwareentwickler/">Haskell Engineer at Heilmann Software</a> (ad)
<blockquote>
<p>We are expanding our Haskell team to include two developers starting in April 2024.</p>
</blockquote>
</li>
</ul>
<p>Trying to hire a Haskell developer?
You should <a href="https://haskellweekly.news/advertising.html">advertise with us</a>!</p>
<h2><a id='in-brief'></a>In brief</h2>
<ul>
<li>
<p><a href="https://www.stackbuilders.com/blog/the-uncommon-advantage-from-training-in-unpopular-programming-languages/">The Uncommon Advantage from Training in Unpopular Programming Languages</a> by Justin Leitgeb</p>
<blockquote>
<p>One of the ways that we invest in our team to ensure alignment with this mission is to have all of our full-time engineers complete an approximately 50-hour training course in the Haskell language early in their career at Stack Builders.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/upcoming-maintenance-on-stackage-services-2-jan-2024/8400">Upcoming maintenance on Stackage services, 2 Jan 2024</a> by Bryan Richter</p>
</li>
</ul>
<h2><a id='show-tell'></a>Show & tell</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/devops-weekly-log-2023-12-20/8368">DevOps Weekly Log, 2023-12-20</a> by Bryan Richter</p>
<blockquote>
<p>In the last week, I finished migrating all the Stackage services to a new environment, so we’re nearly ready to do a cutover. I had to patch some of the software in order to make it happen, which is why I love DevOps: got a problem somewhere in the stack? Doesn’t matter where! You can fix it!</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/parsing-mermaid-diagrams-in-haskell/8397">Parsing Mermaid Diagrams in Haskell</a> by Rodrigo Mequita</p>
<blockquote>
<p>I wrote a parser for a small part of the mermaid diagram language. This came up while working in a project that uses mermaid to flesh out a design for some process. Since the devs would already write down mermaid specifications for visualising the diagram of these processes, I figured it would be useful if I could leverage the existing specification programatically, in Haskell.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/request-for-comment-functor-monad-package/8387">Request for comment: functor-monad package</a> by Koji Miyazato</p>
<blockquote>
<p>I’d like to introduce a category-theory-inspired library I’m making, and I want some feedbacks on it.</p>
</blockquote>
</li>
</ul>
<h2><a id='call-for-participation'></a>Call for participation</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/technical-working-group-call-for-volunteers/8366">Technical Working Group: Call for Volunteers</a> by José Manuel Calderón Trilla</p>
<blockquote>
<p>We presently have three openings on the working group, and we’re seeking volunteers. Members are expected to attend a monthly meeting, to participate in and moderate discussion threads regarding specific proposals, and to evaluate proposals for their technical merits. From time to time, committee members may also be asked to help a community member revise their proposal. The ability to communicate well and respectfully is important for any potential member.</p>
</blockquote>
</li>
<li>
<p><a href="https://github.com/unisonweb/unison/issues/4539">unison: Make unique types the default</a></p>
</li>
</ul>
https://haskellweekly.news/issue/399.htmlIssue 3992023-12-21T12:00:00ZHaskell Weeklyinfo@haskellweekly.news<p>Welcome to another issue of Haskell Weekly!
<a href="https://www.haskell.org">Haskell</a> 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.</p>
<h2><a id='featured'></a>Featured</h2>
<ul>
<li>
<p><a href="https://joshcbrown.github.io/posts/expression-parser.html">Building an arithmetic expression parser</a> by Josh Brown</p>
<blockquote>
<p>I thought the arithmetic expression parser turned out to be a really fun exercise, and wanted to share the process.</p>
</blockquote>
</li>
<li>
<p><a href="https://haskell.foundation/podcast/39/">Episode 39 – Rebecca Skinner</a> by The Haskell Interlude</p>
<blockquote>
<p>In this episode, we are joined by Rebecca Skinner. She talks about her new book, Effective Haskell, which takes you from list manipulation to thunks to type-level programming. She also tells us about large scale industrial applications in Haskell, and how the architecture is shaped by the organization of the engineering teams.</p>
</blockquote>
</li>
<li>
<p><a href="https://cs-syd.eu/posts/2023-12-21-golden-tests">Golden tests</a> by Tom Sydney Kerckhove</p>
<blockquote>
<p>This post introduces a testing technique called golden tests, snapshot tests, or characterisation tests. The technique can be a handy tool in your testing toolbox for maintaining invariants across versions of a piece of software.</p>
</blockquote>
</li>
<li>
<p><a href="https://discourse.haskell.org/t/hackage-dep-bound-notifications-and-uploader-endorsements-for-new-users/8342">Hackage: Dep bound notifications and uploader endorsements for new users</a> by Janus Troelsen</p>
<blockquote>
<p>You can go to your account settings, turn on all these e-mail notifications: that will let you know, for example, if a dependency is updated in such a way that it breaks the bounds of a package that you are maintaining.</p>
</blockquote>
</li>
<li>
<p><a href="https://well-typed.com/blog/2023/12/haskell-symposium-2023/">Haskell Symposium 2023</a> by Edsko de Vries</p>
<blockquote>
<p>This year Well-Typed presented one paper at the Haskell Symposium: Edsko de Vries presented the theory that underlies his new library for property based testing, called falsify. The “reimagined” in the title refers to the fact that <code>falsify</code> was inspired by the Python library Hypothesis. The presentation focuses on how <code>falsify</code> works rather than how it is different from Hypothesis; section 7 of the paper on <code>falsify</code> discusses the differences in detail.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.youtube.com/watch?v=Pp43qHiWtFk">SBTB 2023: Better Code Design with Types and Concepts</a> by Tikhon Jelvis</p>
<blockquote>
<p>What can types do for us? Are types exclusively for preventing bugs? Is static typing inevitably an investment with short-term costs and long-term payoffs?</p>
</blockquote>
</li>
<li>
<p><a href="https://www.youtube.com/watch?v=V0qD4ychpuI">SBTB 2023: Open Source in Space</a> by Ivan Perez</p>
<blockquote>
<p>Challenges Developing and Adopting Open Source Tools for Aerospace.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.youtube.com/watch?v=qw4S_6FXsp4">SBTB 2023: Why Haskell is a Terrible Choice for Startups (And Why We Picked It Anyway)</a> by Avi Press</p>
<blockquote>
<p>Welcome to the comedy of errors that is our tale of four tumultuous, yet rewarding, years deploying Haskell in a production environment at Scarf, the startup boldly picking the ‘worst’ tool for the job. We’ll guide you through the seemingly endless compile times, the global scavenger hunt for Haskell-savvy engineers, and our daunting dance with an unpredictable library ecosystem and the ever-elusive backward compatibility.</p>
</blockquote>
</li>
<li>
<p><a href="https://well-typed.com/blog/2023/12/haskell-unfolder-episode-17-circular-programs/">The Haskell Unfolder Episode 17: circular programs</a> by Andres Löh, Edsko de Vries</p>
<blockquote>
<p>A circular program is a program that depends on its own result. It may be surprising that this works at all, but laziness makes it possible if output becomes available sooner than it is required. In this final episode of 2023, which will be longer than usual (probably 45-60 minutes), we will take a look at several examples of circular programs: the classic yet somewhat contrived RepMin problem, the naming of bound variables in a lambda expression, and breadth-first labelling.</p>
</blockquote>
</li>
<li>
<p><a href="https://developereconomics.net/?member_id=haskell">What’s next for developers in 2024 and beyond?</a> (ad)</p>
<blockquote>
<p>Take part in the most complete survey Developer Nation has ever created, shape the key trends among developers for 2024 and win amazing prizes such as laptops, courses, gifts cards and many more! <a href="https://developereconomics.net/?member_id=haskell">Start now!</a></p>
</blockquote>
</li>
</ul>
<h2><a id='jobs'></a>Jobs</h2>
<p>Trying to hire a Haskell developer?
You should <a href="https://haskellweekly.news/advertising.html">advertise with us</a>!</p>
<h2><a id='in-brief'></a>In brief</h2>
<ul>
<li><a href="https://discourse.haskell.org/t/scotty-0-21-just-released/8341">Scotty-0.21 just released!</a> by ocramz
<blockquote>
<p>Happy to share our latest work on scotty: scotty: Haskell web framework inspired by Ruby’s Sinatra, using WAI and Warp.</p>
</blockquote>
</li>
</ul>
<h2><a id='show-tell'></a>Show & tell</h2>
<ul>
<li>
<p><a href="https://discourse.haskell.org/t/hell-shell-scripting-in-haskell-based-language/8339">Hell: shell scripting in Haskell-based language</a> by Chris Done</p>
<blockquote>
<p>I’ve put together a small project that’s been in the back of my mind for years. It’s a small shell scripting language that re-uses Haskell’s syntax and base packages and runtime. Mostly as some kind of weird art project and for myself.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.reddit.com/r/haskell/comments/18jdvxd/linear_types_are_awesome/">Linear Types are Awesome</a> by u/Matty_lambda</p>
<blockquote>
<p>Just thought I’d share some code I recently re-worked to take advantage of linear types. It wasn’t too bad understanding how to utilize them (in this case, linear file IO), and made the resulting code much faster, as well as far more optimal and maintainable.</p>
</blockquote>
</li>
<li>
<p><a href="https://www.reddit.com/r/haskell/comments/18igjwa/semantic_tokens_plugin_in_haskell_language_server/">Semantic tokens plugin in haskell language server for semantic highlighting</a> by u/soulomoon</p>
</li>
</ul>
<h2><a id='call-for-participation'></a>Call for participation</h2>
<ul>
<li><a href="https://github.com/haskell/haskell-language-server/issues/3908">haskell-language-server: Completion of GHC options in <code>OPTIONS_GHC</code> doesn’t properly handle <code>-</code>s</a></li>
<li><a href="https://github.com/unisonweb/unison/issues/4532">unison: Feedback when a scratch file change is picked up</a></li>
</ul>