Incoherent ramblings

Customized MathJax now reinstalled on the blog.

August 27, 2026 Incoherent ramblings No comments ,

The way that I previously installed my customized MathJax was as a sub-directory of mathjax-latex/.  A side effect of this is that a purposeful or accidental upgrade of the mathjax-latex (wordpress) plugin, will obliterate that MathJax/ download (and default.js customization).

I’m using GoDaddy wordpress hosting (I probably should have used an amazon ec2 instance, which was more flexible and probably would have been cheaper). GoDaddy now offer ssh (not just sftp) access, which makes this reconfiguration much easier.  I couldn’t find a zip for the Mathjax distro anymore, but this worked:

cd html/wp-content
git clone https://github.com/mathjax/MathJax.git
cd MathJax
git checkout 2.7.9
cd config
vim default.js

You can see what my default.js looks like with:

curl https://peeterjoot.com/wp-content/MathJax/config/default.js

that has a big LaTeX Macros block, equivalent to a subset of my peeters_macros.sty

Installing the customized MathJax tree this way means that I need only set the mathjax-latex CDN path to:

https://peeterjoot.com/wp-content/MathJax/MathJax.js

Screwed up my blog’s LaTeX (mathjax) plugin.

August 27, 2026 Incoherent ramblings No comments

I’ve accidentally upgraded the mathjax plugin to the latest version, which wiped out the customizations I had.  This effectively means that all math content on this blog will not render properly until I figure out how to rebuild the customizations (custom CDN url, …) I put in place years ago.

Stream of consciousness dump: new job, claude terminal, vscode, vim mode, …

May 4, 2026 Incoherent ramblings , , , ,

This post is a fairly random stream of consciousness dump, including bits on all of the following:

  • Job transition, and hints of what I’m going to be working on
  • Vscode, and vim mode deficiencies
  • AI development integration

Job change

My last day at Lemurian was two weeks ago, after 11 months there. I enjoyed much of the work, which was well suited for my skills and aptitudes, and learned a lot, but ultimately it wasn’t the right fit for me. I miss a number of the people I worked with, and wish them and Lemurian continued success.

The new job is at a just-formed startup, with a handful of developers, no product yet, and no Canadian corporate presence (so I’m working as a contractor for now). Budget is tight and there’s no additional hiring capacity at the moment, so this isn’t a “come join us” post — it’s more of a “here’s what I’m up to.”

That new job is really fun so far. In one week of 14+ hour days (with extensive Claude generation of boilerplate tablegen/parser/builder), I have most of an MLIR language dialect + parser/builder built for a specific programming language. There’s lots more to do, and the interesting and tricky parts will start soon, once I have infrastructure in place. The work is going to be lots of fun; the team is great, really capable, and knows how to build and get the job done. I don’t know how long it will take us to get the product built, and we are starting from absolutely nothing, but the pieces are coming together quickly.

Vscode

At Lemurian, most people used VSCode for their development. I’ve been using tmux+vim+cscope+ctags+perl so long that I found it hard to make the switch. I’d start in VSCode in the morning and, in frustration, end up back in the terminal in short order.

As an example, suppose that you want to filter the current function through a script (say, clang-format). In vi, you can do something like:

:,/^}/!clang-format

or if your function is indented (by four spaces, say):

:,/^    }/!clang-format | sed 's/^/    /;s/ *$//'

VSCode has a vim mode, but its pattern selector is broken, so you can’t do the last (I don’t remember if you can do filtering either, but let’s stick to the selection issue). To do that line selection in vim mode VSCode, the line range selection part has to be written with the following clunky expression:

:,/^\s\s\s\s}/

It was little quirks like that which repeatedly ejected me from VSCode back to the terminal, or I’d run both VSCode and terminal. It was a strange workflow.

There were a few things that I liked about VSCode:

1. The right-click for type definitions was really nice. I do this the hard way, with memorization, grep, cscope, ctags, and other ad-hoc methods.
2. The autocomplete was nearly magical sometimes.
3. The integration with Claude Code or other AI agents works fabulously, giving the agent full context for the repo and project.

Points 1 and 2 may eventually draw me back to VSCode, despite how slow I feel working in that environment. On the other hand, the AI tools are so good now that English is becoming a programming language. Do I really need to go through the pain of figuring out how to be effective in VSCode?

Claude terminal

For point 3, at the new job, I’ve now got a great replacement: Claude terminal!

Running that terminal application (in an ssh session to my development VM), I can grant the AI tooling access to the repo, as I could in VSCode.  However, I’m able to run the claude session in a tmux window (tmux rename-window claude; claude), and away we go.

A development model that works really well is to describe the desired task, have a conversation about it, and have it produce a design document and execution plan.  I review that, choose which parts I want to do myself, and throw the tooling at the rest, then review that work thoroughly.  The result is staggeringly fast iterations.  Some spectacularly large systematic tasks that may have taken months to do unassisted, can be done in hours.

One gotcha: I’d like to be able to enter multi-line prompts in the terminal UI application, but haven’t figured out how. Claude claims that shift-enter works, but perhaps only in the web app? I’ve resorted to writing some prompts in a file in a separate tmux window and then asking Claude to read that file.

Wonderful Life=Giving Radium

March 22, 2025 Incoherent ramblings

From “The Wide World” Magazine, June 1905 edition

“This remarkable substance is absolute and quick death to the germs of cancer, tumor, consumption, malaria, blood poison, ulcers and all forms of existing disease.  When it enters the system every vestige of disease is driven out, as no germ can live in its presence.”

The amusing thing is that the idea of this advertisement has a close analogue in modern medicine, as chemotherapy is essentially the same idea.  Chemotherapy is also a gross system wide attack on the body, a desperate hope that it can be used to kill off the cancer cells faster than the rest of the cellular structure of the body.  It’s the kind of treatment that future Bones, in Star Trek IV, will eventually be describing as “What is this, the dark ages?”

I have three of these “Wide World” magazines that I got in a “unknown” box of pulp fiction magazines from a second hand store when I was a kid (Argosy, Blue Boy, …).  The ads from these magazines are the best part.  I think I’ve posted a few more of them on my old blog, but I should systematically go through them for archival purposes, and share them all.

Coffee making procedure when you are too tired to make coffee

November 21, 2023 Incoherent ramblings , ,

Here’s the 15-20 minute coffee making procedure when you are tired enough that you should have adult supervision in the kitchen:
  • Boil water.
  • Put beans in coffee grinder.
  • Start pouring water over unground beans in grinder.
  • What the !%!%^! am I doing! 
  • Pour out damp beans, as you watch water drip out of bottom of plugged in grinder.
  • Take apart coffee grinder, and dry out the inside.
  • Blow out remaining moisture with air compressor in back shed.
  • Put grinder back together.
  • Grind coffee beans.
  • Put grounds in the french press.
  • Reboil water.
  • Hot water over grounds in french press.
  • Wait and plunge.
  • Enjoy.