One Desktop to Rule them All
with apologies to J.R.R. Tolkien
How the Raspberry Pi Project Keeps Answering My Prayers
As a computer science teacher in a public school education system I have from the beginning of my career lived within in the middle of the contradiction between innovation and bureaucracy. The school system bureaucracy, quite naturally focused on security, scalability, and cost, distributes computers to students in our one-to-one program which are configured to effectively bar using them as tools for learning about computers. For more than two decades I have gotten around this problem by maintaining my own classroom infrastructure using GNU/Linux workstations ideally suited to an open, innovative learning environment. To the credit of the school system where I work, I have been unofficially "permitted" to do this all this time. I could never be granted official approval, of course, since the bureaucracy by its nature is incapable of doing that, but since I have always been willing to ask forgiveness rather than permission, and since I have never been stopped, I've come to take that as implicit "approval" of what I am doing.
The coming of the COVID-19 pandemic and our move to distance learning has presented a serious challenge this year. My students and I do not have access to my GNU/Linux lab, and many of my students, especially the least privileged and most vulnerable among them, have been limited to their locked-down, educationally impaired, school issued MacBooks.
I have struggled with this problem since school started in September, trying several approaches, including attempting unsuccessfully to work around the limitations on the MacBooks, and providing shell accounts to my students on online servers, until finally settling on the approach that seems to literally be the answer to my prayers.
The solution to the problem of providing CS and IT students with the open learning environment they need to effectively learn how computers work and how to manage them comes to us from the most wonderful educational computing project I have seen in my 29 years teaching computer science, the Raspberry Pi project.
My first exposure to the Raspberry Pi occurred on March 15, 2013, when I attended project founder Eben Upton's keynote at PyCon. Earlier that morning I had been given a Raspberry Pi in my swag bag at the conference, and before I left, after responding to the call at the end of the conference for all teachers to report to a designated location, I had four of them in my possession.
Eben explained that the Raspberry Pi was created to address much the same need to which I referred above - providing students with computers on which they can effectively learn about computing. He also mentioned that the design goal was to create a computer that was the size of a credit card and the cost of a textbook.
The most recent Raspberry Pi 4 has come a long way in computing power from model I got at Pycon. It is now powerful enough to serve as a fully functional desktop computer. To meet the needs of my students, however, another configuration works best.
Setting Up a Raspberry Pi as a Web Development / Computer Science Learning Platform
Here is a picture of top of a low height filing cabinet in my office on which I have my Comcast router connected to a small Ethernet switch and two small computers running Raspberry Pi OS:
The first of these is a ZOTAC ZBox Mini PC ID12 with 2 gigabytes of RAM, an Intel Atom processor, and a 2.5 inch SATA hard drive. I purchased this back in 2012, and it served faithfully as my classroom web server until the current pandemic locked me out of my classroom. Raspberry Pi OS installed without a hitch on this old machine and has breathed new life into it.
The other machine is a Raspberry Pi 4 with 4 gigabytes of RAM, an ARM processor, and a 256 gigabyte microSD card for non-volatile storage. It silently sits on the top of this cabinet providing me with all the computing power I need to learn web application development and computer science.
It is this second machine that I think will provide the best solution to my student's computing needs. In the remote learning environment with which we are presented this year, all of my students have to have Internet access, something which I could not previously assume. That means they have some kind of residential gateway in their home. The backs of these residential gateways typically have a built-in Ethernet switch with a few ports available.
Connecting a Raspberry Pi 4 to one of these ports with an Ethernet cable is all my students will need to have all the computing resources they need for my classes and beyond conveniently available to them.
The screenshot below shows part of my office workstation desktop with a terminal window with an ssh connection to my little Raspberry Pi, and a browser window connected to the same Raspberry Pi, on which I have installed lighttpd.
Using a setup like this, which takes up very little space, makes no noise, and can be tucked away unobtrusively in the smallest of living spaces, my students can have the access to computing resources they need to learn web application development, computer programming, system administration, and more.
Finally, Raspberry Pi OS installs on just about any hardware. I have recently tested the operating system installation on the following computers: Acer Aspire One 722-DA73 and Aspire 5750Z, Dell Latitute D630, Dell Vostro 1720, HP All-in-one 2MD21507FZ and Probook 6555b, Intel NUC D4250WYK, Asus Chromebox CN60, IBM ThinkPad T42, Compaq nc6320, and an Apple MacBook Pro 2012. It installed with ease on each of them, giving me the Dr. Frankenstein thrill of bringing dead computers back to life.
This means I can have a standard, reference operating system that is readily accessible to any student with an old laptop or PC sitting around not being used that can provide them with the learning platform they need for my class.