Leon Mika

Published two tracks last night: Taxonomy and Hazard. Both of these were made during the depths of the Melbourne Lockdown 2.0, although they’re not about the pandemic. Also, this whole self-promotion thing is new to me so apologies if this post looks a bit weird.

It’s a little bit shocking, the minute you move to a position with a bit more leadership responsibility, how quickly your calendar fills with meeting requests.

That feeling you get when you see a class or struct that was defined in another library that you’re using; and you wish you could change it, but doing so will triple the time it takes to complete your task.

Working on an album cover for some music I’m hoping to publish soon. Who knew that one the skills required for publishing music online is graphic design?

Apart from a small cluster that’s been contained a week ago, there’ve been zero locally acquired cases of Covid-19 in Victoria. That means gyms have dropped the need to book in advanced. I kind of miss it though: being required to book forced me to actually commit to a session.

If you’re looking for a way to edit long-form articles, may I recommend this technique from C.G.P. Grey. I’ve using it a few times for another blog I’m maintaining and while I don’t use Editorial, I do export the articles as PDF and mark them up in GoodNotes with the Apple Pencil.

I’ve found this technique usually results in better posts. It’s probably because of the shift in mode and location: I go from producing the words on my desktop, to deleting or rearranging them by hand on my iPad in a different room. I’ve also found that it is a lot more enjoyable: I actually look forward to editing this way.

Some of these collaborative editing tools, like Google Docs or Atlassian Confluence, have a feature to allow reviewers to add comments to a document, maybe to ask the author a question or to make some changes. There’s usually an action to mark a comment as resolved, which will archive it. But I’m never sure who should be the one to resolve it: the reviewer or the author.

What I tend to do, when a reviewer leaves a comment on something I’m working on, is to make the corrections and then reply to the comment without actually resolving it. My thinking here is that this gives the reviewer an opportunity to acknowledge that they’ve seen the updates, and they indicate this by resolving the comment. This is how I work, but I know of other people that make the changes to the document, then immediately resolve the comment, with or without replying to it first.

What these comment systems need is a separate resolve action for both the author and reviewer. That way, the author can mark the comment as resolved once they believe they have addressed the reviewer’s concerns. Then, once the reviewer has had a chance to look at the changes, they can mark the comment as resolved if no further work is required. At any time, either person can post a reply, thereby keeping the comment open. Only once both parties resolve the comment does the comment get archived.

It’s strange that the IETF, one of the principal foundations responsible for maintaining the standards of the web, are still publishing these standards as if they were intended for a dot-matrix printer.

Some thoughts on app permissions in macOS

It’s funny how the casual meandering of your mind can be a source of inspiration. This morning, my mind casually turned to thinking about all the work that Mac developers need to do to get access to privileged APIs — like location, contacts, or the accessibility APIs. My experience of going through the motions to enable these permissions for the apps I use, along with hearing of the lengths developers go through to make this as seamless as they can, reveals to me the clunkiness that this entails. I could imaging this being a huge source of frustration for these developers, not to mention a huge source of support requests.

It’s laudable of Apple to lock-down access to these APIs: the days of assumed access to everything is over, and I believe we are better for it. But I believe it’s worth considering ways to streamline the process of granting these permissions, making it easier to work with them without any sacrifice to the user’s security or privacy.

I’m wondering if one such approach could be to do something similar to how permissions for web pages are managed. In most browsers, clicking on the pad-lock icon just left of the URL brings up a popup listing all the capabilities the website has access to, such as whether they can use the microphone, whether they can show notifications, etc. Within this popup, the user can grant or revoke these permissions, controlling which APIs the JavaScript on the website can use. The web-site itself cannot do anything with this pane: all that can be done is to provide instructions on how enable these permissions, and progressively enabling or disabling features based on whether those permissions are granted.

Maybe something similar would help for macOS apps. What I had pictured in my head is something similar to the following (no mock-ups, sorry; you’ll need to use your imagination):

  • The app will disclosed in their Info.plist the privileged APIs that they need access to (they might do this already, I’m really not sure).
  • A new “Permissions” menu item will be added by the OS to the application menu. This menu item is beyond the control of the app: it could not be automatically triggered or otherwise controlled.
  • Clicking this menu item will bring up a window listing all the permissions that the app has disclosed. Beside each one is a toggle, allowing the user to turn them on and off at will. Like the menu item, this window is managed by the OS itself, not the application, and could require users to enter their admin passwords before enabling the permissions if necessary.

I can see this approach having some benefits to both users and developers. This will reduce the level of friction involved in dealing with permissions, making it easier for the user to enable, and most importantly disable, these permissions when needed. The app developer has an easier time asking the user to enable these permissions: no need to do things like open the Settings app and draw arrows on screen pointing to the accessibility pane. Since this is all managed by the OS, the various setting panes can still exists, but they become secondary avenues to controlling these permissions. Conceptually, the permissions belong to the app, which maintains the wholistic app paradigm that Apple is moving towards, not to mention eliminating the need for the user to context switch when they open the Settings app.

I’m not a Mac developer so I’m not sure how possible this is. I can’t imagine this approach would break any of the existing APIs of AppKit: this will all be stuff that Apple needs to do. I’d be interested in hearing what others think of this approach, so let me know your thoughts on this.

Feedbin, the RSS reader I use, has the ability to add Twitter users as feeds. It works pretty well and has some nice features, like including article linked in the tweet. One thing that they should add is the automatic unrolling of threads.

First encounters with GitHub (and Substack)

All these new Substack newsletters that I’m seeing reminds me of my first encounter with GitHub.

Back in 2009, I was checking out the source code of an open-source library we were using. Clicking on the link to the source bought me to this strange, new code-hosting service that I’ve never seen before. As someone who was use to the heaviness that was SourceForge, or the boring uniformity that was Google Code, the experience felt very minimal and slightly unintuitive. It took me a while, for instance, to realise that the version tags were selectable from a drop-down list. I also thought that it was quite restrictive to only offer checking out the source code with this weird SCM client called “git”. The whole experience left me thinking of this website as rather niche, and I never really expected to see it that often, given that Source Forge or Google Code reigned supreme at the time.

I held this believe for a year or two. Then, as I continued to deal with different open-source projects, I started noticing more and more of them showing up on this weird new service. This was infrequent at first: maybe around one in ten projects or so. But the ratio was starting to shift faster and faster, soon becoming one in eight projects, then one in five. Around this time, GitHub was starting to gain momentum in the technological zeitgeist: projects announced that they were moving off SourceForge and migrating their codebase to GitHub. Then, Google Code announce that they were shutting down, and that they were migrating projects over to GitHub. Eventually, a tipping point was reached, and GitHub was the code hosting service for pretty much every project I encountered.

My experience with Substack was similar, except on a much shorter timescale. I remember subscribing to my first Substack newsletter back in 2019. I was already a Stratechy subscriber so the whole email-newsletter thing was familiar to me. But it was another case of being a little unimpressed with the Substack experience — difficult to read on-line, impossible to get it as RSS, weird font choices, etc. — that I was expecting the platform to remain relatively niche. Contrast that to today, where every forth or fifth link I see is to a Substack newsletter, and not a month goes by where a new Substack publication is announced.

There’s no real lesson to this (or if there is, I’m too dense to see it). Just the amusing observation of first encountering something that, to you, seems rather niche and unusual until one day, faster than you can blink, it is the only thing anyone uses.

My understanding is that in Australia the “official” start of the week is Monday, but the iOS internationalisation settings for Australia has it configured to be Sunday. This is a small thing in the grand scheme of things, but I’m feeling some real dissonance over this.

One thing that needs to be clearly disclosed when signing up to anything — be it software, an energy company, or a newspaper — is what they try to do when you wish to close your account. This really needs to be in plain writing and not buried away in the Terms Of Service.

I’m experiencing this now after recently switching my energy provider. Even after the account is closed, they are sending me messages about the special offers I can have, if only I switched back to them.

Thank you to the person on Micro.blog that recommended Music For Programming. Working from home alone can be a little hard when there is complete silence, and being able to just put on something that doesn’t require your full attention helps a lot.

The standard audio and video player controls that browsers use for pages that don’t have their own UI really need to include both a 30 second backward and forward button. I use these all the time when they’re available, and I always miss them when they’re not.

I should be writing. I would like to write. I would like to like writing. But every time I think about it, I feel this imposing force in my mind, as if just considering it tires me out. I wonder if this is “the resistance” that Steven Pressfield talked about.

I have the impression that browser vendors are trying to encourage web developers to use the native DOM API, instead of using wrappers like jQuery. But I still like using jQuery as the DOM API is so darn clunky. Does anyone actually prefer it to jQuery?

I really appreciate the amount of hard work put in by those that run the ABC News Coronavirus live blog1.

They have been running it almost every day for about a year now, including public holidays. The reporting is timely and the answers to questions from the public is as informative as possible given the amount of information they had at the time.

But the thing that I appreciate the most is the little things they do to try and make dealing with a stressful issue slightly easier. Things like publishing words of encouragement from the readers: these comments really helped me during the dark days of the lock-down last winter. They also do not hold back on the animated GIFs.

Train trip from Wangaratta to Melbourne. First time travelling down this line.

A Quick Review of the Year

Here are a few words about the year gone by, and what I’m hoping to focus on the year ahead. It’s not a full “year in review” type post, although there’s a bit of that, and there’s no dramatic insight or anything of that nature. It’s more of a chance for reflection, plus a bit of a document for future me on what the year was like.

Personally, as difficult as this past year was, I wouldn’t necessarily say 2020 was a bad year. I know I’m saying this from a position of good fortune: I didn’t loose my job, or my house, or my health. So I know there are a lot of others that have experienced a much worst year than I have. But for me, I’m coming out of this year feeling a little better than I have the previous couple of years gone by.

I think a big reason for this was that I was forced to change my routine. I’m someone that can operate on a routine that don’t change for a long period of time. There are benefits to this but it does mean that every passing year feels more-or-less like the previous one, and I always find myself feeling a little bad on New Years Eve for not “doing something different”. Being forced to change my routine by the pandemic and resulting lock-downs was a small positive that came out of an otherwise bad situation. The did mean that I could no longer rely on the the various chronological anchors, like birthdays or even going to the office, that are useful for experiencing the passage of time, resulting in a year that felt to be passing too slowly and quickly simultaneously. But it also added some variety to the activities that got me through the day, which resulted in a year that was slightly more novel to the previous few.

Working from home also provided an opportunity to try something new. The whole working from home experience was something that I was curious about, and I am glad that I had an opportunity to try it out. It worked out better than I expected: although there were times when I really did miss working closely with other people, I found that I could work effectively at home as long as I had work to do. The lack of a commute also meant that I had more time on my hands. I’m glad that I didn’t just spend that time just coding on personal projects or vegging out on the couch (although there was a bit of that as well). I joined Micro.blog, which was probably one the best decisions I’ve made this year. I also learnt a lot about writing and creativity, and I got back into music composition, something that I have neglected for a while.

Writing and publishing is something that I’m hoping to continue in 2021. I hope to setup new routines and systems to write more often, both on this Micro.blog and another writing project that I’m in the process of starting. I’m trying a few things to keep myself true to this, like keeping a daily log (which is private at the moment, but I’m hoping to make it public eventually). Publishing things online is something that I need to work on a bit more but it is also an area that I’m hoping to work on. Although I not seriously following the yearly theme system, if I had to choose, I plan to make this one a year of “sharing”1.

Hope you all have a Happy New Year and here’s to a great 2021.

  1. Incidentally, the theme for 2020 was “chance”, which became a little morbid as the year went on. [return]

I’m really liking Stimulus for JavaScript development. The fact that it gives me an easy way to add frontend logic with server-side rendering, instead of requiring me to code my entire UI in something like React, makes development more fun than I anticipated.

Bocce in Fitzroy Gardens, Melbourne

I’m interested in starting a daily log, similar to what Dave Winer and a few others I follow on Micro.blog are doing. I’ve tried starting one using Little Outliner a few months ago, but I never got around to keeping it up to date. I’m hoping for something that is a bit more fit for purpose: as much as outliners are useful — I use them for keeping notes for work — I’m not sure it’s the best tool for me for daily logging. There are a few other features that I’m looking for: such as the ability to record private entries, and maybe some very to-do base features.

So, I spent some time today kicking off a new Buffalo project to build something that I think might work for me. I managed to get something running privately, although it’s pretty bare bones at the moment. We’ll see down the line if I’ll actually use it.

I subscribe to a few blogs that are well known for posting daily. Today, one of them is late. “Why haven’t you posted today?”, I imagined asking them, slightly perturbed.

Then, I imagined them smiling and answering back: “Why haven’t you?”

I took the plunge and purchased Logic Pro today. Although the purchase itself is not super interesting, the fact that I’m putting that much money into a piece of software that’s only available for macOS is an indication that I’m now all in on Apple’s desktop platform.

This is something that I’ve been quite tentative about for a while. I first came to macOS in 2017 after using Linux for my home setup. Linux was great for software development but I wanted to get back into music production, something that Linux is not known for. I’ve never really used the Mac at this stage but I knew that macOS was a decent platform for both activities, so moving to it was enticing. It also helped that I learnt about the user experience of the macOS from all the Apple tech podcasts that I listen to, like ATP and The Talk Show.

But I tend to hedge these sort of moves, so even though I started using a Mac Mini, I didn’t commit to purchasing any expensive software (say, anything more than $30-50) that only runs on Apple’s platforms. I had my doubts that I’ll actually go back to Linux (I knew I wasn’t going to Windows though); and after using a Linux laptop for a couple of months, I remembered how Linux has still got some way to go to provide a great user experience. Nevertheless, I always felt that I needed an exit.

Well, that door is now closed. Purchasing the Nova text editor last month was probably the first indication that I’m intending to stay, and the purchase of Logic Pro today seems to have solidified it.

So I guess now I’m officially a committed Mac user.