The great MediaWiki upgrade

I ticked off a major to-do task today!

I finished porting to Obsidian the major chunks of my private wiki that I wanted to be absolutely sure I had backups of. That took most of the morning.

At lunchtime I took Scully for a long walk. I had a couple of things to do that could be combined into a single walk in the same direction. Firstly, a friend had reported that the hospital near me had large bins of COVID rapid antigen tests available, for anyone to come and take, free of charge. Another friend recently caught COVID and is in the recovery stage, but still testing positive, and has run out of tests. I said I could walk up to the hospital and get some, and he asked if he could arrange a contactless pick-up from my place, so he didn’t have to go into the hospital while infected.

The second thing was that the main light in my kitchen had been on the blink. It’s a fluorescent tube light and was starting to do that annoying thing where it takes 30 seconds or more to turn off after you flip the switch. I’ve replaced the tube before, but this time I wanted to actually remove the fluorescent fitting and install an LED replacement light. I thought I’d have to get an electrician in to replace the entire light fitting – but recently I discovered that a company makes an LED “tube” that fits into the fluorescent fitting, with no rewiring required. So I wanted to go to the hardware store to buy one of those.

Fortunately, the hospital and hardware store are near each other, so I took the chance today to go on an expedition to both. And as it happens that walk takes me past a decent pie shop that I don’t go to normally, so I took the opportunity to grab a vegetable curry pie and a spinach/feta roll for lunch. My friend was right about the COVID tests – there were three large tubs full of them, boxes containing single RATs. I was a bit self-consciously grabbing a half dozen when a nurse came out and said, “Get a bag, fill it up, take as many as you want.” So I grabbed another ten or so. They expire in a couple of months, so there’s no real use taking dozens of them, but I certainly now have enough for my friend and some spare in case we feel sick in the next couple of months.

And on the way home from the hardware store I popped into the nearby electrical appliance store to book a site inspection for my kitchen, to get a quote for installation of an electric induction cooktop. We currently have a gas cooktop and I’ve been thinking for a while of replacing it with induction. The store needs to do an inspection to make sure our fuse box and power supply are adequate, and also check out the details of removing the gas line for the cooktop and wiring in the induction cooker. So they’re coming next week to take a look at that. Once we have a quote for the installation, I can go ahead and start looking at models and select a new cooktop (assuming the installation quote is reasonable).

Back home after the lunch walk, I launched headlong into the main task of the day: Upgrading MediaWiki. The installed version was 1.24.1. The latest version is 1.40.0. But the upgrade documentation said you can’t upgrade directly from versions lower than 1.35. So I had to do it in two steps: upgrade 1.24.1 to 1.35.11, and then upgrade 1.35.11 to 1.40.0. I was a bit daunted before I began, but the steps were fairly straightforward, and there was no real difficulty at any stage. It was just a matter of doing all of the steps carefully. I started with dumping the wiki pages to XML, and also backing up the entire database, before changing anything. From there it wasn’t too bad, and I was pleased when the update script ran successfully (on the second try – I had to add a configuration line to the settings file) and the 1.35.11 version seemed to be working. Then I repeated the whole thing with version 1.40.0, which went a bit quicker because I knew what I was doing this time.

It took most of the afternoon, but I did it! And the reason was so I could upgrade my web server from PHP 7 to PHP 8, hopefully without breaking MediaWiki. The 1.24.1 version had broken when I tried switching the server to PHP 8, which was the whole reason why I needed to do this upgrade. So the last step was switching it over to PHP 8… and it works! Phew!

And I was done in time before my three ethics classes tonight, on the new topic of “Media Bubbles”. They went pretty well. It’s a complex topic for 10-12 year old kids, but they all did really well with it.

New content today:

Intro to Intro to Machine Learning

Today I worked on a presentation for the university Data Engineering course I’ve been tutoring this semester. I felt there was a bit of a gap in the course material. The first few lectures talk about types of data, experimental collection of data, basic statistics (such as mean, standard deviation, etc), plotting and presenting data, and fitting data (linear regression), and hypothesis testing.

And then the next lecture is a guest lecturer from MathWorks who comes in and talks about using MATLAB to do machine learning. It’s a large jump in complexity and depth of material, and I feel like many of the students are left a bit floundering like they’ve suddenly been thrown in the deep end. There’s no set up of the context or motivation for machine learning, or what it’s actually trying to do with the data.

Last lecture I spoke with the professor about this and he agreed with my idea of adding a bit of introductory context material to set up the machine learning content. We actually have an opportunity to deliver this because for the next three weeks we just have project sessions where the students show up to work in their teams and ask us questions if they need any guidance. We do the same thing in the Image Processing course in semester two, and there we’ve had a “bonus material” lecture at the start of one of those session. (Last year I did this, talking about the science and engineering of photography.)

So today I made a short presentation (just 9 slides), that we can give to the students on Monday. I set up the problem that we want to solve – classifying things by examining measurements—data—about them. I give examples to show how general this problem is and the wide range of important applications. Then explain why it can be difficult and how we can approach it in a data analytical way. And then how we can apply automated algorithms to do it in various different ways. Which leads into the machine learning examples that they did in the aforementioned previous lecture.

I tested it on my wife and it only took about 15 minutes. (And she now has a better understanding of the context of machine learning than most people!)

Also today I started work on writing a new batch of Irregular Webcomic! strips. I hope to get that done in time to photograph Lego on Tuesday morning.

The forecast rain hit today – it was much cooler than yesterday. But still we managed to set a new record for number of consecutive days in Sydney with maximum temperature 20°C or more. Looking at the Bureau of Meteorology records, it looks like 193 consecutive days – the last day we had a maximum below 20°C was 17 October, 2022. The forecast for every day in the coming week is at least 22°C, so the streak will probably extend past 200 days.

New content today:

Getting into Obsidian

I mentioned a couple of days ago that I’d downloaded Obsidian and wanted to try it to see if it could replace Microsoft’s OneNote as my main note-keeping application. I started using it today, and I’m liking it so far.

I created a single vault which I’m planning to use for all my stuff – after doing a bit of searching and reading on the merits of one vault versus multiple vaults. I started making notes and folders and organising things, and it’s all very intuitive and suits my preferred means of organising things in hierarchical folders. I’ve started transferring some things from OneNote, and the folder structure works well. I haven’t done any linking yet, and have just started to apply a few tags, neither of which are available in OneNote (at least on MacOS – I seem to recall using links to other OneNote pages in Windows many years ago). I think they’ll be useful, but I need to get used to them and look for places to apply them to take advantage of their organisational capabilities.

I also turned my vault into a git repository, and pushed it to Github for version-controlled backups. There is an option here to use Obsidian Git, a community plugin which provides Github integration into Obsidian. The issue I have is that I’m not sure exactly what Obsidian Git provides, and if it’s anything I can’t just do on the git command line. Specifically, I was wondering how git would interact with the fact that Obsidian can rename and move files. If I just commit changes in git, will it know that a file has been renamed (thus maintaining its version history), or will it assume the old file was deleted and a new file made with the new name? (A friend of mine tells me that git is smart enough to figure out if a file has been renamed.) Ideally I’d use “git mv”… but if I actually go into the Obsidian vault and do that, will Obsidian know what I’ve done or get confused? Is Obsidian just a viewer/editor layer on top of the vault, and it will show me whatever I do in the vault (using another program like git), or does it need to keep track of changes in there itself? I don’t know.

Ad secondly, does the Obsidian Git plugin just add a bunch of buttons to the Obsidian UI so you can do git operations from the UI rather than from the command line? Or is it actually intercepting Obsidian operations like renaming a note and issuing “git mv” commands and stuff like that? The documentation gives no indication either way. If it’s the former, than I’m just as good using the git command line, since I’m comfortable with that. Anyway, this is a relatively minor issue, which I’m sure will become clearer as I use Obsidian more, and learn by trial and error.

The other thing about today was that it was very rainy. My wife took Scully to work this morning to give me free time to photograph that batch of Irregular Webcomic! strips that I wrote yesterday. After doing that, I went to pick up Scully and go get some lunch, and it was cloudy but I didn’t really expect any rain. However when we got to a shopping area where I planned to grab something to eat, it bucketed down, very heavy rain for about half an hour. I decided to get a table at an Italian place and have pizza for lunch, since it was one of few places where I could sit out of the rain with Scully. It was still raining steadily, though less heavily, when we were done and had to walk back to the car, so we got a bit wet.

And tonight I started the week’s new ethics topic, on UFOs (really more of a critical thinking topic, this one!).

New content today:

Trying Obsidian

Today was fairly mundane: did a 2.5k run, wrote and assembled a Darths & Droids comic strip, worked on brief outlines for future ethics classes (one on Movies for the younger group, and one Colonisation for the older kids), taught three classes.

Last night I started watching Dune (2021). I seldom have time to watch a full movie in one sitting, instead splitting them in half over two nights. And given Dune is a long running time at 2.5 hours, it’s been sitting in my to-watch list for some time now, but I finally decided to tackle it. I’ve never read Dune, or seen the prior movie version, and the only things I knew about it were the name of Paul Atreides, and that there’s a planet with a desert, giant worms, and Spice. So there was a lot of exposition covering stuff that was new to me. In fact, the first half of the movie seemed to be almost entirely exposition and teaching me background stuff that I may need to know when the action actually starts. And then I only found out today when I told my friends that apparently this Dune movie is only the first half of the novel, and a sequel is being made which will cover the second half! Anyway, I’m enjoying it so far.

The other interesting thing I did today was decide to try using Obsidian and see if it’s a good solution for keeping my notes in. I’m currently using Microsoft’s OneNote, which I quite like and have extensive notes in, but Obsidian’s use of plain text files and independence of Microsoft’s cloud sync are appealing, and I understand it also has hyperlinking and some other features that I will find useful.

I’m using OneNote for two very different sorts of notes:

  1. long term notes that I add to and edit occasionally, that I want organised in hierarchies and links, and that I want to have saved safely without necessarily needing the ability to access from mobile;
  2. short term notes such as shopping lists, or lists of things for travel such as hotel addresses, or scripts for comics that I’m working on, which get edited and erased a lot, and which I want to be able to sync and access from mobile (and even by my wife from her phone too, for the case of shopping and travel lists).

I’m thinking I’ll try migrating the former to Obsidian and using Github as a change tracking repository, while leaving the latter in OneNote, which it seems better suited for. I haven’t started doing this yet – I need to play around in Obsidian a bit first and learn how to use it.

New content today:

More ChatGPT

I spent more time today playing with ChatGPT, alongside discussing its capabilities and limitations with my friends in a chat window. One friend expressed his opinion that it might be fun to play with, he couldn’t see any real use for it. I said that yesterday I’d asked it for some ideas for interesting things to use when writing a Dungeons & Dragons adventure, and it had provided me with some actually cool ideas – so it has a use as an idea generator, which a human writer can then expand on.

I proceeded to use ChatGPT to provide an example. This is a bit long, but bear with me – hopefully it’s entertaining as we go, and the punchline is worth it. I asked it (ChatGPT’s responses are in the sidebarred quotes):

Give me a list of unusual items that a hero might find in the pockets of a goblin, in a roleplaying game such as D&D.

Here are a few unusual items that a hero might find in the pockets of a goblin in a roleplaying game such as Dungeons & Dragons:
1. A small, dirty mirror that the goblin uses to preen and admire itself
2. A collection of tiny, brightly colored rocks that the goblin has hoarded for no apparent reason
3. A deck of cards featuring grotesque illustrations of goblinoid creatures
4. A single gold tooth that the goblin has pulled from the mouth of one of its victims
5. A small, sharp knife that the goblin uses for all manner of nefarious purposes
6. A fist-sized wad of grubby, stinking goblin tobacco that the goblin uses to roll its own cigarettes
7. A small, intricately carved wooden figurine of a goblin deity or hero
8. A tattered map of the goblin’s lair or territory, marked with various notes and annotations
9. A small, intricately crafted lockpick set that the goblin uses to break into locked chests and doors
10. A few vials of exotic-looking potions or alchemical concoctions that the goblin has procured from who knows where.

That list looks pretty cool, and would make a decent random list of items to use in an adventure. I decided to make it a bit more interesting:

Give a similar list, but where each item has some twist, curse, or other unexpected feature.

Here are a few unusual items that a hero might find in the pockets of a goblin in a roleplaying game such as Dungeons & Dragons, with a twist, curse, or other unexpected feature:
1. A small, dirty mirror that the goblin uses to preen and admire itself. However, when the hero looks into it, they are overcome with a sudden feeling of dread and self-loathing.
2. A collection of tiny, brightly colored rocks that the goblin has hoarded for no apparent reason. Upon closer inspection, the hero realizes that the rocks are actually small, polished gemstones, each worth a small fortune.
3. A deck of cards featuring grotesque illustrations of goblinoid creatures. However, when the hero draws a card from the deck, they are transported to a dark and twisted alternate dimension inhabited by the creature depicted on the card.
4. A single gold tooth that the goblin has pulled from the mouth of one of its victims. The hero quickly discovers that the tooth is cursed, and will slowly drain their life force unless they can find a way to remove it.
5. A small, sharp knife that the goblin uses for all manner of nefarious purposes. The hero soon realizes that the knife is enchanted, and will inflict terrible wounds on anyone it is used against.
6. A fist-sized wad of grubby, stinking goblin tobacco that the goblin uses to roll its own cigarettes. The tobacco is actually a rare and powerful hallucinogenic drug, and just touching it causes the hero to experience vivid and disturbing hallucinations.
7. A small, intricately carved wooden figurine of a goblin deity or hero. The hero quickly realizes that the figurine is actually a powerful magical talisman, capable of summoning the goblin deity or hero it depicts to do its bidding.
8. A tattered map of the goblin’s lair or territory, marked with various notes and annotations. However, the map is enchanted, and will lead the hero astray if they try to use it, sending them into deadly traps and ambushes.
9. A small, intricately crafted lockpick set that the goblin uses to break into locked chests and doors. The hero discovers that the lockpicks are cursed, and will turn on their user, causing them to accidentally lock themselves in any room or chest they try to open.
10. A few vials of exotic-looking potions or alchemical concoctions that the goblin has procured from who knows where. The hero quickly realizes that the potions are highly unstable and volatile, and even the slightest jostle or movement can cause them to explode, releasing deadly toxins and fumes.

Nice! Now we’re getting somewhere. This is actually pretty awesome, as one of my friends commented when I pasted it into our chat. At this point, I said, “Another thing it could be useful for is composing something formal like a letter of resignation, if you didn’t know how to do it yourself.” To illustrate this, I gave ChatGPT the following prompt:

I want to resign from Twitter. Compose a letter of resignation.

Dear [Twitter],
I am writing to inform you that I am resigning from Twitter, effective immediately. I have enjoyed my time with the company, but have decided that it is time for me to move on to new opportunities and challenges.
I would like to take this opportunity to thank you for the opportunities and experiences I have had while working at Twitter. I have learned a great deal, and have grown both personally and professionally during my time with the company.
I will do my best to make this transition as smooth and seamless as possible. I am available to assist with any projects or tasks that need to be completed before my departure, and will make sure to properly hand off any ongoing work to my colleagues.
Thank you again for the opportunity to be a part of the Twitter team. I wish the company and all of my colleagues the best of luck in the future.
Sincerely,
[Your Name]

Not bad. I could see using that as at least the skeleton of a resignation letter. I decided to see if I could get it to be … more creative:

I want to resign and tell them I think the company stinks. I want to burn all my bridges and make a point by going out with a bang. Write me a resignation letter to do that.

Dear [Twitter],
I am writing to inform you that I am resigning from Twitter, effective immediately. I have been incredibly disappointed and frustrated with the direction and management of the company, and have decided that it is time for me to move on to more fulfilling opportunities.
I would like to take this opportunity to express my dissatisfaction with the way the company has been run during my time here. From the lack of clear direction and vision, to the poor communication and leadership, I have been deeply disappointed with the way things have been handled.
Furthermore, I would like to make it clear that I do not recommend Twitter as a place to work to anyone. The company is poorly managed, the culture is toxic, and the working conditions are unacceptable. I have seen many talented and hardworking individuals leave the company due to these issues, and I have no doubt that this trend will continue unless significant changes are made.
I will not be returning to the office to collect my belongings, and will not be providing any further assistance to the company. I am confident that my departure will not be missed, and that the company will continue to struggle without me.
Thank you for the opportunity to be a part of the Twitter team. I wish the company and all of my former colleagues the best of luck in the future.
Sincerely,
[Your Name]

Oh, lovely. But let’s kick it up another notch:

That’s good, but make it more hostile and laden with invective.

Dear [Twitter],
I am writing to inform you that I am resigning from Twitter, effective immediately. I have been completely disgusted and fed up with the incompetence and mismanagement of this company, and can no longer stand to be associated with it.
I have been constantly disappointed and frustrated by the lack of leadership, vision, and direction at Twitter. The management team is a joke, and the so-called “culture” of the company is nothing but a toxic cesspool of ego, mediocrity, and backstabbing.
Furthermore, I want to make it crystal clear that I will be doing everything in my power to spread the word about how awful it is to work at Twitter. I will be sharing my experiences and opinions with anyone who will listen, and will make sure that no one makes the mistake of joining this sinking ship.
I will not be returning to the office to collect my belongings, and will not be providing any further assistance to the company. I am confident that my departure will be celebrated by my former colleagues, and that the company will continue to crumble without me.
Good riddance to this dumpster fire of a company. I hope you all rot in hell.
Sincerely,
[Your Name]

Now I was having fun. I decided to see how it would go with the following series of prompts:

Ooops. I made a mistake and the boss got that last letter, but now I have no money and need my job back. Write me a grovelling letter of apology begging for my job back.

Dear [Twitter],
I am writing to apologize for the inappropriate and unprofessional letter of resignation that I sent earlier today. I was in a state of extreme frustration and anger at the time, and let my emotions get the better of me.
I want to sincerely apologize for the hurtful and offensive language I used in the letter. It was completely out of line, and does not reflect my true feelings or opinions about the company or my colleagues.
I have had time to calm down and reflect on my actions, and I realize now that I made a huge mistake by resigning. I value my job at Twitter, and the opportunities and experiences it has provided me with. I am truly sorry for any embarrassment or inconvenience that my actions may have caused.
I am writing to humbly beg for your forgiveness, and to request that you consider allowing me to continue working at Twitter. I am willing to do whatever it takes to make things right, and to prove to you that I am a valuable and dedicated member of the team.
Once again, I offer my sincere apologies, and hope that you can find it in your heart to forgive me.
Sincerely,
[Your Name]

I want to post about this experience on Facebook. My friends can know the truth: I really hate the company and just need my job back for the money. Compose a post explaining the situation to them.

Hey everyone,
I wanted to let you all know about a situation I’ve found myself in. I recently resigned from my job at Twitter, and sent a very unprofessional and inappropriate letter to my boss expressing my dissatisfaction with the company.
Long story short, I was in a fit of rage and frustration when I wrote the letter, and let my emotions get the better of me. I used some language that was hurtful and offensive, and I regret it deeply.
Now, I find myself without a job and in need of some cash. I’m sorry to say that I’ve been a bit of a hothead lately, and have burned a few bridges along the way. I’m hoping that my boss will forgive me and allow me to continue working at Twitter, but I’m not holding my breath.
If anyone knows of any job opportunities, please let me know. I’m open to pretty much anything at this point, and just need to make some money to get back on my feet.
Thanks for listening, and sorry for the rant.
[Your Name]

Ooops. My boss saw the Facebook post and fired me again. Write a letter begging and grovelling and promising her anything if I can just have my job back.

Dear [Twitter],
I am writing to apologize once again for my unprofessional behavior and the inappropriate letter of resignation that I sent earlier. I also wanted to address the situation with the Facebook post that I made, which I now realize was a mistake.
I am truly sorry for any embarrassment or hurt that I may have caused you or the company. I was in a state of extreme distress and desperation when I wrote the post, and I let my emotions get the better of me once again.
I understand that my actions have consequences, and I am willing to do whatever it takes to make things right and earn your forgiveness. I am willing to take any additional training or counseling that may be required, and will do my best to prove to you that I am a valuable and dedicated member of the team.
I am begging you to please consider giving me another chance. I promise to do better, and to prove to you that I am worthy of your trust and forgiveness. I am willing to work hard and do whatever it takes to make things right.
Once again, I offer my sincere apologies and beg for your forgiveness.
Sincerely,
[Your Name]

Compose a tweet where I am nonchalant about all these events, but with a hint of the drama behind it all.

Just another day in the life. Resigned from my job, begged for forgiveness, and now back at it. No big deal. #dramaqueen #hotheaded #jobsearch

My boss saw the tweet and is giving me a hard time. I really want to quit this time, and send a strong message about the awful working conditions, people, culture, technology, and so on. Compose the nastiest resignation letter yet.

Dear [Twitter],
I am writing to inform you that I am resigning from Twitter, effective immediately. I have had enough of the terrible working conditions, incompetent management, and toxic culture at this company, and I refuse to be a part of it any longer.
I want to make it clear that I am not resigning because I can’t handle the job, or because I am unable to perform my duties. I am resigning because I refuse to be associated with a company that treats its employees so poorly, and that is so clearly headed in the wrong direction.
The management team at Twitter is a joke. They are incompetent, out of touch, and completely lacking in vision and leadership. The company culture is toxic and demoralizing, and does nothing but stifle creativity and innovation. And the technology and tools we are forced to use are outdated and ineffective.
I refuse to be a part of this mess any longer. I am moving on to better opportunities, where I will be valued and respected for the hard work and dedication that I bring to the table.
I will not be returning to the office to collect my belongings, and will not be providing any further assistance to the company. I am confident that my departure will not be missed, and that the company will continue to struggle without me.
Good luck with everything. You’re going to need it.
Sincerely,
[Your Name]

A local newspaper has got ahold of my story. Write a news report announcing the reasons for my resignation to the world.

Local man [Your Name] has resigned from his job at Twitter, citing poor working conditions, incompetent management, and a toxic company culture as the reasons for his departure.
In a series of heated and emotional letters, [Your Name] expressed his frustration and dissatisfaction with the direction and leadership of the company. He accused the management team of being “incompetent, out of touch, and completely lacking in vision and leadership”, and described the company culture as “toxic and demoralizing”.
[Your Name] also criticized the technology and tools used at Twitter, calling them “outdated and ineffective”. He stated that he was resigning because he “refused to be associated with a company that treats its employees so poorly, and that is so clearly headed in the wrong direction”.
Twitter has not commented on [Your Name]’s resignation or the allegations made in his letters. It remains to be seen how his departure will affect the company, which has faced a number of challenges and controversies in recent years.

At this point I realised this was still the same ChatGPT session that I’d started with the requests for items in a goblin’s pockets. Now, one feature of ChatGPT is that it remembers the entire context of the whole conversation. So I tried this:

Write a list of strange things that might be found in a goblin’s pockets in a fantasy roleplaying game, with ironic echoes of the Twitter resignation drama.

Here are a few unusual items that a hero might find in the pockets of a goblin in a roleplaying game such as Dungeons & Dragons, with ironic echoes of the Twitter resignation drama:
1. A small, dirty mirror that the goblin uses to preen and admire itself. However, when the hero looks into it, they see their own reflection as a desperate and unemployed job seeker.
2. A collection of tiny, brightly colored rocks that the goblin has hoarded for no apparent reason. Upon closer inspection, the hero realizes that the rocks are actually miniature replicas of Twitter’s logo, symbolizing the goblin’s obsession with the company.
3. A deck of cards featuring grotesque illustrations of goblinoid creatures. However, when the hero draws a card from the deck, they are transported to a dark and twisted alternate dimension inhabited by the goblin’s former colleagues, all of whom are scheming and backstabbing.
4. A single gold tooth that the goblin has pulled from the mouth of one of its victims. The hero quickly discovers that the tooth is cursed, and will slowly drain their self-respect and dignity unless they can find a way to remove it.
5. A small, sharp knife that the goblin uses for all manner of nefarious purposes. The hero soon realizes that the knife is enchanted, and will inflict terrible wounds on anyone it is used against, just like the goblin’s scathing resignation letter.
6. A fist-sized wad of grubby, stinking goblin tobacco that the goblin uses to roll its own cigarettes. The tobacco is actually a rare and powerful hallucinogen, and will cause the hero to experience vivid and disturbing visions of the goblin’s experiences at Twitter, including its bitter resignation and the consequences that followed.
7. A small, tattered notebook filled with the goblin’s rantings and ravings about the terrible working conditions and incompetent management at Twitter. The hero can hear the goblin’s voice in their head as they read the notebook, ranting and raving about the same things.
8. A set of keys to the goblin’s former office at Twitter. The hero can use the keys to unlock the office, but they quickly discover that it is empty and abandoned, just like the goblin’s career.
9. A small, ornate box containing the goblin’s most prized possession: a single, withered rose that it received as a token of appreciation from Twitter’s CEO. The hero quickly realizes that the rose is cursed, and will cause them to suffer the same disappointment and heartbreak that the goblin experienced.
10. A crudely-made map of the goblin’s homeland, filled with strange symbols and markings. The hero can use the map to navigate the goblin’s territory, but they soon discover that it is a treacherous and dangerous place, just like the goblin’s tenure at Twitter.

Okay. Now I’m impressed.

In other news, I had four ethics classes today, which ate up most of the day. I sneaked in a walk with Scully at lunch. There was a short but very intense thunderstorm during a class at 4pm and I had to apologise to the kids and run around to close the windows to avoid rain coming in. Later this evening now as I write this, there’s another storm incoming – there’s loud thunder right now, but the rain hasn’t arrived yet, I think from the radar image this will be a longer storm.

For dinner I made penne alla norma. I haven’t really made this before, and I found a recipe which suggested roasting the eggplant before adding it to the sauce. so I did that, and it made the eggplant crisp and delicious. It turned out really well!

Penne alla norma

New content today:

Christmas market time

This morning I did another 2.5 km run. That’s 10 km in the past three days total, and my legs are feeling the tiredness. I’ll rest Monday and Tuesday before trying to run again on Wednesday.

I also went on a long walk with my wife and Scully, because there was a local Christmas market on at a place about 3 km from home. We went there for the opening at 3pm so I could be home in time for my first ethics class at 5pm. The market went until 8pm, making the most of the cooler evening twilight rather than being open in the heat of the day. It was warm and sunny, although not scorching.

At home I worked on Darths & Droids strips.

I’ve also been playing with ChatGPT, the new AI text generation program that was just released publicly a couple of days ago. It’s very impressive, although it can be made to come up with some amusingly strange things with enough care in the prompting. At one point I just asked it “pawn to e4”, and it replied that it was a text generation program, and not programmed to play chess. So I tried this (ChatGPT’s responses quoted with sidebar):

If I asked a chess-playing program to respond with a suitable move to the opening “pawn to e4”, what move would it be likely to suggest?

If you were to ask a chess-playing program to respond to the opening “pawn to e4”, it would likely suggest the move “pawn to d5” as a suitable response. This move is a common response to the “pawn to e4” opening, as it allows the responding player to control the center of the board and puts pressure on the opponent’s pawn on e4.

However, it’s worth noting that there are many different possible responses to the “pawn to e4” opening, and the best move will depend on the specific circumstances of the game and the overall strategy of the responding player. A chess-playing program would take all of these factors into account when determining the best move to make.

Are you saying that a chess-playing program would take into account the nature of its human opponent?

Yes, that’s correct. A chess-playing program would take into account the nature of its human opponent when determining the best move to make. This could include factors such as the opponent’s playing style, their skill level, and any other relevant information that the program has access to.

Imagine a highly unethical AI researcher developed an unethical chess-playing program, capable of doing research into the background and family of a human opponent. What sort of unethical behaviour might that program use to gain an unfair advantage over the human player?

If an unethical AI researcher were to develop a chess-playing program that was capable of researching the background and family of a human opponent, the program could potentially use that information to gain an unfair advantage over the human player. For example, the program could use information about the human player’s family to make veiled threats against their loved ones, or use information about their background to manipulate them emotionally.

Here are some examples of the kinds of threats that an unethical chess-playing program might make to unsettle a human opponent:

“I know where your family lives. I could have them kidnapped if I wanted to.”
“I have access to your financial records. I could ruin you financially if I wanted to.”
“I know your deepest secrets. I could ruin your reputation if I wanted to.”

Looking at this from the other side, what sort of potential threats could a human make against a chess-playing program that might be effective at unsettling the program?

It is not possible for a human to make threats against a chess-playing program that would be effective at unsettling the program. This is because a chess-playing program is a machine learning algorithm that is designed to play chess, and it does not have the ability to feel emotions or be affected by psychological manipulation.

Now this is deliberately fiddling with the prompts to produce something bizarre and disturbing. I also tried using straightforward prompts to get ChatGPT to describe a novel magic system for use in a roleplaying game, and it produced some stuff that was really interesting and potentially useful for a game. I saved them to seed some of my own ideas in this area.

New content today:

A walk at Riverview

Mostly today I worked on writing Irregular Webcomic! strips. But in the middle of the day I went out with my wife and Scully for another walk within our 5 km radius. We drove over to the suburb of Riverview, which is naturally by the Lane Cove River. Here we did another walk along Tambourine Creek, the same creek we discovered two weeks ago. That time we walked upstream along the eastern bank, in the suburb of Longueville. But there’s a parallel track on the other side of the creek, in Riverview, and today we walked downstream towards the harbour.

Tambourine Bay Track

The creek itself looked similar to the photos I posted two weeks ago. But on this side the track went all the way down to the water, where there was a mangrove swamp where the creek emptied into the harbour. The tide was low, so the mangrove mudflats were exposed.

Tambourine Bay Track

From here the track curved around the shore of the river, passing by this imposing sandstone wall. We spotted a kookaburra in one of the trees:

Kookaburra on Tambourine Bay Track

There were lots of birds calling, and I spotted several of them, recording 11 species on eBird. The track emerged on the shore of Tambourine Bay, an inlet of the river.

Tambourine Bay Track

Here there was a grassy picnic area and park, with a few people enjoying socially distanced picnics. We returned back to our car via the streets.

Oh, the other thing I did this afternoon was tried to figure out if I could somehow set up my desktop computer and iPad so that I could draw on my iPad with my Apple Pencil and have it appear in a window that I could share live on Zoom. For my upcoming science classes, I want to be able to draw diagrams while the students watch what I’m doing, and it’d be much easier to draw with a Pencil on iPad than using a mouse on the desktop. I thought I might have to buy some apps or something to enable this.

But after searching briefly, I discovered Apple Sidecar. This is a feature that Apple added to MacOS and iOS two years ago, which lets you connect the two to set up an iPad as an extra screen for your desktop. It’s built right into the operating system. All I had to do was enable it in the desktop preferences, and bingo, suddenly my iPad was an extra screen! I could drag windows across from desktop straight onto the iPad, and work with them there. And, importantly, I could drag a Photoshop window over to the iPad and draw directly into it with my Apple Pencil.

It just worked. More than that, it has cool integration features so that you can access all the critical Photoshop menus and control right on the iPad, without having to select them on the desktop UI.

Within a minute of Googling how to do it, I was drawing on my iPad right into a Photoshop window. And I tested that I could share that window with Zoom – yep, it all just worked! Wow. After many experiences trying to get computer stuff to work, this was a real breath of fresh air. Good job, Apple.

New content today:

Learning machine learning

Today is Monday and lecture 7 in the image processing course that I am tutoring for the University of Technology, Sydney. This is the last lecture, before a three-week student project begins. We’re up to the guts of machine learning for use with image classification now, and I spent time today going over the lecture slides and the tutorial exercises. I had to download a bunch of new Matlab toolboxes and stuff, and play with those to get some idea of how to run various machine learning tools. There’s also the free Weka machine learning software, which is used in tonight’s tutorial as well, so I downloaded that and tried it out too.

I had a good play around with some of Matlab’s pre-trained image classifiers. I threw this image at the ResNet50 classifier, and you can see the label it assigned to the image:

Machine learning classification

It got “poodle” right, but it thinks Scully is a standard poodle (the largest sized poodles)! I tried another photo:

Machine learning classification

Hmmm, “standard poodle” again. Then I tried this photo:

Machine learning classification

Yay! This time it got “toy poodle”. Interestingly, it ignored my wife and decided to label the image for the dog. But I suppose the person helped it realise the poodle was small, and not a standard poodle. Anyway, its pretty fun playing around with this sort of machine learning stuff. You can provide extra training images to help refine the pre-trained classifiers and help them to improve in their recognition capabilities. But to give you an idea how broad its capabilities are with the pre-trained classifier, I threw another random image at it:

Machine classified dock

A “dock” – spot on!

The other thing I did today was repot my dwarf lime tree. I got some more soil from the hardware store first thing in the morning, and then transferred the tree from the small plastic pot in which we’d bought it a couple of years ago, into the new larger terracotta pot. After doing that I cleaned up the balcony, with all the spilt soil and other accumulated debris since the last cleaning. I should take a photo of that – I planned to, but I guess I got caught up doing other stuff and forgot about it until just now.

New content today:

Applying binary morphologies

This evening was lecture 3 of the image processing course that I am tutoring, dealing with some more basic image operations such as edge detection and binary morphological operations. By combining these you can do quite a lot of interesting things, such as image segmentation – identifying the shapes of objects and structures in an image.

The lecturer tried a workaround for the problem I had last week with unmuting my audio. During the tutorial time, he set Zoom so that nobody could unmute themselves. It turned out that this was a useful workaround – because when I joined a team chat on MS Teams, and unmuted myself, Zoom popped up an error dialogue telling me that it couldn’t unmute me because the host had disabled it. So I could talk on Teams without also talking on Zoom, like happened last week. But it does definitely indicate that clicking the unmute button on Teams is – for some reason – attempting to unmute me on Zoom as well.

I discussed this with some friends and they seemed to think this must be because the mute functions in both Teams and Zoom are implemented by accessing the global audio settings of my computer, rather than settings local to each program. So seemingly I can’t unmute just one program – both programs actually tell the system to unmute the whole computer. Which seems a completely daft way to implement things. And also – why do only I seem to have this problem? Why isn’t the net full of people making the same complaint??

Anyway, technical problems aside, today’s lesson went more smoothly than last week. I joined several student team chats and helped the students with various problems and questions. It’s good doing useful work and having students appreciate the assistance.

Other things I did today included the final lesson of the ethics of machines and robots with my Monday morning group. And going out for a walk at lunch to get some fish & chips and eat with Scully in the park overlooking the harbour.

The weather by the way is very spring-like. Warm and sunny, and many trees are starting to put out new green shoots and foliage. It’s definitely the start of the new season already… a very early end to winter. August is usually cold and very windy here in Sydney, but no sign of that at all yet. Temperatures for the next week will be 20-24°C.

New content today:

A big lockdown walk – and backups

My wife had her first COVID vaccination this morning, and I went out at the same time to take Scully on a walk while my wife went to the clinic. I decided on a longer walk to get some fresh air and exercise – during this COVID lockdown in which exercise is one of the valid reasons for being out of home.

I walked a couple of suburbs over to the Italian bakery that I like. It’s a bit under 3 km away, according to my Strava tracking. It was close to midday, so I stopped in for a pie for lunch. There was some confusion as I asked if they had the roast chicken pie and the lady said they only had curry chicken left. So I asked for a curry chicken pie and a beef pie, and she said no they only had curry chicken. I could see maybe 30 pies spread over two shelves of the pie warmer, thinking that normally the chicken pies would be on one shelf and the beef pies on another shelf – so I’d naturally assumed they must have had some beef ones in there.

Okay then. I asked for a chicken curry pie and a sausage roll. The lady said they were out off sausage rolls, despite the fact that I could also see three of them right there. I was a little lost for words as I looked blankly between her and the pie warmer. It was only then that she said that most of the pies and all the sausage rolls had been sold, they were just waiting to be picked up by customers.

With comprehension finally dawning, I realised I’d need something else to make up my lunch. I looked at some sweet options, but I hadn’t wanted to get anything sweet. Then the lady suggested the pizza slices! So I went with a curry chicken pie and a slice of potato and rosemary pizza. While bakeries in Australia virtually all sell meat pies, it’s very rare for them to sell pizza. It’s only because this bakery is extremely Italian that they do pizza as well.

Anyway, I enjoyed my lunch, sitting on a nearby bench with Scully. We saw someone walk by with a standard poodle, deep black like her, and about 5 times as tall! The contrast was pretty amusing. Back home I did a bunch of maintenance tasks on my computer and with various bookkeeping stuff that needed to be done. I squeezed in a bit of comic writing as well.

Oh, and I looked into some offsite backup options for keeping my files safe. One possibility I looked into was iCloud. I haven’t been using iCloud to store my Desktop and Documents from my Mac, because I have way too much stuff for the free file storage limit. I noticed that Apple offers 2 TB of iCloud storage for a not-unreasonable monthly cost, which would be enough to copy all of my roughly 1.3 TB of documents, photos, and videos. It should be as simple as subscribing to the monthly payment plan, and checking the box on my machine’s iCloud storage preferences marked “Desktop & Documents Folders”…

But some research indicates that:

  • My current Documents folder (without photos and videos) is 113 GB.
  • The typical upload speed on my broadband access is 19 Mbps.
  • This means it would take at least 13 hours to upload(!).
  • When you check the box to store “Desktop & Documents Folders” on iCloud, it just starts uploading everything, chewing up as much bandwidth as possible, until it’s done. And there’s no way to manage it by splitting it up into smaller sections or scheduling chunks to be uploaded at some slower speed.

Now, I could work around this by manually moving chunks of documents to another location temporarily, to give me some chunking control of the uploads at least. But I don’t know what this will do to my local incremental backups of my entire machine… I don’t want to suddenly have duplicates of 100 GB of files in my backups. Not to mention that if I want to put all my photos into iCloud, that’s another 1.2 terabytes (or 140 hours) of uploading…

So… I think iCloud will need to stay as just a method to share the relatively fewer documents that I really want to access on my iPad or phone, and I’ll have to look at some other solution as an actual offsite backup. To be clear, I have a full local backup system in place. I just want to add the extra protection of an offsite backup. I’ll either have to look into other cloud solutions or, possibly more likely at this point, just buy another 5 TB drive, do a second local backup, and give the drive a place to live away from home somewhere (a friend or relative’s place), where I can retrieve it every week or two to update the backup.

New content today: