Workshops as code

Aug 24, 2021

Workshops as code

Avatar of ghuntley Geoffrey Huntley

TL;DR

  • Running workshops is easier and more productive with Gitpod.
  • There is an entire class of problems that attendees and educators continue to put up with when they shouldn’t need to because these concerns can be removed through automation.
  • People attend workshops because they want to learn about what is being taught and what device they are using, or how the device configured should not matter.
  • Hosting a workshop on Gitpod is as simple as supplying a Dockerfile and then specifying the commands to execute in a Git repository hosted on either GitHub, Gitlab or BitBucket.
  • DataStax have integrated their cloud-native database-as-a-service product offering with Gitpod.
  • Pulumi run their workshops with Gitpod, and we would love to work with you to integrate your workshop.

Folks in technical education, I have a hot-tip for you - Running workshops is easier and more productive with Gitpod. That’s a bold statement, and by the end of this tale, I hope you’ll be nodding your head but until then, mash this button to launch the Nix Operating System in your browser:

Open in Gitpod

Yup, that’s right, running an operating system in your browser is now possible in 2021. In 2019, which now seems like an eternity thanks COVID19, I was invited to deliver a workshop at Compose on NixOS.

Photo Credit: Javier Candeira Photo Credit: Javier Candeira

NixOS is an exciting up-and-coming in the DevOps space because it provides declarative and reproducible environments supported by powerful testing primitives. One may say NixOS is “an overnight success that is 18 years in the making” as many industry leaders are switching.

Anyway, I was in complete shock when circa 50 people registered to attend the workshop. So let’s glance past the entire topic of building workshop courseware for a moment and instead focus on the logistics of running a workshop.

One of the biggest challenges of running a workshop is ensuring attendees do all the prerequisite activities before turning up. For the NixOS workshop at Compose the steps were:

  • Downloading upwards of 4Gb of software from the internet (ie. 200gb of data).
  • Downloading and installing Virtual Box
  • Downloading and installing the Virtual Box Extension Pack.
  • Creating a virtual machine.

It’s important to remember that the reason people attend workshops is that they want to learn about what is being taught. People are willing to do prerequisite activities and put up with waiting for that half of the class that didn’t do the prerequisites to pass around that USB stick but already from the get go your workshop is off to a bad start and precious time is slipping.

Credit: SpongeBob SquarePants Credit: SpongeBob SquarePants

Suppose you were to once again peek at the prerequisite activities of the NixOS workshop. In that case, you’ll notice a line item - “Create a virtual machine”. At the time, the step appeared to be a simple request, but it wasn’t. People turned up with Chromebooks and laptops running macOS, Linux and shudder windows devices enrolled under group policy with admin rights disabled.

Fortunately, with some support from the lovely folks from the QFPL who ran around and helped reconfigure peoples devices (where possible), the workshop was able to start and was successful.

Afterwards, feedback was collected, and one item stuck out - what device attendees are using or how the device is configured should not matter . People should be able to rock up to your workshop and do it on an iPad Pro or from a forest with marginal 4G internet connectivity.

Credit: Geoffrey Huntley Credit: Geoffrey Huntley

Now granted, not every workshop requires people to install or configure virtual machines, but in the CNCF space, I often see people asking attendees to create a Kubernetes cluster as a prerequisite to learning. I’ll be frank here - there is an entire class of problems that attendees and educators continue to put up with when they shouldn’t need to because these concerns can be removed through automation.

By taking lessons learned from the infrastructure-as-code movement and converting workshops to Docker images, workshops become repeatable and reproducible. By utilising products such as Gitpod to consume, build and execute your Dockerfile then attendees no longer need to download or configure your software. All they need is a browser.

A Gitpod workspace gives you the same capabilities (yes, even root, Docker & qemu) as a Linux machine that is already pre-built, works on any device from anywhere and that launches in seconds.

Docker Compose Configuration

Hosting a workshop on Gitpod is as simple as supplying a Dockerfile and then specifying the commands to execute in a Git repository that is hosted on either GitHub, Gitlab or BitBucket.

Launching a workshop on Gitpod is as easy as prefixing any Git URL with gitpod.io/#. Thus if the workshop was hosted at https://github.com/gitpod-io/template-nixos then https://gitpod.io/#https://github.com/gitpod-io/template-nixos is the link that would be shared with attendees.

Alternatively, you could embed this button into the README of your workshop materials:

Open in Gitpod

However, if you want to take it to 11, maybe you’ll consider embedding Gitpod?

My mind is blown (🤯). Cédrick Lunven just showed me Gitpod with a full demo configured and ready to run. 2021 is a great time to be running workshops online!

  • Jonathan Ellis (co-founder and CTO of DataStax)

For the last couple of months, Gitpod has been working with DataStax who has integrated their cloud-native database-as-a-service product offering with Gitpod.

Datastax Astra DB is a cloud-native database-as-a-service built on Apache Cassandra that is designed to simplify cloud-native application development

Let’s peek under the hood how the integration works from top to bottom:

  1. DataStax have created self-paced workshops which are hosted on GitHub.
  2. These workshops are listed within Astra DB (which is DataStax’s DBaaS offering)
  3. On each workshop, there is a button to launch the workshop on Gitpod.
  4. DataStax prompts the user to select which managed database the workshop should use, and non-sensitive information is passed through to Gitpod as environment variables via the URL:

https://gitpod.io/#ASTRA_DB_ID=6677d1aa-2a69-4739-ba5d-26fdef15d8ae,ASTRA_DB_KEYSPACE=Workshop,ASTRA_DB_REGION=us-east1,ASTRA_DB_USERNAME=/https://github.com/DataStax-Examples/todo-astra-jamstack-netlify

Chris Coyier recently sat down and pair-programmed with David Jones-Gilardi of DataStax and Chris’s mind was also blown. In the video below, David doesn’t even use any local software other than a web browser. All code editing was done in Gitpod.

The Infrastructure as Software company Pulumi has also been using Gitpod as an option for attendees taking part in their instructor-led workshops because Gitpod enables them to spend less time configuring prerequisites and enables people to focus on what matters: the educational content.

Stuff like gitpod makes doing workshops so much easier I can’t believe how we used to do this stuff before - Matty Stratton https://twitter.com/mattstratton/status/1426213495826096131?s=20

🎉 Thanks for reading! Hopefully, you’re convinced and can see the benefits of defining your workshops as code by now. As recently announced, Gitpod is available to everyone, and our free tier is open to every developer with a GitLab, GitHub, and/or Bitbucket account.

If you need help integrating with Gitpod or automating your existing workshop schedule a ☕️ catchup with me via https://ghuntley.com/meet or geoff@gitpod.io. 🧡

More articles

From Theia to OpenVSCode Server - A history of Cloud IDEs from Gitpod's IDE architect

Background story about the last four years improving the editing experience of Cloud IDEs.

Avatar of akosyakov Oct 20, 2021

Introducing Teams & Projects

Teams, projects, prebuilds—it's now all at your fingertips.

Avatar of jankeromnes Avatar of mikenikles Avatar of gtsiolis Oct 15, 2021

Match made in automation heaven

Tabnine integrates with Gitpod in browser-based VS Code.

Avatar of JohannesLandgraf Avatar of mikenikles Oct 6, 2021