2019 - Year Recap
Last year around this time I was just starting to create my first blog post on DevOpStar. My new year resolved to start something and stick with it for a longer period than just a month.
In the past, I'd re-written my blog under several different rehashes.
- TwoFactor Assimilation - A blog I maintained during my sysadmin/networking days.
- Maker Today - Attempt to blog about maker-related content with a couple of friends
- Personal Name Website - Managed a now non-existent blog under my website for a while
All these blogs inevitably fell victim to a similar fate where I either lost interest in the content the site was dedicated to, or I just became lazy.
I'm super excited to finally be able to say that I've finally stuck with a new years resolution. Now I get to do something fun! A year's review of things from 2019 that I LOVED and want to re-share.
The first month of the year and I was on a roll... Or possibly I was just high on the dopamine of working on a new project.
I wrote more unique blog posts in January than any other month. There was a good reason for this too as on January 29th, 2019 I achieved my very first AWS Certification (AWS Certified Developer - Associate).
Looking at the types of blog posts I was writing in hindsight it is pretty clear that I was using my posts as a mechanism to try to cram as much AWS knowledge into my brain as I could. In my opinion, it seemed to work!
- Streamline your SSH Workflow with .ssh/config
- Deploying a Private VPN to AWS EC2 using CloudFormation
- Flutter CI/CD Deployments & Publication to Google Play
- Create a Private VPN using AWS IoT Button, SNS & CloudFormation
- Managing AWS Fargate with CloudFormation Nested Stacks
- Serverless Watermark using AWS Lambda Layers & FFmpeg
- Getting Started with Amazon SageMaker Ground Truth
After a solid January, it was fitting that I decided to pace myself a little better moving forward.
IoT Magic Cube
The term digital twin was being thrown around a lot and I recall casually browsing AWS services one day and noticing Amazon Sumerian.
It stood out to be because It sold itself as a good way to display IoT device state visually, with the added benefits of being tied into AWS directly (all the security roles are handled for you nicely).
I designed a simple project using a microcontroller, accelerometer & lipo battery to send acceleration data to AWS IoT From there I wrote some code in an Amazon Sumerian scene to apply force to a virtual cube based on the IoT Shadow of the physical sensor.
Generating Kitty Cats
NVIDIA Labs launched StyleGAN along with its models for generating fake People, Cats & Bedrooms. I was extremely interested in this particular type of machine learning as it was fascinating to see computers "create" things.
I worked on a simple website with Stephen Mott that basically hosted thousands of images of fake cats that we generated in a Amazon SageMaker notebook. The website was aptly named These Cats Do Not Exist and is still up serving images of cats to hundreds of people per day!
- AWS Sumerian Magic Cube
- Building a Serverless Resume with AWS Amplify
- Generating Cats with StyleGAN on AWS SageMaker
March was a super exciting month for me for a couple of reasons:
- I had found a new hobby! Machine Learning.
- I moved to an exciting new job 😱
First on machine learning; after the small success of These Cats Do Not Exist I wanted to get more into machine learning projects so I did what everyone does when they want to get into a new hobby... I spent a lot of money
This card set me back $2,000 and every time I thought about that number I felt guilty about not doing machine learning projects. So you could say I guilted myself into learning I guess?
Dune Coloring Book
The first big project I used my new toy on was a tool to help me color in pictures from a Dune Coloring book. Not even kidding, I came across a random tweet where someone had uploaded images from an old copy of the book they had.
I used a library called deepcolor by Kevin Frans and trained my own model on manga images from safebooru. The results were really interesting and reminded me of watercolor paintings.
Mechanical Rock Family
One of the most exciting things that happened this year was that I joined Mechanical Rock in a new role as a DevOps Consultant! Throughout this year it's been fantastic working on interesting problems with a fantastic team supporting me. I feel so lucky to have come on board.
SANS Holiday Hack Challenge 2018 Honorable Mention
In the previous year, I'd worked on the SANS Holiday Hack Challenge which is a yearly online CTF (Capture the Flag) security event where you have to hack into Santa's mainframe (or something similar to that).
For the past two years, I'd also submitted an un-official writeup in which I breakdown how I solved each challenge:
I was really proud this year to be awarded a Super Honorable Mention for my 2018 write-up
- Dyson Fan Control over MQTT via Serverless
- Amazon Alexa controlled IoT Traffic Lights
- Open Distro for Elasticsearch Kickstart guide
- Fake Facebook conversations using OpenAI GPT-2
- Exposing PyTorch models over a containerised API
- Dune Coloring Book using CGAN & TensorFlow
- Containerizing & Deploying to Kubernetes on GCP
We're onto month four and I started it out again by exploring more machine learning project ideas. I had many failed attempts at trying to build projects and I figure it's also really good to mention them, otherwise, it sets the expectation that everything worked on needs to be a success.
Dealing with Failures
I'm sure I'm not alone when I say that I don't handle failed projects very well. It is rather demoralizing to think about all the time sunk into something with nothing to show for it. One of the reasons I blog about the things I learn is that it forces me to produce some kind of outcome; proof that all the learning was for something tangible.
The problem with linking success to a tangible outcome is that when you don't produce something, it's easy to think you have failed. This is what happened with a project I worked on called gst-tacotron, where I was trying to re-implement an existing voice synthesis project with my own twist.
I trained the models for over 3 weeks straight and go to 503,000 steps before eventually giving up. The results can be viewed at t04glovern.github.io/gst-tacotron; however, they aren't very good.
I came to realize that beating myself up about it was the wrong thing to do, and it turns out I'd learned a lot of things along the way that was eventually used in other projects.
Face reenactment using ICface was so much fun! The idea was that video files of celebrities could be deconstructed into frames and their facial data extracted.
This data could then be used to drive images of yourself to mimic what the celebrity is doing.
Facebook F8 Hackathon
I was invited to Facebook F8 this year to take part in the Devpost Hackathon that is run yearly. I was very lucky to be given this opportunity and got up to all sorts of shenanigans while over in San Jose.
My team and I worked on a solution called MyCity which aimed to help deal with some of the issues associated with mass urbanization.
The highlight of my trip was meeting all the incredible people also working on the Hackathon. I feel as though I made some lifelong friends in the short few days I spent with them.
- Serverless (kinda) Containers with Google Cloud Run
- Exploring Interpretable and Controllable Face Reenactment (ICface)
- Bootstrap GKE with Deployment Manager on GCP
May was a tough month for projects as I was working on a lot of new things at work that was sapping my brain cells during the daytime. This was GREAT! and I loved just being able to unwind at the end of the day and play a bunch of video games I'd missed out on at the start of the year.
Facebook Messenger Bot
At F8 I got the chance to work on a Facebook messenger bot that could help you upload images and analyze the contents. The only issue was that it was hosted on three different clouds (due to all of our teammates having different backgrounds and experiences).
I took the opportunity to port all the functionality to AWS Fargate and created a Facebook bot that could analyze objects within images through a simple chat window.
- OpenCV 4.0 Serverless Lambda
- Object Detecting Facebook Messenger Bot
- StyleGAN Pokemon Card Generator
With June came a sudden interest in Kubernetes and all the weird and wacky fun that comes with it.
Practical Istio Production Guide
The notable thing about this month was a deep dive into service mesh and the birth of one of my most popular series: Practical Istio: Private & Production Ready Guide.
This series came about after countless nights of banging my head on the wall trying to get Istio set up nicely on Kubernetes clusters. The key takeaway from working with a service mesh is that it's useful, but pretty overkill for most scenarios.
A good outcome of this series however was the birth of a GKE (Google Kubernetes) stack defined in Deployment Manager templates. This meant for future projects I had a nice baseline for quickly setting up a production-ready cluster in one click.
- Processing Animal adoption papers with Amazon Textract
- Route53 External DNS management from GKE
- Practical Istio – Introduction & Setup
- Practical Istio – Private Kubernetes Deployment
- Practical Istio – Init & Install
- Practical Istio – Ingress Gateway
- Practical Istio – Virtual Services
July was a difficult month to keep motivated and I can't even really pinpoint why other than that I might have been a little burnt out.
Our dog was also very unwell, and we were fostering a lot of animals at this point. It was a tough time mentally and that meant I took a break from my hobbies.
August nearly killed me, but I would do it all over again if I had the chance. There was one notable thing that happened and it consumed my life.
Selfie2Anime was a small project that I worked on with Rico Beti. The goal was to allow people to upload selfies of themselves and get an anime version sent back to them.
We had a tremendous amount of success in the first week we launched and serviced well over 600,000 requests. This whole experience made me realize how important building to scale is, and I was very lucky that we built most of our architecture around serverless paradigms that scaled by default.
Most of August was just maintaining and improving the service for a while it grew exponentially and then eventually tapered off.
September also kicked off with a bunch of really exciting things. It marked a really important point for me as I started to get a lot more involved with community events both locally and internationally (I'll speak on this later).
AWS Community Hero
I was extremely-insanely lucky to be allowed to become an AWS Community Hero. I'd spent most of the year doing my best to open source and educate as many people as I could on AWS services, and was honored to be given this opportunity to be part of the program.
Google Cloud Summit
Another thing I was very fortunate to get to be part of was that Mechanical Rock flew a couple of us over to Sydney to attend Google Cloud Summit.
I found this event engaging and it was great to get some insights into where Google Cloud was putting the most focus in terms of the services. I spent most of my time in the App Dev track along with some time in talks on Containerization (Kubernetes).
BSides Perth was another excellent conference I attended in September. I was amazed at how many security-minded people there are in Perth alone, it made me aware that the whole mindset around traditional Hackers no longer exists.
I also LOVED seeing Josh Armitage speak on that time he Red Teamed Mechanical Rock as a training exercise.
Trashé - Microsoft Azure AI Hackathon
Other than community events I also did find some time to work on some tech!
I worked with Stephen Mott on a SmartBin solution for the Microsoft Azure AI Hackathon that was meant to help engage people with recycling.
Our solution was called Trashé and we were extremely honored to be presented 1st place overall for our project.
- AWS IoT – Certificate Vending
- AWS RoboMaker – Beginner’s Guide to Robot Simulation
- NoSQL Workbench – Amazon DynamoDB Leaderboard
- Flutter CI/CD with Codemagic, Sylph & AWS Device Farm
October was a nice break from the chaos, or at least I thought it was going to be. I spent a good portion of October preparing for talks, and conferences and planning out the project I had lined up for January.
NASA Space Apps
I got a chance to take part in NASA Space Apps; the yearly NASA Hackathon where you get a weekend to build something to solve a big problem.
We ended up just having fun and built a solution called La Droné, a voice and phone control system for autonomous flight. We had a lot of problems defining what we were trying to solve, and I'm a bit ashamed of the final product we produced. However, I still got a lot out of the weekend and it's always great to hack away at some code with friends.
Deploying Models to the Masses
Post Selfie2Anime I had a lot of people asking me to do a breakdown of how we were able to scale up and down so easily during the frenzy. Because of these requests, I decided to do a talk on how we scaled our model to the masses so to speak.
I ran this talk at Perth Machine Learning Group and had a lot of fun trying to justify some of my weirder architecture decisions. If you would like to view the slides they are available below:
- AWS IoT Greengrass CloudFormation – Raspberry Pi
- Selfie2Something – Building a UGATIT Model
- AWS RoboMaker – Raspberry Pi Bootstrap
November was the month I tried to spend October planning for. Spoilers: It didn't work 😂 and I was still very overwhelmed!
Mechanical Rock ran its conference yearly called Latency. It's so much fun, and this year I roped myself into running a workshop on Capture the Flag we ran internally a few months prior.
The event had small teams compete to find the most flags by hacking into various vulnerable services. I'd personally competed in CTFs in the past, however running one was a whole different can of worms.
We had a couple of cases where people solved challenges in totally unexpected ways, and in one case they found a vulnerability in the way we'd set up the challenge itself!
Bought A House
WE BOUGHT A HOUSE! It was very exciting and stressful but very pleased with how it all went. Here's a photo of me playing Nintendo Switch on the first night we moved in (without any furniture).
- Greengrass – Device Setup
- Greengrass – Device Setup – Raspberry Pi
- Greengrass – Device Defender – Detect
The end of the year meant lots of social events and meetups. However, there was one thing in particular that I attended that was mega exciting!
I was very excited to be given the privilege to go to re:Invent this year. re:Invent is the yearly week-long AWS conference where all the big announcements are made.
The whole experience was mindbogglingly HUGE. We're talking about 65,000 people who all have very similar interests and passions in the same city for a week.
I had the best time meeting some new people at various meetups or just ad-hoc burgers.
IoT Projects from PoC to Production
I didn't just go as an attendee, however, as I also got the opportunity to speak doing my talk IoT Projects from PoC to Production. This was such an awesome experience and would do it again in a heartbeat.
It was great to have some face-to-face conversations with people about their specific problems and gauge what kinds of tooling or tutorials I should work on in the new year to help reduce friction.
re:Invent Recap - AWS Perth User Group
Post re:Invent I also had the opportunity to talk at AWS Perth User Group and do a re:Invent recap for people who were interested in catching up on all the various announcements.
Thanks to Donna Edwards for the photo
Style Transfer Workshop
The final big event I did for the year was a Perth Machine Learning group workshop on Style Transfer. The goal of the workshop was to help people make their very own Selfie2_Something_ project.
We had a massive turnout (much to my surprise) so I spent most of the evening running around like a headless chicken trying to help. I had lots of support from the meetup group, and am very thankful they let me run the event.
I'd like to end with some general advice based on the last year of my life. It isn't necessarily good advice (it could be really bad advice who knows 🤷), but It's a couple of things that have been core to me recently.
Don't Force Productivity
If you aren't feeling particularly productive, don't force yourself to do something your brain is going to hate you for. Just relax for a while and do something that makes you happy instead.
You will become burnt out if you take an always-on approach. I know from experience and it's horrible.
Say Yes Always (Sometimes)
If there's an opportunity to do something; maybe a talk or a workshop, push yourself to give it a shot. Sometimes you'll give a bad talk, but at least you gave it a go.
The caveat here is don't put these opportunities before your mental health. If you are feeling stressed out, let people know and they'll be there to help you.
Blog to Learn
I've always used blogging as a way to learn a topic, as it forces you to get a good grip on something to the point where you can explain it yourself.
This has been a methodology I've lived by the last couple of years and it's served me well.
No One Remembers a Bad Talk
If you are worried about things like "what if my talk is bad", I've found that no one remembers bad talks anyway. People won't hold the fact that you put yourself out there against you either; a lot of people are supportive even if you bomb.
Have Other Outlets
If you're a full-time tech head, it's really important to have other outlets. For me, it's video games, as I can just turn off my mind and have some fun with my mates.
Goals for 2020
I wanted to publish the following list as a reminder to myself:
- to Support the people around me more - I want to spend less time looking out for opportunities for myself, and try to help those around me.
- to Focus on AWS IoT: I want to specialize my blog posts more in the IoT realm. I'd love to work more on reducing friction for people coming into this area.
- More Community Events: I would like to attend more events locally here in Perth and get better at talking to people face to face. I am quite introverted still and need to get over that.