Rainbow Unit: Networks Big and Small
3B: A Person-Centered Network Information System Adventure
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
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 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, given certain socially structured fabric and certain community values that are placed above others, particularly in light of dependencies on public funding that gives greater power to the middle class white population.
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 we 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. 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, and; 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 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 setup multiple Internet of Things devices to get into that good trouble.
As you take on this adventure, keep forefront in your mind ways to assure 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.
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. 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-1995 as a post-doctoral researcher at the Neuronal Pattern Analysis group at the Beckman Institute, University of Illinois 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.
Research institutes serve different roles at different times, but much of the core is on basic research. And so in early 1995 the Apache HTTP server project began as the NCSA research HTTP server and Mosaic web browser development was winding down. The NCSA code was available through what became the free and open source licensing framework, and served as the base for Apache HTTP. 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.
As Carrie Anne Philbin notes at the end of the Crash Course Computer Science video above with regard to Net Neutrality, implications of decisions matter. And so it is with also 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 in 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 The Apache Software Foundation Wikipedia page (https://en.wikipedia.org/wiki/The_Apache_Software_Foundation) and Natives in Tech Blog post “Apache® Appropriation” (https://blog.nativesintech.org/apache-appropriation/): “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 still referenced as the source for both, and so I was not able to confirm this citation during the writing of this April 24, 2023.) The name Apache which is trademarked by a US charity non-profit foundation is thus inspired by “the last days of a Native American tribe” without recognition that the Indigenous peoples currently have 8 federally recognized tribes with many thousands of living Apache citizens today, without full consultation, or without enumeration. The trademark was awarded to the non-profit foundation by the same US government that acknowledges the sovereignty of these 8 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, 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 8 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'”. 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.
As mentioned at the start of the Background Knowledge Probe to begin this session, small decisions can lead towards large outcomes which are both shaped by these small decisions, and which 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 match strongly core principles of the Internet Protocol. Apache remains commonly used, especially on Linux-based computers, making up over 25% 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 to facilitate exploration of some of the benefits of such a system to connect data with context as information with the potential to make this actionable by the end-point collaborators as knowledge. It is in this way that we’ve seen such digital information and communication technologies subsequently serve as useful tools for movement work standing up to say something, to do something to facilitate a more just society for all, and especially 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 shared in 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 both the multiple social layers and the multiple 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 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.”“.
Net neutrality is a critical issue as we work on the World Wide Web through installation of a general purpose web server and is something to be followed as professionals given its ongoing impacts shaping our work as professionals. 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, it is to recognize the dangers seen in a way that can begin a process of restorative justice 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 something I need to delve into further moving forward 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.
- First update the available packages by typing the following command into the Terminal:
pi@raspberrypi:~ $ sudo apt update
- 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 network and you should see the following:
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 do not need to do this, as it is assumed by default.
This also means 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!
- 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 with 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 etcetera, 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 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, then mostly hangs out twiddling its thumbs 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 things can 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
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
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 refreshing 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 past the 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.
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:
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:
And remember, if you have other LAN-based computing devices with a web browser installed, such as your smartphone, you can use those to access these pages as well.
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.” 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
and 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.
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(); ?>
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 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 even greater flexibility to innovate-in-use.
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 vision the different ways these smaller parts have come together at different times 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 the large reflects the various small components, and the ways 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 for both single-purpose Python web applications and general-purpose static and dynamic webpage applications. So far the instructions have been provided through the textbook. The text for these instructions primarily come copy and paste 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 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 license (https://creativecommons.org/licenses/by-sa/4.0/) 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 spoke 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 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 a 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 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?
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 in a terminal window or a web browser this data as information using format, structure, organization, and meaning-making names as Note, Button, Temp, Light, and Runtime. But since the Orange Unit we’ve also worked to step up a major level 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 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 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 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 a direct responses to stock stories, resistance stories that not only buck against stock stories but also highlight injustices, and emerging/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 of 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
- What are some times you would choose one of the three over the other two? Why?
- What is an innovation-in-use you would like to do to assure each one better meets the needs of its use as you described above?
- Are there ways an innovation-in-use could help each of the Networked Information Systems could facilitate its use by different audiences to help them make the data and information actionable, that is, help them 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 on 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 professional get into good trouble, necessary trouble as you move forward.
Expanding Your Digital Little Free Library
You’ve now setup 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 assure it provides an actionable way these members of the community can address the limit situation in a way that matters to them?
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 you could “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 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 at: https://learn.sparkfun.com/tutorials/setting-up-a-raspberry-pi-3-as-an-access-point/all.
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 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.”
According to MAZI, do-it-yourself (DIY) networking using such toolkits “can serve two complementary objectives:
- to improve Internet connectivity in a certain region or local area
- to support local interactions and services.”
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.
- Low cost hardware: Currently the Toolkit is using the Raspberry Pi system. Designs for making your own hardware casings will be available soon.
- 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.
- 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.
For those who choose this adventure, how might you now use your MAZI Zone to prototype ways this can be designed 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.
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.
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.
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.
- 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/. ↵
- 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. ↵
- Rev. Dr. Martin Luther King, Jr., "Letter from a Birmingham Jail," Birmingham, AL, April 16, 1963. https://kinginstitute.stanford.edu/king-papers/documents/letter-birmingham-jail. ↵
- Apache® is a either 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. ↵
- "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. ↵
- Recvlohe, Adam, Holly Grimm and Desiree Kane. Apache® Appropriation. January 6, 2023. https://blog.nativesintech.org/apache-appropriation/. Accessed April 24, 2024. ↵
- https://www.apache.org/apache-name/ ↵
- https://blog.nativesintech.org/apache-appropriation/ ↵
- Dweck, Carol. “The Power of Believing That You Can Improve.” YouTube, December 17, 2014. https://www.youtube.com/watch?v=_X0mgOOSpLU. ↵
- 2009 March 19, Time, A New Era of Service Across America by Barack Obama, Time Inc., New York. (Online Time archive time.com) ↵
- "What Is PHP?" PHP Manual, accessed July 21, 2020, https://www.php.net/manual/en/intro-whatis.php. ↵
- "Overview," MAZI, accessed July 20, 2020, http://www.mazizone.eu/about/overview/. ↵
- "Toolkit," MAZI, accessed July 20, 2020, http://www.mazizone.eu/toolkit/. ↵
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, then mostly hangs out twiddling its thumbs waiting for a call 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.
A style sheet language is used to format the expression of a structured document. While HTML itself provides a standard markup language for web page creation, alone a web browser would make key decisions regarding the expression of the various tag elements within an HTML file.
The Cascading Style Sheets (CSS) is a modern style sheet language for use with HTML, XML, and other common markup languages used on the Internet today. Different relevant CSS files can be used to separate out content and presentation so that layout, colors, and fonts can be addressed independently, reducing complexity and repetition. This also allows distinct structures for different presentation formats such as web, ebook, and pdf displays of the same HTML or XML document.
A database is a collection of organized data. A database uses a similar starting format to that of the rows and columns spreadsheet, this time calling them records and fields, respectively, that are stored within tables. But the vast majority of databases used today also add in a relational aspect through the use of a key which links tables together. And indeed many of today's spreadsheets have implemented forms of linked cells across sheets as an elementary form of relational database.
To more formally make use of relational databases on a personal desktop, its possible to move from something like Microsoft Excel to Microsoft Access which includes a Database Management System (DBMS). The DBMS is the software that interacts with end users, applications, and the database itself to capture and analyze the data. A query language is needed to allow communications within the database and from outside agents into the database. A commonly used one is the Structured Query Language (SQL), often pronounced sequel. Together, the database, DBMS, and any associated applications make up a database system.
While many databases are proprietary, non-free software. Some, like MySQL include both a GNU General Public License (GPL) version and a Proprietary version. When MySQL was acquired from the founding Swedish company by Oracle, co-founder Michael Widenius launched a new fork of MySQL called MariaDB, a community-developed, commercially supported fork of MySQL with GPL v2 license for most of the database system, and a GNU Lesser General Public License (LGPL) for the client libraries.
Both MySQL and MariaDB make use of SQL and include stand-alone clients allowing users to interact directly with the database itself. Both are highly compatible and intend to remain so. Both can be used as part of a Linux, Apache, MySQL/MariaDB, Perl/PHP/Python (LAMP) base infrastructure to serve a range of database-driven web applications, including Drupal, Joomla, and WordPress, and websites including Facebook, Twitter, and YouTube.
An integrated circuit, also known as a chip or a board, that brings together several components such as a processor, memory, controllers, and input/output peripherals. It can then be embedded into a larger microcomputer or microcontroller system.
The simplest type of Internet-based area networks is a Local Area Network (LAN). A LAN is a network with connected devices in a close geographical range. It is generally owned, managed, and used by people in a building. For example, connecting to a WiFi network at a coffee shop or library would mean your device would be a node on the cafe or library's publicly accessible LAN. Many businesses and institutions have a second, private LAN for use by staff only.
A version of a Metropolitan Area Network, the CAN is a network the size of a college, organization, or business campus. These types of networks are typically community-owned and/or managed.