A reminder to myself that the only way to get a blog post out there that you’re happy with is get a blog post out there that you’re not happy with. Classic case of learning by shipping. And I think you need to actually need see it all the way through to publishing it. I’m not convinced that you’ll get the full benefit if you just leave the post half-finished in your drafts folder.

A Rambling Thought About The App-Only Social Networks

Re-reading this post got me wondering how much traction Hive and Post are getting from the Twitter exodus. I am aware that Hive had to deal with a vulnerability and had to shut down while they fixed it. I don’t know much about Post apart it being another VC backed social network. But unless you’re a gamer attracted to Hive, and… 🀷1 heading to Post, is there anyone else using them?

I’m wondering how much traction these app-only services will actually be able to get in this day and age. One huge advantage that Mastodon has is that it’s a web service first, and doesn’t require an app to use. This makes sharing things outside the network quite easy. Don’t have the app? Just open this link up in your web browser.

If Hive and Post cannot do this, I don’t see how you can get people unaware or uninterested in the service to sign up. You might be able to share a link which will prompt people to download and sign in the app. But would they actually do this? I feel that we’re beyond the days of just trying out new services unless you know for sure you’ll get value for it, and you probably won’t know this unless you can see what’s being shared without having the app.

While we’re on the subject: my curiosity got the better of me a few minutes ago, so I took a quick look a Post.news to see what it’s like. It’s backed by Andreessen Horowitz which means that I was expecting to see a few things that I’d find disagreeable. I was not disappointed.

There was a website β€” styled by someone the same level of design skills that I could muster (that’s not a compliment). And it wasn’t just a sign-up page either: there was a “discover” feed of sorts. Lots of US news, politics, and screenshots of posts from other social platforms (and not just the major ones). I don’t know if/how they curate the posts that appear there but the ones I saw did not entice me to sign up (not that I have any interest in signing up anyway).

I hope A18Z feels like got their money’s worth for this. Not sure that I would if I was backing them.


  1. Not sure who would sign-up to Post other than those that know/like the VC backers themselves. ↩︎

It’s been a rare (but not unprecedented) three coffee and one caffeinated tea kind of morning today. 😴

The cafe I go to has started playing music where I sit. I find music at a cafe distracting, mainly because I find myself paying attention to the music instead of what I was doing. Fortunately it’s music I don’t find appealing. But even so, bad music is still not no music.

I never considered myself someone who believed that Go must’ve had generics from the start. I appreciated that the designers added them to the language, but I though I’d could be just as effective writing Go code if they chose not to.

I don’t believe that anymore.

I’ve found generics in Go to be a major improvement to the language. It now means that I can now use higher order functions that operate on collections, like “map” or “filter”, in a more natural way. I got use to these functions while working in languages that had them (Python, Ruby, JavaScript, Java 1.8) and they’ve been so useful that I wished Go had them as well.

There was no technical reason for Go not to have these functions, but they would have had to use the interface{} type to be useful, meaning that there was no type safety built-in and your code would be littered with type assertions. This was such a turn-off that most of the time I didn’t bother with considering higher order functions, and just wrote a for loop by hand to convert types in one slice to types in another slice. Trivial to write, but just so boring.

Now with generics, these higher order functions can be made type safe, and there is no longer a need for type assertions to use them. These made them viable once more, and I’ve found myself using them a fair bit recently. Not having to write yet another for lop has made coding fun again.

πŸ”— The Magic of Small Databases

I kinda want this but for internal databases. There’ve been several times at work where I’ve had to collect semi-structured information in a spreadsheet or a wiki page comprised solely of tables. There’s always some loosely defined convention around how to represent it (use this colour to indicate this particular state) or when it should be changed (change this label to “In Review” until these people have seen it and then change it to “Confirmed”).

One example is how we manage releases: which services we’re pushing out and what commits they are, which environments it’s been deployed to or tested in, whether the other teams or the person on-call are aware of it and have signed off, etc. This is all managed in wiki pages that follow a standard layout, and it’s… okay. It was a convention that has grown out over time as we were working out our release procedure. And it made sense keeping it relatively informal as we were trying to work out our groove. But that groove has been formed now, and it would be nice to formalise the process. But doing so means that there’s a lot of manual labour keeping these release documents correct and up to date. And since it’s all in a centrally managed wiki, it’s difficult to automate away things that are managed by other systems like our code repositories.

A tool that can be hosted on-prem which will allow anyone to spin up a new document-base database (either for the team or themselves), define a very loose schema and some views, and put a very simple workflows and code macros would be great. The trick is trying to walk the line that separates something that basically is like a hosted version of Excel verses something that will require so much setup work that no-one will bother with it. I’d imagine that’s a tricky balancing act to follow.

Saw the following quote while reading this article:

You could fill a book with all I know, but with all I don’t know, you could fill a library.

β€” Unknown

Quite profound.

It’s 2023 now and podcasts are still saying that I should Google so-and-so to see an article they’re citing, instead of just putting a link in the show-notes. I understand that this is mainly because Apple’s podcasting app doesn’t support HTML with links. Maybe once they’ve stopped burning money on their podcast subscription play that seems to be going nowhere, they can take a look at fixing this. We’ve got linking technology now; we shouldn’t be afraid to use it.

On a train now peeking at someone’s laptop. His desktop is completely covered in document icons. And I mean completely, as in there’s no room for any more.

I’ve never seen this before. It’s both amazing and shocking at the same time.

Busses should use the tram lines more. I remember being taught that if a bus was driving on a tram line, it must be treated like a tram. This gives them dedicated lanes and certain priorities over cars. Don’t know why busses don’t do this.

Passing by the Vegemite factory on the way to work. You usually get a whiff of its signature smell when you walk by, but today it was particularly strong.

Corner of the Vegemite factory

Ah, my Smart Response XE developer kit has arrived. Time for a new project.

Smart Response XE handheld device, and headers and leads to connect it to a computer

Achievement unlocked: first spam email offering to identify and fix vulnerabilities in one of my GitHub projects (it’s open source: if there are any vulnerabilities, just raise a PR).

I hate the term “business logic.” Is there a better noun-phrase for things the software is meant to do that doesn’t sound corporatey? I guess “user flow” or “user experience” could work, but not everything I deal with involves the user directly.

Currently reading: Temeraire by Naomi Novik πŸ“š

About half way through the first chapter but already very captivating. Started strong right out of the gate. HT to pluralistic.net, where it was highly recommended.

On the subject of birds, I was looking at my status.lol statuses this morning. There are only a handful on there but I saw these two and it made me smile. I obviously posted them while I was looking after my sisters cockatiels last November.

Two status.lol statuses made 2 months ago: one saying 'Can't work, Too many parrots on hand (1, which is > 0)' and the other saying 'Ok, parrots off hand. Back to work'

Putting up a new print today.

Framed print of an Eastern Rosella

Original is by a local artist, although I didn’t get their name.

This is going to be an unpopular opinion but I cannot stand the MacOS development experience. I wanted to start a new project, a MacOS SwiftUI project, and once I went through the New Project flow, the first thing that happens is the preview craps out because the login to AppStore Connect cannot provision a certificate. To generate the preview of the “Hello World” app that was just created. Call me old fashion but the need to provision a certificate to generate a preview is a little unnecessary.

How do experience MacOS developers deal with crap like this? Honestly, I really feel for them devs going through all the shitty hoops Apple throws their way, as if attempting to build anything is a threat to their trillion dollar company. They really need to get some perspective.

Anyway, I’ll settle on using Go and Wails. I know how unpopular Electron-style apps are in the broader MacOS community (Wails doesn’t bundle Chrome so it’s not quite the same thing) but it’s a stack without any BS that I can rely on.

My 2023 Word

I think I’ve settled on my 2023 word of the year: generous. Specifically (although not exclusively) generous in the projects I work on. I’m always working on some form of software in my spare time, but most of the time I keep this software just for myself. I want to do less of this, and start sharing it with others. You could say that I want to get better at shipping, but shipping to me is making the software usable for what it’s designed for, and for many of the projects I build, it’s only designed for me and my needs. Shipping’s for myself is no longer enough, I want to start shipping for others.

This word ties in nicely with the words over the last couple of years. Last year my word was finishing: following through on delivering something that goes beyond just the merely usable. The year before it was sharing: not being afraid to talk about it. Both of these desired qualities are still a work in progress, but I feel like I’m getting better at these. But the focus has been on solving my own needs. I think now’s the time to start looking at the needs of others.

Like last year, this word is not one from Nicholas Bate’s list of words, although if it were to be closest to anything, it will probably be entrepreneur. In fact, my 2023 word was originally going to be entrepreneur, but I wasn’t fully onboard with this. Someone approaches me and says “I want to be an entrepreneur,” I immediately think that person wants to start a business, get VC funding, go for growth, etc. and that’s not something I’d like to do at this stage (maybe at any stage, but I don’t want to speak for future me). And maybe those feelings are unfair. Maybe a better way to look at it is thinking of terms of entrepreneur as someone who solves the problems of others. You read the works of Seth Goden or Nicholas Bates and you’re more likely to associate those qualities with that word.

But, whatever. I’ll start with generous for the moment and we’ll see how we go.

The word 'generous' at the bottom of an Android lock screen

Looking at the “backlog” of things to work on for Dynamo-Browse before I set it aside. I’ll fix a few bugs and add a few small features that I’ve found myself really wanting. The short list is as follows:

  • Fix the activity indicator that is sometimes not clearing when a long running task is finished.
  • Fix a bug in which executing a query expression with just the sort key does nothing. I suspect this has something to do with the query planner somehow getting confused if the sort key is used but the partition key is not.
  • Fix a bug where set default-limits returns a bad value.
  • Add a way to describe the table, i.e. show keys, indices, etc. This should also be made available to scripts.
  • Add a way to “goto” a particular row, that is select rows just by entering the value of the partition and optionally the sort key.

I’ll start with these and see how I go.

Oh, and one more thing: I will need to kill my darlings, namely the other commands in the “audax” repository that I’ve hacked togeather. They’re mildly useful β€” one of them is used to browse SSM parameters and another is used to view JSON log files β€” but they’re unloved and barely functional. I’ll move them out of the “audax” repository and rename this repo to “dynamo-browse”, just to make it less confusing for everyone.