Put open source to work
July 16–17, 2018: Training & Tutorials
July 18–19, 2018: Conference
Portland, OR

Shenzhen Go: A visual Go environment for everybody, even professionals

Josh Deprez (Google Australia)
5:05pm5:45pm Thursday, July 19, 2018
Live coding
Location: Portland 252
Level: Intermediate
Average rating: ****.
(4.20, 5 ratings)

Who is this presentation for?

  • Software engineers

Prerequisite knowledge

  • A working knowledge of any programming language
  • Familiarity with Go (useful but not required)

What you'll learn

  • Explore Shenzhen Go, a cross-platform open source environment for writing Go programs
  • Learn why Go, with its Goroutines and channels, is a natural fit for visual paradigms, why visual programs can be performant, flexible, complex, and suitable for many "traditional" programming tasks, and why forcing visual complexity to be proportional to program complexity can be a good thing


Modern coding owes a lot to ideas that are not novel. Go is, openly, a combination of several old ideas: communicating sequential processes (i.e., Goroutines and channels), functions as first-class values, and traits (i.e., interface). What makes Go new and interesting is what the Go designers left out of the language. Similarly, visual programming paradigms are not new and are, in fact, very varied. Notable examples include GRAIL (RAND Corp, 1968), LabVIEW, Quartz Composer, macOS Automator, Microsoft SSIS, and Scratch. None are considered general purpose languages for some reason. Instead, generated visualizations are often employed for enhanced explanation, debugging, or monitoring aspects of traditional textual languages.

Shenzhen I/O from Zachtronics is a programming puzzle game. The premise is that the player must visually design gadgets out of virtual electronic components that satisfy some test cases, but each component runs a textual, assembly-like language. Being a puzzle game, the programming language and flexibility is deliberately constrained in order to make it challenging. Despite this, players have demonstrated surprisingly complex free-form designs.

To Josh Deprez, these virtual microcontrollers communicated a lot like how Goroutines communicate over unbuffered channels, so he thought it would be great if the assembly language was swapped for Go so it could be more practical. He implemented his idea as Shenzhen Go, a fusion of visual Shenzhen I/O-like circuits with the Go programming language, with an eye to practical general purpose programming. Shenzhen Go is cross-platform and open source (Apache 2.0), written in Go and GopherJS (with gRPC-Web), and interoperable with regular Go programs by outputting Go source code as an intermediate. Shenzhen Go source files, which the programmer edits visually, are intended to be textually readable and diffable.

Join Josh to learn how to get started with Shenzhen Go and write a performant server. Along the way, you’ll explore a roadmap of planned features and see how you can help.

Photo of Josh Deprez

Josh Deprez

Google Australia

Josh Deprez is a senior site reliability engineer at Google in Australia. He holds a PhD in algebra. His hobbies include gardening and vintage Macintosh restoration.