Category: Uncategorized

  • 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?

  • Dirty Girls

    This is amazing. In 1996, a high school senior in California shot a documentary about a group of punk-feminist 8th grade girls. It’s a time capsule. I love this…

    My impulse when watching was to figure out where I would’ve been in that particular social pecking order. (I graduated in ’95, so a few years older than most of the students in the film.) I would’ve admired those girls, I think, but I didn’t have the self-confidence to fully identify. I was trying so hard to not stand out, while simultaneously really wanting to. I was probably one of the milquetoast hangers-on, to be honest.

    I was really happy to read a follow-up to see that the women are still kicking ass now, 20+ years later, and they’re fine with the reaction to the video.

  • IoT all the things! 💥

    IoT all the things! 💥

    When I was in Melbourne last week, my friend Frank gave me an AWS IoT Button to play with. The Snook has been on a home automation tear lately so I told him we’d need to come up something cool to do with it. Less than 24 hours later, he messaged me:

    Today the Button was still in its box, taunting me, so I decided it was time for action. A few short hours of fiddling later, the “Smart” Litterbox was born!

    Full details are over at Github, but in a nutshell: whenever we clean the litterbox, we single-click the button to update a timestamp in DynamoDB. A double-click creates a task to buy litter bags in Todoist, and a long-press creates one to buy litter. Once a day, a serverless Lambda function checks the timestamp in the database and sends a reminder email if it’s more than two days in the past.

    Pretty cool, eh? Now I just need to get some more Buttons!

  • WordPress on EC2?

    Note to self… look into hosting WP on AWS. 🤔

  • MUGicalNode – now with daily digests!

    Last week I was delighted to receive an honest-to-goodness feature request for MUGicalNode from my new colleague Paul. He said that he really liked the calendar, but he had issues when viewing on his iPhone. Namely, on an day with lots of events, you end up with something like this:

    MUGicalNode - calendar chaos

    That’s not very nice, is it? He wondered if there was a way to create a single “event” per day and then have that be a list of all the meetups. Sounds like a good idea, I said!  This afternoon I set to work making that a reality.

    Introducing digest calendars

    I modified my existing “makecalendar” Lambda to also create a separate digest calendar and upload it to the same bucket. For each day, it creates an all-day event with a description that lists the events and their URLs. You don’t get as much info (like the individual meetup description or venue details), but you can click on the link to go to the relevant Meetup.com page. I think it’s a really nice solution!

    Digest calendar detailsDigest calendar details

    Note: depending on how many events there are on the day, you may need to click “Show All Notes” to see the full list on your phone.

    If you’d like to subscribe, the URLs are:

    • https://krishoward.org/sydneymugs-digest.ics
    • https://krishoward.org/melbournemugs-digest.ics
    • https://krishoward.org/brisbanemugs-digest.ics
    • https://krishoward.org/perthmugs-digest.ics
    • https://krishoward.org/hobartmugs-digest.ics

    Please let me know if you encounter any issues. Thanks to Paul for the suggestion, and to the Snook for helping me untangle a mess of timezone nonsense.

  • Introducing MUGicalNode!

    Back in January 2017, I wrote a PHP script I called MUGicalPHP that used the Meetup API to create iCal feeds (ie calendars you could subscribe to) for tech events in various Australian cities. The idea was that it would update the feeds every day with new events. It was kind of flaky though, and it often failed silently without me knowing about it. (Sometimes the Meetup API just decides to return ZERO RESULTS for some reason. 🤷‍♀️) Still, it was useful and mostly worked, so I shared the links with lots of folks in the community and made plenty of use of them in my job at YOW!.

    Fast-forward to 2018, and now I’m working at AWS. As I was going through the hiring process, it occurred to me (not for the first time) that I could probably use “that Lambda thing” to rewrite my meetup script to be “serverless.” So… I did it!

    MUGicalNode is now working and it’s up on Github here. If you were using the old links, they should point to the new version and hopefully you shouldn’t notice any change at all (beyond them being more reliable and frequently updated!). If you just want to subscribe, add these in your calendar application of choice:

    How it works: I started the project with a straight monolithic reimplementation of the old PHP script, and I was super proud when I got it working locally. Unfortunately, the Meetup API did not like me firing off lots of requests in parallel and promptly banned my access key for a bit. As a result, I ended up breaking the script into three parts: “getgroups,” “getevents,” and “makecalendar.”

    • “getgroups” runs once a day for each city. It requests all the groups in a location matching a topic list and then stores those groups in Amazon Simple Queue Service.
    • “getevents” runs every minute of every day. It checks the SQS queue to see if there are any groups. If there are, it gets the top one and requests the next 10 events for it from Meetup.com. If events are returned, they’re saved in an Amazon DynamoDB database.
    • “makecalendar” runs once a day for each city. It retrieves all the events for the city from the DynamoDB and then constructs an iCal feed from them. It then uploads the file to an Amazon S3 bucket.

    This seems to spread the requests out enough that Meetup doesn’t complain. That said, as of three days ago SQS is now a supported event source for Lambda! That means instead of triggering “getevents” every minute, I could simply use the queue as the event source and have it trigger automatically. My only hesitation is the throttling on the Meetup side, so I’m going to have to do some testing to see if this is feasible.

    Costs: I don’t have an operating cost estimate for this project, but I suspect I will be well within the free tier for all these services. I’ll let you know at the end of July.

    Additionally: As part of this project, I also rebuilt my old personal site https://krishoward.org and migrated it to AWS for hosting. That code’s on Github here. I was indebted to this great post from Vicky Lai that describes how to get your custom domain and SSL certificate working with S3 buckets.

  • New adventures…

    I’m both excited and sad to announce that today is my last day at YOW! Conferences. In many ways this has been my dream job, and the last two years have flown by really quickly. I’m proud of every event we’ve put on, and YOW’s commitment to supporting and growing the APAC tech industry – especially with regards to diversity. Since I’ve been here, I’ve been honoured to meet and spend time with some of the smartest, most interesting folks from our community and overseas – people whose work is going to change the world. And in a way, that’s what prompted me to leave. After being around such inspirational folks tackling big problems… I suddenly realised that I missed being those people. The fun of a conference is in taking what you learn back to your team and building on it, and I need that challenge. I want to work with the teams and companies solving these big gnarly problems and see what I can do to help.

    Of course, it’s super hard to leave Dave and the amazing YOW! Team. Not only are they all friendly and great at their jobs, I know what events and speakers they have coming down the pipeline – and I’m already regretting not being there for all of it! If you get a chance to attend one of our conferences, you should. (And Dave – I’m available to speak whenever you want! 😃)

    Just for fun, I thought I’d add up all the events I’ve gone to on YOW!’s behalf over the last twenty months…

    YOW Confs (attending or hosting) – 11
    YOW Confs (speaking) – 4
    YOW Nights (hosting) – 19
    YOW Nights (speaking) – 3
    Non-YOW Conferences (attending) – 7
    Non-YOW Conferences (speaking) – 8
    Hackathons (judging) – 3
    Meetups (speaking) – 36
    Meetups (attending) – 92
    Training courses (attending) – 2
    User group meetups (hosting) – 12

    That’s just shy of 200 tech events (197 to be exact) across four countries. 😱

    So what will I be doing with myself after today? First I’ve got a little bit of time off, and I plan to spend it catching up with friends, knitting, and watching a lot of Netflix. Then on the 25th I will be starting a new role with Amazon Web Services (AWS) in Sydney in the Solutions Architecture team. I’m so excited to meet everyone and start learning new things!

    And NO MEETUPS for while… at least a month. Or maybe a fortnight… or a week. We’ll see. 😜