text:
<file_sep>* intro
  > a new era of computing
    - ubuquitous computing
    - cnc fabrication
    - hyperform specification
    - cyborgs
  > a new era of cognition
    - theory of mind
    - robunculi
    - paper vs calculators
    - neural vs embodied interfaces
      . mouse vs stylus
      . drafting vs drawing
  > a challenge for makers
    - embedded systems complex and span many apis at different levels
    - robunculi as global computational api
  > toward a global api for computational systems
    - vision
    - scope
      . what are the affordances of computational systems?
      . what should an interface to control these behaviors look like?
    - methodology
      . propose model of affordances
      . demonstrate descriptive capabilities of model through a survey of computational systems
      . develop api for these affordances through a series of case studies
    - goal: provisional api to aid development of robunculi

* model of the affordances of computational systems
  > technology (capability) vs affordance
  > input / description
    - pointing / selection
    - commands (keyboard, gestures, voice, joystick, instruments)
    - text (and speech)
    - form (2d / 3d / hyper)
      . blob vs blocks vs skeleton
      . placement
      . posture
      . constraint
    - algorithms (high-level ie state machine)
  > sensing
    - presence (what / who is around)
    - audio streams
    - photo / video streams
    - structural forces
    - environmental conditions (light, temp, etc)
  (> messaging?)
  > output / reification
    - display vs tasks
    - signalling (power led, net traffic led)
    - neural stimulation (ie vibe vest)
    - imaging / projecting
      . text layout
      . 2d graphics (canvas / brush / blitmap)
      . 3d rendering
    - speech / music / sound fx
    - posing
    - self-reconfiguring

* survey of the affordances of computational systems
  > paper / print
  > manipulatives (non-computational)
  > apps (document editor, hypertext browser, photo editor)
  > robots (with user interfaces ie roomba)
  > wearables
  > tangibles

* api case studies:
  > posey
  > prismatic cubes
  > human hive
  > espresso blocks / hyperforms
  > siftables
  > topobo
  > roblocks
  > ckbot

* conclusion
  > success of model of affordances
  > state of robunculi api
  > implications for development and toolchain

* appendix: a provisional robunculi api
<file_sep>%%% Made of Tiny Robots
%%% An Investigation of the Ecology of Responsive Environments
%%%
\chapter{Conclusion}
\label{ch:conclusion}
%

\subsection{nodes of power}
        \begin{enumerate}
            \item manufacturing
            \item data transmission
            \item data stores
            \item shrines (high-powered computing clusters)
            \item leaf node control
        \end{enumerate}

\section{Potential (Artifact) Ecological Impacts of Responsive Environments}
\label{sec:ecological_impacts}
%
\subsection{Idols}
%
While we have related to our leveraged environments primarily as tool-users, as our environment becomes responsive this relationship is becoming more of a partnership amongst ourselves and various computational agents.
For example in a leveraged environment professionals would often supplement their memory by using a notebook and appointment book, and supplement their expertise with a small private library.
In a responsive environment, professionals supplement their memory through a small computer carried on their person (which we will call a \emph{crystal}\footnote{We call this class of handheld computers that provide a constant connection to the network `crystals', as in a crystal ball that is used to view distant places and communicate with other agents through the ether, and as a reference to their current popular physical realization as a fragile glass-plated touchscreen.}) that manages notes and appointments through the interaction of a variety of software agents over a network; they supplement their expertise by using this same device to query an idol (i.e. the googlebot).
Of course professionals in a leveraged environment also practice division of labor, with secretaries managing appointments and engineers on call to make judgements using their personal libraries to supplement their domain knowledge.
The difference is that in a leveraged environment partnerships are between people, and artifacts only effect change when operated by a person.
Now when people send us invitations (from their crystals, over the network) an idol helpfully inserts them into our calendars and then buzzes us through our own crystals at the appropriate time to tell us where to be.

We suggest that the outlook for accepting these idols into our cybernetic consciousness varies from the utopian to the orwellian largeley depending on: how much control we (the citizens of idol-mediated societies) have over the behavior of our devices and idols; and how transparent (to us) the mechanisms governing these behaviors are. But before we can discuss the qualities of these computational artifacts we should discuss what kinds of artifacts we expect to see.

    \begin{enumerate}
        \item radical transparency - big brother and little brother
        \item means of production 2 - factories vs 3d printers
        \item battle of the heavens - corporate clouds vs govt clouds vs community clouds
        \item digital serfdom and device transparency
    \end{enumerate}

    [TODO: figures showing axes] (transparency - physically secured state/corp rental -> drm'd black box -> open source hardware) (reconfigurability - mass-manufactured widget -> bespoke popsicle -> kit of parts -> hyperform)
<file_sep>\documentclass[12pt,letterpaper,notitlepage,onecolumn]{article}

% double-space for drafts
%\usepackage{setspace}
%\doublespacing

% use times font
\usepackage{times}

%\usepackage{enumitem}
\renewcommand{\theenumi}{\Roman{enumi}. }
\renewcommand{\labelenumi}{\theenumi}

\renewcommand{\theenumii}{\Alph{enumii}. }
\renewcommand{\labelenumii}{\theenumii}

\renewcommand{\theenumiii}{\roman{enumiii}. }
\renewcommand{\labelenumiii}{\theenumiii}

\renewcommand{\theenumiv}{\alph{enumiv}. }
\renewcommand{\labelenumiv}{\theenumiv}

% fix words that failed to break at end of line
\hyphenation{pose-able}

\title{Thesis Schedule}
\author{<NAME>}
\date{June 2012}

\begin{document}
\maketitle

\section{Milestones}
%
Full draft of thesis to be completed by 5 August 2012.

\begin{itemize}
    \item chapter 1 (intro): complete (ish, needs revisions see last milestone)
    \item chapter 2 (ontology): 21 June
    \item chapter 3 (survey): 1 July
    \item chapter 4 (case studies): 19 July
    \item chapter 5 (discussion): 26 July
    \item initial revisions: 5 August
\end{itemize}

\section{Chapter Outlines}

\subsection{Chapter 1: Introduction}
%
\textbf{To be finished by: completeish (needs revisions, see last milestone).}

\begin{enumerate}
    \item high-level introduction
    \begin{enumerate}
        \item ubiquity of computation leads to responsive environments
        \item analysis will focus on changing artifact ecologies
    \end{enumerate}
    \item evolution of artifact ecologies
    \begin{enumerate}
        \item wild environments
        \item leveraged environments
        \item responsive environments
    \end{enumerate}
    \item ecology as cybernetic interface (where do we plug in?)
    \begin{enumerate}
        \item ecology as cybernetic interface
        \item robunculi
    \end{enumerate}
    \item robunculi typologies (*** not written yet)
    \begin{enumerate}
        \item idols (for example googlebot)
        \item manipulatives / tangibles
        \item modular robots
        \item self-reconfiguring materials / programmable matter
    \end{enumerate}
    \item our project (*** needs substantial revision)
\end{enumerate}

\subsection{Chapter 2: Responsive Environments, an Ontology and Ecological Analysis}
%
\textbf{To be finished by: 21 June 2012.}

\begin{enumerate}
    \item an ontology of responsive environments
    \begin{enumerate}
        \item robunculi typologies
        \begin{enumerate}
            \item idols
            \item tangible sketches
            \item golems
            \begin{enumerate}
                \item sock puppet (dumb rc golem)
                \item avatar (golem serving as interface to idol)
            \end{enumerate}
            \item hyperforms
        \end{enumerate}
        \item morphologies
        \begin{enumerate}
            \item tile
            \item block
            \item skeleton (graph)
            \item panel
            \item glass (screen / projection interface)
            \item shrine (idol-scale computing facility)
        \end{enumerate}
        \item affordances
        \begin{enumerate}
            \item parallel affordances are synergistic
            \item placing / self-reconfiguring
            \item posing / flexing (self-posing)
            \item commanding (pointing) / signalling (haloing)
            \item listening (tagging) / responding (texting)
            \item graffing (accepting drawings) / gramming (responding with drawings)
            \item puppeteering / puppeting (present puppeteering interface)
            \item sinks generate structured data to be accessed through idols
            \item logging (recording interactions to data stores) (sink)
            \item crawling (indexing data stores) (sink)
            \item tracking (id-ing and classifying agents with sensors) (sink)
            \item slamming (exploring and mapping environments) (sink)
        \end{enumerate}
        \item nodes of power
        \begin{enumerate}
            \item manufacturing
            \item data transmission
            \item data stores
            \item shrines (high-powered computing clusters)
            \item leaf node control
        \end{enumerate}
    \end{enumerate}
    \item an analysis of the potential (artifact) ecological impacts of responsive environments
    \begin{enumerate}
        \item radical transparency - big brother and little brother
        \item means of production 2 - factories vs 3d printers
        \item battle of the heavens - corporate clouds vs govt clouds vs community clouds
        \item digital serfdom and device transparency
    \end{enumerate}
    \item what things *arent* robunculi?
    \begin{enumerate}
        \item construction kits vs rapid prototyping
        \item robunculi, productization and reuse
    \end{enumerate}
\end{enumerate}

\subsection{Chapter 3: Survey of Robunculi (the future is here, just not evenly distributed)}
%
\textbf{To be finished by: 1 July 2012.}

\begin{enumerate}
    \item (provisional; further research on other realized combinations needed)
    \item tiles for tangible sketching
    \item blocks for tangible sketching
    \item blocks for hyperforms
    \item skeletons for tangible sketching
    \item skeletons for golems
    \item glasses for idols
\end{enumerate}

\subsection{Chapter 4: Case Studies}
%
\textbf{To be finished by: 19 July 2012}

\begin{enumerate}
    \item analysis of the following projects with respect to:
    \begin{enumerate}
        \item does proposed ontology usefully describe this project?
        \item metrics for assessing relative success
        \item potential for reuse of:
        \begin{enumerate}
            \item interface methodologies
            \item instrumentation of affordances
            \item software modules
            \item design representations
            \item manufacturing techniques
        \end{enumerate}
        \item (artifact) ecological impacts
    \end{enumerate}
    \item (provisional list; to be amended after completion of survey)
    \item posey
    \item prismatic cubes
    \item human hive
    \item espresso blocks / architectural hyperforms
    \item siftables
    \item topobo
    \item cubelets
    \item ckbot
    \item googlephone
\end{enumerate}

\subsection{Chapter 5: Discussion and Analysis}
%
\textbf{To be finished by: 26 July 2012.}

\begin{enumerate}
    \item unexploited morphology + typology combinations
    \item identification of reusable components
    \item comparative analysis of relative success of projects
    \item comparative analysis of ecological consequences of projects
    \item assessment of utility of proposed ontology
    \item future directions
\end{enumerate}

\subsection{Initial Revisions}
%
\textbf{To be finished by: 5 August 2012.}

\begin{itemize}
    \item write 'robunculi typologies' intro section
    \item rewrite 'our project' intro section
    \item respond to any additional input received by the end of july
\end{itemize}

\end{document}

<file_sep>made_of_tiny_robots_thesis
==========================

my thesis on the means of production in responsive environments

started some time ago at the computational design lab at car<NAME>

the working title is *made of tiny robots*
<file_sep>%%% Made of Tiny Robots
%%% An Investigation of the Ecology of Responsive Environments
%%%
\chapter{A Survey of Robunculi}
\label{ch:survey}
%
ducks vs interfaces
-------------------

transition from leveraged to responsive environments
> transition from products to ecologies
> transition from ducks to interfaces

ducks:

<file_sep>\documentclass[12pt,letterpaper,notitlepage,onecolumn]{report}

% double-space for drafts
%\usepackage{setspace}
%\doublespacing

% use times font
\usepackage{times}

% graphics can be pdfs or jpgs or pngs, go in figures folder
\usepackage[pdftex]{graphicx}
\graphicspath{{./figures/}}

% makes several images with subcaptions inside one fig
%\usepackage{subfigure}

% use author-date references
\usepackage[longnamesfirst,round]{natbib}

% make links in pdf
\usepackage[pdftex]{hyperref}
\hypersetup{%
pdftitle={Made of Tiny Robots},
pdfauthor={<NAME>},
pdfkeywords={your keywords},
bookmarksnumbered,
pdfstartview={FitH},
colorlinks,
citecolor=black,
filecolor=black,
linkcolor=black,
urlcolor=black,
breaklinks=true,
}

\usepackage{url}
% \url{my_url_here}

\def\tm{\texttrademark} % \tm for trademark sign

% added to handle subfootnotes within footnotes
% and renumber with lower-case letters, starting
% with 0 in the subfootnote
\newcounter{myfootnotecounter}

\newcommand{\saveFootnoteCounterStartWithAlph}{%
\setcounter{myfootnotecounter}{\value{footnote}}%
\setcounter{footnote}{0}%
\gdef\thefootnote{\alph{footnote}}%
}

\newcommand{\restoreFootnoteCounter}{%
\renewcommand{\thefootnote}{\arabic{footnote}}%
\setcounter{footnote}{\value{myfootnotecounter}}%
}

% fix words that failed to break at end of line
\hyphenation{pose-able}

\title{\textbf{Made of Tiny Robots}\\
{\large An Investigation of the Ecology of Responsive Environments}}
\author{<NAME>}
\date{August 2012}

\begin{document}
\maketitle
\thispagestyle{empty}

{\centering
Thesis Committee:\\[\baselineskip]

\textbf{<NAME>}\\
Professor, CMU (chair)\\[\baselineskip]

\textbf{<NAME>}\\
Associate Professor, Georgia Tech\\[\baselineskip]

\textbf{<NAME>}\\
Associate Professor, CMU\\
}

\newpage
\abstract{%
\input{text/abstract}
}

\newpage
\setcounter{tocdepth}{1}
\tableofcontents
\newpage

\input{text/intro}
\input{text/ontology}
\input{text/survey}
\input{text/case_studies}
\input{text/conclusion}
%\input{text/acknowledgements}
\appendix
\input{text/glossary}

% generate bibliography
\addcontentsline{toc}{chapter}{Bibliography}
\bibliographystyle{plainnat}
\bibliography{local}

% just include previously generated bibliography (for submission)
%\input{text/bibliography}

\end{document}

<file_sep>%%% Made of Tiny Robots
%%% An Investigation of the Ecology of Responsive Environments
%%%
\chapter{An Ontology of Responsive Environments}
\label{ch:ontology}
%
As we enter the age of ubiquitous computing our relationship with our artifact ecology is changing.
There are several factors to these changes: we have new ways to fabricate artifacts; we have new ways of relating to artifacts; and our artifacts increasingly perform tasks that were once the exclusive domain of people.

To help to understand these changes we first develop a vision of the means of production within a responsive environment (in Section~\ref{sec:production}) and the roles that people can play in producing and interacting with responsive artifacts (in Section~\ref{sec:roles}). In Section~\ref{sec:artifact_ecologies} we then describe how people adopting these different roles interact within the artifact ecologies introduced in Chapter~\ref{ch:intro}.
We suggest that one of the key distinctions between these different ecologies is the roles that are available for members of each society to play; ecologies structured around more transparent technological mechanisms and more reconfigurable artifacts will present more opportunities for people to adopt roles that shape the behavior of their environment.
Of particular interest is what we are calling a robunculi ecology: manufacturing is focused on producing robotic kits of parts rather than devices that perform a single role; these kits can either be assembled, or can self-assemble, into a variety of forms on demand.

After describing this ecological backdrop, in the following sections we delve into the range of characteristics potentially exhibited by responsive artifacts themselves. In Section~\ref{sec:purposes} we enumerate several categories of purposes for which responsive artifacts could be intended. In Section~\ref{sec:morphologies} we discuss manipulative and other morphologies. We describe the pairs of synergistic input/output affordances that characterize responsive artifacts in Section~\ref{sec:affordances}. We describe several \emph{devotions}, modes of data collection that artifacts can perform in service of idols, in Section~\ref{sec:devotions}. And in Section~\ref{sec:characterizing} we collect together the five categories of features of responsive artifacts we have introduced with a set of icons that we will apply in the following chapters to characterize individual projects.

\section{Artifact Production}
\label{sec:production}
%
In a popsicle ecology we are used to purchasing packaged preconfigured devices. As illustrated in Figure~\ref{fig:hardware_venn} there are several ways a device can be implemented in a responsive environment.

\begin{figure}[b!]
  \centering
    \includegraphics[width=140mm]{hardware_venn.pdf}
  \caption{Venn diagram of computational artifact hardware categories.}
  \label{fig:hardware_venn}
\end{figure}

Two important factors in the production of responsive hardware are scale and tooling.
At the smallest end are chips, analog electronic components, sensors and actuators.
We will refer to this group collectively as \emph{organelles}, after the tiny machines that power biological cells; these components are generally produced in high volumes in and require expensive, technologically sophisticated tooling usually found in factories.
Even supposedly \textbf{open hardware} systems are built around these closed organelles.

At the next scale are modules that package these organelles to make them more accessible to spoke developers (for example an Arduino board), or to present a tangible interface (like our Posey kit).
(The Arduino is an example of a \emph{shrine}, a computing module that can, among other things, allow a device to communicate with idols.)
This stage of production can take place at a sophisticated local fabrication shop (with tools such as a \textbf{pick{}-and{}-place}) but often takes place in a more traditional factory because of the economic advantages of scale.

Popsicles are generally manufactured as a monolithic design including the necessary organelles on a custom circuit board, and sandwiched inside of a factory{}-produced case.
Spoke and robunculi ecologies make use of modules to lower the barrier to device design.
Sharing high{}-level components reduces the amount of technological knowledge required to create and customize devices.
Open hardware circuit modules abstract away from the complexity of organelles and electronics, and are generally accompanied by online code samples and tutorials.
Open hardware designs for cases and mechanical components can also be downloaded, customized and then fabricated with \textbf{rapid prototyping}%
\footnote{Some examples of rapid prototyping technologies commonly available at local fab shops are \textbf{fused deposition modeling (FDM)} \textbf{3D printers} and \textbf{computer numerically controlled (CNC) mills}.}
technologies at local fabrication facilities (such as \textbf{hackerspaces}).
Producing a device with robunculi requires no manufacturing at all; a device can be realized by assembling it from a kit, or by loading a program so that it self{}-reconfigures.

With robunculi systems the artifacts being manufactured are no longer devices but rather modules that we call \emph{bunkles} (our term for an individual robunculi module; analogous to a single lego brick) that can be used to create devices. We call a device that is implemented as a particular configuration of bunkles a \emph{fig} (as in a configuration). Robunculi make customization of a device design as accessible as playing with a construction kit. They support reuse by allowing different figs to be implemented at different times with the same bunkles. And a kit can be customized by fabricating new bespoke bunkles at a local fab shop.

While a single bunkle (or a single lego brick) is not generally useful, it is possible that a device such as crystal (i.e. a smartphone) could interoperate with robunculi;%
\footnote{For example Google and Arduino collaborated to produce the Arduino Mega Android Development Kit (\url{http://labs.arduino.cc/ADK/Index}), an open hardware module for creating spokes that interface with devices running the Android operating system.}
it could be connected as a part of a fig to provide a display, or better networking, or a more powerful processor.
We will call such a device that can function both on its own (as a popsicle) and as a part of a fig a \emph{volticle}, an abbreviation of `Voltron%
\footnote{Voltron is a fictional \textbf{mecha} from the Japanese animated series of the same name. It is composed of five smaller mechas that can operate on their own or join together to form Voltron.}
popsicle'.
Volticles are one example of how spoke and robunculi ecologies can influence larger popsicle ecologies to support transparency and reconfiguration.

Robunculi capable of self{}-reconfiguration can be used to create hyperforms (objects capable of changing their shape over time). We call a robunculi hyperform a \emph{hyperfig}; one useful way of characterizing a hyperfig is by defining a series of intermediate fig keyframes that the system self{}-reconfig{-}ures between.

Hyperforms can also be implemented by claytronic systems. While robunculi are composed of bunkle modules claytronic systems are composed of tiny clayticle organelles. We call the claytronic analog of a fig a \emph{thou} after the T-1000, the shape{}-changing robot made of ``liquid metal'' from the 1991 movie Terminator 2. A self{}-reconfiguring claytronic system could be used to implement \emph{hyperthous}. In the example of the (fictional) T-1000 (Figure~\ref{fig:t1000_weapon_thou}), it is capable of assuming a thou that mimics an actual person. Its hyperthou involves rapid self{}-reconfiguration of just the limbs of these mimic thous into piercing or slashing weaponized thous, as befits a killer robot from the future.

\begin{figure}[]
  \centering
    \includegraphics[width=80mm]{t1000_weapon_thou.jpg}
  \caption{Still from \emph{Terminator 2} showing the T-1000 implementing a mimic thou with a weapon thou in place of its left arm.}
  \label{fig:t1000_weapon_thou}
\end{figure}

\section{Roles for Responsive Environments}
\label{sec:roles}
%
One of the most important aspects of an artifact ecology are the roles available for people to relate to the artifacts within it. In some ecologies only a select few highly trained professionals have any input on the behavior of devices, while other ecologies provide opportunities for a broader spectrum of society to participate. We will not discuss the role a ``user'' of a locked{}-down device plays, but only roles that allow some level of input back into the larger ecology.

The roles described here are not meant to define individual people, but rather are different stances that a single person could take toward an artifact at different times. For example a researcher that designs prismatic cube bunkles could also take on the role of a fig designer and create a social table hyperfig. And then later at home the same person could eat dinner at a social table and write up an evaluation of the experience.

The roles are also not separated by discipline (e.g. electrical, mechanical, code) but by level of accessibility. This reflects the ideal of open hardware design that a single person can have an idea for a device and build a prototype to demonstrate it. Spoke and robunculi ecologies attempt to support this development model by packaging the more technologically demanding features in reusable modules. And our organization of roles reflects the reality that modules often span these disciplinary boundaries. (For example the Arduino project packages both electrical and software components, and many of its extension modules include mechanical, electrical and software bits.)

\subsection{Taster}
A person adopting this role, for example a person sitting down at a social table, is relatively passive in relation to the artifact in question. Tasters participate in the ecology by providing critical feedback in relevant forums. This could be as simple as having a specialized gesture expressing approval (or disapproval) of a given hyperfig that is then incorporated into rankings on the online hyperfig repository, or as involved as filing a bug report.

While even in a popsicle ecology journalists and bloggers can play this role, the online design repositories of spoke and robunculi ecologies provide an opportunity for tasters' feedback to be used as debugging data and a filter for identifying successful systems.

\subsection{Wrangler}
Many devices require substantial input from a person, for example many military drones are operated remotely by a trained pilot. While adopting the roles described below requires some kind of expertise in customizing or building devices, wrangling demands expertise at piloting or otherwise managing devices' behavior in real time.

As wranglers possess a unique perpsective on the behavior of the devices they wrangle, it would be desirable for ecologies to also attract wranglers to serve in design roles. Tinker roles in particular (discussed below) offer an opportunity for wranglers to give design input without a great deal of investment in training.

\subsection{Tinker}
Many people are motivated to understand more about the mechanisms underlying the behavior of responsive devices but lack the technical knowledge required to address systems at the same level as their designers.
A strategy for engaging this community is to create devices with tink interfaces.
An example is a golem robunculi with instructions for building a given golem that can then be varied, much like lego kits come with instructions that can serve as a jumping{}-off point for more creative endeavors.
And while such mechanical tinkering is straightforward, tangible interfaces can also be used to allow tinkering with algorithms%
\footnote{For example Scratch \citep{scratch} has established a model for a visual, fault tolerant tinkering{}-style programming interface that involves shuffling puzzle{}-piece chunks of code, although it is screen{}-based.
Tern \citep{tern_classroom} applies similar ideas with a tangible interface composed of literal wooden puzzle pieces.
With Cubelets (nee RoBlocks) \citep{roblocks} a fig specifies both mechanical and algorithmic properties at once.}
and electronics%
\footnote{For example littleBits \citep{littlebits} package electronic components to afford tinkering with circuits.}.

By providing opportunities for people to tinker with their devices robunculi ecologies can help to both engage people in a conversation about their devices, and recruit people to expand their technological capabilites so that they are able to adopt more technologically demanding roles. By providing places for people to expand and apply their skills, a spoke ecology and its associated hackerspaces can help these new recruits find productive technical roles to play.

\subsection{Tek}
Here we have reached the realm of the professional designer (and engineer). A tek is a person who comes up with ideas for and builds new devices.
While professional designers are traditionally grouped according to their specialized technical discipline, we suggest that such compartmentalization works against a tek's ability to envision and create useful devices.

In particular, within spoke and robunculi ecologies the availability of modules that package complex technologies lower the barrier to assuming the role of a tek.
With robunculi the distinction between a tinker and a tek is even somewhat blurred, but as we will describe in Chapter~\ref{ch:case_studies} the creation of a device with new behaviors (rather than a variation on an existing device) will generally involve more advanced tools alongside the bunkles themselves, requiring tek{}-level proficiency.
We predict that the character of these artifact ecologies with a broad community of people able to assume the role of device designers will contrast sharply with popsicle{}-dominated ecologies where the character and behavior of devices are largely dictated to the community.

\subsection{Tooler}
Much of the growth of the open hardware scene and the spoke ecology comes from people who are thinking not about creating devices, but about the tools that can help teks to create devices. In doing so these people are assuming the role of a tooler. While a tooler may build a literal tool, such as a 3D printer, they also focus on packaging technologies in modules that make them more accessible. This is common practice in software development (even in popsicle ecologies) and is quickly spreading to electronic and mechanical development in spoke and robunculi ecologies. Again, toolers are not generally defined by discipline as many modules package components from several disciplines. In robunculi ecologies toolers design the bunkles (and their control algorithms) that teks and tinkers use to create devices.

\subsection{Wiz}
Because of the complexity of the technologies involved in creating responsive artifacts, at some point there is a demand for specialization.
We call someone who considers the deep issues of a discipline, either to extend what can be done, or to make its capabilities more accessible, a wiz.
In adopting the role of a wiz a person could be developing a new programming language, designing a computer chip, developing a new actuator, or creating a new rapid fabrication technology.
While people able to play such a role are generally prized in any artifact ecology, we suggest that ecologies that expand the community of teks have the potential to develop a greater number of wizzes, thus advancing the capabilities of the entire ecology.

\section{Production and Roles in Artifact Ecologies}
\label{sec:artifact_ecologies}
%
In Chapter~\ref{ch:intro} we characterized several emerging ecologies in which responsive artifacts can be produced and deployed. We suggested that these ecologies differ significantly in the level of control average citizens have over the behavior of the artifacts in their environment. Here we detail the roles available to people within these ecological niches and discuss the effect these differences make in empowering people to participate in specifying the behavior of their robotic companions (or not).

We illustrate the relations of production and roles in these ecologies with some diagrams. These diagrams focus on entities that make a meaningful contribution to specifying the behavior of artifacts, and the roles people adopt in doing so. These diagrams present a relatively crude picture of complex phenomena, but even so serve to illustrate some striking differences.

\subsection{Popsicle Ecologies}
%
\begin{figure}[b!]
  \centering
    \includegraphics[width=130mm]{popsicle_ecology.pdf}
  \caption{Production and roles within a popsicle ecology.}
  \label{fig:popsicle_ecology}
\end{figure}
%
This ecology is the simplest---there are relatively few people involved in creating artifacts, and relatively few roles available for non{}-professionals to adopt in relation to their artifacts.
Figure~\ref{fig:popsicle_ecology} depicts the development of a hypothetical popsicle, a table with a crystal embedded in the surface.
The hardware is developed internally by a single company (Figure~\ref{fig:popsicle_ecology} at \emph{B}). The design leverages a few reusable packages developed internally by the company's toolers, but is largely developed by company teks drawing on previous design iterations. The device is built around  a \textbf{system on chip (SoC)} organelle%
\footnote{An example is Qualcomm's Snapdragon that handles processing, graphics, and both cellular and wifi networking for crystals.}
developed by circuit wizzes employed at an organelle corporation (\emph{C}).
This hardware is then combined with an operating system developed for tabletop crystals by language wizzes at a software company (\emph{A}).%
\footnote{Another device company developed the software for its competing iTable internally.}
Both the device and its organelles are produced and assembled (and loaded with software) by toolers and teks at specialized manufacturers (\emph{G}) that operate enormous factories.
The high cost of the specialized buildings and tools (especially for producing organelles) is amortized over the large number of devices produced.

Several versions of this table crystal are produced, including a professional model for electronic musicians and another version marketed for home use. The professional version is used by wranglers to perform shows (\emph{F}) for a group of tasters. The other version is used by tasters at home (\emph{E}). In this ecology wranglers and tasters have no direct input on the behavior of their table crystals, but can post their opinion on blogs or online forums (\emph{D}). Teks and toolers at the device companies can follow these posts with the assistance of idols and can potentially consider this input.

\subsection{Spoke Ecologies}
%
\begin{figure}[b!]
  \centering
    \includegraphics[width=130mm]{spoke_ecology.pdf}
  \caption{Production and roles within a spoke ecology.}
  \label{fig:spoke_ecology}
\end{figure}
%
With spoke ecologies  (Figure~\ref{fig:spoke_ecology}) we see the emergence of online repositories---for both code (\emph{G}) and hardware specs (\emph{H})---as a means of coordinating a distributed, open design process. The wizzes of open code development organizations engage with a community of volunteer language hacker wizzes (\emph{J}) as well as the toolers and teks making use of their code (\emph{C}, \emph{D} and \emph{K}).

These ecologies are defined by a shift from devices produced by large manufacturers (\emph{F}) to custom built devices assembled in neighborhood fabs (\emph{I}).
Large manufacturers still produce organelles, which are still designed by wizzes at organelle companies (\emph{B}). Organelles are packaged in open hardware modules (such as the Arduino).
Many parties may contribute to a design from academic labs%
\footnote{Such as New York University's Interactive Telecommunications Program  and the now defunct Interaction Design Institute Ivrea that incubated the Arduino project.}
to online retailers%
\footnote{Such as Adafruit, Sparkfun and Seeed Studio.},
to individual device hackers.
By coordinating through online hardware repositories (\emph{H}) these parties may contribute original designs, modify existing designs, manufacture modules, or all three.

The facilities for combining open software and open hardware modules to create a spoke are provided at local fab shops (\emph{I}).
These facilities feature rapid prototyping tools, many of which are themselves open hardware designs developed at academic research labs (\emph{E}) and produced at other local fabrication shops.
Teks employed at these shops can provide advice and assistance on spoke projects for those with the technical know{}-how to produce their own designs, or can produce custom works on commission.
These custom designs can then be posted back to an open hardware repository to continue the design conversation, either by the local fabrication shop (\emph{I}) or the tasters and wranglers using them (\emph{L} and \emph{M}).

As in a popsicle ecology, many of the parties in this scenario post on blogs and forums. We left that activity off of this diagram as all parties have more direct means of contributing to the design process. Of course, fewer people are able to participate in this ecology as to produce a spoke one must be able to either adopt the role of a tek or have the resources to commission a tek to produce it. Although these ecologies may not produce as many devices as a popsicle ecology, they help to teach more people the skills to contribute to the design space. This can in turn affect popsicle ecologies---for example there are several open source operating systems for popsicle crystals (distributed in a similar manner to spoke software) that a tek can load onto a device to customize its behavior.

\subsection{Robunculi Ecologies}
%
\begin{figure}[b!]
  \centering
    \includegraphics[width=\textwidth]{robunculi_ecology.pdf}
  \caption{Production and roles within a robunculi ecology.}
  \label{fig:robunculi_ecology}
\end{figure}
%
To simplify this already complex scenario---illustrated in Figure~\ref{fig:robunculi_ecology}---we are supposing that corner fab shops (\emph{I}) have advanced open hardware fabricators (developed by open fabricator development labs at \emph{E}) capable of printing out both circuits and structural components.
By feeding in the appropriate organelles and feedstock such a machine could print a functional bunkle with little or no manual assembly required.
As a result relatively large numbers of bunkles can be produced on demand in local fabs and only organelles are still produced in large factories (\emph{F}).

Our diagram of this technologically advanced robunculi ecology is still the most complex as there are so many roles capable of making contributions.
As in a spoke ecology there are online repositories for managing code (\emph{H}) and hardware specifications (\emph{I}).
There is also a new class of repository for fig specifications created by bunkle research labs (\emph{D}), behavior research labs (with wizzes working to create reusable modules to support figs and hyperfigs at \emph{G}) and open fig organizations (which employ toolers and teks to create new figs at \emph{L}).
Much as wiz language hackers working at home (\emph{M}) can contribute to online language repositories, wiz, tooler and tek fig hackers working at home can create new behaviors and figs.
Robunculi ecologies also feature a new role which almost anyone can adopt to customize the behavior of a fig: by adopting the role of a tinker (\emph{P}) people can leverage specially designed tangible interfaces to adjust the form and behavior of a device.
These customizations can also be posted to the fig repository (\emph{K}) to give feedback on how figs are actually put to use.
For performers, tinkering could become a part of the performance alongside wrangling (\emph{O}).

Participating in a robunculi ecology is more accessible than participating in a spoke ecology as bunkle kits can be printed out on demand (or in a less technologically advanced scenario ordered online) rather than custom designed and built like spokes. These ecologies still provide many of the advantages of a spoke ecology as bunkle kits allow people to customize their device figs, and to share figs and customizations with others online.

We suggest that robunculi ecologies complement spoke ecologies by lowering the barrier to becoming involved in the design of devices.
People who become interested in tinkering with their figs could visit their local hackerspace to learn to produce their own bespoke bunkles to extend the functionality of their kits.
As some of these new teks pursue their interests into the realms of tooling and wizdom the technical expertise of these communities could quickly expand.

\subsection{Claytronic Ecologies}
%
We have not produced a diagram of a claytronic ecology as the underlying technology is still being developed and it is not yet clear what form these ecologies will take.
A central question is whether clayticle organelles will be produced in local fabs, completing the transition to decentralized production; or will clayticles be churned out by super{}-sophisticated factory labs, invalidating the need for local fabs as every lump of this programmable matter is a self{}-contained mini{}-fab?

Aside from the technology considerations we suggest that claytronic ecologies could vary significantly depending on whether they develop from popsicle or robunculi ecologies. Will lumps of programmable matter be shipped from the factory with a few preset hyperthous, or will they be able to download new behaviors from online repositories? Will these hyperthous present interfaces to afford tinkering? The organization of our artifact ecology could have as much influence on the implementation of claytronic systems as our technological advances.

\section{Artifact Purposes}
\label{sec:purposes}
%
While the intended purpose of a non{}-computational artifact generally dictates its form, the physical form of a computationally enhanced artifact is often less constrained.
By distinguishing devices according to their purpose we can develop a consistent language and reusable modes of interaction.
We enumerate several categories of artifact purposes below, as illustrated in Figure~\ref{fig:kinds_of_artifacts}.

\subsection{Ducks}
%
Our name for objects that derive their utility directly from their form---rather than serving as an interface to some computational affordance---comes from Venturi's term \citeyearpar{venturi_vegas} for a building that expresses its purpose symbolically through its form.%
\footnote{Venturi's example was a poultry store on Long Island that sold ducks and eggs; the building was shaped like an enormous duck.}
For example, a shovel implemented with a claytronic system would be a duck thou---because the clayticles' computational affordances are being used to realize the desired form, but the shovel's only affordances are derived from its form.
Mass{}-produced non{}-computational artifacts such as a bowl and spoon (Figure~\ref{fig:kinds_of_artifacts}, \emph{C}) are \emph{duckcicles}.
A hyperform that derives its affordances from its changing forms, for example the social table hyperfig illustrated in Figure~\ref{fig:kinds_of_artifacts} at \emph{G}, is a \emph{hyperduck}.

\subsection{Golems}
%
Devices whose primary purpose is not interfacing with people but rather performing tasks for people fall into this category.
An example of a popsicle golem is BigDog \citep{bigdog}, a quadraped robotic pack animal designed to carry gear for soldiers.
Robunculi golem kits could be used to quickly construct a golem to perform a particular task (for example the quadraped fetchbot golem shown in Figure~\ref{fig:kinds_of_artifacts} at \emph{F}); the same bunkles could later be reused to create a different golem with different capabilities.

A golem that is under direct control of a human operator (like many military drones) is a \emph{sockpuppet}. A golem that is assigned tasks (or controlled directly) by an idol instead of a person is an \emph{avatar}. And a golem that people can ride on (or in%
\footnote{For example Google's driverless car.})
is a \emph{mount}.

\subsection{Tinks}
%
This is a device that supports tinkering as a means of expression. For example an audio mixing console features an array of dials and faders that adjust the relative characteristics of a collection of instruments and microphones.
The faders and dials serve to both illustrate the current state of the system and as an input for adjustment.
We call a kit that supports tinkering, such as Sifteo (nee Siftables) tiles \citep{siftables} (Figure~\ref{fig:kinds_of_artifacts}, \emph{E}), a \emph{tinkit}.

\begin{figure}[]
  \centering
    \includegraphics[width=140mm]{kinds_of_artifacts.pdf}
  \caption{An illustration of various kinds of artifacts found in responsive environments: \textbf{\emph{A}} a (work)bench computer (a popsicle); \textbf{\emph{B}} an avatar hyperthou; \textbf{\emph{C}} a bowl and spoon (duckcicles); \textbf{\emph{D}} a stickpuppet fig (with a skelly tinkit body and a volticle crystal for a head); \textbf{\emph{E}} a tile tinkit; \textbf{\emph{F}} a golem fig fetching lunch; \textbf{\emph{G}} a social table hyperfig (composed of prismatic cube bunkles).}
  \label{fig:kinds_of_artifacts}
\end{figure}

\subsection{Sticks}
%
While many devices in a responsive environment may operate autonomously, it will often be desirable for people to give direct input to control a device.
We call a device that facilitates realtime control input a `stick', after the classic video game input device the joystick.

There are several varieties of sticks.
For example a device that gathers together several buttons and directional controls such as a game controller, or an aerial drone sockpuppet's dedicated control panel, is a \emph{stickboard}.
The smaller fetchbot model (built with a tinkit) shown in Figure~\ref{fig:kinds_of_artifacts} at \emph{D} could be used as a \emph{stickpuppet} to directly pose the fetchbot golem shown at \emph{F}.
More nuanced input could be gathered from a partial%
\footnote{For example the g-speak system \citep{gstalt} uses motion capture to identify hand gestures made while wearing special gloves in a space populated with high-resolution video cameras.}
or full-body%
\footnote{For example with a Kinect, an inexpensive system (sold as a peripheral for the XBox video game console) that captures both a depth mapping (using an infrared laser and sensor) and a video stream. This data can be combined to reconstruct a person's full-body pose.}
\emph{sticksuit} that uses either an instrumented space or integrated sensors in clothing (or both) to capture human movement with high fidelity.

\subsection{Shrines}
%
These are systems that provide people with a direct interface to idols or computation.

A crystal is a shrine that supports communication with distant people and idols; a touchscreen with a microphone, one or more cameras, and various sensors and networking interfaces (Figure~\ref{fig:kinds_of_artifacts}, the head of the stickpuppet at \emph{D}). An example is a smartphone or tablet, or to a lesser degree a device such as an ipod touch (as a proper crystal should have an always-on network connection).

A shrine with expert interfaces (for a tek or tooler) is a \emph{bench} (as in a work bench, shown in Figure~\ref{fig:kinds_of_artifacts} at \emph{A}). A bench often features specialized input devices such as a keyboard, a \textbf{force-feedback pointing device} or a reservoir of bunkles.

A more powerful collection of computers (such as a server farm) capable of hosting an idol or performing simulations run by a wiz is a \emph{temple}.

\subsection{Badges}
%
While people are adept at visually identifying other people and artifacts, most computational systems need a hint. Badges are devices that can be attached to an artifact or worn by a person to facilitate their identification by responsive devices. Passive badges such as \textbf{QR codes} and \textbf{RFID tags} need to be scanned by a sensor, while active badges such as crystals generally track their own position%
\footnote{Using the \textbf{global positioning system (GPS)} or radio triangulation from known cell towers and wi-fi access points.}
and broadcast it over the network.

\section{Responsive Morphologies}
\label{sec:morphologies}
%
While ducks come in many forms, devices that serve as computational interfaces are generally constrained to one of a few familiar morphologies. The first three (screens, boards and guns) are traditional computational morphologies and the next four are manipulative morphologies (illustrated in Figure~\ref{fig:manipulative_morphologies}) for robunculi.

\subsection{Screens}
%
Many computational interactions revolve around the screen, a display generally composed of individually controllable red, green and blue pixels. Crude screens may only display in two colors (such as black and green) or may only display characters. Some screens also accept input from fingers or styluses.

\subsection{Boards}
%
These devices collect together a variety of buttons, toggles, faders, dials, directional pads, or trackballs to provide a means of giving input to a computer. Some examples are a keyboard, a mouse, a game controller and an audio mixing console.

\subsection{Guns}
%
There are many examples of handheld sensors that are operated by pointing them at things: (video) cameras, microphones, laser range finders, thermal sensors. Some of them, such as a target-painting laser, or a surface-to-air missile, can even be used to blow things up. The same devices can often also be mounted on or near a screen (for example a camera) so that they point back at you.

\subsection{Tiles}
%
These manipulatives facilitate arranging tokens in a two-dimensional space. Tiles are useful for describing relationships such as adjacency, grouping and ordering. Due to the simplicity of this morphology they are particularly amenable to having graphics or a screen on their faces.

\begin{figure}[tbh]
  \centering
    \includegraphics[width=\textwidth]{manipulative_morphologies.pdf}
  \caption{Examples of each of the four manipulative morphologies.}
  \label{fig:manipulative_morphologies}
\end{figure}

\subsection{Blocks}
%
This is the most accessible of the 3D manipulative morphologies, and the most general, as a pile of cubes or lego bricks can be arranged to rasterize almost any 3D form. A limitation of blocks is that achieving a satisfactory level of granularity may require large numbers of modules.

\subsection{Skellies}
%
Named for the skeletons they resemble, this morphology includes hub-and-strut kits (such as tinkertoys), as well as chain link kits (such as zoobs). A skelly can be used to represent abstract graphs or to model articulated forms.

\subsection{Panels}
%
This is a kind of 3D variation of a tile kit. Sometimes panels connect directly to each other to form a load-bearing structure, and sometimes they are attached to a frame.

\section{Responsive Affordances}
\label{sec:affordances}
%
While ducks and manipulatives present various affordances that derive from their forms, responsive artifacts can additionally present affordances that derive from their robotic capabilities.
These affordances can be organized in input/output pairs, for example our prismatic cubes can sense the fig they have been \emph{placed} in (input), and can self-reconfigure into a new fig on their own (output).
Below we characterize the six pairs of input/output affordances that a responsive artifact can offer.
Systems that offer \emph{parallel affordances}---by implementing both the input and output affordances of a pair---benefit from the synergistic effect of being able to repeat what has been demonstrated to them.
Devices can benefit from a thoughtful combination of manipulative forms and responsive affordances.

\subsection{Placing and Self-reconfiguring}
%
These affordances deal with alterations to the topology of a fig.
Sytems that afford placing are capable of sensing when a fig's shape is altered by adding, moving or removing bunkles.
Systems that afford self-reconfiguring are capable of rearranging the bunkles of a fig to produce arbitrary forms (within certain constraints). As bunkles capable of self-reconfiguring can be used to realize hyperforms we call these specialized modules \emph{hyperbunkles}.

\subsection{Posing and Flexing}
%
These affordances deal with alterations to a device's pose.
A system that affords posing is capable of sensing bending, squeezing or stretching a form to alter its shape.
Systems that afford flexing are capable of actuating these same degrees of freedom to produce arbitrary poses.
Articulated gaits and wheeled motion are also a form of flexing---reproducing a pattern of poses results in motion through space.

To properly support posing (or flexing) a system must be able to sense (or actuate) all of the mechanical degrees of freedom available in the device. For example the hubs and struts of our Posey kit feature a ball and socket joint that permits three degrees of freedom. By employing a complex sensor to read all three degrees of freedom Posey fully supports posing. Senspectra \citep{senspectra}, another skelly kit, features flexible struts with two degrees of freedom, but only senses the degree of bending and not the direction. It is thus possible (although not necessarily desirable) for a system to only partially support posing (and in a similar manner, flexing).

\subsection{Tapping and Haloing}
%
It is often desirable to pick out one entity among many. Tapping is the input affordance of being able to (perhaps literally) tap on a single entity to indicate it. Haloing is the parallel output affordance of indicating a single entity within a group. These affordances can be presented by bunkles as well as entities rendered on a screen.

These first three pairs of responsive affordances form the basis for tangible interaction as they can be applied synergistically to manipulative morphologies.

\subsection{Tagging and Texting}
%
These affordances refer to the capability to accept text as input---tagging---and to print text as output---texting. They are typically, but not necessarily, implemented with a keyboard and screen, respectively.

These two affordances alone are sufficient to support a \textbf{command line interface}, which is all that many wizzes are looking for in a responsive artifact (provided the interface is coupled to a sufficiently powerful computer and network connection).

\subsection{Graffing and Gramming}
%
Devices that support graffing are capable of accepting drawings as input, either directly with a finger or stylus, or indirectly with a pointing device. Devices that afford gramming have the capability to display graphics (rather than just text).

These affordances, together with tapping and haloing, and tagging and texting, are the basis for the graphical user interfaces which mediate nearly all interaction with shrines (except for command line interfaces, which leverage a subset of the same affordances). By combining text and graphical affordances with tangible affordances, robunculi such as Sifteo tiles support tinkering interfaces to complex systems.

\subsection{Obeying and Mocking}
%
The names of these affordances are intended to evoke behaviors of domesticated animals: dogs are able to obey spoken (and gestural) commands and parrots are capable of mocking (if not necessarily understanding) them. While these affordances may be implemented as an audio interface, it could also involve gestures or other language-like behaviors.

While these audiovisual affordances have not been well supported due to the difficulty of parsing spoken language (not to mention body language), with advances in this technology these interfaces may become more popular. An advantage of an audiovisual interface is that it makes few demands on the morphology of the device and is broadly accessible with little training. These affordances are potentially especially useful for wrangler and taster interaction with golems and ducks, as these devices' morphologies are constrained by their functions.

\section{Devotions}
\label{sec:devotions}
%
While responsive affordances help us to relate to our devices, much of the power of our devices comes from their relationship with idols on the network.
The structure of this relationship is generally that our devices offer information up to our chosen idols (through the network) and in return they leverage this information to improve search results (through a better understanding of our current context) and manage data that is important to us (among other things%
\footnote{Serving us better is not idols' only motivation for accepting our data; they also use this information to profit their parent organizations through activities such as selling models to marketing agencies.}).
We call these modes that a device can employ to offer up information to an idol devotions.

\subsection{Naming}
%
This devotion allows our devices to vouch for the identity of the bearer. This can be used to identify the source of other devotions; or to give access to resources such as bank accounts at the point of sale;%
\footnote{For example android phones with \textbf{near field communication (NFC)} can use Google Wallet in place of a credit card to pay for things in a store.}
or to give the bearer access to physical spaces by for example opening electronic locks on doors.

\subsection{Slamming}
%
The name of this devotion is derived from \textbf{simultaneous localization and mapping (SLAM)}, which is the robotic discipline of figuring out where a device is. At its most basic this devotion lets the device communicate to the idol where it is. For example, when you ask an idol for a map on your crystal, it is this devotion that allows the idol to indicate your current position on the map.

More advanced versions of this devotion actually generate maps of areas unknown to an idol (or refine the idol's current maps).

\subsection{Logging}
%
An advantage of a device with a constant connection to the network is that data can automatically backed up to repositories on the network---devices that automatically mirror their data online practice the devotion of logging.
An example of a device that supports logging is a crystal; once the naming devotion is initiated with an idol crystals will automatically mirror all contact data so that even if the device is lost your contact information is not.
And a crystal's camera can be configured to automatically log any photos you take.

By adding custom sensors to crystals, logging has also been used together with slamming to track environmental conditions such as radiation%
\footnote{Safecast, founded in response to government secrecy after the Fukushima reactor meltdown, produces open-hardware radiation sensors that can be plugged into a crystal. Safecast's idol recieves data from devotees and uses it to generate maps of radiation levels (\url{http://safecast.org}).}
and air pollution%
\footnote{For example the researchers for the N-Smarts project gave taxi drivers crystals with bespoke carbon dioxide sensors to generate an air quality map of Accra, Ghana \citep{n-smarts}.}.

\subsection{Tracking}
%
While slamming allows idols to follow the whereabouts of their devotees, the devotion of tracking consists of devotees identifying and communicating the location of other nearby entities (and possibly other information about the current state of these entities). For example many intersections now feature devices with arrays of cameras that track the cars entering the intersection by reading their license plates. These devices are also tied into the systems operating the traffic signals; anytime a car enters the intersection against the light an additional alert is sent to an idol that issues citations by mail.

\section{Characterizing Responsive Artifacts}
\label{sec:characterizing}
%
The intent of this sketch of responsive artifact ecologies and devices is to allow us to characterize responsive artifacts. By identifying similar systems we can critically examine: their relative effect on the ecology; their relative performance; and opportunities for reuse. To this end we have developed icons (Figure~\ref{fig:icons}) that we will use to summarize the features of responsive artifacts in our survey in Chapter~\ref{ch:survey} and case studies in Chapter~\ref{ch:case_studies}. These icons describe the five categories of features we have introduced above: production, purpose, morphology, affordance and devotion.

\begin{figure}[tbh]
  \centering
    \includegraphics[width=137.5mm]{icons.pdf}
  \caption{Icons representing the characteristics of responsive artifacts.}
  \label{fig:icons}
\end{figure}
<file_sep>%%% Made of Tiny Robots
%%% An Investigation of the Ecology of Responsive Environments
%%%
\chapter{Robunculi: Case Studies}
\label{ch:case_studies}
%
<file_sep>%%% Made of Tiny Robots
%%% An Investigation of the Ecology of Responsive Environments
%%%
\chapter{Introduction}
\label{ch:intro}
%
What follows is an investigation into the ways the burgeoning \textbf{ubiquity of computation}%
\footnote{Terms rendered in bold on first use are defined in the Glossary.}%
will reshape the way we relate to our physical environment.
Putting computers and screens and sensors and networking and even motors in artifacts whose utility was previously primarily conferred by their physical form will give the artifacts in our environment internal states and behaviors; our physical environment will become responsive.
In the extreme case of artifacts composed of \textbf{self-reconfiguring materials} the form of an artifact will become just another aspect of its behavior.
This change from form-governed artifacts (where an artifacts's utility is conferred by its form) to behavior-governed artifacts (where an artifacts's utility is conferred by its behavior) is the hallmark of a \textbf{responsive environment}.
Thus in a responsive environment our role shifts from being the sole actors who make use of the tools we surround ourselves with to being (perhaps leading) members of a social network of robotic%
\footnote{We will be considering \textbf{robots} in the broadest possible sense of any machine capable of sensing input and responding with various behaviors.}
artifacts.

We suggest that taking an ecological perspective is important to understanding the shift to responsive environments for two reasons:
\begin{enumerate}
\item these networked robotic artifacts will serve as cybernetic extensions of our capabilities, and the level of the interface will be ecological; and
\item the complexity of producing these artifacts combined with their intimate connection with and knowledge of our personal lives will change the dynamics of their production, distribution and use.
\end{enumerate}
To be clear, when we speak of ecology we do not intend it in the sense of the natural environment.
We will be investigating \textbf{artifact ecologies}, the systems we apply and roles we adopt in the creation and use of physical artifacts, and the network of relations thus engendered.

In the rest of the introduction we further elaborate on the evolution of artifact ecologies, how we will interface with responsive environments composed of robotic artifacts, and the roles we will adopt in creating and customizing these new robotic artifacts.
We then argue that one of these ecologies is particularly well suited to engaging communities in specifying the behavior of their responsive environments, and outline how the following chapters will develop and support this claim.

\section{The Evolution of Artifact Ecologies}
%
To understand the manner in which we are embedded in ecologies of the creation, distribution and use of artifacts we need a theory of how we relate to individual artifacts.
Gibson \citeyearpar{gibson_1979} suggests that we are able to appreciate the value of physical artifacts through our (innate) recognition of the uses \textbf{afforded} by their form.
We recognize without effort that a chair affords the possibility of sitting and a door in a wall affords the possibility of entering a building.

We propose that the history of artifact ecologies consists of two broad eras, and we are now on the cusp of a third era.

As our (primate) ancestors developed the faculties to recognize that, for example, flint could be knapped to produce a blade, which could then be used to skin animals to create clothing, we entered the first era of the \emph{wild environment}%
\footnote{Terms coined here are emphasized on first use, and defined in the Glossary.}.
These sorts of artifact ecologies are characterized by a distinction between a local collection of useful artifacts with clear affordances, generally carried on one's person, and a vast external environment that does not particularly respond to the human scale and within which affordances can be perceived only with significant knowledge and effort.
Artifacts are generally crafted by the bearer for personal use from raw materials harvested from the wild surroundings.
The chief social aspect of these artifact ecologies was the verbal transfer of the relevant methods to close acquaintances.

The next era was ushered in by the development of urban settlements.
In these \emph{leveraged environments} our artifact ecology has expanded to the horizon; we are now surrounded by manufactured artifacts designed to present a variety of helpful affordances.
These artifacts give us leverage over our local conditions, for example doors allow us to easily restrict access to a space.
Artifacts are no longer simply controlled by their bearer and encode complex social dynamics; roads and sidewalks are shared by citizens, stores provide artifacts in exchange for money, doors open for those who bear their keys.
In order to produce these new artifacts in sufficient quantity to literally pave over the natural environment significant social changes are required; artifacts are designed by one set of specialists, produced by another, and distributed by yet another.
As desirable artifacts are mass-manufactured through a complex bureacracy they are frequently unevenly distributed.
The artifact ecologies of this era frequently engender social unrest due to inequities in the control of public artifacts and the distribution of private artifacts.

Many people already carry small computational devices with them and routinely interact with these newly familar robotic interfaces. As this computational ubiquity spreads we are already transitioning into a third era of artifact ecologies: responsive environments. These ecologies will be characterized by the promotion of our artifacts from passive tools to networked social peers. The intimacy of these relationships will place much more power over our behaviors and emotions in the hands of those who dictate the behavior of these artifacts. At the same time these artifacts have the potential to allow mass customization to the desires of those bearing a given artifact.

\section{Where Do We Plug In?}
%
Science fiction stories have led many people to ask: (when) will we have computer chips in our heads?%
\footnote{We are indebted to <NAME> \citeyearpar{gibson_distrust} for this formulation.}
The answer for most of us is probably never, as we do not actually need to cut into our brains to become \textbf{cyborgs}; we are fully capable of interfacing with computers through language, through \textbf{graphical user interfaces (GUIs)} and through \textbf{tangible interfaces}.
By embedding ourselves in artifact ecologies populated with robotic devices with these sorts of interfaces, we in effect incorporate these other computational systems into our own thought processes.
The best current example of this kind of cybernetic interface is \textbf{googling}; once one learns basic techniques for interacting with internet search engines and acquires a persistent network interface (such as a \textbf{smartphone}%
\footnote{While this term is currently well known we expect that in the near future it will seem as antiquated as ``personal digital assistant''.}%
) one becomes a sort of information-retrieval cyborg.
The googlebot is so easily incorporated into our minds because our minds are already just a collection of specialized computational units that in concert form a ``society of mind'' \citep{society_of_mind}.
As the philosopher of mind <NAME> is fond of saying, ``Yes we have a soul; but it's made of lots of tiny robots'' \citeyearpar[][p. 1]{freedom_evolves}. Although these tiny robots have historically happened to all be in our brains, with the advent of responsive environments we will be incorporating more and more robotic devices into our local cybernetic artifact ecologies.

Many of these devices constantly feed data to apparently discorporate%
\footnote{The googlebot actually has a physical stature in line with its apparent omniscience; it fills several enormous buildings spread around the world and consumes enormous amounts of energy from both the grid and dedicated power plants.}
agents like the googlebot.
As we enter into a cybernetic relationship with this new artifact ecology much of what we have until now considered our private personas will be determined by the behavior of the robotic devices we surround ourselves with, and by our relationship with the computational agents that manage these devices and mediate our interactions with other people.
In light of our special relationship we will refer to these agents (like the googlebot) generally as \emph{idols}%
\footnote{We chose the name `idol' after Gibson's `idoru'\citeyearpar{gibson_idoru}, a literal AI rock star, with the accompanying cultural leverage of a teen idol; and after religious idols, to draw an analogy with the religious practice of asking powerful ethereal agents for advice and favors.}.
We will call the handheld computers (such as a smartphone) that allow us to communicate with both peers and idols (through a constant connection to the network), \emph{crystals}%
\footnote{As in a crystal ball that is used to view distant places and communicate with other agents through the ether, and as a reference to their current popular physical realization as a fragile glass-plated touchscreen.}.

\section{New Materials}
%
While the heralds of responsive environments have been computers that will fit in your pocket, and interface with us through language and images, embedded computation has the potential to create artifacts that are much less familiar.
Computation is coming out from behind a screen and into the physical objects in the world around us. These robotic artifacts may respond to being touched and manipulated, or may proactively reconfigure the spaces around us.

\textbf{Tangible interfaces} give us the opportunity to leverage our innate recognition of the uses afforded by different forms.
Physical kits that can be used to describe forms and concepts predate responsive devices. Educators have developed a variety of such physical kits known collectively as \textbf{manipulatives}.
Tangible interfaces---by enhancing manipulatives with embedded computation---tie digital models to physical objects to allow people to directly grasp and manipulate these models \citep{tangible_bits}.
For example, our Posey kit (Figure~\ref{fig:posey_molecule}) allows people describe a 3D model to a computer by building it with a hub-and-strut construction kit rather than using an onscreen mouse-and-keyboard interface to manipulate graphical representations of shapes.

\begin{figure}[tb]
  \centering
    \includegraphics[width=130mm]{posey_molecule.jpg}
  \caption{Our Posey hub-and-strut kit being used to search a library of organic molecules.}
  \label{fig:posey_molecule}
\end{figure}

Tangible interfaces' physicality provides several inherent advantages: the physical system provides a representation of its own state \citep{jacob_chi2008}; physical constraints can enforce the constraints of the digital model \citep{patten_chi2007}; the \textbf{sensorimotor} feedback provided by manipulating physical objects helps to \textbf{scaffold} geometry and symbol manipulation tasks \citep{nesta_tangible_learning}; and several people can collaborate to provide input \citep{handsaw,algoblock}.

Traditional manipulatives are also the basis for \textbf{modular robotics} \citep{yim_ra2007}, which add computation and actuation to create kits of parts for quickly assembling robotic devices.
(We will refer to these robotic devices assembled to perform a particular task as \emph{golems}%
\footnote{After the mythological golem assembled from clay to do its master's bidding.}.)
By combining modular robotics and tangible interfaces, these golems can be programmed by directly manipulating them to demonstrate desired behaviors.

Making things---giving objects form---has traditionally involved a manufacturing process such as machining a block of material or pouring molten material into a mold.
Recently, the techniques of modular robotics have been extended further to create a new kind of material that can receive a digital description of a desired form and arrange itself into that shape.
One implementation of such a self{}-reconfiguring material is an \textbf{ensemble} of robotic modules.
Each module runs a small program; together the programs encode the ensemble's behavior.
By coordinating with neighbors, modules respond to external stimuli and arrange themselves into a potentially vast number of forms.

Self{}-reconfiguring materials promise to revolutionize the creation and distribution of physical objects much as digital audio files have revolutionized the distribution and content of music.
The digital description of a chair or a bottle opener could be downloaded and then realized from a reservoir of self{}-reconfiguring material.
Unused objects return to this reservoir to provide raw material for other objects.

More significantly, an object composed of this new material need not be limited to a single static form.
Instead, the currently running program can change its form.
We call a form that varies in the four dimensions of space and time a \emph{hyperform}; a single hyperform expresses itself as different shapes at different times.
A new hyperform is realized just by loading a new program into the material.
For example, the `social table' hyperform (Fig~\ref{fig:social_table}) automatically expands as more people sit down.
The table grows to make space for additional guests (drawing more material from a household reservoir as needed); as people get up from the table after dinner, the social table melts away leaving only a small dinette with a single empty chair.
The material that had been part of the expanded table returns to the reservoir and later renders a sofa and coffee table for guests to relax after dinner.

\begin{figure}[tb]
  \centering
    \includegraphics[width=100mm]{social_table.pdf}
  \caption{The social table, an example of a hyperform composed of self-reconfiguring robotic modules. As more people sit down, the table expands (drawing from a reservoir of modules) to keep one empty seat available.}
  \label{fig:social_table}
\end{figure}

Research towards even more advanced hyperform mediums is also underway. One vision is that a \textbf{claytronic} \citep{goldstein_computer2005} material could be composed of robotic particles (we will call them \emph{clayticles}) so small%
\footnote{Individual clayticle modules are less than 1mm in diameter.
They are fabricated using the same processes used to make microchips, except that they are designed to curl up into a ball when they are released from their substrate.
Electronic actuators etched into their surfaces allow these tiny spheres to attach to each other and to self{}-reconfigure. (TODO: citation)}
that objects formed from the material appear to be molded out of clay rather than constructed out of blocks.

\section{Tiny Robots}
%
A particularly interesting subset of responsive artifacts are those systems extending traditional manipulatives with embedded computation.
These tiny robotic modules can serve as design interface, cybernetic cognitive enhancement and implementation medium all at the same time. We propose to give them a name: \emph{robunculi}%
\footnote{Applying the Latin plural diminutive `-unculi' to `robot' gives `robunculi', literally `little robots'.}.
This name is a play on \textbf{homunculus},%
\footnote{Latin `homo' (man) + `-unculus' (singular diminutive) = homunculus (little man).}
an anthropomorphization of the human soul visualized as a little man sitting in our head issuing instructions, or sometimes as two little men on our shoulders whispering arguments into our ears.
Robunculi extend our agency out into the environment by allowing us to impress behaviors upon the objects we construct out of them.
By leveraging our innate facilities for sensorimotor manipulation and the recognition of spatial affordances, robunculi extend our capacity to describe and construct 3D forms and behaviors.

\section{Potential Responsive Ecologies}
%
As we move toward responsive environments several potentially stable ecological niches are emerging.
The character of our artifact ecology, and what it means to be and individual within this new order, will depend largely on which of these modes of artifact production, deployment and use thrive.
In distinguishing between these ecologies, we suggest that our goal should be to engage as wide a spectrum of the population as possible into shaping the behavior of the responsive artifacts they wield.

To this end we suggest three desiderata for our future artifact ecology: the transparency of behaviors, the reconfigurability of devices, and local production.
By transparency of behavior we mean something like open source for software, except applied to the entire ecology---from production of the hardware, to the software on the device, to the network it communicates over, to the idols it interacts with.
For people to exert control over their environment it is critical that the mechanisms underlying its behavior are transparent to them.
It seems obvious that giving people the opportunity to reconfigure the physical form of their environment, as robunculi and hyperforms can, would encourage participation in shaping the built environment.
And by encouraging local production in hackerspaces or other high-tech local fabrication facilities potentially gives people many more options (as devices do not need to be stocked, only feed materials) as well as the opportunity to produce customized devices.

To illustrate the tensions in this space we characterize four potentially stable ecologogical niches and evaluate which of these desiderata each supports (Figure~\ref{fig:ecology_venn}):

\begin{enumerate}

\item Popsicle ecologies center around mass-produced single-purpose devices. We call the devices that typify this ecology \emph{popsicles} as many are produced in a single configuration (like popsicles from a mold) and they are frozen in a single configuration.
A prime example are smartphones like the iphone and android phones.
Due to the economics of this model, popsicles are likely to be closed systems.
The iphone, for example, is particularly opaque: it runs a closed-source operating system; it limits owners to installing whitelisted software from a single repository vetted by the manufacturer; and the device itself is physically sealed---opening the case, even to change the battery, voids the warranty.
While android phones are somewhat more transparent (the android operating system is open source) they often ship with software and hardware locks to obstruct owners from tinkering with their behavior.
Thus, as indicated in Figure~\ref{fig:ecology_venn}, popsicles at best are somewhat transparent, and by definition support neither local production nor reconfiguration.
However an advantage of popsicle ecologies is that this sort of mass production has been successful at producing vast quantities of devices at low prices.

\item Spoke ecologies are characterized by \emph{spokes}, bespoke devices produced locally using open source software and open hardware modules.
An example is the bicycling jacket with integrated turn signal lights built with a LilyPad \textbf{Arduino} described in \citep{buechley_wild_lilypads}.
This ecology is generally more inclusive than a popsicle ecology, supporting transparency and local production.
While it can support reconfiguration in the limited sense that devices are generally built with modules (such as the LilyPad) that could be scavenged from old devices and reused, this generally results in the destruction of the original device and requires a fair amount of techical knowledge.

\item Robunculi ecologies present the greatest opportunity to fulfill all of our desiderata. The systems are by definition reconfigurable, and lean heavily towards open source and hardware designs. Local fabrication could allow systems to be customized, but mass production may be necessary to make these systems economically feasible.

\item Claytronic ecologies are still somewhat speculative, clayticle materials will probably (at least initially) be produced in centralized factories.
Although the systems themselves may not be produced locally, that is less of an issue with claytronics as these systems' extreme reconfigurability allows them to serve as a sort of universal fabricator.
It remains to be seen whether these sysems will run open source software---even if they do the complexity of distributed local control is potentially an obstacle to their transparency.

\end{enumerate}

\begin{figure}[tb]
  \centering
    \includegraphics[width=120mm]{ecology_venn.pdf}
  \caption{Venn diagram showing which desiderata could be fulfilled by each responsive environment ecology.}
  \label{fig:ecology_venn}
\end{figure}

Of course several of these ecological niches may coexist, and influence each other.
It seems that the only system capable of producing artifacts on a global scale in the near future is some kind of popsicle ecology.
While ecologies dominated by popsicles may not support widespread participation as well as others, unless they are able to acquire responsive artifacts people will not be able to participate in responsive environments at all.
For example the cell phone ecosystem is dominated by popsicles, and while cell phones are often not particularly transparent, they are broadly available almost everywhere.%
\footnote{citation?}
Even if popsicle ecosystems continue to dominate our ecology, developing spoke and robunculi ecosystems could place pressure on popsicles to support transparency and reuse (if not reconfiguration).
We propose that our best opportunity for building an inclusive artifact ecology is to support the development of spokes and robunculi.
Robunculi in particular can help to engage more people in design roles and help to scaffold participation in local fabrication scenes.

There are several potential advantages to adopting robunculi as the building blocks of our built environment: we could customize the form and behavior of the devices and structures around us; we could give many previously static objects the capacity to express behaviors; and we could decompose objects not currently in use to provide raw materials to be reused elsewhere.
More significantly, robunculi have the potential to change the way we manipulate our environment much as googling has changed the way we gather information.
With robunculi we can all be furniture{}-designing, golem{}-wrangling {\bf maker} cyborgs.

And as claytronic technologies mature, the ecologies developed by ro{-}bunc{-}uli-wranglers could diverge significantly from those developed on top of popsicle ecologies with more limited opportunities for design input.
Many of the methods currently being developed to support interacting with robunculi could be transferred to claytronic systems.
Without this intermediate developmental stage claytronic systems may feature relatively impoverished mechanisms for encouraging input from those wielding (and inhabiting) these systems.

\section{Method and Goals}
%
Our current artifact ecologies provide extremely limited opportunities for people to participate in the design of their built environment.
As we transition from leveraged to responsive environments the artifacts we surround ourselves with are being elevated from a variety of useful tools and spaces to cybernetic extensions of our personas.
The question at hand then is: how we can live amongst robots in a way that empowers us to take control of the sorts of environments that ubiquitous computation will soon allow?

\subsection{Thesis}
%
\begin{em}
Robunculi ecologies empower people to control the behavior of the responsive environments they inhabit.
\end{em}

There are several features of these systems and their supporting ecology that make robunculi well suited to the development of engaged cybernetic communities.
By supporting interaction methods that leverage our innate sensimotor capabilities robunculi make the specification of form and behavior accessible. By providing people with little training the opportunity to take on (relatively limited) design roles this ecology can scaffold skill development.
And by developing an engaged community of skilled practitioners robunculi ecologies can serve as fertile ground for local scenes specializing in fabrication, software and hyperform behaviors.

\subsection{Method}
%
We support these claims by identifying these features in prototype robunculi systems currently being developed, first in a broad survey and then in several more focused case studies.
To facilitate this discussion we first develop (in Chapter~\ref{ch:ontology}) an ontology of responsive environments describing the roles we may adopt in relating to responsive artifacts, the interrelations between these roles and the methods of relation that typify each role.
We devote particular detail to the roles and interaction methods supported by robunculi.

In Chapter~\ref{ch:survey} we survey responsive artifact prototypes from a variety of fields including tangible interfaces and modular robotics, with a focus on projects that satisfy our definition of robunculi.
By describing them in terms of our ontology we call attention to the advantages of robunculi for supporting an engaged design ecosystem.

In Chapter~\ref{ch:case_studies} we present case studies of several projects developed by the author and others in further detail.
We will focus on identifying reusable techniques and components of successful robunculi projects, on useful metrics for comparing the relative merits of different projects, and on how individual projects could relate to a larger ecosystem.

We conclude in Chapter~\ref{ch:conclusion} with an assessment of the current state of robunculi development and directions for future research.

<file_sep>\chapter{Glossary}
%
\begin{description}
%
\item[3D printer]
%
\item[afford] a possibility for use we are able to recognize in an object; our recognition of these possibilities structures our perception of the environment \citep{gibson_1979}
%
\item[affordance] a use afforded by an object (see {\bf afford})
%
\item[Arduino]
%
\item[artifact ecology]
%
\item[\emph{avatar}]
%
\item[\emph{bench}]
%
\item[\emph{bunkle}]
%
\item[\emph{clayticle}]
%
\item[claytronic]
%
\item[command line interface]
%
\item[computer numerically controlled (CNC) mill]
%
\item[\emph{crystal}]
%
\item[cyborg]
%
\item[\emph{devotion}]
%
\item[direct manipulation] introduced by \citet{shneiderman_computer1983} to describe onscreen interfaces that allowed the mouse to grab and manipulate things; applied here to describe tangible interfaces that allow your hand to grab and manipulate things
%
\item[\emph{duck}]
%
\item[\emph{duckcicle}]
%
\item[ensemble] a group of objects that coordinate to produce a global behavior (especially a group of robotic modules)
%
\item[ensemble of robotic modules] (see {\bf ensemble}, {\bf robot})
%
\item[\emph{fig}]
%
\item[force-feedback pointing device]
%
\item[fused deposition modeling (FDM)]
%
\item[global positioning system (GPS)]
%
\item[\emph{golem}] a robotic agent capable of performing useful manual tasks; from the fictional golem, an agent formed out of clay to serve and protect its creator
%
\item[google] (verb)
%
\item[graphical user interface (GUI)]
%
\item[hackerspace]
%
\item[homunculus] (plural: {\bf homunculi}) an anthropomorphization of a cognitive process or the soul as a tiny person, often depicted as sitting inside someone's head; from the latin diminutive of man (homo)
%
\item[\emph{hyperbunkle}]
%
\item[\emph{hyperduck}]
%
\item[\emph{hyperfig}]
%
\item[\emph{hyperform}] a form that varies over time; from `hyper-' indicating extent into the fourth dimension as in hypercube
%
\item[\emph{hyperthou}]
%
\item[\emph{idol}]
%
\item[\emph{leveraged environment}]
%
\item[maker] a person versed in the skills necessary to craft objects
%
\item[mecha] a robot with a human driver inside, a common theme in Japanese fiction
%
\item[manipulative] an object or kit of objects intended to engage children in discovering a particular concept or group of concepts through play
%
\item[manipulative morphology] one of the classes of forms developed to serve as manipulatives (see {\bf morphology})
%
\item[modular robot] a {\bf robot} intended to serve as a member of an {\bf ensemble} of physically coupled modules
%
\item[morphology] the structure and configuration of an object
%
\item[\emph{mount}]
%
\item[open hardware]
%
\item[\emph{organelle}]
%
\item[\emph{parallel affordances}]
%
\item[pick-and-place]
%
\item[\emph{popsicle}]
%
\item[purpose] the broad use case an {\bf ensemble of robotic modules} is intended to support
%
\item[quick response (QR) code] a black-and-white printed pattern designed to be interpreted by a device with a digital camera such as a cell phone
%
\item[radio-frequency identification (RFID) tag] a small passively powered radio transmitter---when it passes near to a tag reader it captures power from the radio signal emitted from the reader and responds with a unique number (and sometimes additional stored data)
%
\item[rapid prototyping]
%
\item[responsive environment]
%
\item[robot] a device capable of sensing, planning and acting
%
\item[\emph{robunculi}] a kit of modules that combine manipulative morphologies with responsive affordances; from {\bf robot} and {\bf homunculi}; these `little robots' extend our agency out into the environment by allowing us to impress behaviors upon the objects we construct out of them
%
\item[scaffold] (verb) to put a student in a position in which they are able to make discoveries
%
\item[self-reconfiguring materials]
%
\item[sensorimotor] sensory integration for example between the hand and the eye
%
\item[\emph{shrine}]
%
\item[\emph{skelly}]
%
\item[smartphone]
%
\item[\emph{sockpuppet}]
%
\item[\emph{spoke}]
%
\item[\emph{stick}]
%
\item[\emph{stickboard}]
%
\item[\emph{stickpuppet}]
%
\item[\emph{sticksuit}]
%
\item[system on chip (SoC)]
%
\item[tangible interface] a physical interface to digital information
%
\item[tangible sketch] a model built from a kit that communicates spatial information to a computational agent
%
\item[\emph{taster}]
%
\item[\emph{tek}]
%
\item[\emph{temple}]
%
\item[\emph{theater}]
%
\item[\emph{thou}]
%
\item[\emph{tink}]
%
\item[\emph{tinker}]
%
\item[\emph{tinkit}]
%
\item[\emph{tooler}]
%
\item[ubiquitous computation] the condition of having computer chips (and associated networking, sensing and actuation) embedded in many of the artifacts in our environment so that computational devices are ever present, a trend identified by Weiser \citeyearpar{weiser_1999}
%
\item[\emph{volticle}]
%
\item[\emph{wild environment}]
%
\item[\emph{wiz}]
%
\item[\emph{wrangler}]
%
\end{description}

branch_name: refs/heads/master

languages: Markdown TeX

repo_language: Markdown


text:
<file_sep># Frontend Mentor - [Profile Card challenge](https://www.frontendmentor.io/challenges/profile-card-component-cfArpWshJ)

[Live Demo](https://fm-profilecard.netlify.app/ "FM Profile Card")

![Design preview for the Profile card component coding challenge](./design/desktop-preview.jpg)

## Techstack

- HTML
- CSS (BEM)

branch_name: refs/heads/main

repo_name: ping-n/fm-profile-card


text:
<file_sep># hello-world
There is a taco in my keyboard. .666% progress has been made


text:
<repo_name>sitaramshelke/pmcc-example<file_sep>/Readme.md
### Simple example of fetch values using pmcc
```
ram@ram-<EMAIL>:~/workspace/pmcc-example$ python pcp-procinfo_cc.py

Read 	 Write
22199 	 2322
22200 	 2322
22200 	 2322
```
<file_sep>/pcp-procinfo_cc.py
from pcp import pmcc
from pcp import pmapi
import sys
METRIC = ["disk.all.read","disk.all.write"]

class ProcInfoReport(pmcc.MetricGroupPrinter):
    hcount = 0

    ''' These functions can be used if multiple instances are there
    def instlist(self, group, name):
        return dict(map(lambda x: (x[1], x[2]), group[name].netValues)).keys()

    def curVals(self, group, name):
        return dict(map(lambda x: (x[1], x[2]), group[name].netValues))
    '''
    def report(self,manager):
        group = manager['procinfo']
        # print "Group ",group
        rname = 'disk.all.read'
        wname = 'disk.all.write'
        readvalue = group[rname].netValues[0]   #since only single instance is there, directly use first value in the list
        writevalue = group[wname].netValues[0]  #else create a dictionary of instance name and values

        self.hcount += 1
        if self.hcount == 1:
            print '\nRead \t Write'
            # print ""
            # self.hcount += 1
        if self.hcount == 10:
            self.hcount = 0
        print('%s \t %s' % (readvalue[2],writevalue[2]))  #readvalue is a tuple of (instance,name,value) print the value
        # print value

class ProcInfoOptions(pmapi.pmOptions):
    def __init__(self):
        pmapi.pmOptions.__init__(self)
        self.pmSetLongOptionVersion()

if __name__ == '__main__':
    try:
        opts = ProcInfoOptions()
        manager = pmcc.MetricGroupManager.builder(opts,sys.argv)
        manager['procinfo'] = METRIC
        manager.printer = ProcInfoReport()
        sts = manager.run()
        sys.exit(sts)
    except pmapi.pmErr as pmerror:
        sys.stderr.write('%s: %s\n' % (pmerror.progname,pmerror.message()))
    except pmapi.pmUsageErr as usage:
        usage.message()
        sys.exit(1)
    except KeyboardInterrupt:
        pass

languages: Markdown Python

repo_name: sitaramshelke/pmcc-example