So I had an awesome opportunity to interview Jason Mayes, a Senior Developer Advocate for TensorFlow.js at Google, with my friend Anushka Bhagchandani. The webinar had about 100 attendees in total!

We talked about his journey into the industry, his current role in the TensorFlow.js team, his mindset and attitude in life and much more!

This is a summary of the interview.

Journey

Before Jason sir could enroll into a University, he had to take a gap year and work at a networking job in a school to earn money for his tuition. After that, he enrolled himself for a Master’s degree in Computer Science at the University of Bristol.

He got a job at an investment bank after graduating in 2008, but quit on the first day itself after he realised that this was not the environment he wanted to work in. He then joined ‘XMOS Semiconductors Ltd’ as a Web Engineer. This is where he did a lot of design, UX, multimedia production, 3D modelling, photography and much more, in addition to Web Engineering. He said that it was a scary decision to quit his first proper job with no backup plan in mind, but he was glad that he did that because it led to him learning a LOT of things! Sometimes one has to make hard decisions for themselves, no matter what, to ensure you are happier overall.

While working at XMOS, he co-founded his own startup called ‘Pure42’ which catered to the web application and design sector. He worked from 9 am to 5 pm for XMOS and from 5 pm to 11 pm for Pure42. He combined his passion for creativity with his background in Computer Science to produce usable and well implemented digital solutions.

Just as he was about to quit his job at XMOS and work at Pure42 full-time, he was very surprised at being approached for an interview at Google! He had never planned to work at Google. A Googler had found him because of the good PageRank that his web site jasonmayes.com had. In the early days of his career, he made a lot of web applications for free and for charities. He also wrote some articles which he linked to his site. This increased its PageRank and it was one of the top results for ‘Web Consultant’ in the UK.

He decided to take it as an opportunity to practice his interview skills, because he thought that he would never get into Google! He prepared some stuff on Data Structures and Algorithms and also brushed up on some of the Computer Science knowledge that he had learnt in his University days. He told us that he was just geeking out about technology, something that he was passionate about, with his interviewers and he felt that it came across as more natural and confident to them.

He stood out from the others because he was a hybrid developer (technical + creative) and loved building full-stack applications combining different industries.

He joined Google in 2011 as a ‘Web Engineer’ and has been there ever since! He has become better at writing good, neat and performant code. He loved JavaScript and he was at that role for about five and a half years.

At that time, he had joined a number of 20% projects at Google, where he could take one day off in a week to work on something that he was passionate about. Over time, his prototypes got really interesting and he started working with other teams at Google and their clients to make cool things!

His love for prototypes is what led him to join the ‘ZOO’ team for about three to four years. This team caters to Google’s top 100 clients! He worked on a lot of different and new technologies to create cool and awesome prototypes to tell their story, something he wasn’t able to do at his previous position.

He experimented with Augmented Reality, Virtual Reality and Machine Learning (ML). He had started tinkering with Artificial Intelligence (AI) and his love for it kept growing. He was looking for ways in which he could combine his love for JavaScript and AI and this is how he landed in the TensorFlow.js (TF.js) team in December of 2019. TF.js is the JavaScript version of the original TensorFlow. He is the face of the TF.js team and a connection between the users and the developers. He also makes a lot of prototypes using a combination of TF.js and other cool technologies!

TensorFlow.js Demos

Real-time Person Removal

Removing people from complex backgrounds in real-time using TensorFlow.js in the web browser using JavaScript. This code attempts to learn over time the makeup of the background of a video such that I can attempt to remove any humans from the scene. This is all happening in real time, in the browser, using TensorFlow.js.

Check out the GitHub repo.

Real-time Teleportation

Real-time human teleportation system using pure web technologies, that projects any user into another user’s house no matter where they are in the world, through the power of machine learning and some cool web tech.

Real-time Clothing Size Estimator

This experiment attempts to use machine learning in the web browser via a pre-trained TensorFlow.js model called BodyPix such that we can then estimate a user’s key body measurements allowing them to discover their size on a fashion website when typically sizes differ from brand to brand. This proof of concept shows that reasonable accurate measurements are possible in seconds via the web with no need to download and install any apps as everything is written in JavaScript.

Other demos

More demos by Jason sir, the TF.js community and people from different industries can be found in the ‘Show and Tell’ Series (#1 & #2) that sir conducts.

TensorFlow.js demos can be found on Codepen, Glitch, and the ’tfjs-examples’ GitHub repo.

Check out the ’tfjs’ GitHub repo as well and the web site as well!

Do use ‘#MadeWithTFJS’ if you make a project using TF.js, so that the TF.js team can find your project easily!

Teachable Machine

A fast, easy way to create machine learning models for web sites, apps, and more – no expertise or coding required.

Check it out here!

Teachable Machine makes it very simple to create an AI model! You can have a good model in 30 seconds! It is a GREAT way to get started with machine learning!

Questionnaire

The following are a mix of some of the questions that we had prepared and the attendees had asked.

How do you get innovative ideas for your prototypes?

Sir said that the teleportation demo (showcased above) came to him in a coding dream that he sometimes has! He had the idea and he just tried to convert it into reality. He added that it started out very simply with a body segmentation model. He made the invisibility demo (showcased above) using that and then that demo evolved to the teleportation demo by adding more technologies to it! So he said that he often started with simpler ideas and then eventually ideas grew on top of existing ideas that led him to make more prototypes.

Another good way to get ideas is to try and solve problems that you or other people are facing in day-to-day life. He made the clothing size estimator demo (showcased above) because he isn’t good at buying clothes and he just wanted to make the process simpler for himself.

How can one get started with AI?

Jason sir believes in a top-down approach, sort of like peeling an onion from the outer layers to the core. (The opposite of what he would suggest for learning to code.)

Knowing how to use a technology at a higher level is helpful for when you start digging deeper to understand how it works. This also lowers the barrier of entering the domain as sometimes the initial frustration of learning too many things is what drives away a lot of people. This is true for almost all technology domains.

The rough path according to sir should be something like this:

  • Start with Teachable Machine. You can have a good model in 30 seconds! All beginners should experiment with Teachable Machine and use it for their own applications, get to know its limitations and then go deeper into AI.
  • Use pre-trained models, like the ones that TF.js has. (Also available on Codepen and Glitch.)
  • Cloud AutoML could be the next step. (Better for production applications as the amount of training data that can be given is way more and there are many other functions as well.)
  • Then you could take some higher level courses (ie, the ones that deal more with the application than the underlying things).
  • Last but not the least, take some lower level courses (ie, the ones that go deeper into the mathematics and other concepts).

You can check out sir’s slide deck for ML, called Jason’s Machine Learning 101.

He also recommended a book Deep Learning with JavaScript that is written by the TF.js and the TF (Python) team, which beginners can use to get started.

Would you want upcoming developers to specialize in a particular field only or have a more hybrid background like you do?

Sir said that one should first specialize in learning the basics of programming (good coding practices, learning to write maintainable, secure and scalable code, basic concepts and syntax of the language of your choice, etc). There are a LOT of domains, so explore a few of them (you don’t need to go in too deep) to find out where your interests lie, then learn maybe two or three of them.

Very few people know how to combine different domains together, so once you know a little about two (or more) different domains, you can combine some of them to create something unique! It can be a combination of your hobby and technical domain as well!

If you say that you are ‘Passionate about ML for Music creation’ rather than ‘A ML enthusiast’, you will stand out from the others.

What is the importance of networking?

Networking at times is more important than your degree. The degree and the marks are required to pass the interview, but sometimes you might not get the interview without knowing the person who is hiring. It can be as simple as building up a reputation with an interviewer so that they know that you exist and also be familiar with the quality of your coding skills and innovative thinking via the projects you post.

In sir’s case, Google knew about him because he wrote for blogs and magazines (which in turn increased the PageRank of his website). He also did a lot of charity work which helped him grow his network by word-of-mouth, which goes a long way! (So good can come from being good!)

When should people start building their profile? (LinkedIn profile and personal portfolio web site.)

Right off the bat! If you’re serious about programming, you should already have a portfolio web site. If not, then get on it! Make sure to have your Codepen, GitHub or other profiles that show the coding standards that you live up to, ready. (You can refer to Google’s style guide for various languages as well.)

Also, apart from being innovative, creative and having good documentation, your code should be easy to read and understand.

From your experience in the technology industry and life in general, what would be your advice to get successful?

Being curious and exploring your curiosities! Too often people have an idea and they think about it for a little bit, but never end up working on it. The most difficult thing is the start of a project. The momentum of the idea can be maintained once it’s implementation has started, but the initial inertia needs to be overcome.

Everyone should devote at least one hour of their day, after college or work/job to work on their ideas. Just do it!

A lot of people did not see the other side of cool projects. A lot of hard work goes into them. There are failures, and perseverance is SO important in those cases! It can take time, maybe hours, weeks or even months, but keep at it!

Don’t let anyone tell you that you can’t do it. If you’re not where you want to be, then keep at it till you achieve it. Don’t give up! If it is taking up too much time, then you can keep it on the back-burner but do come back to it soon.

What should one do if they have an idea, but do not have the skills to implement it?

  • Design sprinting is one way to go about it, wherein you have to make a prototype within a week. (Not necessarily a working one, it can be a simple mockup as well!)
  • It is a good thing to know the skills you don’t know.
  • The idea can be stolen (and an idea cannot be patented). You can also sign NDAs with people, but asking trusted people is the best way to move forward.
  • You can include some trusted people with the required skills in your team or learn some of them yourself.

You are a very busy person, so how do you maintain a work-life balance?

Time management plays a big role in his work-life balance.

He also told us about the importance of deep work here. Humans require about 15 minutes to “warm up”, and if we do not allocate time properly then effective work (deep work) is not possible.

He gets a lot of e-mails and answering them is not deep work. So, he allocates 2 hours a day for them, one at the beginning of his day and one at the end. This allows for a good chunk of six hours in the middle of eight working hours for continuous undisturbed work and the two separate slots for e-mails also cover different time zones for communication purposes. If something urgent comes up, someone would call you, disturb you via chat or any other means.

So allocation of time into chunks of work and rest is what helps maintain a proper balance. You get better at that with experience.

How do you approach failures?

Things don’t always work out and the key thing is to approach the problem positively and see it as a learning experience. Understand what can be improved in the future so you don’t fail again. Analyse the failure, work on it and learn from it.

Would you change anything in your journey? Do you have any regrets?

The immediate reply was that if he changed anything, he would not be where he is today.

He said that he didn’t regret anything and thoroughly enjoyed his time working in startups!

He highly recommends exploring startups, especially when younger, because you have fewer financial commitments and obligations - such as having a family, owning a house, etc. As you grow older these things start to matter and so working for a bigger company is better because you will have a stable income. With a startup, you learn a lot and if you mess up, the consequences are very real. The added responsibility makes you learn a lot very fast. These learnings can then be applied to bigger companies as well, because you might tend to use lesser resources which saves the company money and improve their performance as well.

He prefers going from a startup to a large company and not vice versa, because if one directly started at Google, they would already have all the freebies and backup plans before experiencing the hardships that one faces at startups.

How can someone find their calling?

If what you’re doing feels like work, then it is not what you should be doing. Do something that you enjoy, combine your passions and find something that allows you to do that full-time. (Eg: JavaScript and AI, as in Jason sir’s case.)

All the demos that he had made, were made in his spare time, ie, on the weekends, because it didn’t feel like work to him (even though it was sort of his job to create them) and he would’ve made them even if he wasn’t in the role that he currently is (Senior Developer Advocate for TF.js at Google).

It took him five and a half years after starting to work for Google to find the correct team to be in (the ZOO team) so that he could make prototypes for 100% of his time! It takes perseverance to find the right opportunity and teams and then to prove your worth. So a combination of skills would make you stand out more (Eg: ‘JavaScript lover with expertise in music applications’ is better than ‘JavaScript lover’ or ‘Software Engineer’).

So that was the summary of all the important questions! I hope you got an insight into Jason sir’s mind! The interview can be found on YouTube as well.

You can follow him on Twitter and LinkedIn!

PS: Make sure to include a custom message while connecting with him on LinkedIn.

PPS: I am thankful to Kartik Soneji for helping me edit this article.