Workshop: BYOS: Build Your Own (Data) Services in NetsBlox

View on Snap!Con

Presented By: Akos Ledeczi, Brian Broll, Corey Brady


Blocks-based programming environments have proven effective for introducing novices to programming. These environments are generally characterized by both a low threshold and wide walls (i.e., they make it easy to get started and students can create projects on a wide range of topics). These wide walls can facilitate creativity and cultivate student interest in computer science, as they enable students to build applications relevant to their world and interests. Snap_!_ extensions such as Snapi and NetsBlox are designed to widen the walls further by making web APIs easily accessible to users (among other features). However, relying only on existing web services can make it easy to overlook many datasets that may be of interest to students (eg, regional data or highly specialized data). It also runs the risk of positioning students as consumers of data rather than also as producers and curators of data.

What if data services could not only be used from within a blocks-based programming environment but also created using blocks? This would enable educators in schools and informal learning centers to make their own datasets available to students as a data service and more easily customize curriculum to be relevant to their students. Furthermore, the creation of services introduces a new perspective to web services as students can be creators rather than simply consumers of content. To achieve these goals, we have recently added support for defining custom data services in NetsBlox which, in the spirit of lively blocks-based programming environments, is designed to have a low threshold, wide walls, and to promote tinkerability.

In this workshop, we will present how data services can be created in NetsBlox. First, we will start with a brief introduction to NetsBlox. Next, we will show what kinds of data service are possible, through a few examples. Then, we’ll work with participants to create their own data services. Next, we will show how NetsBlox determines intelligent default configuration options based on the contents of the dataset (as a CSV file). Finally, we will explore options for customizing the data service (by editing the generated configuration), ranging from the help messages to the implementations of the individual remote procedure calls (RPCs).