I’m officially a Zio today. 🙌

I’m generally not someone who likes to talk to people working on my hair. Even so, if silent cuts were offered to me, I not sure I would accept. The occasional “what do you do” and “how’s business”, enough to acknowledge each other, is fine. Not even having that would seem a little strange.

Don’t use access permissions to control what a user can and can’t do if the correct functionality of the system you’re building depends on it.

A user’s permission should dictate what a user has the right to do and see based on the policies of the resources themselves. But when it comes to the correct functionality of a system, it should be built such that if you were to disable all the permission checks, the user should be able to do whatever they can without breaking things. Relying on permissions to prevent this feels like a code smell to me, and can leave you with policies that have blanket denies for everyone that just can’t be taken out, and no one remembers why it was added there in the first place.

I don’t count myself a Safari fan, but full credit to Apple: they’ve made remote debugging for iPad Safari very easy. Plug the iPad in, tap “Trust the Device” a few times1, and Safari’s developer tools menu shows the iPad right there. It also works for SafariViewController sessions in modals, which is nice.


  1. There might be some setup stuff you’ll need to do on the iPad that I’ve forgotten about. ↩︎

Goland’s LLM-powered auto-complete is really good. It’s got to the point where it feels like Goland is broken when I’m using a version that doesn’t have it. I’m sure they hope to expand of this, and if I can make a request on what they could do next, it would be to add “auto-complete” suggestions in other areas of the code.

For example, I’m working on a function which uses AWS’s Golang SDK to send an SQS message. I started writing out the call to send a message, when I found out that I forgot to define both the context and queue name in the function I’m working in. Nothing too hard to fix, of course, but it would mean moving away from where I’m am now, and conducting a mini context-switch away from calling the SDK to fixing my function definition.

It would be nice for the LLM-based auto-completer to suggest adding the context as the first parameter of the function, as per the convention. The queue name is a little more ambiguous: it could either be suggested as another function parameter or as a field on the provider type. I suppose both are just as likely, but assuming that Goland is refining it’s model based on my trends, it could suggest adding the topic name as a field, along with adding it in as a parameter to the constructor function.

Anyway, something for them to look at when they run out of work.

Maybe there’s still a chance for Apple to release a car of some sort, although probably not how they were planning to. 😜

I think I’ve added more features to my TUI-based table editor over the last couple of weeks than I have over the last couple of years. Today, I added a command to collate two CSV files together based on the value of a particular column — sort of like an inner join in a relational database — and also a command to remove duplicate rows. This is in addition to the changes made last week, which included making the editor “header aware” and a command to map the values of a column. Granted, all these features were implemented using the bare minimum necessary to get my work done, but they’re there, and they weren’t a few weeks ago.

Reading this post from FLaMEd Fury and this passage caught my eye:

Music is so personal now, as is the access, the range, and the personalisation of your listening experience. (Being forced to hear the same twenty songs that the DSPs push on you aside). When I was growing up and at school, a handful of radio stations played a handful of songs (similar to those same twenty songs the DSPs push down your throats now). Everyone you knew was listening to the same music (obviously with exception) most of the time.

Every weekend at parties, you’d all be listening to the popular songs, hearing them in every car that drove past, pumping on the stereo as you got ready. Music is so varied these days, right?

Might be that I am one of the exceptions here: music has always been considered a very personal thing to me all my life. I have never felt the songs I listen to being part of the zeitgeist. And yeah, this is definitely because of the type of music I prefer to listen too: long, instrumental pieces, usually written 50 years ago. Definitely not what you’d call mainstream.

But it’s also the feeling I have about music in general, which is one that is quite private and personal, to the point where it feels like I need to protect it from others. For example, I tend to be very resistant in sharing with others the type of music I prefer, even if not doing so came at the cost of expanding my musical horizons. I remember that brief period when I was in a band and we were sharing the types of songs we liked to listen to, trying to get ideas. I never offered any of the songs I listened to. I did talk about it with the other band members so they knew of them, but it was never played during these listening sessions. And I made no apologies for this: they were “my” songs, and I prefer to listen to them on my terms.

I suppose I should feel bad for this, but I think I prefer it this way. I am trying to get better at this, at least when it comes to sharing things online. It is interesting to think that it’s easier for me to share links to albums than it is to share albums with others in person. A fear of judgement perhaps? 🤷

A lot of people I follow online have been recommending Cabel Sasser’s XOXO conference talk. I watched it last night and thought it was quite good. Definitely worth a watch. And yeah, try to avoid the spoilers. 📺

Returned from the doctor after getting my ears cleared. I can hear the world in stereo again. 🙌

Small thing I learnt about Safari for iPad: you can reopen recently closed tabs by long-tapping the “new tab” button. I thought this feature was completely missing from iPad Safari before I found this out. Although I shouldn’t be too surprised as I think Mac Safari does something similar.

🔗 Chris Arnade Walks the World

I’ve been enjoying this newsletter for the past month now. Chris is a good writer (understandable, given his profession) and gives wonderful descriptions of the places and peoples he visits. Worth looking at if you’re into blogger-travels-the-world style blogs.

Arrived at Albury station. Someone mentioned on the train that it’s the longest covered platform in the southern hemisphere.

Auto-generated description: A historic railway station with a central clock tower is set against a clear blue sky, surrounded by cars and a lamp post. Auto-generated description: A train is parked at a long, empty station platform with a covered walkway and bench.

Taking the XPT to Albury, on the Vic/NSW border, for a rendezvous.

Autogenerated description: A train with a blue and yellow front is arriving at a station platform under a clear blue sky, with people waiting nearby.

My Favourite Watch

Seeing all the nostalgia for digital watches of the ’90s and early 2000s, following the release of retroest desk clock shaped like a large Casio digital watch, it got me thinking of the watches I owned growing up. I started off as a Casio person but I eventually moved on to Timex watches. I was pretty happy with all the watches I owned, but my favourite was the Timex Datalink USB Sports Edition, which stood head and shoulders about the rest.

Auto generated description:  A Timex Ironman digital watch with a black strap displays the time as 3:41 and is water-resistant up to 100 metres
Source: Hamonoaneraea (site no longer online)

Not only was this watch featureful out of the box — having the usual stopwatch, timers, and alarms — it was also reprogrammable. There was some Windows software that allowed you to install new modes and arrange them in the mode menu. I remember a few of these, such as a mode allowing you to browse data arranged in a tree; a simple note taking mode; and a horizontal game of Tetris.

There was also an SDK, allowing you to build new modes in assembly. I remember building a score keeping mode, where you could track points for a game between two or four competitors, with an optional auxiliary counter used to keep track of things like fouls. I also remember building a dice rolling mode, allowing you to roll up to 6 dice, with each dice having between 2 to 9 sides, and the total automatically being displayed to you.

I never used these modes for anything — I’m neither sporty nor much of a gamer to have any real need for tracking scores or rolling multiple dice — but they were super fun to build, and I got a fair bit of experience learning assembly from it. And the SDK was pretty well built, with predefined entry points for the mode, reacting to events like button presses, and displaying things on the LCD. The fact that the SDK came with a random-number generator, which wasn’t even used with any of the built-in modes, just showed how well Timex thought about what was possible with this watch.

This was the last watch I regularly wore: I’ve moved to using phones to keep track of time. But it was a great watch while it lasted.

Why I Keep Multiple Blogs

Kev Quirk wrote a post yesterday wondering why people have multiple blogs for different topics:

A few people I follow have multiple blogs that they use for various topics, but I don’t really understand why. […] I personally prefer to have a single place where I can get all your stuff. If you’re posting about something I’m not interested in, I’ll just skip over it in my RSS feed. I don’t have to read everything in my feed reader.

I’ve written about this before, and after taking a quick look at that post, most of those reasons still stand. So if you’ve read that post, you can probably stop reading this one at reason number two (unless you’re listening to the audio narration of this, in which case, please listen on as that last post predated that feature 🙂).

I’m currently keeping four separate blogs: this one, one for checkins to places I’ve visited, one for remembering how to do something for work, and one for projects I’m working on1. This arrangement came about after a few years of spinning out and combining topics to and from a single blog, generally following the tension I felt after publishing something, wondering if that was the right place for it. As strange as it is to say it, this multi-blogging arrangement gives me the lowest amount of tension for writing online.

There are a few reasons for this. First is that for certain topics, I like an easy way to reference posts quickly. This is the primary reason why I keep that work-related reference blog, so that when I’m faced with a software-related problem I know I’ve seen in the past, I can quickly lookup how I solved it. I’ve tried keeping those posts here, but it was always difficult finding them again amongst all the frequent, day-to-day stuff.

It mainly comes down to the online reading experience. Categories can only do so much, and that’s if I’m categorising posts rigorously, which is not always the case. Here, the posts are displayed in full, encouraging the reader to browse. But for my reference blog, a list of bare links works better for going directly to the post I need.

The second reason is the writing experience. For me, certain CMSes work better for certain types of posts. Micro.blog works well for micro-posts or mid-sized posts like this one, but for longer ones, I prefer the editors of either Scribbles or Pika. I don’t know why this is. Might be because all the code-blocks I tend to use on those blogs are easier to write using a WYSIWYG editor rather than Markdown.

And finally, it’s a good excuse to try out multiple CMSes. I have no rational explanation for this one: it’s an arrangement that costs me more money and requires learning new software. Might be that I just like the variety.

So that’s why I keep multiple blogs. I do recognise that it does make it harder for others to find my writing online, not to mention following along using RSS. But that’s a tradeoff I’m willing to make for a writing and reading arrangement that works better for me. Of course, like I said in my previous post, this might change in due course.


  1. Actually, I have a fifth blog which is for projects I’m working on that I rather keep private. Oh, and a sixth, which is a travel blog that I really should maintain better. Might be that I have a few too many blogs. ↩︎

Finished reading: Useful Not True by Derek Sivers. A good read, although I think I rushed it a little. I might need to read it again a little slower with a more reflective mind. 📚

Having a blocked ear is annoying, but it does have some benefits. Sitting outside at the cafe, with busses and wood-chippers to the left, being muffled by my blocked ear, has made reading my book so much more pleasant. If only I could muffle the cafe music playing to the right.

Having a blocked ear is not a great experience. In fact, it’s pretty awful. I’m treating it now with some ear drops recommended to me by a doctor (it didn’t occur to me that I could’ve gotten this over the counter). I’ll be going back to the doctor in a few days to hopefully get it cleared up.

I don’t use Wordpress so this war between Matt Mullenweg and WP Engine is little more than #internet-drama to fuel my amusement. But Matt’s recent actions in this battle have started dragging users into the crossfire, and this is something I absolutely do not like. First by the blocking access to the plugin directory for those using WP Engine, and now by adding childish, your-with-me-or-agents-me UI elements on the wordpress.org login page:

The wordpress.org login page, with a username and password field, and a checkbox that says 'I am not affiliated with WP Engine in any way, financially or otherwise', circled with a red ellipsis annotation
I had to see it for myself to believe it.

Granted, this looks to be a login form for plugins and forums, not actual blogs. But even so, Matt, is this necessary? You may have had a reason for going after WP Engine for some reason. I have no idea what those reasons are, and quite frankly, I no longer care. You start making changes to things in service of your war, I loose all respect for you.

I may not use Wordpress, but I do use software that’s now owned by Automattic, like Pocketcasts, and seeing this makes me uneasy. What’s to say that these won’t be used in a similar way in the future?

Edit: Part of me wonders now whether this checkbox was added in jest. No evidence to support that apart from seeing various posts on Mastodon (I don’t have evidence to support that it wasn’t added in jest). If so, then I am a fool for taking the bait and getting worked up about this. It is an indication of how vicious this fight looks to me though, where adding such a checkbox would seem like a genuine escalation.