Last year around this time I was just starting to create my first blog post on DevOpStar. It was my new years resolution to start something and stick with it for a longer period of time than just a month.
In the past I'd re-written my blog under a number of 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 friends
- Personal Name Website - Managed a now non-existent blog under my personal website for 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 years review of things from 2019 that I LOVED and want to re-share.
First month in 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 then 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.
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 micro-controller, accelerometer & lipo battery to send acceleration data to AWS IoT From there I wrote some code in a Amazon Sumerian scene to apply force to a virtual cube based on the IoT Shadow of the physical sensor.
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 reasons:
- I had found a new hobby! Machine Learning.
- I moved to an exciting new job 😱
First on the 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?
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 uploading images from an old copy of the book they had.
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.
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).
The past two years I'd also submitted an un-offical writeup to where 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.
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; a 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 learnt a lot of things along the way that were 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 your self to mimic what the celebrity is doing.
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 life long 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 day time. 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.
At F8 I got the chance to work on a Facebook messenger bot that could help you upload images and analyse the contents. The only issue was that it was hosted on three different clouds (due to all of our teammates having different backgrounds and experience).
I took the opportunity to port all the functionality to AWS Fargate and created a Facebook bot that could analyse objects within images through a simple chat windows.
- 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.
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 banging my head on the wall trying to get Istio setup nicely on Kubernetes clusters. They 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 1-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 pin-point why other then 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.
We had a tremendous amount of success in the first week we launched and serviced well over 600,000 requests. This whole experience really made me realize how important building to scale actually is, and I was very lucky that we built most of our architecture around serverless paradigms that scaled by default.
Most of the month of August was just maintaining and improving the service as a while 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).
I was extremely-insanely lucky to be given the opportunity 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 really honored to be given this opportunity to be part of the program.
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 really 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 really made me aware that the whole mindset around traditional Hackers no longer exists.
Other then community events I also did find some time to work on some tech!
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, conferences and planning out for project I had lined up for January.
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.
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 runs its very own conference yearly called Latency. It's so much fun, and this year I roped myself into running a workshop on a 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 cases were people solved challenges in totally unexpected ways, and in one case they found a vulnerability in the way we'd setup the challenge itself!
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
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.
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 to 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.
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
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 Selfie2Something project.
We had a massive turn out (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 Its a couple things that have been core to me recently.
If you aren't feeling particularly productive, don't force yourself to do something you brain is going to hate you for. Just relax for a while and do something that makes you happy instead.
You will definitely become burnt out if you take an always on approach. I know from experience and it's horrible.
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 you mental health. If you are feeling stressed out, let people know and they'll be there to help you.
I've always used blogging as a way to learn a topic, as it forces you to get a good grip of something to the point where you can explain it yourself.
This has been a methodology I've lived by the last couple years and its served me well.
If you are worried about things like "what if my talk is bad", I've found that no one really remembers bad talks anyway. People won't hold the fact that you put yourself out there against you either; in fact a lot of people are really supportive even if you absolutely bomb.
If you're a full-time tech head, it's really important to have other outlets. For me its video games, as I can just turn off my mind and have some fun with mates.
I wanted to publish the following list a reminder to myself:
- 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.
- 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.