Block I Illinois Library Illinois Open Publishing Network

Rainbow Unit: Networks Big and Small

3B: A Person-Centered Network Information System Adventure

Technical Overview

My philosophy is very simple: When you see something that is not right, not fair, not just, you have to stand up, you have to say something, you have to do something.

My mother told me over and over again when I went off to school not to get into trouble, but I told her that I got into a good trouble, necessary trouble. Even today I tell people, “We need to get in good trouble.”

John Lewis, interviewed by Valerie Jackson for StoryCorps[1]

We began this session considering the codifications of the digital divide and beginning a process of decodification of this and related terms. We explored some examples specifically related to NDIA’s first element of digital inclusion, “affordable, robust broadband internet service.” Digital inclusion, equity, and literacy, as brought forward by NDIA, ALA, and others, give a more formal definition that can serve as a framework to move on from the magical thinking that is pervasive within current neoliberal understandings of sociotechnical networked information systems. But this is an ongoing work of community inquiry and action-reflection.

As we move forward in our professional practices, we each will likely make use of a range of sociotechnical digital tools within our daily activities, which, together in work with others, include works towards advancing digital inclusion and equity goals. But in practice, information science professionals have encountered limits and constraints to the social justice parameters given their permitted roles, and given how certain socially structured fabrics and certain community values are placed above others, particularly in light of dependencies on public funding that gives greater power to the middle-class, white population.[2]

As an introductory text, A Person-Centered Guide to Demystifying Technology has worked to open up the closed box of digital technologies sufficiently so that we can explore ways in which we can innovate-in-use our everyday technologies so that our choice, [re]design, and use of digital technologies better serve the diverse community knowledge and cultural wealth within the fabric of communities. It is an introductory text seeking to help us see better those aspects of digital technology that are “not right, not fair, not just,” to quote John Lewis. As noted throughout the Rainbow Unit, there have been an extraordinary growth in digital computing and communications over the last 50 years. The community networking and community FabLab movements are but two of the many examples of ways digital bits and physical atoms have been brought together with the objective of advancing the real-world goals of local people to address the situations limiting them from being more fully human as active members within civil discourse as part of a community forum, life-long learning, and information access and use. But there have also been key influences and influencers that have prioritized integration of social and political dominance within accelerating technological and economic strengths through works of individualism, technological determinism, and supply-side, trickle-down neoliberalism. These have served to relocate some divides while working to reinforce and expand others, often in the name of digital inclusion.

To move beyond the many historic and ongoing divides fostering existing injustices and the digitization of information systems that are birthing new injustices in many areas of society locally, regionally, and beyond, “you have to say something, you have to do something” in meaningful ways. This digitization of the divides continues even as we remain caught in that inescapable network of mutuality and are thus being affected, whether it be directly or indirectly, as Martin Luther King, Jr., notes.[3] As information science professionals, this can come in many forms, including: as part of social justice storytelling; as part of our selection and construction of electronic components; within our work to integrate, modify, and write new programming code; and in the selection, creation, and use of algorithms, including those incorporating artificial intelligence and machine learning.

Let’s finish sociotechnical session three of the Rainbow Unit by taking some first steps to create a general-purpose Raspberry Pi Server. At a minimum, we’ll setup the Raspberry Pi as an Apache Web Server with the WordPress content management system (CMS). From here, it can use this general-purpose space strategically to prototype multiple subcomponents within the larger digital Little Free Library, which can be used to get into good trouble, saying something, doing something to address an injustice. Or maybe you’d like to try out creating a DIY community wireless network, or set up multiple Internet of Things devices to get into that good trouble.

As you take on this adventure, keep forefront in your mind ways to ensure that this is a person-centered approach to do something to advance a more just society.

Exercise: The General Purpose Raspberry Pi Web Server

In session one of the Rainbow Unit, we did a few different exercises exploring some of the underlying concepts behind the Internet of Things, also highlighted in Limor Fried’s segments “All the Internet of Things.” Of special note now, reflect back on the Hyptertext Transport Protocol (HTTP), an example of a client/server protocol that works at layers 6 and 7 of the OSI model.

Seven layers of the OSI Model: 1. Physical: Copper & fiber cables, radio frequency & infrared wireless. 2. Data link: Media Access Control (MAC). 3. Network: Routing of data packets. 4. Transport: End-to-end connections. 5. Session: Interhost communication. 6. Presentation: Data translation & representation. 7. Application: What the 'end user' sees.

Let’s now test out a more general-purpose installation of HTTP on the Raspberry Pi, setting it up as web server that can be used on the World Wide Web. While we did create an HTTP-based web server in session 1, the Python library code used created a special-purpose web server. This time, we’ll install the Apache web server, a widely used, general-purpose web server.[4] Before starting the installation of Apache, take a few minutes to follow though Carrie Anne Philbin’s Crash Course Computer Science episode #30 on the World Wide Web.

About the Apache Web Server

Reflecting back on my time from 1993 to 1995 as a postdoctoral researcher at the Neuronal Pattern Analysis group at the University of Illinois’s Beckman Institute, I remember our explorations of ways to make use of this brand-new thing called a “web browser” to share our raw data sets across the Internet with other researchers. One of the challenges we faced was the rapid ongoing changes in the code for the campus’s National Center for Supercomputing Applications (NCSA) HTTP server, in support of their just-being-developed Mosaic web browser. What worked on the http server or on the web browser one day might not work the next day. Further, changes made within HTTP or HTML may create conflicts with the newly written code needed on the Sybase database server to effectively share the data by way of the hypertext protocols. I’d actively work on the HTTP/HTML side, while my colleague would work on the database server side. This is the rapid prototyping, fail-forward, growth mindset in action. It also represents those times when innovations go viral while still in their alpha phase, the lab time before an artifact or system enters the beta testing phase and eventual stable release. I was already working with the Linux operating system, version 0.9. I don’t remember the 0.x versions of Mosaic and NCSA HTTP, or if they were even listed yet.

The University of Illinois meets the Carnegie Classification R1: Doctoral Universities – Very high research activity in part because the core focus of these research and learning activities are to “pioneer innovative research that tackles global problems and expands the human experience. Our transformative learning experiences, in and out of the classroom, are designed to produce alumni who desire to make a significant, societal impact.”[5] For me, innovative research had expanded from my initial grant-funded electrophysiology-based project to also include an HTTP server and web browser project sharing the raw data stored in multiple Neuronal Pattern Analysis group databases. This inspired me to switch tracks, moving from my postdoctoral research at the Beckman Institute, and joining the Prairienet Community Network research project at the School of Information Science in 1995, which was using community inquiry to explore how the Internet and a HTTP-based networked information system could be used in support of various community information, communication, and learning activities. Earlier that year, the Apache HTTP server project began as the NCSA research for which the HTTP server and Mosaic web browser were initially being developed was winding down. The NCSA code was available for use in other projects through what became the free and open-source licensing framework. Robert McCool—who as an Illinois undergraduate student helped lead the initial NCSA HTTP server development in support of Mosaic—joined with a group of other computer programmers who were patching the NCSA HTTP server to meet their own project requirements, such as Brian Behlendorf—a founding member and president for three years of the Apache Software Foundation—to release the Apache HTTP server using the NCSA code as its base. The use of existing code and a series of software patches led to the early development team’s use of the pun “A PAtCHy” server, a pun that somehow stuck and became the formal name, respelled Apache HTTP.[6]

As Carrie Anne Philbin notes at the end of the Crash Course Computer Science video above with regard to net neutrality, the implications of decisions matter. And so it is with The Apache Way, as listed within the Apache Software Foundation website. It is a 501(c)3 non-profit public charity organization incorporated in the United States of America, formed for open, collaborative software development within a principle of “meritocracy”: government by merit. It is one built within the spirit of community, in which various projects were emerging that together become the “projects” by which the separate communities were identified. And so a framework was created within which each community, or project, was designated as the central decision-making organization for their community within the broader Apache world.

But it is also a foundation in which the pun that inspired the name “Apache” came with acknowledged cultural appropriation implications. Co-founder Brian Behlendorf noted in the documentary “Trillions and Trillions Served,” as cited by both The Apache Software Foundation Wikipedia page and Natives in Tech Blog post “Apache® Appropriation” [7]: “I suggested the name Apache partly because the web technologies at the time that were launching were being called cyber this or spider that or something on those themes, and I was like we need something a little more interesting, a little more romantic, not to be a cultural appropriator or anything like that, I had just seen a documentary about Geronimo and the last days of a Native American tribe called the Apaches, right, who succumbed to the invasion from the West, from the United States, and they were the last tribe to give up their territory and for me that almost romantically represented what I felt we were doing with this web-server project…” (NOTE: The YouTube video of the “Trillions and Trillions Served” documentary has since been made private, although is still referenced as a source in both the Wikipedia page article and the Natives in Tech Blog post references above. I still include this quote even though I was not able to confirm this citation during the writing of this on April 24, 2023 as even the decision to make private the YouTube video itself adds meaning to this issue of cultural appropriation and the stories that are told in relation to this.) The name “Apache,” which is trademarked by a U.S. charity nonprofit foundation, is thus inspired by “the last days of a Native American tribe” without recognition that the Indigenous peoples currently have eight federally recognized tribes with many thousands of living Apache citizens today, without full consultation, and without enumeration. The trademark was awarded to the nonprofit foundation by the same U.S. government that acknowledges the sovereignty of these eight tribes—Apache Tribe of Oklahoma; Fort Sill Apache Tribe of Oklahoma; Jicarilla Apache Nation, New Mexico; Mescalero Apache Tribe of the Mescalero Reservation, New Mexico; San Carlos Apache Tribe of the San Carlos Reservation, Arizona; Tonto Apache Tribe of Arizona; White Mountain Apache Tribe of the Fort Apache Reservation, Arizona; and Yavapai-Apache Nation of the Camp Verde Indian Reservation, Arizona. In so doing, we found two decisions, the first an acknowledgement of the sovereignty of eight Apache tribes, and the second an awarding of the Apache trademark to a foundation with The Apache Way logo of a feather that “was chosen out of reference and appreciation for the people and tribes who refer to themselves as ‘Apache.'”[8] But we also find in these the unaddressed need for direct mediation and conflict resolution found within models such as restorative justice, as the trademark was requested and awarded without consultation, and without acknowledgement and respect of the name’s provenance and origin from those who had been awarded sovereign nationhood.[9]

As mentioned at the start of the Background Knowledge Probe to begin this session, small decisions can lead towards large outcomes, which both are shaped by these small decisions and go on to shape future small aspects, in an iterative, nonlinear process in which the larger systems and structures become a reflection. The Apache HTTP server is shaped by the various small decisions listed above and many more as well, some of which are community- and collaboration-centered in ways that strongly match core principles of the Internet Protocol. Apache remains commonly used, especially on Linux-based computers, making up over 25 percent of the websites around the world, and is the perfect choice for a general-purpose HTTP server on the Raspberry Pi building community-led networked information systems. The following instructions are a slightly modified version of those found on the Raspberry Pi Foundation documentation site. Using the DIKW framework as introduced in the Orange Unit 4A: Storytelling in the Information Sciences, these modifications are meant to facilitate exploration of this networked information system from both technical and social lenses to connect data with context. In organizing and structuring the instructions in this way, these modifications seek to finetune the relevance of the general-purpose HTTP server set up for the more specific purposes of the learning context at hand. And as part of the shift from a “thing-orientation” to a “person-orientation”, the modifications are meant to help your community of inquiry make this information actionable, that is, turn it into knowledge. It is in this way that we’ve seen such digital information and communication technologies subsequently serve as useful tools for movement work, for standing up to say something, to do something to facilitate a more just society for all, and especially for those who have been pushed to the margins. With creative works comes failure, requiring a fail-forward and growth mindset, as we first learned in Carol Dweck’s video[10] shared in the Introduction and which we’ve explored through the book. As we near the conclusion of this introductory text advancing a more holistic and nuanced understanding of the multiple social and technical layers of networked information systems, it is important to highlight the need for each of us to be open to rebuke and correction within the range of sociotechnical layers, including those of cultural appropriation. For to the extent that this is acknowledged and addressed through direct mediation and conflict resolution, we open more case examples of the arc of the moral universe, which, while long, does bend towards justice, as many social justice warriors, including the Reverend Dr. Martin Luther King, Jr., have noted. For as President Barack Obama stated in a 2009 Time magazine article, “while you can’t necessarily bend history to your will, you can do your part to see that, in the words of Dr. King, it ‘bends toward justice.'”[11]

Net neutrality is a critical issue as we work on the World Wide Web through the installation of a general-purpose web server, and is something we as professionals should follow, given its ongoing impacts shaping our work. And it is something we can serve to influence as members of our societies, wherever this may take us moving forward. So, too, is the identification of issues of cultural appropriation, however. As we explored in the Blue Unit chapter 4A: Sharing Our Counterstories, we need to continuously research the self, research the self in relation to others, join in engaged reflection and representation, and shift from self to system, as H. Richard Milner IV notes in the article “Race, Culture, and Researcher Positionality: Working Through Dangers Seen, Unseen, and Unforeseen.” In briefly unpacking the many positives, along with a newly emerging exploration of an injustice of cultural appropriation found within the name, we mean to recognize the dangers in a way that can begin a process of restorative justice, and ensure that this process is kept alive and active as we seek ways to do our part. But to learn of this unforeseen danger that comes with installing an actively used, open-source web server like Apache, without adding this to our story library to be strategically used moving forward, we have then swept it under the rug, so to speak, like the dust we want to hide from visitors. It is to make it Unseen and to therefore become part of the ongoing systems that in this context has been centuries of work to erase Indigenous presence, past and present, within the Americas. In my writing of these paragraphs following the exploration of student reading notes on the previous draft of this chapter April 24, 2023, I am responding to my own (re)introduction to the Apache Software Foundation as more than pun, and as something I need to delve into further moving forward. I need to do this while also continuing to actively make use of this server as an example of free and open-source software, which remains foundational to key aspects of my community networking movement and teaching work.

Steps

Install Apache

  1. First, update the available packages by typing the following command into the Terminal:
pi@raspberrypi:~ $ sudo apt update
  1. Next, install version two of the Apache web server by typing:
pi@raspberrypi:~ $ sudo apt install apache2 -y

Test the web server

By default, Apache puts a test HTML file in the web folder. This default web page is served when you browse to http://localhost/ using the Chromium Web Browser on the Pi itself, something that works well for those who connect to the Raspberry Pi graphical display using RealVNC, or who have their Raspberry Pi attached directly to a keyboard, mouse, and monitor. For everyone, you can also access the test HTML file using something similar to http://192.168.1.10 (whatever the Pi’s IP address is) from another computer on the network. To find the Pi’s IP address, type hostname -I at the command line (or read more about finding your IP address).

Browse to the default web page either, on the Pi or from another computer on the same LAN, and you should see the following:

The Apache It Works! default page.

Unlike in session one, this time around, we do not add a port number after the IP address. The HTTP protocol has as a default port 80. So you could type in http://192.168.1.10:80, but you do not need to do this, as it is assumed by default.

This also means that you could have two web servers running simultaneously, the Apache general-purpose one on port 80, and one of the Internet of Things Python HTTP servers that use port 8401. Check this out by typing into the terminal window:

pi@raspberrypi:~ $ python3 simple_uartWebserverLED.py

Now, in a second web browser window, go to your IP address equivalent of http://192.168.1.10:8401. Voilà! Two web servers on one Raspberry Pi!

Initial Reflections

  • What is a web browser?
  • From where does a web browser get its web pages?
  • What’s different regarding the web pages retrieved from port 80 versus those retrieved from port 8401? When might this matter?

Changing the default web page

The default web page created during the installation is just an HTML file in the computer’s filesystem. When installing servers, typically also installed is one or more configuration file(s). Within Linux operating systems, these are usually installed in the /etc, or et cetera, directory. In the terminal window, type:

pi@raspberrypi:~ $ ls -al /etc/apache2

Notice a file called apache2.conf. This is the main configuration file used to guide the launch of an Apache HTTP daemon. This provides the start-up information needed for a server to perform in the specified way. The listed apache2.conf, ports.conf, and additional conf-enabled, mods-enabled, and sites-enabled files provide those who are administering the HTTP with server abilities to further innovate-in-use the base Apache software. Changes can be made on the fly, and then integrated into the server through a refresh without disrupting ongoing and new page requests.

In computing terms, a is a computer program that runs in the background, providing services as needed. In this case, each time it is launched, the HTTP daemon starts itself based on the specifications within the configuration file, and then mostly hangs out, twiddling its thumbs and waiting for a call in asking for something. When the call comes, it gets busy doing its stuff before going back to waiting mode. You’ll often see a running HTTP server daemon listed as httpd. These daemon server applications are a way for things to perform a similar manual function to that done by a human call support service where the worker closely follows a checklist. When might it be better for this service to be done by the “thing”? When might it be better for this service to be done by the “person”? In what ways might machine learning and artificial intelligence advance to the point where some of the current “person” tasks may be replaced by a “thing”?

To review these configuration files for Apache, head over to /etc/apache2. It is especially recommended to skim the apache2.conf and ports.conf files.

We don’t need to review the configuration files to know that the default location for HTML files in Apache is generally under the /var, or variables, directory. When we install Apache, a new directory, /var/www, is created to specifically host World Wide Web data. And Apache goes on to create a test index.html HTML file. (In the /etc/apache2 configuration files, index.html is one of the default files looked for when someone requests a parent page for a website. This is why we can get a webpage by typing in something like “www.raspberrypi.org.” This web browser request, combined with the configuration of the HTTP server, results in the return of “www.raspberrypi.org/index.html” or something similar, as specified within the HTTP server configuration file.)

Let’s go over to the HTML directory space and edit the index.html file /var/www/html/index.html. Even as we do this, let’s keep the python3 HTTP server running for the moment, as we’ll bring these together in a later step. So, navigate to this directory in a second terminal window so that we can have a look at what’s inside of this test page:

pi@raspberrypi:~ $ cd /var/www/html
pi@raspberrypi:/var/www/html $ ls -al

This shows that by default, there is one file in /var/www/html/ called index.html, and it is owned by the root user (as is the enclosing folder). In order to edit the file, you need to change its ownership to your own username. Change the owner of the file (the default pi user is assumed here) by typing into the terminal:

pi@raspberrypi:/var/www/html $ sudo chown pi: index.html

You can now try editing this file using mousepad and then refresh the browser to see the web page change. To do so, in the terminal window, type:

pi@raspberrypi:/var/www/html $ sudo mousepad index.html

Next, scroll through the <head> section, which contains a range of metadata and also various  code, until you see the tags </head><body> on two separate lines.

Diving Deeper

Consider some quick changes, such as changing the title “Apache2 Debian Default Page” and the note “It works!” to something different. You might also add in additional <p></p> paragraphs sharing your thoughts at this moment.

When done editing the html, save the changes. You don’t need to exit, but can now refresh the browser to see the web page changes. This may take some trial and error to get working—keep failing forward!

Once done testing out changes of the default index.html file, exit mousepad.

Creating our own webpage

Starting at minute 4:05, Carrie Anne Philbin gives a quick example of an HTML page.

To create new web pages, you’ll need to run mousepad or your favorite text editor with super user privileges, as the /var/www/html directory is owned by user “root.” For example, to create the page mypage.html, type:

sudo mousepad mypage.html

Once you’ve opened the text editor, take a few minutes to explore creating a webpage. If you haven’t done this before, you can test out Philbin’s example. Or if you’ve done web page creating directly through text editing before, feel encouraged to use your own creativity to create a new page. Once you think you have something reasonable, save the file (you don’t need to exit, though), and then go to a web browser and go to the new page. In my case, I’d type in:

http://10.0.0.30/mypage.html

Creating an Internet of Things iframe page

The iframe tag is used to embed another document within the current HTML document. The iframe tag is used throughout this textbook to bring in YouTube videos. And we can now use this frame to bring in a web page from another server—in this case, that created by the HTTP server run through simple_uartWebserverLED.py.

Open up a new text file in the www directory called iot.html. If I’m using mousepad, I’d type:

pi@raspberrypi:/var/www $ sudo mousepad iot.html

Now, create a page that looks something like:

<html>

<head><title>IoT Gathering Page</title></head>

 <body>

      <h1>Internet of Things Gathering Page</h1>

      <p>This page is used to gather datasets from various

            local Internet of Things devices

      </p>

      <iframe width="1024" height="768"

                 src="http://10.0.0.30:8401"

                 frameborder="0" allowfullscreen>

      </iframe>

 </body>

</html>

Notice that it is a combination of static HTML and also an iframe tag bringing in source data from the other HTTP server running on the Raspberry Pi. Make sure you’ve listed the IP address of your own Raspberry Pi instead of my 10.0.0.30 Raspberry Pi address. Then save the document. Be sure you have your breadboard and Circuit Playground Express components attached and that your Python3 program simple_uartWebserverLED.py is up and running successfully. Now go to your web browser and open up both the Python page directly, as we did in session one, and also through the Apache server, as we’ve just set up now.  For my Raspberry Pi, with an IP address of 10.0.0.30, I’d go to:

http://10.0.0.30:8401/
http://10.0.0.30/iot.html

And remember, if you have other LAN-based computing devices with web browsers installed, such as your smartphone, you can use those to access these pages as well.

Install PHP

When we used the Python3 BaseHTTPRequestHandler library in session one, we were able to bring together some static HTML page tags with some Python programming code to create a dynamic web page whose data was continuously updated. With the iframe tag, we were able to bring this dynamic web page data into an otherwise static web page we were creating. Let’s finish this exercise by installing PHP.

PHP is a preprocessor: it’s code that runs when the server receives a request for a web page via a web browser. It works out what needs to be shown on the page, and then sends that page to the browser. Unlike static HTML, PHP can show different content under different circumstances. Other languages are also capable of doing this, but since WordPress is written in PHP, that’s what we need to use this time. PHP is a very popular language on the Web: huge projects like Facebook and Wikipedia are written in PHP.

“PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML.”[12] To allow your Apache server to process PHP files, you’ll need to install the latest version of PHP and the PHP module for Apache. While still in the /var/www/html directory, type the following command to install these:

pi@raspberrypi:/var/www/html $ sudo apt install php libapache2-mod-php -y

Now, rename the index.html file to index-orig.html:

pi@raspberrypi:/var/www/html $ sudo mv index.html index-orig.html

Create the file index.php:

pi@raspberrypi:/var/www/html $ sudo mousepad index.php

Put some PHP content in it:

<?php echo "hello world"; ?>

Now, save the index.php file you’ve edited in mousepad, and refresh your browser. You should see the phrase “hello world” displayed. This is not dynamic, but still served by PHP.

A web browser display of the output "hello world' from the index.php page just created..

If you see the raw PHP above instead of “hello world”, reload and restart Apache like so:

pi@raspberrypi:/var/www/html $ sudo service apache2 restart

Now try something dynamic using mousepad to add the following line in index.php:

<?php echo date('Y-m-d H:i:s'); ?>

Underneath the hood, PHP is now running Linux operating system apps to collect current information and bring it back to a dynamic web page. This is the PHP equivalent to Python’s use of /opt/vc/bin/vcgencmd measure_temp to get the current temperature of the Raspberry Pi, like we did in session one of the Rainbow Unit.

To add in some static text using standard HTML tags, consider adding an <h1>Title of page</h1> line above the PHP code, and maybe some <p>paragraphs of text</p> after the PHP to see what it looks like.

Going a step further, you can show a rich listing of your PHP info at the bottom by adding an additional PHP hypertext preprocessor call:

<?php phpinfo(); ?>

Key Takeaways

We’ve now used a few technical exercises over the sessions of the Rainbow Unit to explore different ways we could create a Raspberry Pi HTTP server. While at first, we used Python3 BaseHTTPRequestHandler to provide special purpose HTML page data and information, we’ve now added the general-purpose Apache HTTP server and PHP preprocessor to create a broader range of HTML pages that could be accessible upon request by an HTTP client. While a Python3-based HTTP server can prove of value in support of a specific task, it is the general-purpose HTTP server which has become the foundation of the Internet’s World Wide Web.

In this exercise, we’ve seen how flexible server platforms like Apache have been developed using the open protocols and standards of the Internet and an open community of developers to work on a range of different computers and to meet a range of different use objectives. This design strategy provides opportunities for innovation-in-use, something we tested as we moved from initial installation of Apache, to the creation of a first HTML page, to the addition of an Internet of Things iframe, to the addition of the PHP Hypertext Preprocessor. We’ve also seen how, through the use of the default port address with the Apache server and an alternate 8401 port for the Python3 server, one computer could run multiple distinct instances of the HTTP server package simultaneously, providing us with even greater flexibility to innovate-in-use.

As we saw in Rainbow Unit 2B: The Infrastructure of the Internet, and as was again highlighted to start this chapter, the Internet Infrastructure itself is primarily comprised of the Network, Transport, and Session layers of the OSI model. It is not designed for a specific purpose, just the general one of end-to-end communication between devices. The HypterText Transport Protocol (HTTP) then works at layers 6 and 7 of the OSI model to facilitate data translation, representation, and “end user” visualization, even if that “end user” is another HTTP server working to link together different data and information. The HTTP server can be single-purpose and run through Python code, or it can be general-purpose, as it is when running through Apache. Add-ons like PHP and javascript can also be added to extend what an HTTP server such as Apache can accomplish. As we saw in Rainbow Unit 1B: Connecting Our Electronic ‘Thing’ to a Wider World, the small decisions made in the designs of our breadboard circuit, of the Raspberry Pi GPIO port, of the Raspberry Pi OS, of the Python code running on the Raspberry Pi OS, of the Circuit Playground Express, of the CPE controller that includes support of MakeCode .uf2 programs, and of the MakeCode program running on the CPE, each shaped the larger experience of the user interacting with the system that was created. So, too, can we see now the many small design decisions made on the many smaller components that make up the Apache and PHP platforms and the HTML and PHP code running within these platforms. But it is important that we also take a further step back to recognize ways in which the small design decisions regarding the many individual aspects of the infrastructure of the Internet that work at layers 3, 4, and 5 of the OSI model have shaped the decisions that make up the applications and platforms working at layers 6 and 7 of the OSI model.

As John Lewis states, “when we see something that is not right, not fair, not just, we have to stand up, we have to say something, we have to do something.” We need to get in good trouble. When we look at the digital divide and take on work to instead foster digital inclusion and digital equity, it is actually by design that we often only see the black box of the Internet, instead of seeing the many small components of which the Internet serves as a reflection. As we look at the Internet using the dominant thing-orientation and technological determinism framing, we miss seeing the social that is as much and more what shapes the technical, even as people are then shaped by the technical in return.

Take a moment to reflect back on your journey through the Orange and Blue Units leading up to the start of the Rainbow Unit. Think especially about the construction of the different technical components that together have become a digital Little Free Library. Think also about the social justice storytelling activity which has been an active part at different times during this journey. Then work to envision the different ways in which these smaller parts have come together, at different times and in different ways, to create larger components and systems that are sociotechnical in nature, rather than just one or the other. Finish by thinking further about ways in which the large reflects the various small components, and the ways that these shape each other.

A WordPress-Based Public Information System

The Raspberry Pi Foundation includes instructions for a project to Build a LAMP Web Server with WordPress. Linux, Apache, MySQL/MariaDB, and PHP/Perl/Python (LAMP), a term that became popular in the late 1990s, represents a bringing together of these sociotechnical systems to create a flexible web stack, a collection of software applications to perform specific tasks, in this case specific to web development. WordPress is a commonly used extension to the widely used base LAMP stack.

Back in the Orange Unit 4C: Getting Started with the Raspberry Pi, we explored the Raspberry OS, a GNU Linux operating system designed for the Raspberry Pi microcomputer and based on the Debian GNU Linux distribution. Linux itself is only the kernel of the operating system, the part that serves as the interface between the hardware and software of the computer. The GNU (GNU is not Unix) suite is most commonly used to provide the wider range of software used to give us the full operating system platform. The distribution further determines which GNU packages and other Linux-based packages of software to include. Debian was launched in 1993 and is composed only of free and open-source software. It has a more structured versioning release structure that serves some purposes well in providing greater stability, but is subpar for others, as it may slow down change for others. These are factors which were considered when the Raspberry Pi Foundation decided to use Debian as its base.

Linux installation, check. As Raspberry OS also comes with Python, check to that, also.

We’ve now completed the Apache web server and PHP installation steps from the Raspberry Pi project to Build a LAMP Web Server with WordPress.

Apache installation, check. PHP installation, check.

We’ve now got the LAP portions of the LAMP web stack installed and running both for single-purpose Python web applications and for general-purpose static and dynamic webpage applications. So far, the instructions have been provided through the textbook. The text for these instructions primarily comes copied and pasted from Build a LAMP Web Server with WordPress. This can legally be done because the Raspberry Pi Foundation published these under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. You’ll also notice that this textbook is released using that same license. This is required when you see the ShareAlike listing within a specific Creative Commons license used. The Creative Commons was already the primary assumption for publications released through the Illinois Open Publishing Network, but as the author, I decided to modify the form of Creative Commons license to be used to have open use of the Raspberry Pi Foundation text, so that I can adapt and remix the Apache and PHP instructions to fit the context of this book. Take a moment to learn more about the Creative Commons Share Alike license as another example of the small shaping the large.

What remains is the installation of popular database engine MySQL and the WordPress CMS.

MySQL is a system. It uses the structured query language identified through its abbreviation, SQL, and spoken as either S-Q-L or “sequel.” It is used to manage the data found in relational database management systems. Data itself can be stored in many ways, including in text files or in spreadsheets. Spreadsheets help to organize the data using rows and columns, and can further organize them using multiple sheets. Links can even be made between different cells across different sheets. This is a base level database. But relational database management systems take this up many notches by bringing in data definition, update, retrieval, and administration functions. It is here that SQL also comes in, by providing ways to access multiple records from a database with one command. In part, this is because SQL requests do not need to specify how to reach a record.

MySQL is an open-source relational database management system (RDBMS) founded by the Swedish company MySQL AB in 1994. Sun Microsystems acquired MySQL AB in 2008, and then Oracle acquired Sun Microsystem in 2010. There is now both a GNU General Public License (GPL) version and a proprietary version. In 2010, one of the co-founders of MySQL launched MariaDB, a community-developed, commercially supported fork of MySQL. MariaDB seeks to maintain high compatibility with MySQL, and is the RDBMS now used in the Raspberry Pi foundation project instructions, starting with step 4.

WordPress is a free and open-source content management system (CMS) written in PHP and paired with MySQL/MariaDB. It was first released in 2003 and is used by many websites around the world, either directly or through platforms built using WordPress as their base. WordPress is licensed under the GPLv2 from the Free Software Foundation. Take a few minutes to explore more about this mission, history, and story of WordPress at: https://wordpress.org/about/. Here’s where you go to download WordPress for installation, along with a range of themes, plug-ins, and other material. Do so by moving to step 5 of the Raspberry Pi Foundation LAMP with WordPress project.

There is also a hosted version of WordPress at https://wordpress.com/. Go into the about page to compare how the story shared through this site compares to the one in the .org site. How is the story similar? Different? What are their different audiences?

Key Takeaways

Since early in the Orange Unit, we’ve been exploring aspects of data—the symbols used to present real-world entities created through abstraction—and information—the formatted, structured, and organized outcome of the process of meaning-making and value assessment from data. By the start of the Rainbow Unit, we were able in chapter 1B: Connecting Our Electronic ‘Thing’ to a Wider World to read data such as 0, 1, 77, 21, and 2144772, read from the Circuit Playground Express every second using Python code on the Raspberry Pi to display this data in a terminal window or a web browser as information using format, structure, organization, and meaning-making names, such as Note, Button, Temp, Light, and Runtime. But since the Orange Unit, we’ve also worked to step up a major level of information through the ongoing meaning-making through social justice storytelling. As we ended the Blue Unit, chapter 4B: Raspberry Pi Counterstory Little Free Library provided us with the means to readily make available up to seven stories, using the Circuit Playground Express in combination with the Raspberry Pi running Python code. In both Blue Unit 4B and Rainbow Unit 1B, we made use of single-purpose MakeCode and Python programs to accomplish a specific task.

We’ve now worked through a series of exercises resulting in a LAMP web server with WordPress. We’ve also worked to identify various decisions influencing the design and implementation of many of the sociotechnical components that make up this web stack, as installed using the base instructions provided by the Raspberry Pi Foundation. We now have the ability to write dynamic HTML using data and information of many types stored within both text and database files. This data and information can be further processed as part of meaning-making by individuals and groups of people, resulting in different format, structure, and organization, and thereby creating yet different information. We concluded this set of exercises by adding the MariaDB Relational Database Management System (RDBMS) and WordPress Content Management System (CMS) to our LAMP server to facilitate the ongoing work of collecting, organizing, formatting, and distributing data and information in collaboration with web clients. In doing so, we’ve created a higher-level sociotechnical network information system.

From Orange Unit Session one forward, we’ve worked to demystify the social and technical components that together shape the larger daily use technologies amongst us. These mutually shaped sociotechnical components and systems shape us even as we practice innovation-in-use to shape these devices. We’ve now got a digital Little Free Library system with electronics, microcontrollers, single-purpose web servers, and a general-purpose LAMP web server with WordPress CMS. But we also now have worked to demystify in significant ways the basic building blocks of these various aspects, opening up agency to innovate-in-use these various components. In so doing, we have hopefully discovered ways that stock stories have been used to create a lens on the sociotechnical components and systems that aren’t right, aren’t just. Moving further, the goal has been to provide us with base skills for social justice storytelling in which we can discover, develop, and share counterstories that buck the status quo in different ways. These can come through concealed stories that serve as direct responses to stock stories, resistance stories that not only buck against stock stories but also highlight injustices, and emerging and transforming stories that (re)construct knowledge built on concealed and resistance stories. Going further, we ourselves are hearing the counterstories in ways that are (re)constructing knowledge—actionable information—that we can use as we design, build, put into practice, and/or innovate-in-use networked information systems as part of our own professional practices as information professionals getting into good trouble, necessary trouble.

Do Something New!

Set aside some time for reflection now to consider the three different networked information systems we now have on hand for our use for a range of purposes, including as a mobile Digital Little Free Library and Counterstory Player:

  • The Raspberry Pi Counterstory Little Free Library
  • The Raspberry Pi Special-Purpose Current Statistics Reporting and Remote LED Controller
  • The Raspberry Pi General-Purpose LAMP with WordPress Server
  1. What are some times when you would choose one of the three over the other two? Why?
  2. What is an innovation-in-use you would like to do to ensure that each one better meets the needs of its use as you described above?
  3. Are there ways that an innovation-in-use could help each of the networked information systems facilitate its use by different audiences to help them make the data and information actionable—that is, to help people turn it into knowledge?

The following are a few ideas for something new you can do to tighten your understanding of the key learning objectives of the textbook. In taking one of these ideas, it may be that you do not currently have the needed connections with community members to make this real. Further, your work through this textbook may have been done in a restricted timeframe which may be coming to an end. Thus, this may be more of a thought experiment with targeted skillset development, rather than a real-life, critically engaged community inquiry activity. But starting this activity with some imagining of members of a community that find themselves in the margins in a critical way, a way for which you need to stand up and say something, do something, will help you to bring a more holistic sociotechnical exploration into the chosen “Do Something New!” exploration, as you consider ways to professionally get into good trouble, necessary trouble as you move forward.

Expanding Your Digital Little Free Library

You’ve now set up a WordPress CMS on your Raspberry Pi, running under the Apache Server and connected to a MariaDB Server. How might you make use of these to grow your Digital Little Free Library into something that can facilitate data and information collection, management, analysis, and distribution to serve a specific need or opportunity? Beyond your community of practice, who needs to be brought into the conversation as part of a human-centered design and implementation? There are a range of ways in which today’s networked information systems, including but not limited to social media, have incorporated systems, structures, policies, and practices that have been exclusionary for those on the margins of society. How can this system be used to address a community-identified limit situation? How can this be done in a way that allows those community members who have been oppressed and marginalized to become active innovators-in-use of the system, so as to ensure that it provides an actionable way for these members of the community to address the limit situation in a way that matters to them?

To integrate this into a learning opportunity, you might also check out the Raspberry Pi Foundation, which provides a range of other educational projects you can do to learn more about web servers, websites, and webpages using HTML, CSS, and JavaScript. More generally, the Foundation provides projects to further explore different software and coding languages. Some of these might be directly integrated into the WordPress space, while others might be a complement to that space.

What’s Next?

For those who choose this adventure, how might you use this space strategically to prototype multiple subcomponents within the larger Digital Little Free Library system in order to “say something, do something” to “get in good trouble” in, with, and for a marginalized community in a way that matters to them?

MAZI Zone DIY Community Network

The core work with the Raspberry Pi within this book has made use of the newest version of the Raspberry Pi OS. But there are now Linux operating systems targeted for embedded devices to do a range of special-purpose tasks. Both the Raspberry Pi and the Circuit Playground Express are made using . As an example, The OpenWrt Project is a Linux operating system designed to facilitate the routing of network traffic using a range of embedded devices, including the Raspberry Pi. The OpenWrt Linux operating system can thus be used to turn the Raspberry Pi into a router connecting a to a using wired and wireless Ethernet ports. For those with a deeper technical background, this may be of interest to explore as a means for building a Community Wireless Network by attaching a Raspberry Pi to a LAN using a wired Ethernet cable, and then setting up the wireless LAN to create a new LAN (e.g., see these instructions from Sparkfun).

Perhaps a better starting point for this introductory text, those wanting to Try Something New! might consider creating a MAZI Zone community network that includes not only a LAMP with WordPress server, but also additional programs, and even the possibility of linking together multiple Raspberry Pi’s into a broader community network.

MAZI means “together” in Greek. The MAZI project is part of the Collective Awareness Platforms for Sustainability and Social Innovation initiative, promoted by the European Commission, and funded through the European Union’s H2020 framework. Their goal is “to provide technology and knowledge in order to:

  • empower those who are in physical proximity, to shape their hybrid urban space, together, according to the local environment and context.
  • generate location-based collective awareness as a basis for fostering social cohesion, conviviality, participation in decision-making processes, self-organisation, knowledge sharing, and sustainable living.
  • facilitate interdisciplinary interactions around the design of hybrid space and the role of ICTs in society.”[13]

According to MAZI, do-it-yourself (DIY) networking using such toolkits “can serve two complementary objectives:

  1. to improve Internet connectivity in a certain region or local area
  2. to support local interactions and services.”[14]

The MAZI Toolkit

The MAZI Toolkit is made up of three elements. All of these are available from the MAZI Toolkit page on this website.

  1. Low cost hardware: Currently the Toolkit is using the Raspberry Pi system. Designs for making your own hardware casings will be available soon.
  2. Software and applications: These are specifically developed by the MAZI Project, including a set of local web applications ready to be installed on the captive portal. The functionality will range from very simple communication services, like chatting, forums, wikis, and polls to more sophisticated collaborative applications for social networking, deliberations, community organizing, project development, etc.
  3. Guidelines and knowledge, including examples and inspirations: Installation scripts and step-by-step guides are part of the toolkit, enabling you to build and deploy your own network zone, to configure a user-facing captive portal, and to select and customize software applications.

In addition, you can directly access the Toolkit guidelines on GitHub, which includes up-to-date documentation.

For this adventure, consider flashing a second 16GB MicroSD card with a ready-made MAZI toolkit image that includes the Raspberry Pi Operating System and the rest of the LAMP + WordPress stack, along with a number of other software applications that can be used by choice as part of your own MAZI Zone. This MAZI Zone can be used offline on its own, as part of a LAN or CAN intranet, or online with the Internet. You can use it exclusively as a web-based ICT, or you could also include Python-based IoT communications, integrating and innovating-in-use into your MAZI Zone exercises from session one of the Rainbow Unit. The MAZI website lists several test examples, but consider other ways this might be used as part of an Urban or Rural Community Network, or perhaps even in support of digital agriculture on that five acre farm seeking sustainable agriculture pathways.

What’s Next?

For those who choose this adventure, how might you now use your MAZI Zone to prototype ways this can be designed, so that you could “say something, do something” to “get in good trouble” in, with, and for a marginalized community or communities within a geographic region?

From an HTTP Thing to Multiple Internet of Things Devices

Through the exercises of the Rainbow Unit, we’ve explored a few different ways we could bring together the Orange Unit electronics and the Blue Unit code with the Rainbow Unit internetworking to build a basic Internet thing. How might you now start combining multiple basic Internet things together to create a plural Internet of Things? This adventure could be done using the Python3 and/or Apache HTTP server setup already in place, done in combination with one of the above “choose your adventure” possibilities above to provide a richer web interface, or using the Adafruit IO.

The Adafruit Learning site also has instructions on how you can take a newly emerging pathway to set up your Raspberry Pi as a Home Assistant. Unlike IFTTT or Samsung Smart Things, your data can remain local, not needing to tie in with the Internet, or can be used in combination with the secured Adafruit IO to add in remote access.

And for those comfortable in CircuitPython who want to test out an open-source web application that includes data cleaning and transformation, numerical simulation, statistical modeling, data visualization, and machine learning, still another adventure could include CircuitPython with Jupyter Notebooks as a first exploration of how machine learning and weak artificial intelligence could be brought into these works.

What’s Next?

For those who choose this adventure, how might you now use your Internet of Things to prototype a way you could “say something, do something” to “get in good trouble” in support of a marginalized community? This is a more technical activity but there may very well be members of the oppressed community who are ready and able to be an active member of your community of practice. However, it may also be that they do not have available time as they find themselves working multiple jobs and serving different community leadership roles because of the limit situations keeping them in the margins. In this case, you might work in collaboration with some to design for design after design so that community members can use these in ways that allow innovation-in-use to assure the IoT prototype can be adapted to advance a given activity overcoming the limit situation specific to the current community context.

Wrap Up

To the extent possible, working on the various activities of this textbook have been done within a community of practice. Bringing investigations together with reflection and discussion with others whose lived experiences are different than yours is essential if we are to identify unknown and unseen meanings, values, and intentions that are embedded within the words of text and within the design of hardware and software. As we come to better understand the codification within these, we can begin a process of decodifcation and recodification, making the data and information potentially actionable in some new way. It is to re-center our work as information scientists from a thing-orientation towards a person-orientation. And as noted several times throughout the textbook, it is to use this as an opportunity for doing pre-season training activities within a sports metaphor. Each is meant to strengthen a different aspect of ourselves and ourselves in relation to others.

But core through each of the activities within this textbook has been the advancement of sociotechnical skills in ways that prepare each member of our community of inquiry for a deeper, critically-engaged community inquiry. Ongoing pre-season action-reflection collective leadership practices are working to develop stronger muscle memory so that these methods are an active part of your daily practices as an information science professional moving forward. Such adventures will include in different ways at different times active bottom-up participatory action research in community, with community, for community throughout your lifetime. This is something we’ll explore further in Rainbow Unit 4A: Recovering Community: Designing for Social Justice.

Comprehension Check

The Orange Unit: A Person-Centered Launch, Blue Unit: Computational Tinkering, and Rainbow Unit: Networks Big and Small each include a Key Learning Outcomes Self-Check covering various technical, information, cognitive, socio-emotional, progressive community engagement, and critical sociotechnical skills. These are again included within the Review chapter for each unit.

  • Take a few minutes now to look back over these to consider your own progression from understanding less to understanding more the foundations from which development of these skills arise.

The Rainbow Unit 3B: A Person-Centered Network Information System Adventure brings these many different skills together as a concluding sociotechnical networked information system.

  • In what ways have the various skills been comprehended sufficiently to take on this concluding adventure? What skills might be further advanced sufficiently through discussion and reflection within your current community of inquiry?

The Rainbow Unit 3B has also worked to explore ways one set of hardware can be used in a range of ways to collect, analyze, organize, format, and distribute data and information. How this is done matters as it is shaped by, and shapes, ways data and information are made actionable, that is, ways data and information are turned into knowledge by those who interact with this data and information. Unconsidered, we likely further algorithms of oppression in our personal and professional practices. If you currently do not have rich diversity within your community of practice, work to outline clearly how diversity would be brought into the collective leadership to assure this is the “good trouble” to which the late John Lewis refers.

  • Take a few minutes now to create your own comprehension check that you can use in the coming days and weeks to affirm you are effectively meeting your learning objectives so that you can say something and do something moving forward personally and professionally so as to get in good trouble in support of personal and community social justice goals.
  • Keep these on your desk or wall to glance at regularly as you work towards completion of the textbook activities, using these to help you keep interest and specificity of thought and actions in this last stretch.

  1. John Lewis and Valerie Jackson, “The Boy From Troy: How Dr. King Inspired A Young John Lewis,” StoryCorps, February 20, 2018. https://storycorps.org/stories/the-boy-from-troy-how-dr-king-inspired-a-young-john-lewis/.
  2. Bharat Mehra, Kevin S. Rioux, and Kendra S. Albright, “Social Justice in Library and Information Science,” in Encyclopedia of Library and Information Sciences (CRC Press, 2009), 4820-4836. https://doi.org/10.1081/E-ELIS3-120044526.
  3. Rev. Dr. Martin Luther King, Jr., “Letter from a Birmingham Jail,” Birmingham, AL, April 16, 1963. https://www.africa.upenn.edu/Articles_Gen/Letter_Birmingham.html.
  4. Apache® is a registered trademark or trademark of the Apache Software Foundation in the United States and/or other countries. No endorsement by The Apache Software Foundation is implied by the use of these marks. “Debian” and the Debian Logo are trademarks of Software in the Public Interest, Inc.
  5. “About Illinois” accessed June 28, 2023, at: https://illinois.edu/about/index.html
  6. “Apache Server Frequently Asked Questions,” Apache, accessed July 20, 2020, https://web.archive.org/web/19970106233141/http://www.apache.org/docs/misc/FAQ.html#relate.
  7. Recvlohe, Adam, Holly Grimm and Desiree Kane. Apache® Appropriation. January 6, 2023. https://blog.nativesintech.org/apache-appropriation/. Accessed April 24, 2024.
  8. The Apache Software Foundation. “History of the Apache Software Foundation.” Accessed April 24, 2023. https://www.apache.org/apache-name/
  9. Recvlohe, Adam, Holly Grimm, and Desiree Kane. “Apache® Appropriation.” Posted January 6, 2023. Accessed April 24, 2023. https://blog.nativesintech.org/apache-appropriation/
  10. Dweck, Carol. “The Power of Believing That You Can Improve.” YouTube, December 17, 2014. https://www.youtube.com/watch?v=_X0mgOOSpLU.
  11. Obama, Barack. “A New Era of Service Across America.” Time (March 19, 2009). Time Inc., New York. (Online Time archive, time.com)
  12. “What Is PHP?” PHP Manual, accessed July 21, 2020, https://www.php.net/manual/en/intro-whatis.php.
  13. p. 4. The Mazi Handbook. http://www.mazizone.eu/wp-content/uploads/2018/10/MAZIEbookOct2018.pdf
  14. p. 7. The Mazi Handbook. http://www.mazizone.eu/wp-content/uploads/2018/10/MAZIEbookOct2018.pdf

License

Icon for the Creative Commons Attribution-ShareAlike 4.0 International License

A Person-Centered Guide to Demystifying Technology, 2nd Edition Copyright © 2023 by Martin Wolske Copyright © 2023. Copyright “Ideating and Iterating Code: Scratch Example” © 2020 Betty Bayer and Stephanie Shallcross. Copyright “Introducing the Unix Command Line” © 2020 Martin Wolske, Dinesh Rathi, Henry Grob, and Vandana Singh. Copyright “Security and Privacy” © 2020 Sara Rasmussen. Copyright “Storytelling in the Information Sciences” © 2023 Yingying Han and Martin Wolske. This book is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License, except where otherwise noted.

Share This Book