In the last week of 2017 I kicked off the project I wanted to start for quite a while - live streaming about network programmability, automation and Python on Twitch.
I could have made it a New Year’s resolution, but there isn’t a better time to do something than now. So why wait?

An opportunity presented itself spontaneously. My RouterGods colleague Judson is currently preparing for CCIE R&S and of course, like any decent CCIE candidate, he is labbing a lot. Recently he started creating his own big lab with a massive number of devices (65+) in the network emulator EVE-NG, but unfortunately EVE-NG can’t handle more than 64 nodes properly. He wanted to switch to GNS3, but encountered some problems there as well. Together we resolved those, and he was ready to start rebuilding his EVE-NG lab in GNS3. Anyone who has ever created a big lab in any network emulator knows how much time it takes to connect everything together and to prepare the base configurations with IP addressing. When he mentioned this to me I immediately started thinking about simplifying this tedious process by writing a topology converter from EVE-NG to GNS3 in Python. I thought it would be an interesting experience to do the whole process on the stream live. So I offered Judson my help and this is how my first project on the stream was born.

EVE-NG topology is an XML file and GNS3 uses JSON. At first, I thought it was going to take 2-3 hours to do the whole thing. “How hard could it be to convert XML of one application to JSON of another application with similar format?”.
Right? Wrong. In the end, the whole project took around 18 hours to get the first working result. I suspect it is the problem with the majority of software developers - we can’t estimate time properly.

During one week of holidays I was streaming 5 days out of 7. Usually the stream was taking 2-3 hours on average, while the last stream took 6,5 hours. Only after the stream I realized that I didn’t even stand up from my chair during that time. Probably I should be more concious next time . I’ve recorded every single stream and posted on my YouTube channel. I’ve also open sourced all written code on my GitHub page.

Here is the source topology in EVE-NG (clickable):
EVE-NG Topology Here is the screenshot of the resulting GNS3 topology generated by my script (clickable):
GNS3 Topology
Pretty cool, huh?

Here are my impressions about live streaming.
The most painful part is setting up your hardware and software. I’ve spent a lot of hours moving the stuff around, playing with OBS (streaming software) settings.
There are some other challenges:

  • Live streaming implies commentary. This is much harder to do during a coding stream compared to a gaming stream. Coding like any other mental work requires a strong focus. Your own words may distract.
  • Live streaming implies multitasking. As a streamer, you need to monitor the chat and interact with the audience. Sometimes this means that your coding flow is interrupted and the process takes longer than it should.
  • A successful streamer needs a permanent schedule so that viewers know when to expect the stream. This could be problematic because you have to commit to the schedule. This results in a blocked slot in the calendar during your free time.

What about the benefits?
There are quite a few:

  • Saying out loud your thoughts really helps in the decision making process. You spot potential problems once you said the idea much more quickly compared to when you are choosing only in your mind.
  • Practicing public speaking for free!
  • There are a lot of interesting questions and discussions in the chat. Engaging into them gives a well-deserved break from non-stop coding.
  • Occasionally viewers propose solutions better than yours and mention technologies that you haven’t heard about. It is so cool to learn something new in such a way!
  • For the live stream you have to exit the most of the sources of distraction (twitter, chats, youtube, facebook, etc.), this results in higher efficiency and stronger focus on your project.
  • You can measure the time spent on the project very accurately.
  • You have a chance to build a community around your channel and the topic you are covering. This is awesome!

There are not so many people streaming live coding (at least compared to streaming games with commentary), there are even less people doing live streams about networking. In fact, the only person I know, who does that, is another RouterGods member theLANTamer who is streaming on Youtube his CCIE journey.

Summing up it is indeed an interesting and unique experience. Why not document your learning journey and share your experience with others?

Am I going to continue doing streams in the future? Absolutely. In fact, my next project is going to be live streamed every Sunday at 6 PM CET / 12 PM EST / 9 AM PST starting tomorrow, January 7th 2018. The plan is to start building a big multi-vendor lab in GNS3, where I will explore different network programmability tools and approaches, including, but not limited to:

  • Python (paramiko, netmiko, asynchronous programming, API interaction)
  • Spark integration
  • API of different vendors
  • Telemetry
  • Docker containers with Kubernetes
  • Ansible
  • Salt
  • CI/CD with Git and Travis

Some things on the list I know well, other things are completely unknown to me. But it does not really matter - this is not exactly training videos but rather a journey, where I will be learning new things. If you are interested, you are more than welcome to join me on this journey!

In the end of this post I want to say thank you to a couple of people:

  • Thank you, Judson Bishop, for giving me a great idea that became the topic of my first streams. Good luck to you on CCIE lab - I know how much effort you put into it and you 100% deserve to get the number!
  • Thank you, Evgeniy Belyaev, for spending a countless number of hours helping me with setting up the stream.

You can join live stream on Twitch here:

Recordings of Writing EVE to GNS3 converter in Python live streams can be found here:
YouTube playlist
The code written for this project can be found here: