I am Suz Hinton. Ask me anything.

View other answers to this thread
Marko Mudrinić's photo

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 - [1] 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?

[2] Have you ever considered (or tried) using TypeScript? Would it be possible to run project such as Avrgirl using TS?

I'm looking to start playing with boards, and so. [3] Do you have recommendations for resources to get started with JavaScript and boards..? I know some basic JS stuff but nothing when it comes down to boards and electronics. [4] Also, can you recommend any kit to get started?

Last, but not least.. :D You're streaming and recording videos for some time now. And you're very successful doing that! :) [5] 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!

Suz Hinton's photo

Hi Marko! These are great questions.

[1] I do like programming boards and IoT software in JavaScript, however in my experience I have felt frustrated at times. JavaScript runs in an asynchronous manner, which can make coding hardware drivers in the language quite tricky! The library async (http://caolan.github.io/async/) is a huge lifesaver for running complex sequences, such as conducting reconnections after reboots, writing a collection of memory pages, and generally trying to run events in a very strict order. I'm not crazy about promises because they didn't really solve the control flow issues suffered by us writing JS hardware libraries. That said, I'm VERY excited about async/await support - which in conjunction with promises, will finally allow us to write easy to follow code for complex hardware scenarios.

[2] 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.

[3] 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/

[4] 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

[5] 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.

Marko Mudrinić's photo

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