RSSAmplifier

Blog

nomeata’s mind shares

Joachim Breitners Denkblogade

joachim-breitner.deRSS feed ↗15 posts

Latest posts

Vibe-coding a debugger for a DSL

Earlier this week a colleague of mine, Emilio Jesús Gallego Arias, shared a demo of something he built as an experiment, and I felt the desire to share this and add a bit of reflection. (Not keen on watching a 5 min video? Read on below.) What was that? So what did you just see (or skipped watching)? You could see Emilio’s screen, running VSCode and editing a Lean file. He designed a small…

Seemingly impossible programs in Lean

In 2007, Martin Escardo wrote a often-read blog post about “Seemingly impossible functional programs” . One such seemingly impossible function is find , which takes a predicate on infinite sequences of bits, and returns an infinite sequence for which that predicate hold (unless the predicate is just always false, in which case it returns some arbitrary sequence). Inspired by conversations with and…

F91 in Lean

Back in March, with version 4.17.0, Lean introduced partial_fixpoint , a new way to define recursive functions. I had drafted a blog post for the official Lean FRO blog back then, but forgot about it, and with the Lean FRO blog discontinued, I’ll just publish it here, better late than never. With the partial_fixpoint mechanism we can model possibly partial functions (so those returning an Option )…

Extrinsic termination proofs for well-founded recursion in Lean

A few months ago I explained that one reason why this blog has become more quiet is that all my work on Lean is covered elsewhere. This post is an exception, because it is an observation that is (arguably) interesting, but does not lead anywhere, so where else to put it than my own blog… Want to share your thoughts about this? Please join the discussion on the Lean community zulip ! Background…

Coding on my eInk Tablet

For many years I wished I had a setup that would allow me to work (that is, code) productively outside in the bright sun. It’s winter right now, but when its summer again it’s always a bit. this weekend I got closer to that goal. TL;DR: Using code-server on a beefy machine seems to be quite neat. Passively lit coding Personal history Looking back at my own old blog entries I find one from 10 years…

Do surprises get larger?

The setup Imagine you are living on a riverbank. Every now and then, the river swells and you have high water. The first few times this may come as a surprise, but soon you learn that such floods are a recurring occurrence at that river, and you make suitable preparation. Let’s say you feel well-prepared against any flood that is no higher than the highest one observed so far. The more floods you…

Blogging on Lean

This blog has become a bit quiet since I joined the Lean FRO . One reasons is of course that I can now improve things about Lean, rather than blog about what I think should be done (which, by contraposition, means I shouldn’t blog about what can be improved…). A better reason is that some of the things I’d otherwise write here are now published on the official Lean blog , in particular two lengthy…

Convenient sandboxed development environment

I like using one machine and setup for everything, from serious development work to hobby projects to managing my finances. This is very convenient, as often the lines between these are blurred. But it is also scary if I think of the large number of people who I have to trust to not want to extract all my personal data. Whenever I run a cabal install , or a fun VSCode extension gets updated, or…

GHC Steering Committee Retrospective

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. In my memory, I helped define and shape the proposal process, optimizing it for effectiveness and throughput, but memory can be misleading, and judging from the paper trail in my…

The Haskell Interlude Podcast

It was pointed out to me that I have not blogged about this, so better now than never: Since 2021 I am – together with four other hosts – producing a regular podcast about Haskell, the Haskell Interlude . Roughly every two weeks two of us interview someone from the Haskell Community, and we chat for approximately an hour about how they came to Haskell, what they are doing with it, why they are…

Joining the Lean FRO

Tomorrow is going to be a new first day in a new job for me: I am joining the Lean FRO , and I’m excited. What is Lean? Lean is the new kid on the block of theorem provers. It’s a pure functional programming language (like Haskell, with and on which I have worked a lot), but it’s dependently typed (which Haskell may be evolving to be as well, but rather slowly and carefully). It has a refreshing…

Squash your Github PRs with one click

TL;DR: Squash your PRs with one click at https://squasher.nomeata.de/ . Very recently I got this response from the project maintainer at a pull request I contributed: “Thanks, approved, please squash so that I can merge.” It’s nice that my contribution can go it, but why did the maintainer not just press the “Squash and merge button”, and instead adds the this unnecessary roundtrip to the process?…

Left recursive parser combinators via sharing

At this year’s ICFP in Seattle I gave a talk about my rec-def Haskell library, which I have blogged about before here. While my functional pearl paper focuses on a concrete use-case and the tricks of the implementation, in my talk I put the emphasis on the high-level idea: it beholds of a declarative lazy functional like Haskell that recursive equations just work whenever they describe a (unique)…

Generating bibtex bibliographies from DOIs via DBLP

I sometimes write papers and part of paper writing is assembling the bibliography. In my case, this is done using BibTeX. So when I need to add another citation, I have to find suitable data in Bibtex format. Often I copy snippets from .bib files from earlier paper. Or I search for the paper on DBLP , which in my experience has highest quality BibTeX entries and best coverage of computer science…

ICFP Pearl preprint on rec-def

I submitted a Functional Pearl to this year’s ICFP and it got accepted! It is about the idea of using Haskell’s inherent ability to define recursive equations , and use them for more than just functions and lazy data structures. I blogged about this before ( introducing the idea , behind the scenes , applications to program analysis , graph algorithms and minesweeper ), but hopefully the paper…