I am Suz Hinton. Ask me anything.
Suz Hinton (aka noopkat) is a popular open source coder and speaker from Microsoft. She has been coding LIVE on Twitch for over 2 years now. She's a regular contributor to the open source Node.js electronics scene, and enjoys teaching others how to immerse themselves in the nerdiverse. Grab this opportunity to ask her anything programming.
Ask Suz Hinton about:
- Open source hardware integration
- Node.js electronics
- Working at Microsoft
- Getting started with programming
I want to thank everyone for their thoughtful and interesting questions. I hope I answered them well and look forward to continuing the discussions here on Hashnode.
I hope you have a wonderful week 💙
Have you had to deal with people being a butthole to you while you stream? If so, how have you handled it?
Jenn I love this question so much, thanks for asking.
I have had some mild 'buttholes' for sure, but nothing too nasty so far which has been surprising. Most buttholes have one of three agendas on my stream:
Expressing distain when I'm working on an older library that doesn't use ES2015+ syntax (even bigger lol)
Taking a bit too much liberty in commenting on / complimenting my appearance
This normally occurs in the chat, so I can suspend or ban anyone who is being toxic or won't adhere to the rules (I have a code of conduct / chat rules folks need to agree to).
Sometimes people will make fake accounts with slurs in them and will follow my channel, which pops up a big banner on my stream. This is an advanced trolling technique and quite rare these days due to better moderation tools from Twitch. I've also made changes to my stream to ensure this isn't something they can exploit so easily.
Honestly the way I handle it is to have good people as moderators in my chat, to not hesitate in banning buttholes swiftly and without giving them attention, and to foster a loyal and compassionate community who will help govern good inclusivity and positivity. My community of viewers are wonderful and I am so thankful that they help me keep everything butthole free 99% of the time.
Cats, JS, and Crypto are my favourite things. Also, Triangles are my favourite shapes.
Node.js + electronics — what's the status in 2018? Is it an interesting field to pursue?
Hey Suz 👋, Do you like pineapple on Pizza?
I do! I'm vegetarian so I'm always looking for a variety of meat alternatives on my pizza. My favourite pizza growing up as a kid was the 'hawaiian' which in Australia has red sauce, cheese, ham and pineapple as toppings. I wasn't alone - the Hawaiian was the most popular pizza in Australia in 1999, accounting for 15% of pizza sales! Source: http://www.pmq.com/Winter-1999/PMQ-Goes-To-Australia/
Hi Suz. Thank you so much for doing AMA. I've been watching your streams for some time and I got very interested into Nodebots, IoT and other JS stuff.
I have some general questions, as well as questions about getting started. This could be longer, but I hope you don't mind. :)
Before watching your stream I didn't know JS was that powerful. I was surprised that you can program boards, IoT and such things using JS.
So the first question -  how do you like JS for programming boards and IoT stuff, and is there some features you're missing in JS, that would make the development process easier?
 Have you ever considered (or tried) using TypeScript? Would it be possible to run project such as Avrgirl using TS?
Last, but not least.. :D You're streaming and recording videos for some time now. And you're very successful doing that! :)  Do you have any recommendations for newcomers, who want to start live coding and streaming/recording? Is there something that you would've loved to know before you started doing so?
Once again, thank you so much for everything!
Hi Marko! These are great questions.
 I have tried TypeScript and I really like it! It would definitely be possible to use for hardware related code such as AVRGirl. I'm about to start a long term refactor project with AVRGirl, so perhaps this would be a great time to consider using it.
 My recommendation for getting started is to join the global Nodebots community! We're a bunch of nice folks who create a lot of resources, software and content for you to get started. Visit the Nodebots website to get started as there are a lot of links and examples for you to find there: http://nodebots.io/
 A few great boards to get started with for NodeJS + hardware would be a Tessel 2, a Raspberry Pi, or the humble Arduino Uno. The first two can run NodeJS on the board itself, and the last can be remotely controlled with NodeJS running on your laptop with the Arduino board plugged in. There is a Johnny Five Inventors Kit for the Tessel 2 which is a great place to start: https://www.sparkfun.com/j5ik. If you're looking for something more budget conscious, I'd recommend picking up an Arduino Uno and a sensor pack, such as this one: https://www.adafruit.com/product/170
 That's great that you're interested in doing streaming / videos! I usually recommend folks read me article on medium as it focuses on coding livestreams which can be quite different from gaming streams: https://medium.freecodecamp.org/lessons-from-my-first-year-of-live-coding-on-twitch-41a32e2f41c1
I'd also recommend watching some coding streams and taking notes on things like why you kept watching a stream, how the streamer is interacting with the viewers, and what kind of content they're working on. I did a lot of 'market research' before I started my stream.
As for videos, I love the Google Chrome Developers and Adafruit channels on YouTube. I have watched quite a few videos from these two channels and have tried to take notes on why their videos resonate so much with my learning style, so I can incorporate the same quality into my own videos.
Thank you so much for such awesome and detailed answer! I really appreciate your time and effort! I'm planning to get me some kits and learn how to work with boards and JS, so this is very helpful. If everything goes well and I get better Internet, I'll start recording/streaming too. :D
How have you overcome the difficulties of being a self taught programmer (job wise)?
An important question - I'm humbled you ask.
This has been a challenge for me over the years. In fact, I talk about this a little bit on Hashnode over here: http://bit.ly/2FQcPGD
For me, it was a confidence issue for a while that held me back from reaching my potential in jobs. I felt as a self taught programmer that I wasn't as good as someone who got a CS degree before adding their experience in the field.
My self taught background heavily favoured the topics I was interested in, and rejected anything I didn't care about too much. This created huge gaps in even the knowledge of the programming languages I was using from day to day.
I also used to be what I'd describe as a 'survival coder' - that is, I'd learn just enough to fix a problem I was having and then would immediately move on and not retain what and why I was solving it in that way. I stopped asking 'why' for two reasons: 1. I was just trying to keep up enough to be a good employee 2. I didn't believe I was smart enough to dig into deeper, more technical topics
I felt I didn't have enough technical depth in how computers work, and the building blocks of how software is designed. This to a degree held me back from being able to participate in architectural discussions at work.
There's only one way to solve this, and it's to directly address the gaps and fill them in. I observed other developers around me, made a note of concepts they talked about with each other, and researched those that I didn't know about.
What helped me to advance in my job as a self taught programmer (which won't be possible for everyone due time and life circumstances) was:
writing open source libraries and then experiencing communities using those libraries and benefiting from them
filling in the gaps with resources such as MIT Open Courseware. I'd sit over my lunch break and watch a video while trying to implement the algorithm being covered in a JSBin project.
I realise these approaches won't work for everyone as they can require having spare time and the support of your workplace to learn on the job. They also address only the issues I was specifically having. But I hope this helps :)
Which tools do you use for programming? What's your default system configuration? 🤔
I'm going to cheat and link you to this interview I did on Uses This, as I'd just be copy + pasting anyway ;)
I have a pretty minimal tool setup in all honesty. In most personal projects I don't even use linters or formatters. I like just using my terminal and coding things without too many automated processes or plugins. It's less maintenance and less issues if I'm jumping on a random computer or pairing with someone else.
Default system config - this is a little ambiguous to me so follow up if you didn't find the answer to that in the interview :D
Hi Suz, thank you a lot for doing this AMA~!
What's the coolest thing about working for Microsoft? Do you have a fancy office? Special snack time?
What is your (and your colleagues') take on opensource tools, which are in direct competition with MS products? Stuff, like Linux distros, Redox, LibreOffice, MariaDB, etc. Do you embrace them, take ideas from them and use them alternatively sometimes, or are they completely banned?
What is the single most important thing in the world of IoT development you are missing? How do you think the situation could be remedied?
Hi Marco! Thanks for participating.
The coolest thing about working for Microsoft is that I'm paid to play with (and improve!!) the ridiculous amount of tools and services in Azure. No joke. These tools help me so much with my open source work, with developing new projects, and with generating new ways to solve problems.
The office closest to me is the Times Square location in NYC. 'Fancy' is subjective, but it's not one of those offices with a gym, shower, gourmet meals cafeteria etc etc. It's a pretty regular corporate office which is fine by me. I mostly work from home, which is what I prefer for productivity anyway. I have visited the Redmond campus a few times (in fact I'm traveling right now and will be there after I finish this AMA!) and it's definitely more full featured with cafés, a treehouse (!!), shuttle buses, and lots of natural light.
Most of my colleagues skew towards open source tools. I can't speak for everyone, but most of us don't always see them as being in direct competition to Microsoft. Microsoft has truly started to embrace open source in the last few years and it shows. A large portion of VMs sitting in Azure are running Linux, for example. We realise that meeting communities where they are can be important and beneficial. I wouldn't say we outright 'ban' anything - we're always open to discussion.
One of many examples - we have a Kafka Source Connector for our Azure IoT Hub offering: https://azure.microsoft.com/en-us/blog/kafka-connect-for-azure-iot-hub/
The single most important thing in IoT we're missing right now - a 'Lets Encrypt' for IoT Security. We need to make it a lot easier for device manufacturers and hobbyists to secure their hardware offerings properly to avoid things like the Mirai issue or worse happening again. There are a lot of facets to this - check out this paper to see the complexities: https://www.microsoft.com/en-us/research/wp-content/uploads/2017/03/SevenPropertiesofHighlySecureDevices.pdf
Hey Suz, thanks for doing the AMA - I'm also a big fan of your twitch stream!
Hi Rhian, thanks for being a fan of my stream! It's great to have you hanging out on Sundays.
I fell into front-end development when I was a teenager, but before that I was running POKE register commands on my Commodore 64. The low level side of computers always appealed to me, so hardware has been a side hobby since I was a child. Front-end development is something I loved doing, really excelled at skill-wise, and didn't require a degree for in order to land a job.
The NodeJS hardware programming happened because I was using Flash Communication Server + proxying my serial ports to a localhost in order to create a web interface for my Arduino boards. This was a lot of work, and did not produce very secure or accessible interfaces. When NodeJS came along, there were some serial libraries written by others that helped me offboard from Flash and into the future of web technology + hardware!
I'd recommend connecting with the Nodebots community and reading the resources there to get started! http://nodebots.io/
What's your advice for women getting started with tech in 2018? 👩💻
This is a really big question! But I'll focus on the networking side mostly, as my advice on learning coding / technical topics tends to be the same for everyone.
Finding other women to talk to for support, mentoring and advice is really helpful. This can be both IRL and online communities. Start with local meetups if you have the time, to connect with others.
Learn to quickly pick up on when people are treating you differently because of your gender, so you can seek advice on how to stop these scenarios. This will come with experience.
Find a sponsor at every company you work for. Sponsors are more important than mentors alone for underrepresented folks in tech, because they help directly with career advancement and can help fight battles for you. A sponsor should be someone influential within the company or someone more senior than you who can help bubble up your achievements and also put you up for opportunities they hear about before you do.
What terminal Config do you use?
Hi! Great q.
- I use iTerm2 and bash on macOS, ConEmu on Windows with WSL bash
- Dracula colour theme
- I use a block cursor
- Infinite scrollback
- tmux for panel splits
- Inconsolata font
- my dotfiles are here: https://github.com/noopkat/dotfiles
Cats, JS, and Crypto are my favourite things. Also, Triangles are my favourite shapes.
Hi Suz! What are the few things you have learned about beginner programmer after teaching them for so long?
That's a cool question :) I have learned a bunch of things about beginner programmers over the years.
The first is that they blame themselves for almost every failure they have. For example, were they running into issues because of really poor documentation? They'll accept fault for any struggles like this quite commonly. It can be hard at first to tell the difference between personal shortcomings, and the shortcomings of the tool / software / documentation they trying to use.
The second is that curious beginners almost always grow to be really good programmers a lot faster than others. Knowing how to ask the right questions is a learned skill, but those that start with asking "why?" go far.
Beginners always want to know when they'll feel 'ready' for the next challenge, or when they'll stop feeling like they don't know enough. These questions are totally understandable and hit at how overwhelming it is when just getting started. Unfortunately the answer to both is "you'll never feel ready, and you'll never feel satisfied with what you know, but it gets a little easier and feels a little better with time".
The last thing is that beginners often feel that need to have a "thing" or focus really early on. They see people around them with expertise in certain areas and they feel pressure to find that one topic to hone in on. That's a lot of pressure to put on oneself! I'm super annoying and tell them to just wait for it to happen rather than forcing it. Passion and interest comes from emotional experiences with tech, and it can take a while to build those experiences and run into those intense emotions that dictate where we want to focus.
Have you used TypeScript for a full React app? If so, how did it go and was it worth the extra effort over plain ES6?
Does Microsoft have positions for senior nerds?
Hey Suz 👋 awesome AMA!
What is the wildest thing you've made and what is the wildest thing you want to make?
The wildest thing I made was with a friend for a hackathon. We created a website that took your daily step / distance data from your fitness band, and mapped that to progress in Super Mario World. Each day, you'd sync your device and it'd play through a comparable distance of the game in front of your eyes. The idea was to eventually walk / run yourself through the entire game. It was meant to encourage more steps to be taken in your day.
The wildest thing I want to make is a mesh connected set of tiny devices mounted on a wall with screens and speakers, that all know about each other and work together to make a game you play by communicating with them. I've started planning the schematic for the devices but haven't moved further on this yet!
Hello Suz Hinton! I’m new to your streams but I find the content fun. I have a couple questions in regard to your streams. When did you start streaming and was there any mental hurdles to get over before you started streaming?
Thanks for doing the AMA!
Thanks for reaching out with your questions about streaming and I'm glad you enjoy my content!
I started streaming just over 18 months ago, in summer 2016.
There were some mental hurdles in getting started with my stream. I'll reference my Medium post in this answer: https://medium.freecodecamp.org/lessons-from-my-first-year-of-live-coding-on-twitch-41a32e2f41c1
The main issue I had was that I felt like there was nowhere for me to hide, and it scared me. I thought, "everyone is going to think my code is bad, and that I’m a bad developer". I was worried folks would see my biggest weaknesses as a programmer and I'd become 'unhire-able' overnight.
Because of that, I rehearsed the first four streams the night before each one. That quickly ended up being too time consuming, and I felt I was being truly authentic with my viewers so I stopped doing that.
The first stream is the hardest one. Hitting 'Start Streaming' in OBS was terrifying the first few times. I do a lot of public speaking but this was just something else entirely.
My confidence and skills as a programmer have improved a lot since I started streaming. That's been worth the effort in swallowing the initial fears.
Hi Suz! You’ve inspired me to think more about a11y lately. What are your favourite resources on getting started? Do you have examples of websites that do a good job?
Hi Danielle! That makes me so happy to hear.
I'd recommend getting started with The A11y Project resource- https://a11yproject.com/
There is also a super friendly Slack full of knowledgeable people here: https://web-a11y.herokuapp.com/
A website that does a great job is Khan Academy: https://www.khanacademy.org/
Thanks for caring about accessibility. It is a topic near and dear to my heart.
What are some of your favourite/least favourite things about your job? How does it compare to experiences you’ve had before?
My favourite things about my job:
Being able to help fix things for other developers. I'm a fixer at heart. I prefer 'brownfield' projects to 'greenfield' ones. I like watering and maintaining an garden, more than starting a new one. In a lot of product teams I have worked on in the past, new features were always being planned and I really wanted to spend more time fixing the existing features.
I get to work from home a lot. It's done wonders for my productivity. I have previously never had a job where I can work from home.
Least favourite thing:
- I miss deep work a lot. I don't always have the time to sit down and work on one thing for continual periods of time, like I did in my previous roles on product teams. My team collectively runs a lot of events and schedules a lot of content. At this point, the developer community will benefit more from me working on documentation improvements, open source bug fixes, and 'how to get started' blog posts. It casts a wider net and gets people unstuck.
I'll be looking at prioritising some deep work in the coming months to get a better balance though! I feel lucky that I am trusted to find the right balance for both myself and the developer community I am of service to.
Love your streams, Suz! I especially like how good you are at explaining things in a simple, accessible way, with a positive, open minded attitude.
I've been working in the games industry for almost 18 years now, and have in the past few years ended up on the backend/services teams of a couple of companies. I recently shipped a big product on Kubernetes/Go, and during my time working on that I found the burgeoning community of fantastic cloud/services/open source folk such as yourself. It's that supportive group of advocates and friendly Slack people that have really inspired me to potentially look at changing career paths. For someone with a lot of software/dev experience but with relative inexperience with a lot of the paradigms/best practices/conventions in this space, do you have any advice for things I could do so if I decided to make a change I'd be able to "talk shop" and potentially land a job? I'm reading Kubernetes Up and Running and Cloud Native Infrastructure, and lurking on streams and Slack channels, but are there other things I could be doing?
Hi Justin, thanks so much for the kind words!
It sounds like you're considering a switch from gaming software to cloud software? Just making sure I understand the question.
Kubernetes Up and Running and Cloud Native Infrastructure are both great resources to really dig into this field. What would help you is being able to take that last product you launched and write up what worked, what didn't, how Cloud Native improved your services and products, and what architectural changes you'd make for the next project. Compare this with case studies out there about Cloud Native (both conference talk videos and articles from major tech companies) to see if you're drawing similar conclusions.
Within the gaming space, are there any other projects you could apply the same skills to with regard to your last big product ship? You have a unique angle, as a lot of knowledge out there is focused on web, retail, and media; not necessarily gaming.
It sounds like you're on the right track! Keep it up and make sure you're converting the lessons you learn into 'shop talk' worthy case studies so you can communicate what you already know in technical interviews.
What motivated you to start teaching LIVE on twitch? Your videos are very useful. Thank you. 🙃
Thank you! I cover this a little bit in my article here http://bit.ly/2nEHvnq
Essentially, I wanted people to feel less intimidated about open source, and also hardware / electronics. I wanted people to see that open source maintainers are just regular people who often sit at home hacking away at bug fixes.
I also missed teaching a lot. I used to teach programming in a technical school many many years ago. I would 'live code' on my screen plugged into a projector, and the class had to follow along line by line as I explained how the code was going to work. I would ask questions to the class to see if they were catching on, and would also field questions from them. It was a very interactive approach to teaching and I felt it resonated with a lot of the students.
I think my live coding streams borrow a lot of that teaching experience from my former years. Now that I'm not working with junior developers as much as I used to on product teams, it helps me retain my communication and critical thinking skills.
Hi Suz, What's your opinion on having a computer science degree in 2018? Is it required, if I want to work for a company like Microsoft?
My opinion is that it's not always required. However depending on the job you're looking to apply for, the knowledge and skills required to be hired can be based on what is taught in computer science such as algorithms, data structures, architectural design, etc.
For those without a degree in CS, I'd recommend learning these concepts and practicing them in code. These fundamental skills help you write better software, and you'll find it easier to take apart existing software and articulate how it's put together. This can in some circumstances help your profile and performance in technical job interviews.
I and many other colleagues/friends of mine working at Microsoft and other large companies (such as Google, Facebook, etc) do not hold computer science degrees.
Hey Suz! Any news on your affiliation status on Twitch? I'm looking forward to a set-it-and-forget it way to support your streams every month!
- Why did you get started with coding live?
- What's the hardest part of coding live?
I cover this question in this article I wrote: http://bit.ly/2nEHvnq
the hardest part BY FAR is the multitasking that is required. Talking aloud, answering questions in chat, and also acknowledging new followers and subscribers all take a toll on your mental ability to write good code and stay productive. You forget simple method signatures, struggle to read stack traces, etc with split attention. I always joke that you're half the programmer you normally are when streaming.