Category: Uncategorized

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

  • 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. šŸ˜œ



  • Weekly Meetup Wrap ā€“ February 18, 2018

    Another week with three more meetups! They’re all data-focused as I’m trying to get the word out about the YOW! Data Call for Presentations, which closes on March 18th.

    The first was Sydney Cassandra Users, which had a special guest speaker all the way from the US – Rachel Pedreschi from GridGain!

    Rachel gave us a thorough introduction to Apache Ignite – an open source caching layer that can sit on top of Cassandra. (She admitted that it’s also a database in its own right.) Not many of us were familiar with it, so it was great to get a tour from someone who knows it very well.

    My second meetup of the week is one that I’ve been keen to check out from the first time I saw its inventive acronym: SURF (Sydney Users of R Forum). The speaker was Dr. Fabian Held from Sydney Uni speaking about using R for network analysis.

    I found this fascinating. (You can read his whole talk here.) Dr. Held pointed out that research has shown your social network can influence your probability of being obese or having certain diseases. By mapping the relationships in the network, we can analyse it in some interesting ways. The tool used in the demos was tidygraph, an API for graph manipulation.

    One of my favourite takeaways from the talk was of the existence of Zachary’s Karate Club. This was a real social club studied by researcherĀ Wayne W. Zachary in the 70’s and the data set of relationships is available for for you play with. It’s a bit of a meme among scientists who study networks. How delightfully obscure!

    My last meetup of the week was Sydney Machine Learning at the AWS offices in Sydney. I remember attending this one just after it started a year ago – it’s a huge group now!

    The first speaker was Luke Metcalfe of MicroburbsĀ talking about what data science is, what makes a good data scientist, and how to hire and motivate good ones. I especially liked some of his advice for getting into data science: “Good data beats the best model.”

    The second talk was Dr. Elaina Hyde, an astrophysicist and consultant at Servian. As a dyed-in-the-wool space geek, this was definitely my favourite talk of the week. Dr. Hyde talked about using data science techniques in her analysis of the Sagittarius Stream. It wasĀ fascinating!

    Other Stuff

    • There was an interesting discussion on Twitter last week about engineers being “on call” for support. John Barton wrote a nice summary of the debate here as well as the approach he takes with his teams.
    • What’s your view on the AMP letter? For what it’s worth, I tend to agree with Tim Kadlec. I think giving some search engine juice to pages that are secure and load quickly is a good idea… but it needs to be based on a objective measure, not use of a single tool.
    • YOW!’s speaker development program for women in tech has launched for 2018! We have rebranded it as New Voices in TechĀ (as it’s not really about competition) and it’s open to all women in Australia. If you are selected, you’ll receive a full day of speaker training with Damian Conway (who isĀ amazing). Well worth entering if you want to learn to be a better speaker!
  • I Rode a Share Bike So You Don’t Have To

    I’ve done my fair share of griping about the stupid share bikes littered all over Sydney.

    Yesterday though, I realised I had the perfect use case for one. The Snook’s office was having a party over at the Entertainment Quarter, and though it isn’t far from our house, it’s kind of a pain in the ass to get to on public transport. And sure, I could ride my own bike over there, but then I planned on having some beers and taking the bus back with the Snook which ruled that out. A one-way rental on a share bike seemed like the perfect solution!

    First things first – which of the (many) options to choose from? I googled “Sydney share bike review” and found this article inĀ The AustralianĀ which indicates that Mobike (the orange and silver one) and Ofo (the yellow one) were the best in terms of build quality. I quickly installed the Mobike app. Next I grabbed my own helmet – no head lice for me, thank you! Then I just needed to locate the nearest bike. OH RIGHT, THERE ARE LIKE EIGHT ON THE FOOTPATH ON MY STREET RIGHT NOW.

    I used the app to unlock the nearest Mobike, which was painless and honestly kind of neat how it worked. Then I raised up the seat as high as it would go. Hm. First problem. This felt pretty low. (For the record, I’m 5’10” / 1.78m with longish legs. Tall, but not freakishly so.) I persevered though, and took a quick photo to send to the Snook (who was already at the party) to tell him to expect me in 25 minutes.

    SEE? I GOT ON!

    Then I headed off through Chippendale. About thirty seconds later, I went to change gears and discovered THIS BIKE HAS NO GEARS. The handlebar control that I thought was a gear shifter is just a bell. How can you offer bikes in SydneyĀ without gears?? We’re not Santa Monica. We have HILLS. Oh, and did I mention this bike was HEAVY AS HELL? No way was I puffing through the back streets of Surry Hills on a too-small tank of a bike with no gears. I pulled over at the nearest pile of share bikes to chuck the Mobike and try another. I’d made it three blocks.

    After locking that one up, I switched to an Ofo (the yellow one). The seat went a little higher on this one. Still not as high as I need, but better. Also – it has gears! I felt optimistic. I headed off through Redfern and Surry Hills.

    Well. My 25 minute ride actually took me 35 minutes, and that’s not counting the couple of times I stopped for a drink of water. (It was a hot and sunny day.) Even with gears, that heavy-ass, still-too-tiny bike was murder on the hills. I even ended up walking it on a couple. I finally made it to the Entertainment Quarter though, parked, and staggered into the party – sweaty and dazed and in desperate need of a beer. On the upside, neither bike ride actually cost me anything as they’ve all got introductory specials on right now.

    Results of experiment

    Scenario: This was the most optimal use case I could think of for me to use a share bike – a short, one-way trip to a location inconvenient for public transport.

    Good stuff: It was free. The apps were easy-to-use for unlocking the bikes. (I didn’t bother using them to find a bike since, as I previously mentioned, THEY’RE BLOODY EVERYWHERE.) I didn’t have to worry about getting my bike home or making sure somebody didn’t steal it.

    Bad stuff: The bikes weigh a ton. They’re too small for people on the taller side of the bell curve. Some of them have no gears, and the ones that do don’t have very many, resulting in a painful, sweaty, very difficult ride. And then there’s the whole helmet situation (public lice helmet vs. no helmet at all), of which the only remedy is to bring your own (which you then have to carry around with you).

    So yeah. That was my one experiment on a share bike. Now we can shoot them all into the sun. šŸš²šŸš€ā˜€