Category: Uncategorized

  • Deutschland – The Backstory

    This blog will be twenty years old next month. For the first five years – which, let’s be honest, were the only years anyone cared about blogs – whenever anyone would ask me why I had one, I’d say that it was because I was an expat and it was a way to share my life with family overseas. But then expat life became just “life,” and the Internet moved away from websites to social networks, and gradually the blog just became a repository, a place where some of the detritus of my digital life would maybe wind up. Truthfully, I use it more for historical reference now than anything else. (“When did we go to Hawaii? Let me look it up on the blog…”)

    But now, twenty years on, we go back to the beginning, back to expat life. Yesterday the Snook and I arrived in Munich, Germany, which will be our home for the foreseeable future. Everything is slightly weird and scary and uncomfortable (even disregarding a little thing like a GLOBAL PANDEMIC), and it occurred to me I should probably start documenting this stuff again. So here we are.

    Munich

    I should back up a bit. Last November I was invited to speak at Build Stuff conference in Vilnius and Kiev, my first ever European tech conferences. The Snook decided to come along with me, and we figured we deserved a few days of actual vacation at the end of it. For twenty years I’ve been promising to take him to Germany, so we ended up choosing Munich. (I spent one summer in high school studying in a town near Düsseldorf, but I’d never visited Bavaria.) We celebrated our 15th wedding anniversary, toured fancy places, ate sausages and drank beer, and visited an early Christmas market. We met kind and friendly locals. We rode a very fast train across the country through green fields dotted with solar panels and wind farms. And then we came back to Sydney and it was hell on Earth with the bush fire smoke and oppressive heat. We started joking about moving to Europe… and then in January, we realised that it didn’t have to be a joke. We both work for companies with big offices there. There’s nothing significant tying us down. We could do it. Gradually the idea started to take form, with a vague idea of maybe moving towards the end of 2020.

    On January 18th, I was in Chicago at the end of a work conference, trying to escape the city to my Dad’s house before a major winter storm. My flight was delayed and I was bored at the airport, so I decided to check what jobs were available in the Amazon Munich office.

    Google chat

    Two days later I was on a call with the hiring manager, who knew me and was very excited that I was interested. Holding the job until later in the year was no problem. Suddenly this was a very real possibility. I messaged Rodd to give him the update, already nervous about everything this might entail. “But it would be a big disruption. You’d have to get a job; we’d have to find someone to take the cats; we’d have to do an international move… Anyway, we can talk about it later. Maybe have a look and see what jobs are going in your team there??”

    He replied that he had installed Duolingo. ❤️

    I had my internal transfer interviews at the end of February and everything was looking good… and then Covid happened. The world ground to a halt, and we kinda expected that all plans were off. Germany closed their consulates and stopped granting visas, and Australia put a ban on citizens leaving. We hunkered down along with everyone else.

    And then unexpectedly in April, I got the job offer! We still couldn’t travel, but we could start making plans. We thought hard about renting out our house, and whether we’d take the cats with us overseas. (Sadly, Dr. Amy Jones simplified that equation by passing away.) I went through a bureaucratic nightmare trying to get a copy of my university diploma for the visa application. (Protip kids: don’t assume you’ve paid off every single one of your student loans just because they stop sending you bills. 😩) The Snook applied for a few jobs in his Munich office in May and ended up with a couple different options. The German consulates reopened and we were able to submit our applications in June, and then in July we attended consulate appointments and were granted the visas a few days later. Slowly, slowly, things were coming together.

    The last step was getting permission to leave Australia. There is still a ban on citizens and permanent residents leaving, presumably because they don’t want you coming back with Covid. However, there’s a process by which you can apply for an exemption. I read lots of horror stories from people who were denied permission, and I joined a Facebook group for those applying to see what tips I could glean. To be honest, most of the posters there struck me as extremely entitled, wailing that their inability to travel wherever and whenever they wanted was tantamount to a human rights violation. 🙄 (Both Rodd and I have immigrant grandparents. When they left their home countries, it was a one-way trip. We are so incredibly fortunate now, and a lot of folks forget that.) I submitted our application at the end of July. I didn’t bother resorting to tricks, or submitting dozens of times with heaps of documents. I made a single submission, stating that we were both relocating overseas for work and had no immediate plans to return. I included our German work visas, our work contracts, and proof that we had insurance lined up here. Ten days later, the request was granted. It was really happening. It was finally time to actually tell people.

    Moving to Munich tweet

    Over that last month, we had so much to do we had a Trello board set up to keep track of everything. We confirmed with a friend that she’d rent our house and look after Petey, and we got all the paperwork for that in place. We tackled a ton of home improvement projects we’d been putting off, like replacing the carpet in the offices, installing LED lights, and cleaning up the garden. We started culling twelve years of accumulated stuff, selling a heap of it on Facebook Marketplace and making hard decisions about what to ship, store, or throw out. (There were several trips to local op shops and recycling centers.) We cancelled phone contracts and applied for international bank accounts and switched to electronic bills. We organised sea freight shippers and bought extra suitcases and boxes and started filling them. There was so much.

    Packing

    Not gonna lie – there were several times over the past few months when one of us would get so stressed out we’d think of backing out. We were true to form: I’d been an early enthusiast of the idea but then got cold feet once reality set in. The Snook is slower to make big decisions, but once he commits, he rarely wavers. We made a rule that only one of us could freak out at any given time, which helped through the rough days. We cuddled Petey a lot. That helped too.

    Petey

    Sadly, the “Throw a big fuckin’ goodbye party” item on the To Do list remained unticked thanks to the pandemic, but we were able to visit with Rodd’s family and have a very small number of folks over to say goodbye. My knitter friends all collaborated on a secret project to make a chain of mini jumpers for me, each of which had a personal note inside. My work colleagues threw me a virtual cocktail making goodbye, which was amazing. Even though people were sad we were leaving (and so were we!), everyone was so supportive and encouraging. ❤️

    The very last task was the one we’d been putting off the longest… to bury Amy’s ashes in the garden. We did it on the very last day. We said goodbye and left rose petals on her grave. That’s when all of the emotion finally came out.

    Burying Amy

    Next post… flying internationally in the time of Covid!

  • The Glasgow School Sisters who Influenced Klimt

    I clicked on this blog post expecting to be inspired by Margaret and Frances’s art (which is amazing), but instead came away depressed and angry about the limitations placed on their careers.

    Their marriages, in turn, lead to a dissolving of the sisters’ artistic partnership as Margaret and Frances began collaborative work with their respective partners, as was expected of dutiful wives. During such work much of the sister’s own artistic input was credited to their husbands.

    Rage. 🔥

    via The Glasgow School Sisters who Influenced Klimt | #womensart ♀

  • Going down a rabbithole…

    Good gracious. This morning I thought I’d just do a quick task on my migrated Lightsail sites: setting up a Lambda function to check every 5 minutes, see if the page contains some specific text, and send me an alarm if the site isn’t up. My first thought was to use CloudWatch Synthetics, but the pricing is a lot higher than just doing it yourself with a Lambda function (though you don’t get spiffy screenshots and such). I kept it simple and happily discovered there’s an existing lambda-canary blueprint available. So I set that up, pointed it at https://www.roalddahlfans.com, and tested it out. It worked great!

    Then the Snook, looking over my shoulder, said, “That’ll be going through CloudFront. Why don’t you point it at the origin subdomain so you know it’s hitting the real WordPress underneath?” Okay, sure. Just to double-check it was working, I went to the origin subdomain in the browser… and was redirected to www. What. Uh, that’s not good. Thinking I had screwed something up, I tried hitting the origin subdomain of web-goddess.org… and that worked correctly, not redirecting to www. What the hell. Why were my two sites behaving differently? And why wasn’t RoaldDahlFans’s CloudFront distro barfing that I had set it up with an origin that was redirecting to itself??

    Over the next seven hours – seriously – the Snook and I beat our heads against this problem. I tried turning on and off various plugins; I grepped both filesystems multiple times looking for differences; I completely rebuilt the CloudFront distribution for RoaldDahlFans; I turned SSL off and on repeatedly; I fiddled with heaps of htaccess settings… and we got nowhere. We determined that on web-goddess, if I went to https://web-goddess.org, it would be redirected to www; but for any other subdomain (foo.web-goddess.org, etc) it would not. But on RoaldDahlFans, it would always go to www regardless of whether you used a subdomain or not. It was so frustrating.

    Wordpress redirect tweet

    Various people chimed in pointing us to various things, without much success. My buddy Peter Wilson mentioned thinking that WordPress had some special behaviour to redirect between www and non-www domains, which eventually ended up in us poring over the redirect_canonical code. The Snook noticed that another thing this module does is try to redirect you to the correct page if you type in a URL wrong. For example, if you try to access https://web-goddess.org/about, WordPress will automatically redirect you to https://www.web-goddess.org/about-me (which is the real address). However, if you do that on any subdomain other than www or non-www, it gives a 404. He went to test whether that was also held true for RoaldDahlFans, and to his surprise, the origin was not redirected! What the hell.

    We determined that the origin subdomain was only redirecting to www on RoaldDahlFans on the homepage. Every other page on the origin subdomain would not redirect. So what’s special about the homepage for RoaldDahlFans.com compared to web-goddess? Well, web-goddess has the homepage set to show the most recent posts, but RoaldDahlFans uses a static page. I changed RoaldDahlFans.com to use the most recent posts, hit up the origin subdomain, and it did NOT redirect. But when I changed it back to a static page, it went back to redirecting.

    SO – there is something in the way WordPress handles sites with static homepages that causes them to be redirected to the Site URL, even if you’re using a random subdomain. If you add anything to the path – subdomain.roalddahlfans.com/index.php, it won’t trigger the redirect. How weird is that?

    Okay, so that finally explains the difference in behaviour between the two sites. My origin subdomain for RoaldDahlFans.com was going to redirect requests for the homepage to www, and there was nothing I could do about it. Which meant that when CloudFront needed to refresh its cache for the homepage, it would hit the origin subdomain… and be redirected to itself? Why wasn’t I seeing an infinite redirect loop crashing my site?

    Cue another hour of poking around. The only way it wasn’t going to crash, the Snook reasoned, was if CloudFront was passing the Host header through to the origin as part of the request. I was not aware of telling it to do that, but…

    CloudFront behaviour

    It turns out that the AWS WordPress plugin, when it set up my CloudFront distribution, helpfully whitelisted the Host header as part of the default behaviour for the site. This is why CloudFront isn’t barfing every time the homepage cache expires.

    So there you have it. What I thought would be a fifteen-minute task sent us down a rabbithole of WordPress, redirects, and content delivery network intricacies. The irony is that after all that, nothing is actually incorrect on my site! It’s all working as intended. We just didn’t know how. The only catch is that if I myself want to bypass CloudFront on RoaldDahlFans.com, I need to append /index.php when I hit the origin subdomain.

    This was not how I intended to spend my Sunday… 😅

  • Site migration nearly finished…

    Following on from my previous post detailing how I moved this site from shared webhosting to Amazon Lightsail, I’ve since completed a few more of my To Do list items:

    • Installed the Open Graph and Twitter Card Tags plugin and set a default image for sharing to Facebook. I’ve also hooked up my Facebook app ID and secret so I can clear the cache on Facebook when updating a post on my site.
    • Used the WP Sweep plugin to clean up hundreds of old post revisions. I also set a limit in wp-config which will be used going forward.
    • Set up automated security patching as per this guide.
    • Went through my Google Search Console to check for errors and fix where possible.
    • Killed off the old shared webhosting!
  • Big news

    In case you haven’t heard yet (or seen it on social media), in the next few months I’m going to be transferring to a new team at AWS. This is super exciting, and I’ll share more about the new role once I’m able. But in the meantime, that means that my existing team has an opening for a Solutions Architect Manager! We’re looking for someone who is passionate about helping Aussie businesses reap the benefits of moving to the Cloud, as well as growing and coaching an amazing team of technical folks. Bonus – you get to work with an awesome team of really smart folks! The job description is here, and it’s worth noting that the role is open to both Sydney and Melbourne! Hit me up if you have any questions about it…

  • The Snook makes a Tom Collins

    So earlier this week, Stanley Tucci posted an Instagram video where he made a Negroni and the Internet went nuts. Jokingly, I suggested to the Snook that I film him making me a cocktail too (because he is also a stylish middle-aged sophisticated dude), and happily he consented! I present to you: “The Snook makes a Tom Collins.”

    It was originally going to be a gimlet, but we didn’t have enough limes. What do you think? Worth continuing as a series?

  • Beef Bourguignon a la Guillaume

    Autumn is here. The weather is getting cooler and the sun is setting sooner. We spent 10 minutes Saturday morning watching Guillaume Brahimi make beef bourguignon on Instagram, so I immediately put it on the menu plan for the week. Last night I made it, and I decided to document the whole process (because I am bored in quarantine). The full recipe’s online if you want to make it yourself…

    Ingredients

    Ingredients! Chuck steak, speck, red wine, carrots, leek, shallot, onion, celery, mushrooms, potatoes (for the mash), thyme, bay leaves, and parsley. No, I didn’t use $100+ worth of wagyu like Guillaume did. Mine’s just the normal stuff from the supermarket. And I’m also using box wine…

    Browning the beef

    First step – browning the beef in batches!

    Cooking down veg

    Next you add the chopped veg and cook it down.

    Boiling the wine

    Guillaume suggests briefly boiling the red wine “to reduce the acidity,” so that’s what I did. (The Snook, who studied chemistry, thinks this is nonsense. But in the kitchen, I do what the French chef says.)

    One for the chef

    Also having a cheeky drink myself. I do enjoy a good Banrock! (That’s a Moominmamma tea towel a friend brought me back from Finland last year.)

    Combining

    Combining it all together – beef, veg, wine, speck, herbs…

    Cooking

    And now leaving it to cook for 40 minutes…

    Carrot puree

    While that was happening, I made a “carrot puree” by boiling five whole carrots until they were soft and then smooshing them up with the hand blender.

    Adding puree and mushrooms

    The final step is to add the carrot puree and mushrooms, and then cook for another ten minutes. The puree really thickens it up!

    Finished stew

    Finished stew, with parsley added as well.

    Served with mash

    I served it with mashed potatoes on the side! Really savoury and delicious on a chilly Autumn night…

  • Richard Siken – Snow and Dirty Rain

    Close your eyes. A lover is standing too close / to focus on. Leave me blurry and fall toward me / with your entire body. Lie under the covers, pretending / to sleep, while I’m in…

    Source: Richard Siken – Snow and Dirty Rain | Genius

    Saw this linked on Tumblr today and nearly wept. I need to read more poetry.

  • Knitted Disruption

    Hey knitters! I’m working on a knitting + machine learning project and I need a collection of images of stockinette, garter, seed, and moss stitches. Images like these:

    If you’re willing to spend a few minutes helping, I’d be so grateful! Just email your images to knittingml@krishoward.org. You can attach multiple images at once if you like.

    They don’t have to be swatches; they can be closeups from finished articles. They don’t have to be perfectly straight or blocked or anything like that either. I’m looking for a wide variety, to be honest! Stripes and multiple colours are great! Even fairisle. I want to teach the model to disregard colour, so having photos with it is very helpful. Just no lace or cables or crochet… (yet).

    More details

    A few years back I gave a talk at several tech conferences about the overlap between knitting patterns and programming languages. As part of that, I talked a bit about KnitML (an old proposed standard for writing patterns in ways computers can understand) and how it could be used with special software to simulate knitted fabric. A few people asked me afterwards if it could go the other way – from a photo of knitting, can you reverse engineer the pattern?

    It got me thinking. I know that I can “read” knitting. I do it all the time, and I’m sure other knitters do too. So if I can do it, why not a computer? I’m also fortunate in that I work with some very smart Machine Learning experts and have access to run experiments in the Cloud cheaply. So I decided to give it a try.

    I’m starting with image classification. Think facial recognition for knitting swatches. Can I train a model to recognise the difference between stockinette, garter, moss, and seed stitch? The first step is gathering as much training data as I can, hence my request to you all!

    So the more the better. Different wools, different colours, different lighting, different angles. It’s all super useful!

    And I will definitely share the results back afterwards and thank all contributors. 🙂

  • Frocktober 2018 Update

    We’re officially one week into Frocktober… and I’m wearing pants. Unfortunately I have to travel for a family funeral, and spending the next 24 hours in a dress just doesn’t seem optimal. I’ll tack on an extra couple days into November to make up for it.

    In happier news, I am more than halfway to my fundraising goal! My donation page is showing $1,050 total against my target of $2,000. Thanks to everyone who has contributed so far! The Ovarian Cancer Research Fund is a fantastic organisation and every dollar helps.

    My sewing is necessarily going to have to pause while I’m away, but I did make more progress. I finished sticking together the shirtdress pattern and cut out my size. I also started sewing together my bias cut Hawaiian dress. I managed to get the bodice complete, as well as the front of the skirt. (Note that the ruching along the front is temporary via some basting threads. It’ll look better when it’s properly finished.)

    And with that, I’m off!