Gradatim Ferociter | Ask a Machine Learning Engineer Anything May 2019

Harsath messaged me a year ago. He was getting into machine learning and data science and had seen some of my videos.

Every time I’d post a new video he’d be one of the first to comment. Something insightful, something kind. I’ve always been grateful to see his name pop up. There’s also Shaik, Hammad, Gregory, Yash, Paul and many more.

This time Harsath told me he got a role in the field. He’d been working hard towards it and was offered a job.

It came after sustained effort over time. Step by step. It reminded me of the saying, gradatim ferociter, it means step ferociously.

Big things rarely happen in one go. It takes many small steps, one at a time. And each step has to be taken with passion and ferocity.

Congratulations Harsath. Keep up the effort and keep learning.

In the May Ask me Anything, I answered your questions around studying online versus at college, how to get a job in the field, having a PhD versus self-taught, using Bayesian methods in machine learning, my intermittent fasting schedule and more.

As always, if you have any more questions, feel free to reach out.

Tell your people you love them

It's hard to imagine things 20-years from now. What will the world look like? What will we look like?

Will our family members still be here?

What will stay the same?

Humans are bad at planning for the long-term. It's no wonder, most of our history has required us to take things day by day. The times where food today was good but we might not have any tomorrow.

There's a photo in my Mum's room of a lady who used to live across the street. Margaret was a sweet lady, I remember talking to her when I was young. The photo is of Margaret in the hospital. I remember her family coming to visit several times whilst she was in the care unit. But even after living across the road from her for 10-years, I don't remember them ever making a single visit.

So why so much effort in the last moments of her life?

I'm not going to pretend to know but my best guess is, they were living their own lives.

Is this a bad thing? No. But what if the same amount of effort was sustained throughout the other years of their life?

It's because planning for the long-term is hard. It's only once things become a problem do we realise they're a problem.

A loved one falling ill seems so far away until it happens.

Life happens quick. Enjoy the short-term but don't forget the long-term.

Tell your people you love them.

I love you.

Skills not certifications

Our coach came round. He got to Josh and started speaking.

You know you get those people who haven’t exercised much since high school but they still come down and get into it. Then you have those people who can just go and go and go.

He pointed to Josh. Then to me. Then spoke.

These two.

My brother Josh, Dave and I got our first grading at Brazilian Jiu Jitsu yesterday. A white tip on our white belts. A first step of many to come.

A few others got new coloured belts. Jax went from blue to purple. Another went from white to blue.

The white tip is a symbol of progression. But it isn’t what we’re after. We’re after skills. The skill of Brazilian Jiu Jitsu. The skill of going up against someone and using what you’ve learned to submit them or prevent them from submitting you.

More accolades can be tempting. But don’t mistake them for skills. That’s what you’re after. Not a stack of certifications.

14 non-coding things which make me better at coding

I fight people.

Sparing every day at Jiu Jitsu teaches me how to lose. The best skill a developer can acquire is a willingness to be wrong. Why? Because things change fast and you’re not perfect. Check often, test often. Better to be wrong in testing than production.

I lift weights.

Weight sessions last an hour or so. They’re hard on the mind and body. Coding doesn’t strain the body as much as the mind but you’ll be surprised how much you can get done in an hour of heavy thinking.

I go for walks. Lots of walks.

Walks solve problems. When I’m at home, when I’m at work, if I’m stuck, I walk. Sometimes I think of nothing. Sometimes I code in my head. The world would be a more peaceful place if people went for a 20-minute walk before making big decisions.

I sleep 8–9 hours per night.

There isn’t one cell in the body which isn’t affected by sleep. Adequate sleep is my competitive advantage.

I eat like a caveman.

Nutrition is the force multiplier of life. It’s hard to think well eating trash. Keep it simple. Avoid processed foods, eat out of hunger rather than habit.

I sit in the sauna on Sunday’s and chat with my friend about his work as an intensive care unit nurse.

Don and I meet at the gym once per week. We move around and do some bending exercises then we sit in the sauna and talk about life. His stories remind me of how fragile life can be. I’m lucky to be able to spend time at a computer turning thoughts into code.

I listen to stories of my friend building his car detailing business.

Dave’s an entrepreneur, always has been. He buys old cars, fixes them, sells them. Every time he needs to sell a car, he needs it cleaned. Instead of doing it himself, he turned it into a business. Now he hires people to clean his cars and his business cleans other peoples cars too. If you’ve got a problem, others probably have it too, solve it by building something out of it.

I see people share their latest work on Twitter.

Seeing others do well used to make me jealous. Why aren’t I that good? What a waste of energy. I flipped it. Now seeing others do well inspires me to do better.

I talk to my Dad about what I do but he doesn’t understand, he never learned to use a computer.

Talking to my Dad reminds me to explain things in a way others can understand. Did you optimize your code to run on multiple GPUs at once? What does that mean to someone who doesn’t know what a GPU is or what parallelism is?

I cook dinner with my Mum.

Whenever my head is filled with the demons of the world, I kill them by reminding myself of what matters. Relationships, health, memories. Simple.

I write on my blog.

I write on Medium.

I make videos on YouTube.

I read great writing.

All these contribute to being better at communicating. When dealing with clients and customers, it’s hardly a tech problem. It’s a communication problem. If in doubt, over communicate. This what we did, this is why we did it.

This originally appeared as an answer on Quora.


Advice which made me a better machine learning engineer

Athon was doing a talk. Something about Variational Autoencoders. He got deep. Much of it I didn’t understand. All I know is one-half tries to condense a distribution from a larger one into a smaller one and the other half tries to turn the smaller one into a new version of a larger one as close as possible to the original.

We went for a break.

There were fish sticks, wings, more 10-minute foods. The kind which tastes good for the 10-minutes you’re eating them but make you feel terrible after.

John was there. We’d met before. He was telling me about a hackathon his team won by using Julia (programming language) to denoise images and then used them for image recognition.

He told me how his company got acquired by a larger company. He’d been at the new company a few weeks but preferred smaller companies.

In between bites of fish sticks, I asked John questions.

John had been programming since he was young. I had 18-months under my belt. There were things he was saying I didn’t understand but I kept a constant stream of nods.

John asked me a question.

What do you think your strength is?

I spoke.

Well, I know I’ll never be the best engineer. But…

John interrupted me.

You won’t be with that attitude.

I was going to continue with my regular story. I know I’ll never be the best engineer but I can be the communication bridge between engineers and customers.

But I didn’t. I digested what John said along with chewed fish sticks. I spoke.

You’re right.

John kept talking.

You won’t improve if you think like that. Even if you know you won’t be the best, be careful what words you use, they’ll hold you back.

Every time I’ve run into a problem since and wanted to bang my head against a wall wanted to give up wanted to try something easier instead of doing the hard thing I remember back to what John said.

I say to myself.

I’m the best engineer in the world.


How do you learn machine learning when you're rusty at math?

Mum, how can I get out of the exam?


I’m going to fail.

Tears started filling my eyes. I was sitting at my desk with the lamp on, 11 pm the night before the final exam.

Maths C. That’s what they called it. There was Maths A and B but C was the hardest and I was doing it.

There was something about matrices and imaginary numbers and proofs. I couldn’t do any of it. Only a few matrix multiplications, the easier ones.

I did the exam. Somehow I passed. I shouldn’t have. My teacher let me off the hook. That was 2010.

University came and I majored in biomedicine. I failed my first statistics course, twice. Then I changed out of biomedicine.

I graduated in 2015 with a dual major in food science and nutrition. Now food is one of my religions.

2017 happened and I decided to get into machine learning. I’d seen the headlines, read the articles.

Andrew Ng’s machine learning course kept getting recommended so I started there.

The content was tough. All the equations, all the Greek symbols. I hadn’t touched any of it since high school.

But the code was exciting, and the concepts made sense. Ng’s teaching skills meant they just made sense.

So I followed those. Kept going at it. This time I didn’t have an Xbox to distract me like high school.

My math is still rusty. I’ve done some Khan Academy courses on matrix manipulation, calculus and bookmarked some linear algebra courses to get into. There’s one from Rachel Thomas and another one from Stanford.

Math is a language, it takes time to learn, time to be able to speak it. Programming is the same. Machine learning combines them both and a bit more.

I started with programming first. Built some machine learning models, using Python code, TensorFlow, PyTorch and the others. Saw how the concepts linked with the code. It got me hooked.

You can start learning machine learning without an in-depth knowledge of the math behind it. If your math is rusty, you can learn machine learning with concepts and code first. Many of the tools available to you abstract away the math and let you build.

But when you gain a little momentum, learn a little more, hit a roadblock, you can dive into the math.


Copying or creating

The best work gets copied. It’s the highest form of flattery.

So don’t hold back your own work because you don’t want to copy something that already exists.

Even if you’re discovering something new, it’s likely your work will build on top of others.

In a job interview I had for Apple, I said my favourite person from history was Isaac Newton. Newton invented calculus in his twenties. We still use today.

Yet, one of Newton’s most famous quotes is, “If I have seen further it is because I’ve stood on the shoulders of giants.”

Use what others have done, thank them for it, they’ll be grateful. After all, that’s what you’re hoping for isn’t it? Other people to use, to enjoy, to share what you make.

Creating starts from copying. Don’t let your work be held back because it isn’t novel.

Horizon, ground, altimeter

The body shudders, the engine takes up half the plane

We’re sitting close, all of us, ass to back

We make a turn,

Now we’re on the runway

The trees start moving faster, the ground even more

Seatbelts! People fumble around their legs, reaching back, finding buckles

Out the window is a blur, we’re really moving

Wings cutting the air

You can’t see it but you know it’s there

Close the door!

It’s quieter inside but talking is still a shout

The wheels stop rolling, they’re not on the ground anymore

It’s smoother than I thought, big yellow cuts through the air

We head over the road, over the fields, over the ponds, you can see all of it,

My altitude meter goes out of the red, 1000 ft 2000, 3000

How’s the storm?

I’ll go around it the pilot says

I go over the steps in my head,

Horizon, ground, altitude, horizon, ground, altitude, horizon, ground, altitude

7000 ft is lock on time, keep your eyes on the meter

6000 ft is pull time

After 10-seconds we’ll be falling at 1000 ft every 5-seconds, just over a minute until creaming in John says

We pass through the clouds, we’re above them, 12,000 ft

Everyone starts checking each other one last time

My altimeter hits 14, time to jump.

The light comes on,

Open the door!

No one hears it

Open the door!

The door comes open

Out go the first two

Then the next one and a few more

We shuffle forward, Doily is strapped to my back, there isn’t room to stand so we keep shuffling

It’s our turn

My right foot goes against the door frame, my left foot goes on the edge, my hands are holding the side of the plane my hair’s in the wind and I can see the wing of the plane, except there’s no window this time

I do the checks, check in, okay, check out, okay, I look forward

Horizon, pause, up, my head goes up, I look over the wing, pause

Down, out!

We leave the plane, I get into the position and hold it, hips forward, arms out, legs bent and pointing

There’s no stomach feeling, just wind,

We’re floating, floating above a cloud

I do the checks again, horizon, ground, altimeter, horizon, ground, altimeter

The arrow turns to the left, 12, 11, 10, 9

We hit the cloud, terminal velocity through a cloud, it’s cold and wet

We come out,

Horizon, ground, altimeter, horizon, ground, altimeter, 8, 7, lock on!

I watch the altimeter closely, 6 is coming, the needle keeps moving, halfway, three quarters,

6 hits and I wave my hands, it’s pull time

Doily pulls it and the canopy comes out

The air rushes into it, fills it up like a deep breath to lungs

We’re floating still but the wind isn’t as harsh,

I grab on to the toggles, we guide it in

The ground comes to meet us, I pull my legs up and we slide in

Back on the ground.

We check the video, I didn’t have my legs in the right place

Doily speaks,

Don’t move your head so much, look at the ground with your eyes not your head

The ground’s boring, look at the air


The consuming creator

No matter how much I checked them the hole didn’t fill.

In bed, me and my phone and Facebook, Instagram, Facebook, Instagram, Snapchat, Email, Facebook, Safari, Instagram, Snapchat. Again and again.

Every time I’d find something funny, then something which made me think, then something which made me jealous then something which made me smile something which made me feel bad something which made me feel good. 

I’d send things to my friends. They’d send back some some of their own.

Checking the red symbols felt good. Really good. A red symbol meant someone thought of me. It meant I was important enough for someone to think of me and tap their screen. I was important.

But something was missing. No matter how many red symbols appeared, it wasn’t there.

The feeling. The fullness. What was it? Too hard to describe. But I knew it was there. My gut was screaming for it but my head couldn’t figure out what it was saying.

I needed to flip the scale. Not tip it. Flip it. I was consuming too much. Too many red circles. The scrolling scrolling was infinite but the void was bigger.

I thought to myself. I want to make my own stuff. I want to create things. I want to share things.

The thought stuck around for a long time. Too long until my actions started matching my ambitions. They’re still not fully there.

Then little by little my work went out. I got an idea and made something with it. Then I hit publish. Those seven letters on the button, p u b l i s h, I read them carefully. Saw the button with the smooth edges, hovered over it my mouse and let it sit there then I clicked it. That was it. It was out there.

Publish, publish, publish, publish. Most of it wasn’t good. All of it at the start was crap. It’s still out there somewhere. But it was required. The bad was required for the good to shine its light.

The hole was an empty space waiting to be filled with my own creations. It needs to be fed. It’s the burning inside you which follows you everywhere and pokes and prods you. That’s its job.

When you ignore it, it only grows impatient. It seems like your enemy but it doesn’t want to be. It’s selfish, it wants the best for itself but it also wants the best for you. I figured it out. I showed up and listened, stopped ignoring it. Everything it said made sense.

I flipped the scales. I had to create. The pokes and prods are still there but I’m listening now. That’s my job.

​Set the system up so you always win

Goals have an end point.

They’re good for some things but not good when your happiness or self-worth is tied to them.

Systems are an alternative.

Losing 10kg is a goal.

Staying healthy and being active, sleeping and eating well every day is a system.

A specific dream job is a goal. A system is continually improving your skill set and your ability to communicate those skills in the direction of your field of interest.

Once you set up your system and stick to it, you may even end up at your goal. If not, the worst case is you stuck to your system.

And once you start to think about creating systems where you can always win, you’ll see them every where.

​I decided

I got a $200 fine. I pulled up in the wrong spot to pick people up. It was 2 am and the parking inspector waved me down.

He took a photo of my number plate and stuck his head in the window.

You’ll be receiving a fine in the mail.

What for?

You’re not allowed to stop in a bus zone.

But I had to pick up passengers.

You’re not allowed to stop in a bus zone.

I turned my head away.

Thank you.

I wound up the window and drove off. My passengers were sorry. It wasn’t their fault. I stopped in a bus zone. I broke the law. When I got home I checked the bus timetable. Buses don’t run after midnight. According to the app I picked my passengers up at 2:03 am. It didn’t matter. The fine still came through. I paid it and decided.

I decided I wasn’t going to drive Uber anymore. The previous 7-months I’d been studying machine learning and deep learning online. It was time to get a job in the field.

Uber was my only source of income. But I decided. I decided I wasn’t going to drive Uber anymore.

The end of that week I got a message on LinkedIn saying I should meet with Mike. I met Mike and he said I should meet with Cam. I met Cam on the Monday and Cam asked if I wanted to come in on Thursday. I went in on Thursday and then again the next Thursday, the week after I was offered a job.

I said yes.

Deciding is different to wishing. Wishing leaves you in two minds (or more). Part of you keeps doing what you’ve always done while the other part wishes of something different. When you spread your attention across too many things it doesn’t work very well.

Deciding draws a line in the sand. A line which says, after this point things are going to be different.

If you want something, you first have to decide if you want it.

Then once you make the decision, stick with it. And if you have to change it, decide again. Each time a change, each time a decision.

Recycled knowledge

Reinventing the wheel isn’t necessary.  You know how a wheel works and you know how to use it.

When starting a project of your own, aiming for new can be a road block.

New is attractive because new is the new normal. Every information source you check is constantly updated with the new. 

Using knowledge of the past is a good place to start. Geniuses borrow the best work from others and build upon it.

If ‘someone has already done it’ is holding you back, ignore it. Take it, use it, make your own version. 

The best next 10 best-selling books will all be written with the same 26 letters.

And the next most-downloaded app will be written in a coding language that already exists.