Elorrio, and the day of my friends wedding. It’s been a few years in the making, due to the pandemic, but the day has arrived.

Elorrio, looking towards the town center.

It never ceases to amaze me how large the seagulls are in Europe and the UK. So much larger than the ones back home.

Two European seagulls standing on a beach.

Now we’re really checking items off my bucket list. TGV from Paris Montpanasse to Hendaye, on the French/Spanish border. Speed topped at 312 km/h on the way to Bordeaux.

Front of a TGV locomotive with livery Inoui under the canopy of Hendaye station.

Did a very broad siteseeing tour of Paris today. Mixture of Metro and walking: we walked 26.17 km. Looked at many of the popular landmarks (not all of them — can’t see Paris in a day), but I think my favourite parts were walking the quieter back streets, away from the crowds.

Where Have I Been

Inspired by Manton and Maique, I thought I’d document the places I’ve visited as well. I’d had to refer to this list a few times in the past so having a record like this is helpful.

Transfers are not included here. In order for a place to be listed here, I’ve have had to have landed there. Also, I’ve excluded Victoria, Australia, as this is where I live.

  • 🇦🇺Australia (home)
    • New South Wales
    • South Australia
    • ACT
  • 🇧🇷Brazil
  • 🇨🇰Cook Islands
  • 🇫🇯Fiji
  • 🇫🇷France
  • 🇮🇹Italy
  • 🇮🇩Indonesia
  • 🇯🇵Japan
  • 🇰🇮Kiribati
  • 🇳🇿New Zealand
  • 🇳🇺Niue
  • 🇵🇬Papua New Guinea
  • 🇼🇸Samoa
  • 🇸🇬Singapore
  • 🇸🇧Solomon Islands
  • 🇪🇸Spain
  • 🇨🇭Switzerland
  • 🇹🇴Tonga
  • 🇹🇻Tuvalu
  • 🇦🇪United Arab Emirates
  • 🇬🇧United Kingdom
    • Devon, England
  • 🇺🇸United States of America
    • District of Columbia
    • Maryland
    • Nevada
  • 🇻🇺Vanuatu
  • 🇻🇳Vietnam
Last Updated 12 Nov 2023
  • 12 Nov 2023: Added Singapore and Indonesia
  • 28 May 2023: First version. Note: I’m writing this while on an overseas trip, so I’ll also be including the countries that I’ll be visiting over the next few weeks.

A Parisian street, and the last few hundred metres of my journey.

A shady Parisian street with few cars and people

At Dubai International Airport, buying $12 coffee and looking for departure boards, which are few and far between.

Inside the terminal of Dubai International Airport, looking at palm trees next to a travelator.

Oof. Hours away from departure and I almost forgot to organise travel insurance. Probably need to write up a checklist for future trips. Remarkable how much is not done for you when you’re not travelling for work. 😄

At the cafe this morning. The ledge of this cabinet is the perfect height for dogs to do this. I always enjoy seeing it.

Little dog reared up with front paws on a low ledge of a glass cabinet holding cakes.

It’s easy to forget that the Mac is capable of making pretty decent screencasts with just QuickTime Player. I’m using it right now to prepare handovers at work: recording how to deploy something to prod so that someone can take it on while I’m away. It’s super useful.

For anyone else that’s interested, the Pixel 6 Pro supports dual SIM, with one of them being an eSIM. Useful information for anyone wanting to buy a local SIM for a trip overseas. Would’ve saved me a bit in international roaming charges if I knew this last year, but better late than never.

One of those days where something’s broken and you’re looking into it, but you can’t because a thing you rely on is also broken and you’re waiting for that to be fixed. This is while you’re side-tracked looking at something else, which is also broken for reasons that are beyond you. 😩

I’m trying to be better at finding solutions to problems rather than just complain about them here. Just this morning I was going to complain about how I wish MacOS had per-mouse tracking speeds. Instead, I made a Keyboard Maestro macro to address this. If it works, I’ll write about that instead.

I’ve been working on Micropub Checkins over the last week. It’s been a bit of a rush trying to get it into a usable state for an upcoming trip. And by “usable”, I mean a form that I can tolerate, and when it comes to projects like this, I can tolerate quite a lot. It can have a really dodgy UI (which this does) and miss some really important features that are annoying to work around; but if it works, and doesn’t loose data, I’ll be fine with it.

The main screen showing three check-ins
The main screen showing the recent check-ins. Note the lock next to some of them. These won't be published until the locks are removed.

The last week was dedicated to making the act of checking in distinct from publishing it. Until now, check-ins were published the minute they were entered, meaning that you cannot check-in somewhere unless you’re comfortable with people knowing where you are the minute you do. Yes, some people like it that way, but not me. And I’m aware that this’ll only be the case if people are following my check-in blog, which I’m doubtful of.

So pressing the floating action button and choosing a check-in type now starts the flow of a new check-in that will get saved in an SQLite database. You can edit the check-in whenever you like, so long as it’s not published. Currently there’s no real way of deleting a check-in unless it’s been published. This is a bit dodgy, but it’s a good example of how tolerant I am with working around these feature gaps for the moment.

The new styled edit screen with a title, description, rating, and a ready for check-in switch
The newly styled edit screen. Notice the rating field, which will appear for eateries.

Check-ins can be published by tapping the upward facing button on the main screen. Any check-in with a lock is private and will not be published until you toggle the “Ready to publish” switch in the properties. Doing so will not change the date of the check-in: it will still have the date and time that check-in was created.

The target list screen, showing two targets: one test target, and one for my real check-in blog
The targets are currently hard-coded but they can be turned on or off. I had a bit of trouble publishing a check-in to two targets, so I'm not sure if I'll keep multi-target publishing.

On the subject of publishing, I had some issues with Dart’s date and time methods. The method on the DateTime class used to produce an ISO-8501 date-stamp don’t include the time-zone if the date and time is not in UTC. This is important as I want the post date and time to be as close to the check-in time as possible, and in the time-zone of the phone. DateTime knows all this, including what the time-zone we’re in. So why didn’t the developers include it in the ISO-8501 date-time string?

This is really strange. Fortunately, ChatGPT stepped in to help out, writing a function which will add the time-zone offset to the ISO-8501 date-time string:

String formatTimeZoneOffset(Duration offset) {
  String sign = offset.isNegative ? '-' : '+';
  int hours = offset.inHours.abs();
  int minutes = (offset.inMinutes.abs() % 60);

  return '$sign${_padZero(hours)}:${_padZero(minutes)}';
}

Honestly, ChatGPT has been so helpful over the past week with this project, I probably should give it a credit if I get this polished enough to release.

Turns out the reason behind my failed attempts at connecting to the VPN I was setting up yesterday was because another VPN running at the time was masking my external IP address. Completely forgot about that one. Turning it off has resolved the issue.

It’s wet and cold outside, and I’m currently sitting in cafe that’s got Christmas Carols playing for some reason. Interesting start for a Sunday.

Inside a cafe looking out the door to a wet pavement and grey scene

For anyone looking to waste a morning, may I suggest trying to set up and debug a VPN. Always super fun spending two hours on it and having nothing to show from it at the end. 😒

Only caught the last 15 minutes of the Micro.camp keynote with Om Malik. Looking forward to watching the whole thing on YouTube. It’s also nice to finish the community discussions, then start my regular Saturday. Kinda feels like I’m getting away with something. 🏕️

I think it’s time for the Go maintainers to add a UUID type to the Go standard library. Not so much for generating or parsing UUIDs — all the packages already out there do this quite well — but to have a standard API that other packages, like logging frameworks or database clients, can rely on. Right now these developers need make a choice of which third party UUID package they’re going to use. And if it’s different than the one you’re using, well… sad faces will occur.

Keeping a separate blog for journaling personal project work is becoming a bit of a hinderance. There’s always this uncertainty of where a post should go: it’s about my day but it’s about a side project but not really, so should it go here? Might be time to merge that blog into this one.

Update 21/5: I’ll keep them separate for the time being.