RSSAmplifier

Blog

Tony Zorman · Blog

Maths, array languages, Emacs, Haskell, and whatever else comes to mind.

tony-zorman.comRSS feed ↗44 posts

Latest posts

Sieving Primes

15th Jul 2026 · 36 min read · #c Sieving Primes As a mathematician, I naturally have no idea how a computer actually works. Of course, the easiest way to change that is to try and optimise a 2000 year old algorithm. To not keep you in suspense, the learning seems to be that some memory is just more equal than others. Concretely, the problem is finding all primes below a given threshold—a…

Writing Literate Blog Posts

23rd Apr 2026 · 8 min read · #emacs Writing Literate Blog Posts Let’s try to contort enough Emacs packages to allow for a smooth Org to GFM⁺⁺ export, so I can write literate programs in the comfort of Org mode. This website is powered by hakyll, which eventually hands off to pandoc to do all of the GFM to HTML mangling. I have a moderately involved hakyll configuration, which in particular means…

But what about K?

7th Apr 2026 · 21 min read · #c #k #array-lang But what about K? Let’s try to read some more C code. First up, the usual disclaimer: not a single line of code in this article was written by me. Rather, I’m leaning on the excellent kparc/ksimple . Indeed, the repository contains a super detailed walkthrough of both a.h and a.c , with lots of comments and indentation! Really, I recommend that you…

Sudoku Solving in BQN

27th Feb 2026 · 35 min read · #array-lang #BQN Sudoku Solving in BQN A few days ago, I read a very interesting blog post by Veit Heller about solving a regular 9×9 Sudoku puzzle in Dyalog APL. 1 It’s part of a series of blog posts, starting with a reference implementation in Python, about writing a simple depth first search Sudoku solver in a variety of different languages. This made me realise…

DUCK

7th Feb 2026–23 Feb 2026 · 2 min read · #hardware DUCK I have a duck on my keyboard now. 1 I got it from the mechanical keyboard meetup at 39C3 . It’s straight out of a—judging by the quality of the print—cheap 3D printer, and looks like just about the derpiest duck one can imagine: What does it do? Since the key is in one of the inaccessible-ish positions on the Atreus, and hitting the duck all…

The J Incunabulum

11th Jan 2026 · 8 min read · #c #j #array-lang The J Incunabulum Ever wanted to find out what that one page of totally cryptic C is all about? While I’m waiting for current disastrous weather event to clear up, why not do something fun, like trying to understand an interpreter for a line-noise language that someone wrote in a different kind of line-noise language almost 40 years ago? If you’re out…

Fixing Eglot's Hover Signatures

25th Dec 2025 · 5 min read · #emacs Fixing Eglot's Hover Signatures In an earlier post I talked about making the hover signatures for lsp-mode a little bit more useful. Out of the completely irrational desire to use more built-in packages, I’ve recently switched to eglot as my LSP client of choice, which however has the same inclination for showing hover information I don’t care about by default.…

Writing a JSON Parser in BQN

8th Oct 2025–18 Oct 2025 · 27 min read · #BQN #array-lang Writing a JSON Parser in BQN At least, for some vague definition of JSON. I will restrict myself to the following underspecified subset, 1 so that this will not be a 20’000-word post: Only (positive) integers. ASCII only and only \ -based escaping. No constants. Absolutely no input validation—we’ll try to parse the wildest things. Some of…

Parsing CSV in BQN

28th Jul 2025–18 Oct 2025 · 8 min read · #BQN #array-lang Parsing CSV in BQN Let’s write a CSV parser in BQN ! Working my way towards a full blown JSON parser, I thought it might be a good idea to start with something simpler — RFC 4180 sounds like a good candidate. 1 Plus, there is also a great reference implementation available in bqn-libs . This article will assume that you are already at least…

Dissertation Typesetting Considerations

13th Apr 2025–8 Feb 2026 · 9 min read · #LaTeX Dissertation Typesetting Considerations I just handed in my dissertation, 1 which is more or less the culmination of the last three and a half years of my (mathematical) life. While the maths itself is perhaps relatively inaccessible to the general public, some of the typesetting considerations that went into the document might not be. For reference,…

Speeding up LaTeX compilation

30th Jan 2025–15 Feb 2025 · 8 min read · #LaTeX Speeding up LaTeX compilation Getting reasonable compilation times out of a medium-sized LaTeX document that contains lots of TikZ pictures is not as difficult as it may seem at first—at least if you know the correct ancient incantations. I’m feverishly writing my dissertation right now, 1 and since I adore string diagrams 2 , it contains quite a…

Integer Volutes in BQN

8th Nov 2024–13 Nov 2024 · 13 min read · #BQN #array-lang Integer Volutes in BQN On day 3 of my post about doing some Advent of Code problems in BQN , the task was to walk along some integer volutes : spirals, either spiralling inwards—involutes—or outwards—evolutes—in either direction. While the specific problem didn’t require it, I think it’s a pretty neat exercise to think about how to generate…

BQNing Advent of Code

27th Oct 2024–28 Oct 2024 · 90 min read · #BQN #array-lang BQNing Advent of Code I did all of Advent of Code 2017 in BQN so you don’t have to. Let me tell you about that in as few as 20’000 words. 1 The setup Advent of Code is a yearly puzzle-coding-challenge-thing, in which one has to solve two riddles every day from the 1st until the 25th of December, with the second part of each puzzle being…

Integrating KaTeX Into Hakyll

20th Jul 2024–1 Feb 2025 · 5 min read · #haskell #hakyll Integrating KaTeX Into Hakyll Being quite into mathematics, I sometimes blog about it. 1 There are very capable solutions for rendering LaTeX in HTML documents out there, which in particular solve the problem of properly aligning the fragments with the rest of the text. One of them is KaTeX, advertising itself to be easily executed on the…

Leveraging LaTeX in Anki

11th May 2024–2 Jun 2025 · 5 min read · #anki #emacs #maths Leveraging LaTeX in Anki Recently, I’ve been quite invested in learning maths with Anki . Sadly, there are relatively few good resources out there on how to twist Anki’s LaTeX pipeline into something generally acceptable, without having to rely on MathJax. As such, this post collects some bits and pieces from all over, hoping to weave…

Announcing: rq Version 0.1.0

23rd Mar 2024–1 May 2024 · 5 min read · #rust Announcing: rq Version 0.1.0 I’ve just released version 0.1.0 of rq , 1 a small functional language to manipulate JSON—and my excuse to learn Rust! This seems as good a time as any to talk about it, so let’s do that. Overview As the name suggests, rq is heavily inspired by the venerable jq , 2 and looks quite similar in action: Another example,…

Smartly join comments with join-line

2nd Mar 2024–15 Aug 2024 · 5 min read · #emacs Smartly join comments with join-line Emacs’s join-line function, upon execution, joins the current line onto the previous one, deleting any extraneous whitespace. Alternatively, it can also sensibly act on a whole region of text. This is quite useful, though sadly the function does not handle comments very gracefully by default; let’s fix that.…

Parentheses-Aware Yanking

3rd Jan 2024–5 Jan 2024 · 4 min read · #emacs Parentheses-Aware Yanking Copying, killing, and yanking 1 text in Emacs is quite straightforward, and very little is done to manipulate the contents of the string during these operations. Rightfully so, of course, as this might yield pretty surprising behaviour to many people. To me, however, inserting unbalanced expressions is even more surprising…

Integrating Zsh's History Into Eshell

27th Nov 2023 · 2 min read · #emacs Integrating Zsh's History Into Eshell I use eshell as my main shell. Still, a terminal emulator with zsh is kept around for longer running processes and scratchpads . One thing that’s essential for this setup to make sense is that eshell and zsh share the same history file. Sadly, this doesn’t work out of the box: zsh stores its history in a metafied format…

Using XMonad with NixOS

13th Nov 2023–15 Oct 2024 · 5 min read · #emacs #nix #xmonad Using XMonad with NixOS I recently switched to NixOS, and one of the first tasks was to properly set up my window manager of choice—XMonad, of course. Luckily, the project provides a custom flake that makes pretty very straightforward; if you know your way around flakes and Nix, that is. I don’t yet, so I hit some rough spots. Since…

Fixing Lsp-Mode's Hover Signatures

22nd Oct 2023–27 Oct 2023 · 5 min read · #emacs #haskell #rust Fixing Lsp-Mode's Hover Signatures By now, LSP servers have become the norm for editor-agnostic language support. As expected, Emacs features at least two packages that implement the protocol: the built-in eglot , and the third-party lsp-mode . I will focus on the latter in this post. L sp clients have the option of showing useful…

Prettifying LaTeX Buffers

10th Sep 2023–15 Oct 2023 · 7 min read · #emacs Prettifying LaTeX Buffers A friend recently confided in me that, after years of using Emacs, he was only now getting into using prettify-symbols-mode for editing LaTeX buffers! After overwhelming him with more customisations related to this, I realised that the topic —while seemingly easy on the surface— actually has a lot more depth to it than one…

Change the Insides of an S-Expression in Emacs

26th Aug 2023–29 Aug 2023 · 7 min read · #emacs Change the Insides of an S-Expression in Emacs 1 I have to make a confession: I have an evil past—literally. Having switched to vanilla Emacs keybindings a while ago, one thing that I genuinely miss from that time are the ci( and ca( motions, killing everything in or around the closest encompassing () -environment. Luckily, the change-inner package…

Notmuch: Warn on Empty Subjects

30th Jul 2023 · 3 min read · #emacs Notmuch: Warn on Empty Subjects Emacs’s notmuch package has this fantastic concept of an attachment check : adding notmuch-mua-attachment-check to notmuch-mua-send-hook will, before sending the message, check whether the regular expression in notmuch-mua-attachment-regexp matches. If yes—and no attachment has been added—it will alert the user, asking whether one…

Incorporating BibTeX into Hakyll

20th Jun 2023–9 Aug 2026 · 15 min read · #haskell #hakyll Incorporating BibTeX into Hakyll When writing a blog post that feels academic—or pretentious—enough to invoke the need for citations, having them automatically generated feels like a mandatory requirement. I can only shudder to imagine the alternatives. The good news is that LaTeX has solved this problem long ago; we now have BibTeX as a…

The tensor product of S-modules is a convolution product

12th Jun 2023–30 Aug 2024 · 6 min read · #maths The tensor product of S-modules is a convolution product Classically, (algebraic) symmetric operads are defined as certain graded objects, each level coming equipped with a nice action of the symmetric group, which are also monoids in some sense. While it is often noted that the grading and action correspond exactly to the data of a functor, the fact…

Use-package now has a :vc keyword

18th May 2023 · 1 min read · #emacs Use-package now has a :vc keyword Just a quick heads-up: use-package , which was merged into Emacs in November last year , now has a :vc keyword! The change was merged two days ago, and supersedes—indeed, is a rewrite of— vc-use-package , which is now only needed for people who prefer to stick to released versions of Emacs. 1 In short, the keyword enables one to…

Keyboardio Atreus Review

6th May 2023–17 Jun 2023 · 17 min read · #hardware Keyboardio Atreus Review And now for something completely different—hardware. Even worse: consumerism! I bought an Atreus keyboard from Keyboardio about three weeks ago, and can’t resist writing at least a few sentences about it. TL;DR: Get it. For bonus points, build it yourself! Overview So what even is the Atreus? I will keep this rather short,…

XMonad Module Showcase: X.A.Search

19th Mar 2023–12 Jul 2023 · 6 min read · #haskell #xmonad XMonad Module Showcase: X.A.Search I’d like to highlight another XMonad module that has become quite essential to me: XMonad.Actions.Search . Its premise is simple: you enter some text into the XMonad prompt, and it queries a search engine of your choice with this input—straightforward, and yet very effective. In fact, this sounds so simple…

Announcing: latex-change-env Version 0.3

19th Feb 2023–3 Jun 2023 · 4 min read · #emacs Announcing: latex-change-env Version 0.3 I’ve just released version 0.3 of latex-change-env , featuring some major improvements with regard to inline maths and macro handling; this seems as good a time as any to talk about the package in full. I briefly mentioned it in the post about my research workflow , but I figure now that the library has reached…

Using Sidenotes with Hakyll

27th Jan 2023–17 Jul 2024 · 9 min read · #haskell #hakyll Using Sidenotes with Hakyll I’ve become quite enamoured with sidenotes recently, and so of course this website now has them as well! Thankfully, the integration with pandoc and Hakyll is quite straightforward, because other people have already done the hard work. 1 Depending on your use-case, however, the existing libraries might not…

Pygmentising Hakyll's Syntax Highlighting

21st Jan 2023–5 Jan 2025 · 8 min read · #haskell #hakyll Pygmentising Hakyll's Syntax Highlighting By default, Hakyll uses pandoc to generate syntax highlighting for all kinds of different programming languages. However, even in simple examples the HTML this produces is unsatisfactory. Thankfully, the two programs are almost infinitely customisable, and changing pretty much any setting doesn’t…

Immediately Refile Notes with X.P.OrgMode

14th Jan 2023–13 Feb 2023 · 3 min read · #emacs #haskell #xmonad Immediately Refile Notes with X.P.OrgMode In a previous post I talked about XMonad.Prompt.OrgMode , an XMonad module to rapidly capture thoughts and ideas into an Org file. The functionality that the module provides has proven to be extremely useful to me, and really I couldn’t be happier with it. However, a user recently contacted…

Duality in Monoidal Categories

10th Jan 2023–12 Jan 2023 · 4 min read · #maths Duality in Monoidal Categories I have a new preprint on the arXiv ! It is joint work with Sebastian Halbig, and concerns itself with the interplay of different structures on monoidal categories that give rise to a notion of “duality”. At five pages, it is a very short paper; yet I’d still like to give a little teaser as to what kind of question we…

Announcing: vc-use-package

22nd Dec 2022–18 May 2023 · 2 min read · #emacs Announcing: vc-use-package I’d like to announce a small package I’ve written: vc-use-package . It is a first attempt at integrating the new (as of Emacs 29) package-vc.el with the now built-in use-package. I’ve already talked about how these two interact in my last post —you can see this package as automating things juuuust a little more. Update…

Exploring package-vc-install

30th Nov 2022–18 May 2023 · 3 min read · #emacs Exploring package-vc-install The Emacs 29 release branch was just cut—and it’s chock full of new features! In this post, I want to talk about the new package-vc-install function, which allows one to install packages directly from their respective upstream source; for example, GitHub. It can be seen as a built-in alternative to things like quelpa or…

Adjusting preview.el for vertical monitors

5th Nov 2022–13 Feb 2023 · 2 min read · #emacs Adjusting preview.el for vertical monitors Here’s a fun one: when previewing LaTeX fragments via AUCTeX’s preview.el library (whether it be in a .tex buffer, or—via org-auctex —in Org) things get really messed up when one or more monitors are set up in portrait mode. When you have two monitors oriented vertically, previews might end up looking…

A Potpourri of Emacs Tweaks

22nd Oct 2022–9 Feb 2026 · 16 min read · #emacs A Potpourri of Emacs Tweaks Emacs is the “extensible text editor”, and it wouldn’t be fun if one didn’t at least try to take advantage of that, right? Having just written a README for my Emacs configuration, I thought it might be nice to somewhat expand on certain ideas and give a little context to some snippets that have accumulated over time. While…

Understanding Weighted Colimits as Tensor Products of Modules

15th Oct 2022–13 Mar 2023 · 16 min read · #maths Understanding Weighted Colimits as Tensor Products of Modules If you’ve been doing category theory for any amount of time, you’ll probably have stumbled upon enriched category theory as a way of expressing categorical ideas internal to some context other than Set . Reading into it, you might have come across these foreign sounding concepts like…

XMonad Module Showcase: X.A.TopicSpace

11th Sep 2022–17 Feb 2023 · 6 min read · #haskell #xmonad XMonad Module Showcase: X.A.TopicSpace One of my favourite—and most used—modules is XMonad.​Actions.​TopicSpace . However, it seems relatively unknown among the general XMonad community. I fear this is due to the fact that the module is quite old and formerly had a rather high barrier to entry. Despite having been given shiny new…

Rapidly Capture Ideas with XMonad and Emacs

27th Aug 2022–7 Mar 2023 · 3 min read · #emacs #xmonad Rapidly Capture Ideas with XMonad and Emacs As I’ve said before, basically my entire digital life happens in either Emacs or XMonad . Thus, a lot of time spent on my setup either goes towards working on the two configurations separately, or—as we’ll do today—bringing them ever closed together. Specifically, I want to showcase a new 1 XMonad…

Multiple Replacements with query-replace

6th Aug 2022–7 Mar 2023 · 5 min read · #emacs Multiple Replacements with query-replace As its name suggests, Emacs’s query-replace function, bound to M-% by default, can be used to replace occurrences of one string with another—and it’s quite good at what it does. However, there is one crucial feature missing from its default functionality: the ability to create multiple from → to pairs. But this…

Calling Emacs from XMonad

25th May 2022–7 Mar 2023 · 7 min read · #emacs #haskell #xmonad Calling Emacs from XMonad In the post about my research workflow , I briefly mentioned having to call Emacs—or other external programs—from within XMonad. I figured that this was perhaps something that could be of use to more people than just me. After a little bit of deliberation and coming up with a generic enough API, I decided to…

My PhD Research Workflow

1st May 2022–23 May 2022 · 10 min read · #emacs #maths #xmonad My PhD Research Workflow After reading Gilles Castel ’s excellent blog post about his research workflow, I decided that it was as good a time as any to write about mine—deeming it novel enough to hopefully contribute something to the discussion. Just like Castel, I’m a new PhD student in mathematics, which means no lab work and—in my…