HTTP/2 301
server: GitHub.com
content-type: text/html
location: https://blog.csongor.co.uk/
x-github-request-id: F28F:257CC5:2EBEC:3415C:696A2D06
accept-ranges: bytes
age: 0
date: Fri, 16 Jan 2026 12:20:27 GMT
via: 1.1 varnish
x-served-by: cache-bom-vanm7210092-BOM
x-cache: MISS
x-cache-hits: 0
x-timer: S1768566027.021418,VS0,VE218
vary: Accept-Encoding
x-fastly-request-id: 83255b89717b50ed807d509328e0431fd04dc674
content-length: 162
HTTP/2 200
server: GitHub.com
content-type: text/html; charset=utf-8
last-modified: Mon, 10 Nov 2025 18:35:38 GMT
access-control-allow-origin: *
etag: W/"6912307a-279a"
expires: Fri, 16 Jan 2026 12:30:27 GMT
cache-control: max-age=600
content-encoding: gzip
x-proxy-cache: MISS
x-github-request-id: 203A:3F0393:2C1AC:31717:696A2D0A
accept-ranges: bytes
age: 0
date: Fri, 16 Jan 2026 12:20:27 GMT
via: 1.1 varnish
x-served-by: cache-bom-vanm7210094-BOM
x-cache: MISS
x-cache-hits: 0
x-timer: S1768566027.358739,VS0,VE255
vary: Accept-Encoding
x-fastly-request-id: 6bf62816c6ea87ed2dc1790f2eb8bd72ca14849b
content-length: 3101
( )
2025
Simulating Haskell-style GADTs with phantom witnesses and specialisation.
2020
generic-lens gets a new interface.
2019
Hiding internal details of constraint synonyms.
Improving code readability by enforcing type annotations.
In which I present a hidden gem in the vim text editor.
Exploiting GHC internals to define top-level implicit parameters.
2018
Stuck type families are notorious for producing puzzling type errors. In this post I present a technique for detecting and reporting them.
A technique for manipulating Symbols in GHC for type-level programming.
2017
A techinque for approximating Generic2 with only the Generic type class.
Deriving lenses generically
Writing a simple parser of type-level symbols in PureScript 0.12
2015
Some interesting consequences of lazy evaluation.