I used MacOS dark mode for the first time last night. An inoperable desk lamp has left my workspace quite dim in the evening, causing eye strain due to the contrast. Switching to dark mode improved things greatly. I guess I’ll be staying in dark mode until I get a new desk lamp.

Weekend In Mansfield

Over the weekend, I had the opportunity to spend some time with my parents who were staying in Mansfield, in regional Victoria. We were staying in a small cottage located on a hill, which meant some pretty stunning views, especially in the evening light.

The cottage in the late evening light

View from the balcony

We didn’t do a heap during our trip, although we did manage to do the The Paps trail on Saturday, which involved a 700 metre climb.

Annotated image of The Paps

(Apologies for the photo, I had another one that was zoomed in a bit more but the photo turned out quite muddy. Might need to consider another phone or camera.)

It was a bit of a challenge — the trail was quite steep at times — and there were a few instances when we considered turning back. But we did eventually reached the summit, and got some spectacular views of Lake Eldon, which was quite full thanks to all the rainfall we got over the last few months.

One the path

Approaching the summit

View of the lake

Another view of the lake

View up the highway towards Bonni Doon

The summit

This was followed by a pub lunch at the Bonni Doon Hotel. The place was chokers, probably with people eager to get out of the city at the end of lockdown (likewise for the cottage we stayed at, which has been booked solid for the next couple of months). But the food (and beer) was good and it was perfect weather to be dining outside, with the sun shining and temperature in the low 20’s Celsius.

All in all it was good to get out of the city, and out of my weekend routine, for a spell.

Saved once again by Google Pay. I was almost at the cafe this morning, on my way to get some breakfast, when I realised that I walked out of the house without my wallet. I would’ve had to walk back to get it if I didn’t have my phone. Not a long walk, but would’ve been a hassle.

FastMail’s spam filter has been a bit aggressive lately. I’ve seen a few emails show up in the Spam folder these last few weeks that were legitimate. I guess I’ll have to check it more often than I have been.

One of the hosts of a podcast I listen to mentioned buying a product from the company I work at, and briefly talk about using it on the show. This was a new experience for me, and although I had nothing to do with the thing they bought, it felt pretty good.

I’m looking forward to the day when I can type python in any command line on any OS, and it will launch Python 3, rather than invoke some crazy dice-roll between two major versions of Python.

Went out for breakfast again today. Wondered how long I could use my iPad without turning on my mobile hotspot. Lasted pretty well with just cached webpages and NetNewsWire, but had to succumb during my second coffee when I wanted to follow a link.

Morning walk. There will be a cafe breakfast at the end of it.

A podcast I was listening to mentioned a book that sounded interesting, so I checked the Kindle bookstore to see if I could buy it. Well, not only did I already buy it ages ago, it has been sitting in my library all this time and I barely started reading it.

Pro-tip for anyone using Vivaldi: you can unbind the “Cmd-Q” keyboard shortcut within Preferences so you don’t accidentally close all your browser windows with a single keystroke, like I just did. 🤦

(A confirmation prompt would be nice, Vivaldi).

Cookie Disclosure Popups Should be Handled by the Browser

I really dislike the cookie disclosure popups that appear on websites. Ideally I shouldn’t be seeing them at all — I know that the EU requires it, but I’m not a citizen of the EU so the regulation should not apply to me. But I’m pragmatic enough to know that not every web developer can or will selectively show this disclosure popup based on the geographic region of the visitor.

That’s why I’m wondering if these disclosure popups would be better handled by the browser.

The way I see this working is that when a website tries to set a cookie, either through a response header or within JavaScript, and the user is located in a jurisdiction that requires them to be aware of this, the browser would be responsible for telling them. They could show it as a permission request popup, much like the ones you see already when the site wants to use your microphone or get your location. The user can then choose to “accept”, in which case the cookie would be saved; or they can choose to “deny”, in which case the cookie would be silently dropped or an error will be returned.

This has some major advantages over the system we have now:

  • It would save the website dev from building the disclosure popup themselves. I’ve seen some real creative ways in which websites show this disclosure, but honestly it would just be simpler not to do it. It would also cover those web developers that forget (or “forget”) to disclose the presence of cookies when they need to.
  • The website does not need to know where the user is browsing from. Privacy issues aside, it’s just a hassle to lookup the jurisdiction of the originator based on their IP address. Which is probably why no-one does it, and why even non-EU citizens see these disclosure popups. This is not a problem for the browser, which I’d imagine would have the necessary OS privileges to get the users’ current location. This would be especially true for browsers bundled with the OS like Safari and Edge.
  • When the user chooses an option, their choice can be remembered. The irony of this whole thing is that I rarely see websites use cookies to save the my preferences for allowing cookies. These sites seem to just show the popup again the next time I visit. Of course for a user chooses to deny the use of cookies, it wouldn’t be possible for the site to use cookies to record this fact. If the browser is managing this preference, it can be saved alongside all the other site permissions like microphone access, thereby sitting outside what the site can make use of.
  • Most important of all to me: those outside the jurisdiction don’t even need to see the disclosure popup. Websites that I visit could simply save cookies as they have been for 25 years now. This can be an option in the browser, so that users that prefer to see the disclosure prompt can do so. This option could come in handy for those EU citizens that prefer to just allow (or deny) cookies across the board, so they don’t have to see the disclosure popup either (I don’t know if this is possible in the regulation).

Of course the actual details of this would need to be ironed out, like how a website would know whether the user has denied cookie storage. That’s something for standards committee to work out. But it seems to me that this feature is a no-brainer.

You know those journals you see in movies where the writer is working on something, and they write down every single thing they do? I’m wondering if I need to start one. There are things I know I’ve done recently when dealing with a problem, but I can never remember the details.

I wonder if there’s a way to replace MacOS’s pretty ordinary spellcheck suggestions with a straight up web-search for “define <miss-spelt word>” and getting the first result. Doing this using DuckDuckGo seems to yield the word I was trying to spell almost every time.

My Impressions of GitHub Codespaces

The GitHub Universe 2021 conference started a few days ago and one of the features touted in the day one keynote was GitHub Codespaces. This is a development environment that is accessible from within your web browser. It’s based on VSCode, which is a popular and well-designed IDE that is already written in JavaScript1, and also provides access to a Linux shell running in the cloud, allowing you to do various things like build and test your code.

After playing around with Codespaces during the beta, and seeing the feature develop into something that is available for everyone, I’d thought I’d say a few words on how I use it and what I think of it.

First, I should probably say that I’m not a heavy Codespaces user. The keynote seemed to be touting the features of Codespaces that makes it useful as a dev environment for collaborative coding. This is something I have no personal use for since it’s mainly just me working on repos I use with Codespaces, so I haven’t really explored these features myself.

The main use I have for Codespaces is making changes to repos on a machine that is not my own. There are times when I need to add a new feature or fix a bug on a tool I use, and for various reasons I cannot (or choose not to) setup a dev environment on the machine I’m working on to make the change. A case like this would have me look at one of the alternatives, or even make use of the GitHub web-editor. The web-editor works but doesn’t really offer much when it comes to building and testing your changes (I’ll talk more about the alternatives later).

I should say that this doesn’t happen very often. Most of my time I’m on my own machine, and I have no need for a web-based dev environment as I can just use the environment I have. But when that’s not possible, being able to spin up and make the change in Codespaces, complete with a Linux environment which you have sudo access to, is quite useful.

Codespaces is also pretty nice in terms of a coding environment. This is no real surprise since it’s based on VSCode, but compared to the alternatives, the little things like keystroke performance and doing things quickly in the editor make a huge difference. I’ve tried a bunch of alternatives in the past like Cloud9 and CodeAnywhere, and Codespaces is by far the most polished.

Another advantage Codespaces have over the comparison is that it seems suited to throw-away development environments. It might be possible to keep an environment around for an extended period of time, but I tend to spin up temporary workspace when I need them. The alternatives tend to prefer a more long-lived environment, which involves a lot setup for something that is kept around. This feels like splitting your dev environments in two, and I always feel the need to select one as the “definitive workspace” for that particular project going forward. I don’t feel that with Codespaces: I can quickly spin up a new environment, which has most of what I need already installed, and make the change I need with the full knowledge that once I no longer need it, it will be teared down (pro-tip: always push your changes to origin once you’re done making your changes in Codespaces). It helps that spinning up a new environment is quite fast.

So, that’s my impression of GitHub Codespaces. I’m not sure who has access to it: you may need to be on a paid plan, for example. But if it’s enable for your account, and you find yourself needing a temporary, cloud-based dev environment to do your work in, I’d suggest giving it a try.

  1. It’s actually TypeScript [return]

Today is starting out reasonably quietly. All the big development work is done and the only tasks left are the little annoying things, the “bottom of the backlog barrel” if you will. Still, won’t be long before the next major feature comes our way.

Thinking over the NaNoWriMo short story I’m working on, there seems to be a lot scenes with characters just sitting around and talking. It’s in danger of turning into a Star Wars prequel. 😄

Really enjoying Succession season 3 at the moment, but I’m afraid I’m one of those viewers that gets a little lost in all the business jargon. Fortunately, the Succession podcast really helps here, breaking down what actually happened in the episode.

Thought I’d give omg.lol a try this morning. My profile page. Looks a lot nicer than what I could come up with.

For the last month, I was having trouble installing software on my work laptop because I thought I lost admin privileges. But it turns out it was just because I was using my username in the password prompt, instead of my full name.

Why, Apple? Why did you not take my username?

It’s a bit strange how the stopwatch on the NaNoWriMo site doesn’t automatically fill in start and end times. It knows when I start the stopwatch. It knows when I stop the stopwatch. And yet, I still need to enter these times myself.

Some days I wonder why I ever considered being a software developer. 😒

It’s said that it’s a good idea not to blog while your angry. I think that’s good advice. After all, there’s already a lot of anger out there and no-one needs any more.

But I need to vent somewhere. So watch out journal!

I’ve manage to get the first 1,000 words out of my NaNoWriMo-adjacent goal of a 10,000 word short story. I’m sure they’re pretty crappy words at the moment, but at least they’re on the page.

I really like to support independent software developers, but $150.00 for a file diffing tool is a bit much. The tool does a lot, like diffing images, but I don’t need any of that. If they release a text-only diff/merge version for like $30-50, I’d buy it in a heartbeat.

I had the opportunity to go out for breakfast this morning. I was originally going to get it as takeaway, but it was such a lovely morning (if not a bit cold) and with some tables available outside, I figured “what the hell”. It’s nice to be able to do stuff like this again.