Nerd Counterflex

You know that Washington Post article that has the list of websites Google used to train Bard? I been seeing people post screenshots of their sites in the training set on their blogs and Mastodon. This morning I read a post from Chris Coyier about it:

My largest corpus of writing to date is on the web at css-tricks.com (along with many other writers), so naturally, I’m interested in seeing if it was used. (Plus, I’ve been seeing people post their rank as a weird nerd flex, so I’m following suit.)

I’d suggest reading it. The post is more than just him flexing his ranking in the training set.

Well, I got curious to see if any of my writing was there. Here’s the result:

Screenshot of Washington Post article with Bard training set with ‘no results’ showing up for lmika.org

I guess you can call this a form of a nerd counterflex?

None of my other sites were there either. There was “lmika.com”, but that’s not me. Maybe having that was good enough for Google.

So yeah, you won’t be seeing Bard sharing any of my… “insightful” thoughts about code reviews anytime soon. 😄

Options For Self-Hosting Code Repositories

I’m considering something that some might say is stupid: I’m looking at options for self-hosting my personal code repositories.

I’m coming around to the idea of having my own domain for things like Go packages. It’ll provide more opportunities for adding some structure to my repos, rather than having them all hang off a single github.com/lmika namespace. Plus, my personal code management system is reasonably good at the moment so, naturally, the time has come to change all that 😛.

One option is to setup something myself. An idea I have is to get Forgejo running in a VPS managed by Hetzner. I had a go setting up Forgejo up to run on an empty Ubuntu server with PostgreSQL, but I didn’t get very far as I’d also have to setup things like a non-root user account, Nginx reverse proxies, and SSL certificate provisioning — stuff I can do, but all very tedious. Also, Forgejo’s installation guide is pretty incomplete. Good instructions for download it and setting up the database, but very little after that (where were the instructions about requiring a non-root account? That would have been nice to tell me).

I also tried getting the Docker image running it with Dokku. That took care of the reverse proxy and user account, and I managed to log into the frontend, but I couldn’t get Git to checkout a test repo using SSH. I suspect the SSH listener in the Docker container will need to be on a separate port to the SSH listener on the host; and both the container and host will need separate domain names, since I’d probably need to setup different SSH configs to use Git for both of them. Anyway, I haven’t completely written this approach off, and I may have another go at it if I want to host it myself.

One other thing I’d like to get working is a CI/CD pipeline. I got quite used to having GitHub Actions run the tests when I push commits, and having something similar would be really nice. It looks like Forgeio is building an integrated CI/CD pipeline which is exciting. But the question becomes where the runners should go. Separate host? That’ll start to make things a little expensive. I guess I can start without them, at least for the moment.

Another option is Gna, which offers managed instances of Forgejo and Woodpecker CI. It’s €10.00 /month, which is a decent price for something managed. But I do have questions about the company. Not that I’m worried about them snooping or anything, and the fact that they’re charging me means they have a business plan. But will they be around in 5 years? Granted these feelings are coming from visiting their website, but it does feel a little slapped together. Hmm.

The third option is going with GitLab. Hetzner seems to offer that as a one-click option, as does Digital Ocean (well, the Enterprise edition), and yeah that might work. I did create a GitLab instance for a hackathon once, so it’s something I could probably manage. But I don’t really love GitLab’s UI. I don’t know why I’m put off by it; after all, it’s not like Gitea’s UI is particularly special (I’m sorry, but everything looks so amateur. Please work on the padding of your elements). Maybe I can learn to love it if it means administering the thing would be easier.

Anyway, that’s the current feeling. We’ll see if I go through with any of this.

It’s always fun playing the “which faraway land is closer to me” geography puzzle when setting up an online services that doesn’t have a presence in Australia.

Options to select a location for a new server with choices of 2 cities in Germany, 1 city in Finland, and 2 cities in United States

The answer is Hillsboro, OR — 13,021 KM from Melbourne.

Dear The Economist,

Please restore the witty headlines you use for your articles to the digital edition. That’s one of the reasons why I read you. I know you include them as postscripts at the bottom, but it’s not the same.

Sincerily,

Me

Sunny day today, yet a bit chilly. So the hat and jacket ensemble is out at the moment.

Adding a new feature to dynamo-browse and now I’m beginning to wonder if this is why JavaScript has both a null and undefined type. In short: dealing with null pointers suck. They suck in Go and I’d imagine they’d suck a million times more in C. Better to have a dedicated type representing an undefined value, with all the associated methods to simplify the code.

The thing is: JavaScript should’ve not exposed this to the user. Do they really care that nil and undefined are two separate things? Was it worth the added confusion. Hmm. I’ll try not to make the same mistake.

Got to use one of the software tools we build and sell at work for a “real” purpose today, as in not just to test something. Felt good. Don’t get to do that super often.

Maybe, before AI swallows our careers to the point where we’re little more than glorified prompt engineers, they’ll be a brief period of time where AI does the boring things in software engineering. Leave us to do the fun stuff like write the code. They can review it for us, like some fancy linter.

🎵 Going Home: Theme from Local Hero

This week’s ear-worm. Apparently I loved this track when I was a little kid. Well, apart from the very 80’s sound (not a criticism), I’d say the younger me had great taste.

This teeny tiny lizard made its way into my house somehow. I’ve seen it on and off over the last week, but I managed to catch it and put it outside. There’s another one running around that I’ll also need to find and rescue.

Small lizard perched on my left index finger

Close-up of the small lizard sitting on my finger

🔗 The Windows 11 Trash Party

There is no way to turn this news feed off. The best you can do is “manage interests” which kicks you out to msn.com to have you tell it what topics you prefer.

Definitely not trying Windows 11. I hate software that pushes news onto you, unsolicited and with no easy way to turn off! I’ve have my news sources that I read and trust. I don’t want things pushed to me from sources with some commercial agreement that doesn’t have my interests in mind.

I’d argue that Google Reader shutting down was probably one of the best things that could happen to RSS. It might’ve been bad at the time, but it gave way to services like Feedbin that respect open standards and bring new users to the format, like myself. Having a large company like Google suck up all the oxygen in the room can’t have been good for RSS long term.

My Pinboard subscription has expired today. I don’t think I’ll be renewing it. Might be time to look for another way to manage my bookmarks.

I think GitLab wasted their effort building their “queued” MR comment feature, in which comments added to code lines are not seen by the submitter until you click “Finish Review” at the bottom of the page. I’ve never concerned myself with the feeling that I need all my comments sent to the submitter at once.

Oh sure, I’ve written a comment and then deleted it minutes later after going a bit further in the code, and I can see the benefit of this feature catching those. But I’ve trained myself to avoid doing that by simply reading ahead. I try not to raise a comment if there’s a chance that I’ll need to go back and modify/delete it. Saving the effort from catching these before the submitter sees them doesn’t seem like it’s worth the complexity of this feature, especially considering that other code review tools I usually used (which is really only GitHub) doesn’t work like that.

No, what I really want GitLab to do is hide/auto-approve files matching a certain pattern. This would be perfect for ignoring generated code changes. I don’t care if generated code changes. I really don’t. And I hate scrolling past these in MRs I need to review, especially when they take up a significant proportion of the changes. It looks like GitLab has an open issue to address this. It’s a shame that it hasn’t been addressed sooner, before this queued MR comment feature was shipped.

Yes, I’m complaining about this because I’m in a mood and I don’t like reviewing code. I blame the fact that it’s a Monday for that.

Wow, some serious work’s happening on the overhead wires of the train line. Looks like they’re replacing these old stanchions. I guess they’ve reached their end of life. Not sure how long they’ve been in service but they look quite old. Certainly older than me at the very least.

Workers attaching overhead wires to new supports with the old one completely devoid of wires.One of the old supports with wires disconnected and not long for this world.

Tending to the archive of all my old projects, documents, music, etc. that have survived the many machine transfers over the years. It wasn’t the original plan for this morning, but I think it’s best I work on this now. Not sure the portable drives they’re currently on will last much longer.

Finally got my Twitter archive and uploaded it to Micro.blog (thanks @manton for the awesome feature). Happy that I’ve got an archive of them now, but if I’m honest, there’s only one tweet that I really want to keep.

I realise now the problem I have with Twitter’s request archive settings pane. It’s prompting for a password when I open the pane, not when I request the archive. I want to make sure that my request is still ongoing and I haven’t missed the “in-app notification” or it hasn’t fallen on the floor due to some queue that was backed up or no longer running or goodness knows whatever else is going on over there.

So visiting this settings pane and seeing this:

The download an archive of your data settings pane in Twitter with the request archive button dulled out with the label requesting archive, indicating a pending request

provides a good indicating that the request is still in progress.

But refreshing the page is showing the password prompt that I complained about yesterday. I completely understand getting the password challenge when I request an archive, but when I want to simply open the settings pane? Is knowing that I’ve got a pending archive request considered sensitive enough to require a password check?

Anyway, once I get the archive, I hope never to open settings again (except to eventually close my account). And just as well. I can’t say that it’s a good looking settings page. Everything looks so dull and samey.

P.S. It’s been over 24 hours, what the heck is going on over there? I have so few tweets it would’ve been quicker for me to type them out by hand.

Made some improvements to my Keyboard Maestro macro which converts selected text from camel case to upper-snake case. Made a small fix to deal with common abbreviations like URL or API, which usually appear in all uppercase. The previous version was treating each letter as the start of a separate word, so that URL would be changed to U_R_L.

Here’s the JavaScript portion of the macro:

'use scrict';

const commonAbbrevs = ['URL', 'API', 'SQS', 'DB'];

(function() {
  let app = Application.currentApplication()
  app.includeStandardAdditions = true;

  let text = app.theClipboard();

  // Capital case the common abbreviations so that they'll be properly cased
  for (let abbrev of commonAbbrevs) {
    let capitalCasedVersion = abbrev[0] + abbrev.substring(1).toLowerCase();
    text = text.replaceAll(abbrev, capitalCasedVersion);
  }

  // Convert to upper snake case
  let newText = text.replaceAll(/\B[A-Z]/g, "_$&").toUpperCase();

  app.setTheClipboardTo(newText);
})(); 

Side-note: when I first heard that the let keyword was going to be coming to JavaScript, I heard others say that they wished let would effectively make a constant, much like how let works in Swift. I don’t hold a strong opinion on this, but I kinda wish that ECMA went through with that, since I see a lot of JavaScript code use const in place of let within a function block.

I must say, I’m not a huge fan of this practice. I mean, I can appreciate why they do it, since it reduces the chances of accidentally overriding a variable value. But being someone use to languages where const is reserved for constants values at the top-level, it doesn’t look aesthetically pleasing to me. I think I’ll keep using my lets.

If Musk wants to save money on SMS OTPs, then he can increase the authentication timeout on Twitter’s setting page. I’ve been challenged for an OTP on average once per hour as I wait for my archive to be ready.

Another option is to fix OTPs via emails. I tried that a few times but I never got one.

📺 Sash! - Adelante (Official Video)

No, you stop scouring the web for a music video from your childhood and get back to work! 😀

Okay, I think I got all my transportation booked for Europe. Three train journeys, and one hire car. Plus all the other transport booked already. Only thing to do is organise my international drivers permit, which I’ll do as soon as I can get access to a working scanner.

Argh! My kingdom for a document scanner that has power, a network connection, a functional UI, and that works without needing some terrible app.

We’re currently one for four on this front: I can turn the scanner on. 😒

🔗 You, Me, and UI

Really enjoying these series of articles from The Verge about UI and UX design. Lots of facinating subjects there.

Oh, I also flunked the logo colour test, getting 1 out of 8. I guess a career of chromatology is out of the question for me. 😄

🔗 Children’s author Paul Jennings reflects on childhood, success and his writing process

I’ve was a huge fan of Paul Jennings work when I was a kid. Everything he wrote that I read (or watched), I enjoyed. It’s been a while, but I’m sure I’d still like it if I read it today.