Neil Mitchell's Blog (Haskell etc)

Thursday, September 16, 2021

Huge Project Build Systems

›
Summary: Shake won't scale to millions of files, this post says what would be required to make it do so. While Shake has compiled proje...
3 comments:
Wednesday, September 15, 2021

Small Project Build Systems

›
Summary: Forward build systems might work better for small projects. Yesterday's post talked about how Shake is a good medium sized bu...
4 comments:
Tuesday, September 14, 2021

Reflecting on the Shake Build System

›
Summary: As a medium-sized build system, Shake has some good bits and some bad bits. I first developed the Shake build system at Standard ...
4 comments:
Sunday, January 17, 2021

Recording video

›
Summary: Use OBS, Camo and Audacity . I recently needed to record a presentation which had slides and my face combined, using a Mac. Based ...
2 comments:
Sunday, November 15, 2020

Data types for build system dependencies

›
Summary: Monadic and early cut-off? Use a sequence of sets. In the Build Systems a la Carte paper we talk about the expressive power of va...
1 comment:
Monday, November 09, 2020

Turing Incomplete Languages

›
Summary: Some languages ban recursion to ensure programs "terminate". That's technically true, but usually irrelevant. In my ...
19 comments:
Tuesday, September 22, 2020

Don't use Ghcide anymore (directly)

›
Summary: I recommend people use the Haskell Language Server IDE. Just over a year ago, I recommended people looking for a Haskell IDE exper...
4 comments:
Monday, August 31, 2020

Interviewing while biased

›
Interviewing usually involves some level of subjectivity. I once struggled to decide about a candidate, and after some period of reflection,...
2 comments:
Monday, July 27, 2020

Which packages does Hoogle search?

›
Summary: Hoogle searches packages on Stackage. Haskell (as of 27 July 2020) has 14,490 packages in the Hackage package repository . Hoogle ...
1 comment:
Wednesday, July 15, 2020

Managing Haskell Extensions

›
Summary: You can divide extensions into yes, no and maybe, and then use HLint to enforce that. I've worked in multiple moderately sized ...
1 comment:
Tuesday, July 07, 2020

How I Interview

›
Summary: In previous companies I had a lot of freedom to design an interview. This article describes what I came up with. Over the years, I...
Sunday, July 05, 2020

Automatic UI's for Command Lines with cmdargs

›
Summary: Run cmdargs-browser hlint and you can fill out arguments easily. The Haskell command line parsing library cmdargs contains a data...
3 comments:
Wednesday, July 01, 2020

A Rust self-ownership lifetime trick (that doesn't work)

›
Summary: I came up with a clever trick to encode lifetimes of allocated values in Rust. It doesn't work. Let's imagine we are using ...
1 comment:
Monday, June 22, 2020

The HLint Match Engine

›
Summary: HLint has a match engine which powers most of the rules. The Haskell linter HLint has two forms of lint - some are built in writt...
1 comment:
Tuesday, June 09, 2020

Hoogle Searching Overview

›
Summary: Hoogle 5 has three interesting parts, a pipeline, database and search algorithm. The Haskell search engine Hoogle has gone through...
2 comments:
Sunday, June 07, 2020

Surprising IO: How I got a benchmark wrong

›
Summary: IO evaluation caught me off guard when trying to write some benchmarks. I once needed to know a quick back-of-the-envelope timing o...
Sunday, May 31, 2020

HLint --cross was accidentally quadratic

›
Summary: HLint --cross was accidentally quadratic in the number of files. One of my favourite blogs is Accidentally Quadratic , so when th...
1 comment:
Wednesday, May 27, 2020

Fixing Space Leaks in Ghcide

›
Summary: A performance investigation uncovered a memory leak in unordered-containers and performance issues with Ghcide. Over the bank holid...
‹
›
Home
View web version

About Me

My photo
Neil Mitchell
View my complete profile
Powered by Blogger.