Itβs amusing to see that Google is confident enough in their AI to tell me that Iβve received a SMS message that is spam, yet not quite confident enough not to tell me that Iβve received a SMS message that is spam.
I got a bit of a streak going so I was hoping to post something here today. Only trouble is that I had some nervousness and pessimism preventing me from thinking of topics to write about. It calmed down after some writing it my journal, freeing me up to make this post.
The Future of Computing
I got into computers when I was quite young, and to satisfy my interest, I read a lot of books about computing during my primary school years. I remember one such book that included a discussion about how computing could evolve in the future.
The book approached the topic using a narrative of a “future” scenario, that would probably correspond with today’s present. In that story, the protagonist was late for school because of a fault with the “home computer” regarding the setting of the thermostat or something similar. Upon arriving home from school, he interacted with the computer by speaking to it as if he was talking to another person, expressing his anger of the events that morning by speaking in full, natural-language sentences. The computer responded in kind.
This book was published at a time when most personal computing involved typing in BASIC programs, so you could imagine that a bit of creative license was taken in the discussion. But I remember reading this and being quite ambivalent about this prospective future. I could not imagine the idea of central computers being installed in houses and controlling all aspects of their environment. Furthermore, I balked at the idea of people choosing to interact with these computers using natural language. I’m not much of a people person so the idea of speaking to computers as if it was another person, and having to deal with the computer speaking back, was not attractive to me.
Such is the feeling I have now with the idea of anyone wanting to put on AR and VR headsets. This seems to be the current focus of tech companies like Apple and Google, trying to find the successor to the smartphone. And although nothing from these companies have been announced yet, and these technologies have yet to escape the niche of gaming, I still cannot see a future in which people walk around with these headsets outside in public. Maybe with AR if they can do so in a device that looks like a pair of regular-looking glasses, but VR? No way.
But as soon as I reflected on those feelings, that book I read all those years ago came back to me. As you can probably guess, the future predicted in that story has more-or-less become reality, with the rise of the cloud, home automation, and smart speakers like the Amazon Echo. And more than that, people are using these systems and liking it, or at least putting up with it.
So might the same thing happen with AR and VR headsets. I should probably stay out of the future predicting business.
Shut down one blog this week and moved all the posts into this one. There’s another blog that I haven’t updated for a while, but people are reading it and I’m wondering whether it’s worth bringing it back to life. I only wish I picked a better name for it.
I posit to you that the reason developers find it hard to do anything related with encryption is not because they’re in the weeds of how the algorithms work. Rather, it’s the confusing barrage of acronyms and standards that all reference each other.
I was looking for a simple timer this morning until I remembered that the Vivaldi browser actually comes with one. And sure enough, it works. The addition of these little utilities like a timer, alarm, and notepad is one of the things I like about Vivaldi.
It might be time to unsubscribe from developer related podcasts that talk about new technologies and platforms. It’s stressful seeing all these services being discussed, and thinking to yourself “I should check that out”, even when you know there’s nothing forcing you to do so.
My face is getting sore with all the palm prints on it. π€¦
Bocce in Fitzroy Gardens. Grand final for the 2021 season (yes, my friends and I came up with the idea of grand finals for our little casual comp π).

It’s a shame that there’s a non-insignificant number of people and companies that I admire and appreciate for their contribution to tech, while at the same time I personally would want nothing to do with.
While poking around the Micro.blog XML-RPC documentation, I had a flashback about SOAP. I had some limited experience with SOAP and it was always a huge pain. Looking back on it now, it’s striking how much was touted about SOAP middleware, as if that was what anyone using SOAP cared about.
I’m glad SOAP has been replaced by simpler technologies like REST. Simplicity eventually wins out in the end. I guess that’s why XML-RPC is still around.
PGBC Scoring Rules
I get a bit of a thrill when there’s a need to design a mini-language. I have one facing me now for a little project I’m responsible for, which is maintaining a scoring site for a bocce comp I’m involve in with friends.
How scoring works now is that the winner of a particular bocce match gets one point for the season. The winner for the season is the person with the most points. However, we recently discuss the idea of adding “final matches,” which will give the match winner 7 points, the runner up 2 points, and the person who came in third 1 point. At the same time I want to add the notion of “friendly matches” which won’t count to the season score.
It might have been that a simple solution was to encode these rules directly in the app, and have a flag indicating whether a match was normal, final or friendly. But this was suboptimal as there is another variant of the game we play which do not have the notion of finals, and if we did, we may eventually have different rule for it. So I opted for a design in which a new “match type” is added as a new database entity, which will have the scoring rules encoded as a PostgreSQL JSON column type. Using this as a mechanism of encoding free(ish) structured data when there’s no need to query it has worked for me in the past. There was no need to add the notion of seasons points as it was already present as an easy way to keep track of wins for a season.
For the scoring rules JSON structure, I’m considering the use of an array of conditions. When a player meets the conditions of a particular array element, they will be awarded the points associated with that condition. Each player will only be permitted to match one condition, and if they don’t match any, they won’t get any points. The fields of the condition that a player can be matched to can be made up of the following attributes:
- rank: (int) the position the player has in the match just played in accordance with the scoring, with
1
being the player with the highest score,2
being the player with the second highest score, and so on. - winner: (bool) whether the player is considered the winner of the match. The person with the highest score usually is, but this is treated as an independent field and so it should be possible to define rules accordingly.
- draw: (bool) whether the player shares their rank with another player. When a draw occurs, both winning players will have a rank of
1
, with the player of the second highest score having a rank of2
.
Using this structure, a possible scoring rules definition for a normal match may look like the following:
{ "season_score": [
{ "condition": { "winner": true }, "points": 1 }
]}
whereas a rules definition for the final match may look like the following:
{ "season_score": [
{ "condition": { "rank": 1 }, "points": 7 },
{ "condition": { "rank": 2 }, "points": 2 },
{ "condition": { "rank": 3 }, "points": 1 }
}]
Finally, for friendlies, the rules can simply look like the following:
{ "season_score": [] }
I think this provides a great deal of flexibility and extensibility without making the rules definition too complicated.
π Wordle and IP law: What happens when a hot game gets cloned
I guess the moral of the story is that you might have the legal right to do something like clone a game, but there’s no guarantee that you’ll get off looking honourable doing so.
Wordle 208 6/6
β¬π¨β¬β¬β¬
β¬π¨β¬β¬β¬
β¬π¨β¬π¨β¬
β¬β¬π¨β¬π¨
π©β¬β¬π©β¬
π©π©π©π©π©
Was close to missing it today. The winning guess was a bit of a fluke.
On the Moxie Marlinspike Post About web3
Today, I took a look at the Moxie Marlinspike post about web31. I found this post interesting for a variety of reasons, not least because unlike many other posts on the subject, it was a post that was level-headed and was coming from a position of want to learn more rather than persuade (or hustle). Well worth the read, especially for those that are turned off by the whole web3 crap like I am.
Anyway, there were a few things from the post that I found amusing. The first, and by far the most shocking, was that the “object” of a NFT is not derived from the actual item in question, like the artwork image, or the music audio, etc. It’s essentially just a URL. And not even a URL with an associated hash. Just a plain old URL, as in βexample.comβ, which points to a resources on the internet that can be change or removed at any time. Not really conducive to the idea of digital ownership if the thing that you “own” is just something that points to something else that you don’t actually control.
Also amusing was the revelation that for a majority of these so-called “distributed apps”, the “distribution” part is a bit of a misnomer. They might be using a blockchain to handle state, but many of the apps themselves are doing so by calling regular API services. They don’t build their own blockchain or even run a node on an existing blockchain, which is what I assumed they were doing. I can achieve the same thing without a blockchain if I make the database I use for my apps public and publish the API keys (yes, I’m being facetious).
The final thing I found amusing was that many of these platforms are actually building features into the platform that are not even using the blockchain at all. Moxie made the excellent point that the speed to which a protocol evolves, especially ones that are distributed by design, is usually very slow. Likely too slow if you’re trying to add features to a platform in an attempt to make it attractive to users. So services like OpenSeas are sometimes bypassing the blockchain altogether, and just adding propriety features which are backed by regular data stores like Firebase. Seems to me this is undermining the very idea of web3 itself.
So given these three revelations, what can we conclude from all the rhetoric of web3 that’s currently out there? That, I’ll leave up to you. I have my own opinions which I hope comes through from the tone of this post.
I’ll close by saying that I think the most insightful thing I learnt from the post had nothing to do with web3 at all. It was the point that the reason why Web 2 came about was that people didn’t want to run their own servers, and never will. This is actually quite obvious now when I think about it.
-
Ben Thompson wrote a teriffic post about it as well. ↩︎
Burnt Out on Design
I’ve been doing a heap of design work at my job at the moment; writing documents, drawing up architecture diagrams, etc. I’d thought I would like this sort of work but I realise now that I can only tolerate it in small doses. Doing it for as long as I have been is burning me out slightly. I’d just like to go back to coding.
I’m wondering why this is. I think the biggest feeling I have is that it feels like I’m not delivering value. I understand the need to get some sort of design up so that tasks can be written up and allocated. I think a big problem is the feeling that everything needs to be in the design upfront, waterfall style, whereas the method I’d prefer is to have a basic design upfront β something that we can start work on β which can be iterated and augment over time.
I guess my preference with having something built vs. something perfect on paper differs from those that I work with. Given my current employer, which specialise more in hardware design, I can understand that line of thinking.
I’m also guessing that software architecture is not for me.
I’ve been listening to, and buying, a fair bit of music from Anders Enger Jensen over the last few days. My current earworm is about half the tracks on Retro Grooves Volume 2. Some pretty good retro synth music there. π΅
One of the domains for a blog that I’ve since abandoned is coming up for renewal in a few days. Might be a good as time as any to shut it down.
The latest episode of Core Intuition (496) resonated with me, especially the discussion about settling and sharing creative works near the end. I know this is something that I personally struggle with and would like to get better at this year.
I think I’ve settled on my word for 2022: finisher. Someone who finishes what he starts. This is something that I’m not super good at. I find it easy to start, but I rarely follow through all the way. It’s not in the list of words but I think it’s a good one to go for.