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:
or if your function is indented (by four spaces, say):
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:
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.