Recent Posts

become.el v1.4.0

2 min read; 9 GFI

In the last month or so, as I've mentioned a few times before, I've been trying to tidy up some of my older personal Emacs Lisp packages. I thought I'd updated all the ones I commonly use, but it turns out I hadn't. Somehow I'd missed become.el.

This is another one of those packages whose content started out as ad-hoc commands, added to the ~/.emacs that first started to emerge as I got to know Emacs on OS/2 and then GNU/Linux back in the mid-1990s. I think it was back in 20161, when I did a big revamp of my Emacs environment, that I moved all of those roughly-related commands out into their own file.

Honestly, I think I can dump most of them now. There's stuff in there for quickly and easily converting buffers between "DOS format" and "Unix format" (from back when I was still working a lot on Windows machines, and sometimes even in MS-DOS-based virtual machines, and often using the DJGPP-built version of Emacs).

One command I still use all the time is become-free-of-trailing-whitespace, because I have that set up as part of a before-save-hook:

(use-package become
  :ensure t
  :defer t
  :vc (:url "https://github.com/davep/become.el" :rev :newest)
  :commands become-free-of-trailing-whitespace
  :init
  (unless noninteractive
    (add-hook 'before-save-hook #'become-free-of-trailing-whitespace))
  :bind
  ("<f12> <tab>" . become-freshly-indented-no-tabs))

While I know that there are better ways of handling the trailing space issue these days, this is one I rolled for myself a couple of decades ago and it's yet to fail me. You can see just how dated it is from this:

(cl-flet ((is-sig-line ()
                       (save-excursion
                         (beginning-of-line)
                         (looking-at "^-- $")))
          (markdown-br-p ()
                         (save-excursion
                           (beginning-of-line)
                           (and (eq major-mode 'markdown-mode)
                                (looking-at "^.+[^ ]  $")))))
; ...body removed
)

If you know, you'll know why is-sig-line is there2.

I do still use become-freshly-indented-no-tabs on occasion too, and have it bound to an easy-to-remember and obvious (to me) key.

And so, despite the fact that most of the content of become.el is probably obsolete at this point, despite the fact that there are probably far better and more idiomatic ways of doing these things these days... it's my little personal package that has grown with me in the 3 (and a bit) decades I've had Emacs under my fingertips. I'm going to keep it around just a little longer.


  1. The header for become.el says 2017, but I think the header itself came a little later when I did some more work on my config

  2. And if you don't know, now you do

More mode line tweaking

1 min read; 10 GFI

The simplification of my mode line is sticking, in that I like how it's turned out and I find it more useful to have it this simple. But I did notice something was missing: I'm a pretty constant but pretty casual user of projectile. I know it's a package that offers a wealth of tools, yet mostly I just use it as a project bookmark system. For this, though, it works well.

Given this, having a quick and easy way to check that I'm in the project I think I'm in is a good idea. While I also have neotree open all the time, which gives a fairly obvious clue, my eyes keep flitting down to the mode line.

The change I made the other day, deliberately, left the project off. I think this was a simplification too far. So now it's back.

Slightly updated mode line

The core of my mode line configuration now looks like this:

(setq mood-line-format
      (mood-line-defformat
       :left
       ((or
         (mood-line-segment-buffer-status)
         (propertize
          (mood-line--get-glyph :buffer-modified)
          'face 'my/mood-line-good-status))
        " "
        (mood-line-segment-buffer-name)
        (my/mood-line-segment-project)
        " "
        (mood-line-segment-major-mode))
       :right
       ((my/mood-line-segment-vc)
        " "
        (propertize
         (mood-line-segment-cursor-position)
         'face 'my/mood-line-cursor-position))))

A little busier than it started out, but still pretty clean. I do keep wondering about the cursor position. In most buffers I have line numbers showing to the left anyway, and it's rare (but not unknown) that I need to know what column I'm in. I'm very tempted to remove the cursor position altogether, then the right-hand side would just be the vc information, at which point it might make sense to also move the project name over to the right, given that the project and the repository information generally go hand-in-hand.

I'll stick with this for now, but I can see this happening soon.

Recently I found - 1

2 min read; 7 GFI

Introduction

An occasional collection of things I've recently found on the Internet and added to my bookmarks.

Tutti Space Program

Described as "A playful 2D space sandbox with flowing materials, heat, and gravity", it's exactly that. One of those things to mess with in the browser when you're either waiting for a boring meeting, or in a boring meeting, or just have time to kill. Or just because.

The Jqwik Anti-AI Affair

The Jqwik author's perspective on their Markdown-based "malware".

Finalist

Saw this go past in my Mastodon feed, although I lost track of who mentioned it. This app falls under the heading of "apps I really want to like because it seems to solve a problem I want solved but I don't like how it solves it". Mostly I do like how it solves it, but something is off about it; also it's laggy as hell on my iPhone 16 Pro, for some reason.

As such, I didn't stick with it for long, but I might revisit it at some point to see if the performance improves; hence saving it.

Modus Themes

In the past few days I've been toying with changing the look of my Emacs. This is where I landed. The documentation is excellent. I don't know why it took me so long to discover it.

LisaOS Emulator

An Apple Lisa. In the browser! I've never used a Lisa. I've never seen one in person. It's sort of wild to me that I now live at a moment in time where we can emulate, right in the browser, machines that date from my younger days.

Vintage Macworld Magazine Library

Never read it myself; I'm a late arrival to the world of the Mac (I've been a user just over a decade now). Should be fun reading some of the older copies.

Project Gemini

This is a new one on me; I just stumbled on it over the weekend. It is a now well-established protocol for a simple web of documents. I'm very tempted to have a play with this. I'm ever so slightly tempted to see if I can do something with BlogMore, such that I could target this approach in some way too.

Gemcities

Free hosting for Gemini-protocol sites.

flounder

Free hosting for Gemini-protocol sites.

This week I found...

1 min read; 8 GFI

It's the best part of two years now since I dropped Pinboard in favour of Raindrop. It's also seven years now since I first created a Pinboard account and started collecting possibly-useful bookmarks1. I've found this process useful, and it continues to be a great way to find and remember things. The way it works these days is:

  • Spend most of the week scrolling social networks, Reddit, the Orange Site, etc.
  • See something I find interesting.
  • Add it to the unsorted collection in Raindrop (mostly via the iOS app)
  • Normally once a week fire up Braindrop and filter, edit, describe, and tag the links.

This approach gets used for a few different reasons:

  • It lets me collect links I want to refer to in the future.
  • It lets me collect links I want to review as a reminder to look at a thing.
  • It lets me collect links to posts and articles I want to make a point of reading.

As such, I use it as both a long-term bookmark/information store as well as a read-it-later queue. It works well.

When going through this routine over the weekend, I got to thinking: while I do publish a public list of my bookmarks (complete with RSS feed), it might be interesting to make an occasional post where I list out the links I discovered, which I found interesting and worth hanging on to, and explain what caught my interest. It might also be a worthwhile process to look further through the past seven years of bookmarks and write about some of the older links (or at least use that occasional review to weed out the history).

So, that's the plan. I'm not sure quite how long it will last, but I think it would make for a good occasional series. I was going to call it "This week I found...", but then I realised that that puts pressure on me to make it a weekly thing. Perhaps it should be more like "Recently I found..."; that way it can either be multiple posts in a week, or once every few weeks.


  1. I say "started collecting"; I was a del.icio.us user back in the day. 

blogmore.el v5.3.0

1 min read; 5 GFI

I've released blogmore.el v5.3.0. This is a pretty small release but adds a command I realised I'd forgotten to add a couple of releases ago.

Now that BlogMore has the concept of a post series, and now that blogmore.el lets you add and remove a series from a post, it makes sense that I'd want to link to a series in a post from time to time, like I can and do with categories and tags.

So v5.3.0 adds a blogmore-link-series command. It can also be found in the transient menu.

Full fibre might be back on

1 min read; 12 GFI

So after the screw-up by Openreach and EE, where I was promised full fibre and then it never happened, I'd assumed that nothing was going to happen for quite some time. I was told that (likely) Openreach would contact me when they'd solved whatever the problem was, but I wasn't holding out much hope that it would be a swift turnaround.

Yesterday, however, I got an email from EE claiming that full fibre was available at my address. While sceptical about this, assuming it was just some marketing nonsense that wasn't paying attention to the details of where I live, I called them to check. I explained the problem, I had them read the notes on my account, I had them acknowledge all that had happened and they reassured me that, for real, no kidding, no nonsense, this was all gonna happen this time.

So... watch this space. I already have an installation date (it's next month) just from the order-planning call -- something which didn't happen the last time. Within the next few weeks, I will either finally be returning to streaming, and enjoying all the other benefits of full fibre, or I'll be writing yet another post about how EE and Openreach messed up.

Stottie - attempt 2

1 min read; 7 GFI

After last weekend's attempt at making a couple of stotties, I thought I'd have another go. This time the aim was to try and get the classic shape, mostly by trying to ensure they were rounded and also flatter before going into the oven.

The dough post-rise:

The dough

Ready for the oven:

Ready for the oven

Fresh out of the oven:

Fresh out of the oven

Side view:

The side view

So... still viable bread. Still going to get eaten. But I think this is obviously another fail when it comes to the (lack of) thinness and the shape after they come out of the oven.

There will be another attempt. I'm going to keep trying this until I get it right!

Getting on with Antigravity

2 min read; 10 GFI

It's been a wee while now since I stopped using GitHub Copilot and switched to doing everything locally (in a tool sense, not a model sense) with the Antigravity CLI, so I thought I'd jot down how it's been going. Simply put, it's been going well.

I've found the CLI itself easy enough to work with (I've not really attempted to use the GUI application), and the default model choice has done a lot of work for me on BlogMore without issue. I think it's fair to say that, at this point, I'm finding it far more consistent than I was finding Copilot+Claude.

As for the initial confusion and concerns about quotas: I've found that that's calmed down, with me never obviously coming close to hitting my limit while working on any change to BlogMore. The worst I've seen is getting down to about 20% of the 5-hour rolling window, and even then that's been when I've pretty much finished the work I was doing.

The actual display of quotas has changed too, I noticed just this morning. Now, rather than showing progress bars per model, it's more like this:

The new Antigravity quota display

While I suspect the weekly quota display will cause a smidge of anxiety to start with, mostly I appreciate that being added, and being so clear. Given the level of work I'm using this for, I can't see myself coming close to using it all up and having to wait. The quota does come with an explanation in the CLI too:

Within each group, models share a weekly limit and a 5-hour limit. Quota is consumed proportionally to the cost of the tokens. Thus, limits will last longer with shorter tasks or using more cost-effective models. The 5-hour limit smooths out aggregate demand to fairly distribute global capacity across all users, while your weekly limit is tied directly to your individual tier.

Digging a little deeper, I see there's a /credits command and, quite quickly, I can go from that to this in my browser:

I can buy more credits

I'm not sure exactly how much work 2,500 credits might represent, or what impact it would have or could have on the weekly quota; confusingly, if I follow the links from the CLI to see my usage, I see a message that says:

AI credits included with your plan have been replaced by product-based usage limits

So which is it? Do I have usage limits? Do I have a hard cap for a week? Can I extend it or not? Do I extend it using credits or not? I sense the messaging around this is all still a little mixed up. I do know that if I turn on credit fallback in /settings, I get a handy display of the credits I have left:

AI Credits: 1000

So this weirdly reads like I can and am using credits as a fallback to the quota, but also not.

Schrödinger’s Quota?

I'll dig around some more and see if I can find a definitive answer.

All that said: barring any changes that might upset things (which, let's be honest, is something that's highly likely given the state of the AI/agentic coding world), I think I'm happy with how this is going. For now, at least, BlogMore's primary development tool will carry on being Antigravity.

And me, of course.