RSSAmplifier

Blog

Harry Garrood’s blog

/RSS feed ↗10 posts

Latest posts

Pokémon type chart

Have you ever struggled to understand the Pokémon type effectiveness chart when it’s laid out like this? Yeah, me too. I have always thought that there ought to be a better way of laying this information out, so I had a go myself. I’ve been meaning to do this for years, and I just got around to making it over the weekend. Instead of trying to show you all of the information at once, you just pick…

Easy incremental Haskell CI builds with GHC 9.4

Edit history: 25 Sep 2022: I’ve updated the suggested caching configuration below to use separate caches for dependencies and incremental build products. 3 Nov 2022: I’ve added an appendix which discusses options for incremental Haskell builds in Nix. Last year, I spent a little while putting together a GHC patch which changed how GHC determines whether a source file has been modified since a…

Stepping down from the PureScript core team

I’ve decided it is time for me to step down from the PureScript core team. This is for a mixture of reasons: partially, that the role involves a lot of small, annoying things that eventually add up, and for a while now have felt too much like work to me; partially that I write code full time already and I think that spending more than 40 hours per week thinking about code is not good for me, and…

Making full use of PureScript's Generic type class

Many PureScript programmers will have made use of the Generic type class at some point to cut down on the amount of boilerplate needed to define instances for their data types. However, my impression is that it’s less common that people understand how this process works, or that people know how to write the code which permits Generic deriving for a particular type class. In this post, I’m going to…

A letter to my MP regarding LGBTQ+ conversion therapy

This is a copy of an email I sent to my local MP today, regarding a survey being run by the House of Commons on LGBTQ+ conversion therapy. It seemed worth publishing here too. I am writing regarding the conversion therapy survey shared by the House of Commons account on Twitter: https://twitter.com/HouseofCommons/status/1279000022189817857 I am deeply concerned that this matter has been put to a…

Malicious code in the PureScript npm installer

Earlier this week, I found and addressed some malicious code in the purescript npm installer. The malicious code was inserted into dependencies of the installer: specifically, packages maintained by @shinnn , the original author of the purescript npm installer, and also the maintainer (until around a month ago). There’s some important background context I should explain first: after a few too many…

Thoughts on PureScript package management in 2019

It’s been around 3 and a half years since I wrote this post about why PureScript uses Bower and not npm . To recap, the reason we use Bower rather than npm by default for PureScript is that npm handles dependency incompatibilities in a way which does not work with PureScript; specifically, allowing multiple different versions of a dependency to exist in your dependency tree is not supported,…

Down with Show! Part 3: A replacement for Show

This is part three of three in a series in which I will argue that it is time to consign the Show type class to the dustbin of history. In the first post I discussed some rules of thumb for what I think makes a good type class, and in the second post I discussed what I think the shortcomings of the Show class are. In this post I will propose a replacement for Show . I’m going to use PureScript for…

Down with Show! Part 2: What's wrong with the Show type class

This is part two of three in a series where I will argue that it is time to consign the Show type class to the dustbin of history. In the previous post , I discussed a few rules of thumb which I use to help me decide whether or not introducing a new type class is a good idea. In this post, I will discuss the Show type class itself, and where I think it falls short. We’ll start by reminding…

Down with Show! Part 1: Rules of thumb for when to use a type class

I find it enlightening that in functional programming, usually the best solution is to program with functions. ;) — Edward Kmett, from the /r/haskell thread Definitive guide on when to use typeclasses? This is part one of three in a series of posts in which I will argue that it’s time to consign the Show type class to the dustbin of history. I won’t discuss the Show class in particular in this…