I fell back into old habits. Earlier in the year I determined that I should be happy writing shorter pieces here. They need not be epics. And what happened? I looked back today and realised that I’d been working for two months, on and off, on a rather rambling piece about mason.nvim.
What I’d done is decide that I couldn’t just write two paragraphs about what Mason was, even if it covered all I’d wanted to know about Mason when learning nvim. Instead, it was a 500 line odyssey into the Mason code base, which ends up to be quite a trek. Not a messy one, but complex, because the Mason code base does a ton of stuff.
And in the end, doing the required drafting work to explain the code was too much. It was too much work, and I wasn’t really convinced there was much point to it. So the post got to a certain point and just sat there. I’d satisfied my itch to understand more about Mason, but I didn’t have the time to write that up in a comprehensible way.
So, instead, here’s the two eight paragraphs about Mason that I wish I’d
read.
There seem to be a lot of new editors making the rounds at the moment.
I’ve tried Zed. Zed holds a lot of promise, and is fast, but early stages and the Vi mode’s pretty awful (although they know this, and are up for fixing it as they recognise that it is important to a lot of people).
I’ve tried Lapce; quite a lot of features, but felt quite immature in use. Again, a recognition that Vim-like behaviour was important. But it didn’t really feel like one could take it on day-to-day.
And obviously I’ve tried Neovim, and, in Neovim, found an editor I really like.
But now I’m trying out Helix. While Zed and Lapce are GUI-based editors, Helix is a terminal editor. It’s a lot like Vim, but has more batteries included. Also, it has a new way with modal editing that I’ve not used before. Helix is receiving major new functionality at a reasonable pace. It seems like a very promising project.
So far, I’m finding Helix has a sweet spot between being quite new, and yet with enough features for serious use. And it’s not emulating Vim, it just is a “modern Vim” built fresh from the ground up, albeit with the new way with motions and commands that I mentioned (we’ll talk about it in a moment).
Doing the hobby, kitting oneself out for the hobby, and talking about either of them.
Around the end of high school, I started to get really into photography. My friend (let’s call him T) was also into it, which should have been great fun. But it wasn’t. Going shooting with him was never great, for a reason I didn’t figure out till much later. I wanted to take photos. T mostly enjoyed tinkering with cameras. As I’ve spent more time on different hobbies, it’s become clear that this is a common pattern. Every hobby, pastime, or sport, is really four hobbies.
The Four Hobbies, and Apparent Expertise rang true for me. Given I’ve spent time here writing about Neovim, perhaps I focus too much on kit. Although, as I’ve never really mastered Vim, perhaps I’ve an okay balance. That’s what I’ll tell myself 🙃
I think it’s mostly important to be aware the axes exist at all, and to consider — not too often, though — whether you are happy with your position on them.
In Generative Agents: Interactive Simulacra of Human Behavior (April, 2023), the authors discuss the use of the ChatGPT LLM to generate the behaviour of 25 agents that live and work together in a simulated village called Smallville.
The agents wake up, have breakfast, open up their shops, get coffee, organise parties and gossip with each other. Their activities are surprisingly… human:
These generative agents produce believable individual and emergent social behaviors: for example, starting with only a single user-specified notion that one agent wants to throw a Valentine’s Day party, the agents autonomously spread invitations to the party over the next two days, make new acquaintances, ask each other out on dates to the party, and coordinate to show up for the party together at the right time.
What I found most horizon-expanding about this work was the demonstration of the results of using the LLM in a wider setting. Rather than the end result being the text the LLM outputs, instead the social interactions of the agents are the output. The LLM’s text output is instead being used for its encapsulation of behaviour in its language generation, and is fully hidden within the system’s runtime.
The LLM is put to use in a great variety of ways within the system. A fascinating example was the way the researchers structured each agent’s memories and used the LLM to decide which events an agent experiences would be more important to that agent. The LLM’s ratings of interestingness are fed to a wider system, which uses the ratings to decide which memories to use during another use of the LLM: asking it for the actions an agent should take. The system is full of ways prior LLM result texts influence future LLM result texts in ways designed to support this world simulation.
Overall, a very eye-opening exploration of the possibilities within the space.