by Darius Kazemi, July 18 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

Data tablets

RFC-199 (PDF) is titled “Suggestions for a Network Data-Tablet Graphics Protocol”. It's authored by one T. Williams of SDC, and dated July 15, 1971.

The technical content

Yes, this is another suggestion for a network graphics protocol. I am getting tired of these! For those keeping count, this has been the topic, more or less, of:

You'll notice that starting at RFC-174 there is a flood of these proposals. This is because RFC-134 announced a Network Graphics Meeting in late July 1971 where in order to participate, you had to submit a working paper about graphics as an RFC ahead of time. So, yeah. This flood of graphics RFCs is everyone submitting their homework that was assigned 3 months ago right before the deadline. Thanks, Al Vezza.


This paper says that RFC-177 provides a good basis for non-interactive graphics, so this paper is instead interested in interactive graphics, and in particular, data tablets. Data tablets are kind of like the touch pad on a laptop: a 2D surface that does not have an embedded display, and clicking on it, usually with some kind of stylus or pen, corresponds to some (x,y) coordinate on a screen.

There are four kinds of data that you can expect from a data tablet:

  1. Single shot: a click on the tablet that corresponds to a single (x,y) coordinate. The author proposes that each click be sent as a single 6-byte (48-bit) packet of data.

  2. Raw asynchronous input: a series of sampled inputs based on some kind of condition, like the pen has moved a certain distance and so it samples another (x,y) coordinate and sends it to the computer. The author suggested that each “stroke” of the pen is sent as an entity, so an initial 6 byte header is sent including the number of pen strokes to expect, and then an initial (x,y) is sent in 4 bytes, and then for each stroke a (delta-x, delta-y) is sent as in 2 bytes.

  3. Raw syncrhonous input: a tablet with a clock signal where N times each second it samples data from the pen. The data format is the same as the asynchronous one, except the sampling rate is included in the header.

  4. Preprocessed data.

The fourth category, preprocessed data, requires some explanation. A data tablet might have a noisy input, so it might make sense to run a smoothing algorithm on it before sending the raw data over the network. At SDC they use “an 8-point moving average” to smooth the inputs. So the preprocessed data essentially operates like the raw data formats above, but it also contains some metadata about the smoothing algorithm used, for example the number of points used in a moving average or the “window” of a filter.

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm an independent technologist and artist. I do a lot of work on the decentralized web with ActivityPub, including a Node.js reference implementation, an RSS-to-ActivityPub converter, and a fork of Mastodon, called Hometown. You can support my work via my Patreon.