Tag: aws

  • Singapore, Melbourne, and the Emergency Room

    After a quiet January settling back in Sydney, in February I headed to Singapore to help deliver the opening and closing keynotes for AWS Innovate AIML edition.

    Me in a mask

    I headed into the office to meet with a few colleagues. The view is pretty nice…

    Working from the office

    For the keynotes, we were going to stream them live from a greenscreen studio. I headed over early in the morning for hair and makeup, where I found a special surprise waiting: my colleague Ethan had created a special t-shirt with me wearing my AWS dress!

    Me all made up

    How cute is that?? We spent a very long day of finalising the content, rehearsing, and pre-recording a dress rehearsal. That night, I headed out to Brewerks in Clarke Quay for dinner. Singapore is such a pretty city.

    Singapore

    I had a very early start the next day for the actual live stream. It went really well. Thanks to Ethan and my awesome co-host Dean for making everything so fun!

    Dean, Ethan, and me

    The weather wasn’t great in Singapore that week, but I did manage to work by the pool for a few hours.

    Sitting by the pool

    I also attended the AWS Singapore meetup one night, which we held in our offices. Massive turnout, and a really great evening of talks.

    AWS Meetup Singapore

    The next day, I met up with the two members of my team based in Singapore – Cathy and Donnie!

    Cathy, me, and Donnie

    We also hosted a dinner for some of the AWS Community members in Singapore: AWS Heroes, AWS Community Builders, and user group leaders.

    On my very last night, I went out for dinner with my good buddy Gabe and his wife Alex. They took me to a local place that was super crowded, insanely tasty, and so cheap. Singaporeans are spoiled for food, I tell ya.

    Gabe and Alex

    It was a quick trip – just a week – but it was great getting to catch up with all these folks!

    A couple weeks later, the Snook and I both flew to Melbourne where I’d be delivering the closing talk of ServerlessDays ANZ.

    Me and Rodd on the airplane

    We made it just in time to attend the speakers’ dinner that night, and then had a lovely walk back along the Yarra.

    Me and Rodd in Melbourne

    The next day was the conference. The venue at Federation Square was gorgeous! My buddies Lars Klint and Pete Hanssens were on the organising committee and kicked things off.

    Kicking off ServerlessDays ANZ

    Great crowd!

    Selfie with crowd

    Here are some of the amazing other speakers! The talks are all up on YouTube.

    Speakers

    My session was the last one of the day…

    Mic'ed up and ready to go!

    Thankfully it went realy well and I was happy that it was so well received! Thanks to my colleagues Paul, Stephen, Gregor, and Derek for all their help with the event.

    Me presenting

    Me from the audience

    After the conference, we all headed to a nearby bar for the afterparty…

    The next morning we headed out into the city to be tourists. We mooched around the Queen Victoria Markets and enjoyed the sunshine. The hot weather helped us justify stopping off at Brick Lane Shed for a sneaky beer!

    Me and Rodd

    We also had a late lunch of some very tasty bagels from Bowery to Williamsburg.

    Snooky with a bagel

    We had a plan to meet someone at ACMI but had some time to kill, so we decided to check out the “Story of the Moving Image” exhibition.

    Then we headed up to the lab to meet my friend J Rosenbaum and check out their fascinating new artwork Gender Tapestry. We took selfies that were uploaded and featured in some of the creepy generated faces.

    That night, the Snook – a notorious hater of musicals – gave me a lovely birthday present of attending & Juliet with me. (It helped that I told him all the songs were from the catalogue of Max Martin, Swedish Pop producer extraordinaire!)

    & Juliet

    I LOVED IT. It’s a retelling of Romeo and Juliet with loads of pop song mash-ups, a gay romance, great costumes, fantastic dancing, and Rob “Millsy” Mills as Shakespeare. I mean, WAS THIS WRITTEN FOR ME?!

    & Juliet

    Afterwards, we headed to trendy Bar Ampere for dinner and cocktails.

    Bar Ampere

    On our last day, we headed down to St. Kilda to enjoy the sunshine and check out the markets.

    Luna Park

    We were delighted to discover the nearby St. Kilda Community Gardens. Lovely place!

    We went for a walk along the beach. I always think of the line from the Paul Kelly song – “Where the palm trees have it hard.”

    St. Kilda beach

    We finished our trip with a spot of furniture browsing in Collingwood followed by beers at The Craft & Co.

    Beers

    And that’s where it would have ended, a nice ending to the weekend… except for a little accident on the way back to the hotel. Here’s how I described it to my sister:

    So Rodd and I were briefly walking back to our hotel in Melbourne so we could head to the airport. Down one of the busiest shopping streets, people everywhere.
    I walk over, like, a manhole or something.
    And my left foot lands crookedly
    And I start stumbling forward
    And I can’t get my feet under me
    And it’s like slow motion, and I’m like, yep, I’m going down. 😂
    And rather than try to land on my knees or my hands, perhaps sensing that I could risk breaking something that way, instead I face plant.
    Literally belly flop on the pavement, taking the brunt of the fall on my boobs.
    The Asian couple in front of me were like horrified “ARE YOU OKAY?!?”
    And Rodd helped me up and I’m okay
    Skinned my elbow a tiny bit
    But I suspect my chest is gonna hurt tomorrow.
    So that’s me. Still falling on my face, as a grown-ass adult.

    Over the course of the next week, my chest started to feel increasingly sore. I didn’t have any visible bruising, but sleeping on my left side was impossible and it got harder and harder to breathe. Finally I started to get worried that something was really wrong, so we headed to the hospital.

    In the hospital

    A few hours and a couple X-rays and an EKG later, they confirmed that I wasn’t having a heart attack. The doctor couldn’t rule out a cracked rib, but didn’t see one on the X-ray. The only thing I could do was wait until it stopped hurting, which took a few more weeks. In retrospect, seems likely that it was a case of costochondritis, where the cartilage between the ribs gets inflamed. I’m super grateful to the Australian health care system and the doctors for helping me rule out anything more serious! (Oh, and it didn’t cost me anything. 😅)

  • Sydney, we’re home ❤️

    Sydney, we’re home ❤️

    It’s the last day of 2022, and we’ve been home in Australia for two weeks now. It feels… truly surreal.

    For the last month or so in Europe, I kept having conversations with people who either A) didn’t realise we were moving back to Australia or B) thought we’d already left. For the record, the plan when we moved to Munich back in 2020 was always to return in a couple years. I had a vague idea that it would likely be in 2023, and that’s the time frame we shared with our German landlord, our Australian tenant, and my manager at AWS.

    Things suddenly got real in January 2022 when my manager asked me to call him. It turns out that my buddy who headed up the AWS Developer Relations team in Asia-Pacific had decided to resign and go work for a startup. My manager wanted to know if I was interested in the role. On one hand, it was a promotion of sorts, and it would be the #1 role I’d have wanted if I was moving back. But on the other hand, this was way ahead of schedule. I also knew that if I didn’t go for it, they’d hire someone else and that role wouldn’t be available when I eventually did move. I asked my manager if it would be possible to do the role remotely for the rest of the year, and he said it was as long as I was willing to deal with the timezones. I interviewed for the role, got it, and officially took it on in April 2022. For the last 8 months I’ve been managing a team of Developer Advocates in Asia-Pacific from Germany, which has meant being on calls at 6am and late into the evening.

    We left the timeline vague as long as we could. We knew we wanted to experience Oktoberfest and as many Christmas markets as possible, and I wasn’t sure yet whether I’d need to go to AWS re:Invent in November. Then the Snook resigned from his job at Google and finished up at the end of August (after 10 years!), which meant he only had a couple months to stay in the country legally on his visa. Our tenant Kelly let us know that she wanted to go visit family in Perth for Christmas, which meant that we’d need to arrange someone to look after Petey. Honestly, that made everything a lot simpler. On October 1st, we gave notice that we’d be out before the end of the year and we booked our flights for December 14th.

    In early November Rodd started organising for the furniture shipment and we had to decide what to keep or get rid of. We quickly decided not to keep the giant TV that we’d shipped from Australia, and I sold it to an Amazonian. We also sold off our gaming chairs, my IKEA desk, the Sodastream, my bike, and a bunch of other houseware items we didn’t need in Sydney. We also donated a bunch of old clothes that we hadn’t worn in ages to charity.

    Selling the TV

    We got back from our trip to Paris and Luxembourg exactly two weeks before our return flight to Sydney. There was so much to do! We made a “punch list” of sorts to make sure we didn’t forget anything.

    Punch list

    We used the same shippers we had two years earlier – OSS – and they were scheduled to arrive one week before we left. We set out all our suitcases and started filling them with the things we knew we wanted to carry back to Australia.

    Suitcases

    Then we started pulling together everything that would get shipped back. The challenge was that we had rented our place furnished, so we had to make sure we didn’t inadvertently ship back anything that belonged with the house. (Thankfully the Snook had taken very detailed photos of every drawer and cupboard when we moved in, which helped a lot!) Everything we were shipping from the kitchen went onto the dining room table, along with the coffee machine, grinder, and KitchenAid.

    Kitchen stuff

    We also had designated areas upstairs and downstairs so the movers would know exactly what to take.

    Rodd also turned off the server and packed it up with the other things from his office, including his standing desk.

    Office stuff

    The movers turned up on time and got to work packing it all up in boxes. They were finished within a few hours and carted it all away. It was only about five cubic meters in the end. It will eventually be loaded into a shared shipping container in Rotterdam and then begin the long journey back to Sydney. The normal estimate is up to 20 weeks, so we’re not going to see that stuff for a while!

    Boxes

    To my delight, two days later it began to snow in Munich. It was like the city wanted to give us the perfect send-off.

    Snow in Munich

    My old team in Europe hosted a fun goodbye session with a special trivia quiz themed all around me. They even got Rodd to help them out with some questions! The highlight was definitely the one about Rodd’s favourite type of nut, to which one of the answer options was “Deez.” 😂

    Kris trivia

    On our last weekend, we had one last Weisswurst Frühstück at the Augustiner Bräustuben. It’s an odd feeling, knowing that you are doing something for the very last time. I felt really emotional.

    Weisswurst Frühstück

    We went into the city to do some final shopping. Rodd was very keen to buy himself a Janker before we left. This is the traditional collarless Bavarian jacket. We went to several different shops trying them on before he found the perfect one in Lodenfrey. It’s a grey-green linen, which we figured he’d get more wear from in Australia.

    Janker

    It was snowing very prettily in the city, and we took the opportunity to enjoy the Christkindlmarkt one last time.

    Snowing in Munich

    We took the U-bahn to Poccistrasse and walked across the Theresienwiese. It was snowy and foggy, so much that you couldn’t see the far end. It felt like another world. Hard to believe a few months earlier it had been heaving with millions of people at Oktoberfest.

    Theresienwiese

    Our last few days in Munich were a flurry of cleaning and packing, with occasional breaks to look at the snow outside. We cleaned out the fridge and cupboards, and I returned my work laptop and some office furniture I’d borrowed. I gave the rest of our liquor to my colleague Viktor. We rehung our landlord’s artwork and restored the place the way we’d found it. We set up mail forwarding.

    Snowy back garden

    And then we were ready! The suitcases were packed full and just within the weight allowance. We did a final inspection and handover of keys the night before the flight, and then headed to an airport hotel for our final evening.

    Suitcases

    On the 14th, we walked over to the airport and dropped off our bags. We were flying Thai Airways through Bangkok, and we’d splurged on a business class upgrade. (It was the cheapest we could find.) We were chilling in the lounge when Rodd groaned. “The weather forecast,” he said, “is not looking good.” Something about blizzard ice. 😱

    We went to the gate at the nominated boarding time, but it was pretty clear we weren’t going to be getting on the airplane anytime soon. Eventually we started hearing announcements that Lufthansa were cancelling all their domestic and short-haul flights, and we saw lots of frustrated travellers lining up for rebookings. Our crew were optimistic though that the long-haul international flights would eventually make it out. After a few hours we started to see some activity from the snowplows on the tarmac.

    Snowplows

    Four hours after our original boarding time, they announced we could finally board the plane! Everybody cheered.

    On the plane

    We settled into our seats and I hit the button on my goodbye post on Instagram. The Thai business class seats were comfy but nowhere near as over-the-top as the ones on Qatar on the way there. The attendants told us that we’d be waiting a bit before the wings could be de-iced. We ended up sitting there for two hours! Eventually it was our turn for the de-icer, and then we could finally take off.

    De-icing

    Once we were in the air the flight was proceeding smoothly. We were a good six hours behind schedule so I knew we’d miss our connection in Bangkok, but it was out of our hands at that point. I was just hoping that we’d be still be able to stay in business class on whatever flight they got us on.

    Right as they were serving dinner, one of the attendants from Economy came running into our cabin and said something frantically to another in Thai that included the word “choking” in English. Clearly a passenger was choking(!), and there was a lot of dashing about and getting first aid kits and such. At that point, I honestly expected them to announce that we’d be turning around and landing somewhere to get the guy medical attention. That didn’t happen though, and our attendant told me later that there was thankfully a doctor onboard and the passenger was okay. Eventually they brought him (in an oxygen mask) and his wife up to sit in two of the free business class seats. Phew! It felt like the universe was really trying to keep us in Europe.

    As we got closer to Bangkok, we paid for wifi so we could check whether we’d been rebooked. Nothing yet. I look tired here, but I did manage to get some sleep. A lie-flat bed helps enormously, and I’m happy to report that at 5’10” (178cm) I just fit in the Thai business class seat.

    Flying over Myanmar

    When we deplaned in Bangkok, we immediately spotted a Thai Airways attendant holding up a sign with our names on it. She collected us and another guy who’d missed his flight as well. She explained that we were being rebooked on Qantas and helped us clear Security and get into the Lounge. We spent several hours in the Lounge waiting for our new tickets to be reissued. (The Lounge was nice enough, but I was disappointed the showers weren’t open.) Eventually we got our tickets, and as expected we’d lost our Business class seats. Not only that, but we were going to be sitting in the middle two seats of the middle block of four. 😩 But I tried to look on the bright side – the staff at Thai had done everything they could, and we were almost home!

    Bangkok Lounge

    Right before we boarded the Qantas flight, we got a notification on the app that our seats had changed. They moved us to a bulkhead row! Those are the seats that they reserve for people with infants, but there weren’t any on the flight so they bumped us up. That was really nice and had us feeling better about the nine-hour flight. We settled in for the final leg…

    Flight to Sydney

    We landed in Sydney on schedule and were through immigration and customs quickly. Before you know it, we were in a taxi heading back to town. We had actually booked two nights in a hotel, knowing that the house wouldn’t be in a state to immediately move back in.

    In the taxi

    We dropped off our luggage at the hotel and then headed to the house. Kelly had moved out a few days earlier but had been coming by to feed and water Petey. We found him in the closet, and thankfully he seemed to forgive us pretty quickly for leaving him.

    Petey

    It was honestly a little depressing to return to the house. It was in decent shape, but two years of unprecedented rain had taken a toll. There were spots of mold on the ceiling (despite Kelly cleaning it repeatedly), and everything we had put in storage was either musty (at best) or covered in mildew (at worst). We also didn’t have much furniture beyond our bed and dining room table. Kelly had left us an old couch (that Petey had torn to shreds) and a small TV with a broken remote. Rodd said exactly what I was thinking: “This feels like camping.”

    We set to work unpacking and cleaning. I tackled the bedroom and the bathroom while he worked on the kitchen. The washing machine broke on the very first load, but we persevered and ordered fresh sheets from Amazon. By Saturday night, we were sleeping in our own bed again. On Sunday we were restocking the kitchen and signing up for new mobile plans.

    In bed

    Unfortunately by Monday it was clear that I was sick. I started to feel a lot of chest congestion, and then my nose stuffed up completely. By Wednesday I was blowing green goo and I couldn’t smell anything. Repeated Covid tests were negative, so I went in to see my GP. He reckoned it was a sinus infection and put me on antibiotics, with some codeine to help me sleep at night. That knocked me out for the rest of the week, and I couldn’t really do anything but knit. It made for a quiet and rather depressing Christmas. The only highlight was that my sense of smell came back on Christmas Day so I could celebrate appropriately:

    Petey eventually left the closet and became very, very clingy. He wants to make sure we never leave him again!

    Petey

    I am finally on the mend, and the house is starting to come back together. The washing machine repairman came out and estimated a thousand bucks for a new motor for our 14yo machine, so we said “Stuff it” and bought a new set on Appliances Online. They delivered them two days later, hooked them up, and took the old ones away. Yay for clean laundry!

    Washer and dryer

    We also took advantage of the Boxing Day sales to get a new OLED 4K TV. Hooray for overly giant televisions! (He claims it’s the same size as the old one. 🤔)

    Rodd was very happy to get back to his induction stovetop, and he has used it to cook me some very excellent meals over the past fortnight. We’ve made a couple trips to Coles as we begin to restock the pantry, and I’m once again blown away by the quality and variety of produce we get here in Sydney.

    And finally this week I was well enough to go into the AWS office. I picked up my new laptop from IT and started tackling a backlog of emails and overdue tasks.

    In the AWS office

    So… we’re back, and people keep asking me what it feels like. It feels weird. It feels like we never left. It feels like if I didn’t have physical proof that we were there – mainly in the fact that our house is still missing most of its furniture – I’d think it was all a dream. We were gone for 842 days. 120 weeks. Two years, three months and change. Did it actually happen? How did it go so fast?

    I’m happy to see Petey. I’m happy to see my friends and neighbours and family again. I’m happy to not struggle daily with a foreign language, and to hear the Ocker accent again. I’m happy to see the ocean, eat amazing Asian food, watch the cricket, and drink a beer that isn’t a Helles. My hair texture has already changed for the better. (Munich water is *very* hard.) Australian cafe culture breakfasts are the best in the world. These are all good things.

    But it’s really hard not to miss Munich. I miss having four distinct seasons. I miss the lack of humidity. I miss riding my bike all over the city and not having to worry about an irate driver hitting me. (Sydney is not cycle friendly.) I miss living in a city that is beautifully maintained, where piles of rubbish and empty storefronts are rare. I miss cheap and convenient public transport, and high speed rail between cities. I miss frozen, bake-at-home giant pretzels. I miss not needing to drive a car, pretty much ever.

    I completely realise how all that sounds. Believe me, every single European thought we were crazy for being sad about coming back. And I know – I know – how incredibly fortunate we are, no matter where we live. This is just the normal comedown you have after a fabulous vacation, except that the vacation lasted 842 days. We’ll be all right.

    Don’t cry because it’s over. Smile because it happened.

    Thanks to everybody who helped us out along the way. Thanks to our family and friends who supported us in the move, and to our employers who made it possible. Thanks to our European friends for welcoming us so heartily. And thanks to Kelly for looking after our place and our dear Petey Cat.

    It’s nice to be home.

    Together in Sydney

  • AWS folks to follow on Mastodon

    I’m still enjoying Mastodon and staying the hell away from Twitter, and it seems like more and more folks are making the switch. If you use AWS and want to follow more folks in the developer community, my colleague Gunnar has curated several lists of employees, Developer Advocates, AWS Heroes, AWS Community Builders, and User Group leaders. Here’s how to get the latest lists and import into your own Mastodon account:

    1. Click on the the Actions tab on Gunnar’s Github repo.

    Click on the Actions tab

    2. Click on the latest workflow, whatever it happens to be.

    Click on the latest workflow

    3. Scroll down on the page to the artifacts and click on the list to download a Zip file.

    Artifacts4. Unzip the file. Then go to the Settings page within your Mastodon instance and select “Import and Export” and then “Import” options.

    Importing the list

    Leave the Import type to “Following list” and Merge so you don’t overwrite your existing followers list. Then select the list you want to import and hit Upload. Easy peasy!

    Incidentally, you can see my Mastodon profile at https://aus.social/@web_goddess and follow me if you like, or you can subscribe to an RSS feed of my posts.

  • Paris and Luxembourg

    Paris and Luxembourg

    At the end of November I had a couple work commitments a week apart in Paris and Luxembourg, so we decided to combine them into a single trip – the last and biggest of our time in Europe. (I suspect it’ll also be the longest blog post!) ❤️

    We kicked off with a very early (6:45am!) Sunday morning TGV train from Munich.

    Train to France

    We bought coffee and pastries to have breakfast on the train, and we just relaxed and watched the scenery as the sun came up.

    On the train to Paris

    By 10:30am we were crossing the Rhine into France.

    Crossing the Rhine

    The train had been moving pretty fast through Germany, but you could definitely tell when we crossed over and started really moving. (That’s about 200mph.)

    316 km/h

    The French countryside is very pretty.

    We arrived at Gare de l’Est around 12:30pm and caught a taxi to our hotel. We were staying at the Hyatt Regency Paris Étoile in the northwest of the city. Not an especially touristy area, but it was fairly close to my office. After we dropped off our stuff, we headed out for a walk and ended up at the Arc de Triomphe.

    Arc de Triomphe

    We took the underground passageway and popped out right at the base of the arch.

    Arc de Triomphe

    The Arc de Triomphe honours those who fought and died for France in the French Revolutionary and Napoleonic Wars. Those carvings there amused me, as the ones on the right are meant to be bearded Germans while the ones on the left are the French. In the middle under the archway is the Tomb of the Unknown Soldier from World War I.

    Tomb of the Unknown Soldier from World War I

    Hey, there’s the Champs-Élysées! While it’s considered the most beautiful avenue in the world, on a rainy day with lots of traffic it just looks like any other street.

    Champs-Élysées

    We next headed towards the Seine, passing by some very fancy shops. Mr. Snook was looking pretty fashionable himself in the Belstaff.

    Givenchy

    We crossed the Seine at the Pont de l’Alma and got our first glimpse of the Tower.

    The Seine and the Tower

    We walked along the pedestrian promenade towards the Tower and passed by the Memorial National de la Guerre d’Algerie.

    Memorial National de la Guerre d'Algerie

    And then we were at the Tower! There’s a lot of work being done around the base, presumably ahead of Paris hosting the Olympics in 2024.

    Eiffel Tower

    We crossed back over the Seine at the Pont d’Iéna.

    Crossing the Seine

    On the other side, we walked up past the Trocadero Gardens to the Palais de Chaillot. Our only previous trip to Paris had been in 2001 (21 years ago!), and we both had a vague memory that this had been where we posed in front of the Tower all those years ago. Unfortunately it was fenced off for renovations…

    View of the Tower blocked by fence

    …but I peeked through the little window. Pretty sure that’s where it was.

    Eiffel Tower

    The date was Sunday, November 20th, which means it was our 18th wedding anniversary. I had planned something very special for dinner that night – a river cruise with Ducasse sur Seine.

    Ducasse sur Seine

    This is a beautiful glass restaurant boat docked right at the Pont d’Iéna. (Note: our Uber driver was confused by the directions as the wharves are below the level of the street. He ended up letting us out on the corner and we went down the stairs to the docks.) The host took our jackets and led us to our table, which had a perfect view of the Tower.

    Our table at Ducasse sur Seine

    I had booked us for 4-courses with matching wines, starting at 19:30. That meant we had an hour before the boat actually left for the 2-hr river cruise at 20:30. We had both dressed up and we were feeling pretty special.

    The menu from our dinner is currently on a boat somewhere between Amsterdam and Sydney, so I don’t have exact details on what we ate. (The online menu has been updated since then.) But we started off with some small bites along with bread and butter.

    There was also a small soup… potato, I think?

    Soup

    At 20:00, the twinkle lights went off on the Tower. 😍

    Twinkling Eiffel Tower

    For the second course, I had a beetroot and pomegranate dish while the Snook had a duck terrine.

    At this point, the boat started moving! We slowly cruised east along the Seine. Here we are passing under the ornate Pont Alexandre III bridge.

    Pont Alexandre III bridge

    We also cruised past the Tuileries Garden, where I knew a big Christmas market was happening!

    Tuileries Garden

    Mr. Snook was enjoying himself.

    Rodd

    The cruise goes all the way up to Île de la Cité, under the Pont Neuf, and around the island before heading back. Unfortunately the angles were such that we couldn’t really get a good view of Notre Dame.

    Pont Neuf

    For the mains, I had scallops while Rodd had lobster.

    And then it was time for dessert! Mine involved chocolate and ice cream, while the Snook’s was clementine (orange) flavoured.

    On the return trip we got to see the other side of the river (the Left Bank). Here’s the Musée d’Orsay.

    Musee d'Orsay

    And then the Tower came into sight, and we knew we were at the end of the trip. What a wonderful evening! Good food in an unforgettable setting, with my favourite person in the world.

    Returning to the Tower

    (more…)

  • DACH Community Day in Dresden and the Sächsische-Schweiz

    DACH Community Day in Dresden and the Sächsische-Schweiz

    Recently I was very honoured to be invited by some of my friends in the DACH (aka Germany, Austria, Switzerland) tech community to be the keynote speaker for AWS Community Day 2022. This was going to be their first time back in person after two years of virtual events, and I was very excited to finally meet some of them in person. Rodd was going to accompany me, of course, and he had planned out some fun touristy things for us to do as well.

    We caught the Tuesday morning train from Munich. It was about a 4.5hr trip, including a short transfer in Leipzig. I mostly used the time to finish off my slides for the keynote!

    Train to Dresden

    On Tuesday night, the local AWS Dresden group were having a pre-Community Day meetup so we went along. Here’s my buddy Mohamed presenting about a couple serverless apps he built, as well as Martin from Groundfog sharing how they built a personalised web experience for visitors.

    Wednesday was the big event, so we headed over early in the morning to the conference venue to help set up. My friends Linda (from Vienna) and Markus (from Munich) were going to be kicking things off in the morning.

    Me, Linda, and Markus

    Markus insisted that I wear the AWS dress. 😂 He was also going to be introducing me on stage.

    Me and Markus

    Eventually everything was ready and the hosts kicked off the morning. I was very excited to see them launch the Förderverein AWS Community DACH, which brings together all the different AWS groups into a single association. (Bonus points for the pun in the logo – in German, “Dach” means “roof”.)

    Launching the Förderverein

    Markus gave me a very humorous intro in which he’d scraped some dubious photos from my social media accounts, but thankfully he ended with the nicest one. ❤️

    Markus introducing me

    My talk started out quite personal, talking about how isolated I felt in the first ten years of my career. It wasn’t until I started going to meetups and hackathons that I finally felt like I belonged. At that point, it turned into a big soppy love letter to the folks in the room, who were my first friends when we moved to Germany. I ended by talking about how much AWS values the external community, and some of our plans to support them even more in the future.

    My keynote

    One last photo of me with Markus and Linda, who I’m going to really really miss. 😢

    Me, Markus, and Linda

    We spent the rest of the day at the conference, going to sessions and meeting sponsors and attendees. It was a small but passionate crowd, and everyone was so excited to get back together in person. Thank you to the organisers for inviting me!

    We were pretty tired that night but of course had to take advantage of the hotel sauna…

    Post sauna

    I worked from the hotel the next day, but Rodd got me out into the sunshine for a quick walk and lunch in the city.

    Me and Rodd in Dresden

    We were very amused to see that there is actually an Australian restaurant in Dresden! The Snook was dubious, but hey, they serve kangaroo goulash soup. 😂

    We walked up to Brühl’s Terrace, a large elevated terrace overlooking the Elbe. It was a beautiful day.

    The Elbe from Brühl's Terrace

    Here we are with the Hofkirche (Dresden Cathedral), the most important Catholic church in the city.

    Hofkirche

    We also found the Lego store, which had a “Selfie Point.” Okay, then.

    Lego Store Dresden

    Our hotel was very close to the famous Frauenkirche in Dresden. This Lutheran church was destroyed during the firebombing of the city in 1945 and left in ruins as a war memorial for 50 years. It was only rebuilt after German reunification and was completed in 2005. The darker stones you can see were salvaged from the original church and were able to be reused in the reconstruction.

    Frauenkirche

    We went inside to take a look as well. It was all soft pastels, trompe l’oeil, and extravagant carvings. Very pretty! The story of how they rebuilt it is truly amazing.

    Inside the Frauenkirche

    That night we had booked a special dinner at Genuss-Atelier, a local Michelin-starred restaurant. It was described as “rustic vaults” and it felt very cozy.

    Genuss-Atelier

    One of the coolest things was that the tables had built in drawers with all the cutlery you’d need, so the waiters didn’t need to keep bringing fresh sets. I’ve never seen that before.

    Cutlery drawer

    We went with the six-course “Surprise” menu, and since it’s all seasonal and not printed, I tried to keep notes on my phone about what we had. We started with a couple small bites: pickled herring with potato chip, and felafel with yogurt.

    Small bites

    The Snook enjoyed the little bread rolls and butter. (He may have also been drafting a post for We Want Plates.)

    Bread and butter

    Our first proper course was beef tartar with sour cream and chives.

    Beef tartar with sour cream and chives

    Next was a vegetarian course – turnip cabbage (aka kohlrabi), celery, and yuzu.

    Turnip cabbage, celery, yuzu

    Next was the fish course – “eagle fish” (which we think is also called a “meagre“) with radicchio, celery, and capers.

    Eagle fish with radicchio, celery, capers

    For the meat course, we had lamb with pumpkin and polenta, and of course we opted for the extra shaved black truffle!

    Lamb with pumpkin and polenta

    Everything was delicious and beautifully prepared. We were also having matched wines with each course, all of them from the local area. Rodd was amused when the waiter excitedly told him how one of them was matured in oak, which is something of a novelty in the region. (It’s very common in Australia!) Needless to say, we were having a wonderful evening.

    And we finished with TWO desserts! First was “blueberry, butter cookie, and vanilla.”

    Blueberry, butter cookie, and vanilla

    And lastly, “banana, coconut, mango sorbet.” Yum!

    Banana, coconut, mango sorbet

    Highly recommend Genuss-Atelier if you are ever in the Dresden area!

    (more…)

  • Seattle and the Spheres

    Seattle and the Spheres

    Solo trip! I had a work event in Seattle, so I made my first long-haul trip without the Snook in several years.

    Flying to Seattle

    My hotel room had a nice view of the city. It wasn’t water, but it was still pretty.

    Seattle

    The event was an internal work conference so there’s really nothing to share there, but one highlight was that my team arranged for a professional photographer to take headshots for us. He’d asked us to bring a prop that showed our “personality.” As you can see, I figured I might as well bring along the knitting!

    Me knitting

    I had a couple hours free one afternoon so I couldn’t resist the opportunity to finally visit the Amazon Spheres. Somehow I had managed to work for the company for nearly 4 years without ever visiting Seattle! Time to rectify that.

    The Spheres

    I walked over from the hotel. The Spheres opened four years ago and are next to one of the big Amazon buildings. They’re made up of three adjoining spherical glass domes, and they’re intended as an employee lounge and workspace. (They do have occasional public tours too.)

    Inside the Spheres

    The first thing I noticed inside was the heat and humidity. The domes are kept at a constant temperature of 72 °F (22 °C) and 60 percent humidity during the daytime. The other thing I couldn’t appreciate from the outside was how big they are. They’re several stories high inside!

    Path

    There are various paths through the plants on each level, and I wandered through taking photos. Almost felt like I was back in Australia!

    The juxtaposition of the riot of colourful leaves and flowers next to the organic shapes made of steel and glass was really beautiful.

    Me in the Spheres

    The biggest tree in the Spheres is this 55-foot (17 m) Ficus rubiginosa tree that had to be lifted in with a crane. You can ascend through its branches on a walkway.

    Fig Tree

    I needed to have a work call with a colleague back in Australia, so I found one of the work areas and settled into a chair. It makes for a pretty stunning backdrop!

    Work area

    Eventually I made it to the top floor where I was able to get a better view of the living green walls. The plants have been carefully chosen as different plants thrive at different heights and temperatures. The plants at the top are very different from the ones at the bottom!

    Green wall

    Taking a selfie with the Spheres sign is practically a law for Amazonians visiting Seattle. 😂

    The Spheres

    Jeff and Tricia

    And that was it for Seattle! I headed for my flights back to Munich, passing through O’Hare and my least favourite tunnel in the history of airport construction. 😐

    O'Hare Tunnel

  • Building the Oscar Contest entry form

    As always, I like to use the Oscar Contest as a way to try to learn something new. This year I decided to build it using AWS Amplify, a set of tools and services that can be used to quickly build and host mobile and web apps across a range of frameworks. I’ve somehow managed to avoid touching React, so I figured I might as well use that too. Here’s the basic architecture I went with:

    Contest architecture

    I figured it might be fun to walk you through the process I used in case you’d like to try something similar. The first step (if you haven’t already) is to install the AWS CLI and Amplify CLI and get them configured with your AWS account credentials. Then I created the basic React project using this command:

    npx create-react-app oscars2021

    That will download a bunch of stuff and set up the basic project files for you.

    You can then switch into that directory and start the app to verify it’s working.

    cd oscars2021
npm start

    Running React app

    Now it’s time to hook your project up to Amplify, using this command:

    amplify init

    A wizard will walk you through setting up various parameters for your app, including your preferred code editor and the type of app you’re building. Here’s what I selected:

    Amplify configuration

    This will initialise your project in the cloud and set up some resources for you.

    Now it’s time to add storage, which in my case meant an Amazon DynamoDB table. This is where I’d be storing each entry as it came in.

    amplify add storage

    This will again kick off a wizard that will walk you through some configuration options. I selected “NoSQL Database” and then set up the columns that I wanted in the table.

    Database config

    I also selected “id” as the partition key, with no sort key, no secondary indexes, and no Lambda trigger.

    More DB config

    The next step is to add the API and Lambda function that will actually record the user’s entry. This is done with the command:

    amplify add api

    Again, a wizard will walk you through configuration. I created a REST API with the path “/entry” and created a new Lambda function using the Serverless ExpressJS template. I also gave the function permission to Create and Read from the storage (aka DynamoDB table) we just set up. I didn’t restrict access to the API, as I want anyone to be able to enter.

    API configuration

    Time to actually update the Lambda function! I went into my preferred code editor (Atom) and opened the project. The function is located in “amplify/backend/function/oscarsfunction/src/app.js”. There are some commented example methods that I deleted and replaced with the code below. This adds the AWS SDK (so I can save to DynamoDB), a method for generating random IDs, and the actual post method to save the entry. (You can download this code from my Github project here.)

    Function code

    The next step is to use Amplify to push the newly created backend storage, API, and function to the cloud! You can do this with the command:

    amplify push

    Amplify will ask you to confirm which resources you’re deploying, and then it will start the process using AWS CloudFormation. This can take a little while.

    Amplify push

    If you make any changes to the function code later, remember to push the changes to Amplify so they are uploaded to AWS! In the meantime, it’s time to install some dependencies I need for the form frontend.

    npm install aws-amplify @aws-amplify/ui-react
npm install bootstrap
npm install react-bootstrap

    Once all that’s done, you can finally edit the form! The actual React app lives in “src/App.js”. I won’t go through everything I did (you can check the code out yourself), but basically I made sure to include Amplify (so the frontend can talk to the backend) as well as React Bootstrap. I also tweaked the CSS and added a couple images. Each time you save a change, the app will recompile and update in your running browser window. I also opened the “public/index.html” file and changed the title and description of the page.

    Form code

    You can also test out the form in the browser to ensure it’s working. When I opened the AWS Console and looked in DynamoDB, I could see entries being saved correctly into the dev environment table. 🎉

    The final step is to deploy the frontend, and Amplify makes this pretty easy too. I created a new repo at Github and then pushed my code to it.

    Github create repo

    Then I went to the AWS Amplify console and clicked on my app. If you click on the “Frontend environments” tab, you’re presented with a range of options for hosting your app.

    Frontend hosting

    I clicked the one for Github and then went through the process of granting access to my Github account. Then I selected the repo I’d just created with the code for my app, and left the branch set to “master.” On the next screen, I left checked the option to “Deploy updates to backend resources with your frontend on every code commit” and created a new “prod” environment as the target. I also had to create a new IAM role for the deployment process. Once you save and deploy, Amplify will grab your code from Github, run the build script and any tests you’ve configured, and deploy the resources into your account. The build for my app takes less than 4 minutes to complete.

    Completed deployment

    The beauty of the CI/CD pipeline is that whenever I modify the code and push it to Github, the whole process will kick off automatically! The Amplify console also gives me the URL to the hosted app, which is where you can enter the contest. When I check DynamoDB now, I can see entries coming through to the prod environment table. When the contest is finished, I can shut down and remove all the app resources by simply running this command:

    amplify delete

    If you’d like to try out Amplify yourself, I can recommend a couple resources. The AWS website has a very simple, step-by-step tutorial to Build a Basic Web Application that you can work through, but it doesn’t include React or the CI/CD part. If you want to copy what I did, check out my colleague Marcia’s YouTube videos  on  building a Contact form with React and automating your CI/CD deployments, which gave me the basics of everything I needed to build the contest entry form. Thanks Marcia!

  • A new home for w-g

    Well, that was an ordeal.

    A few weeks ago I got an email that my shared web hosting account (that I use for both this site and RoaldDahlFans) was up for renewal, and it reminded me that I didn’t like the host I was using. I was stuck on PHP5 and they were going to charge me more to move to a server with PHP7, and that pissed me off. So I asked Twitter what to do.

    Wordpress hosting tweet

    I got a lot of different answers, most of which were a LOT more expensive than I was spending. I was okay with going up a little bit, but these are both hobby sites rather than professional so anything over, say, $20/month was too much. A few folks threw out the suggestion to use Amazon Lightsail, which was intriguing. After all, it’s always a good idea to eat your own dog food. (I should also mention that these sites are and have always been hosted and paid for by me personally, so they’re not running on my employee AWS account or anything like that.)

    I thought I’d document the process that I followed for the sites, which was based on this blog post and this AWS tutorial. Truthfully, setting up a new WordPress site on Lightsail is super easy and takes less than hour. All the complexity was because I was migrating two very old and very crufty sites from PHP5 to PHP7 and trying to preserve twenty years’ worth of old URLs. So even though I encountered a few hurdles not described in the tutorials, I wouldn’t let that stop you. Read on for the details…

    (more…)

  • Photo Post

    A new and dangerous addition to the office kitchen, especially for a noted 🥨 addict like myself… #temptationaccomplished

    A new and dangerous addition to the office kitchen, especially for a noted 🥨 addict like myself... #temptationaccomplished

  • Photo Post

    Yay! @justasitsounds, @food_angie, and Pepper came to visit the Glamazon booth! #amazonaustralia @amazonaustralia ❤️🏳️‍🌈🐶

    Yay! @justasitsounds, @food_angie, and Pepper came to visit the Glamazon booth! #amazonaustralia @amazonaustralia ❤️🏳️‍🌈🐶