I’ve been working with a group of kids in the South Austin neighborhood of Chicago, notorious for its crime, violence, and teenage pregnancy rate. I visit every Saturday morning. Arriving through the steel grated doors of a once abandoned Chicago Public School building, we take refuge in the first classroom on the left. There, with blinds drawn to protect from the hungry eyes of the neighborhood, we play Roblox, watch YouTube videos, and tease each other. For a few minutes of each weekend the kids and volunteers reach a critical mass of concentration and learn about technology.
Last weekend, we took a break from talking about the cloud, DNS, and game engines. Instead we took a look at the lab itself – something that has been so stable that we’d started to take it for granted. The group talked about large companies and how they spend a lot of money and employ fulltime engineers to deploy and maintain their systems. Next, we had a little history lesson on how we had managed to do the same with just 2 hours a week and $0.
Probably a good time for a TL;DR: Use Ubuntu, Kickstart, apt-cache, SaltStack and pfSense. Chase a few hardware donations and bada-bing you’ve got a lab.
The lab started taking shape thanks to a generous donation made from my employer. We were provided with two 24 port switches and 25 Pentium desktops to get started. We spent a couple of weekends learning to crimp Cat6, run power, and get all the lights blinking. We had the lab connected but the hard drives had been wiped before donation and we didn’t have a budget for software.
Why should we spend money on software? Most of the our typing practice, coding instruction, and the games we played were Flash or HTML5 based so a modern browser was our only hard requirement. We certainly didn’t have any critical business processes running that would dictate the need for support and SLAs; if the lab went down the kids would just default to playing on their phones like they did on the way to and from the lab. We decided to give Ubuntu a shot.
I did some prep work in the following week. Drawing on my experience automating Linux server builds and creating standardized repeatable deployments, I had a solution in mind that I could pull off in a few hours and that was simple enough to teach the kids. Over the next few days I modified an Ubuntu desktop install image by dropping in a kickstart file that formatted the drives, created the initial accounts, and installed the salt-minion and ssh-server packages. Finally, I modified the GRUB settings on the installer image so that it would boot directly to a kickstart install.
That next Saturday we split into teams and walked around with USB drives installing pre-configured Ubuntu on all 23 desktops. The kids only had to enter the device’s hostname when the installer prompted them. 23 you say? Weren’t 25 donated? Where’d the other two go?
The next weekend we learned about two new concepts: servers and firewalls (desktops #24 and #25 respectively). We installed PFSense on one of the remaining devices, added in a couple of salvaged NICs, and put it in-line between our internet circuit and the first switch. On the same morning the team installed Ubuntu Server on the final remaining desktop. As soon as we got the internet up and YouTube running all other work ground to a halt.
When I returned the next weekend, the kids were thrilled that they had internet so close to home. They were full of stories about the new sprites they had created in Roblox, the funny things they had their Scratch avatars programmed to do… but, could we get rid of that annoying login message? Maybe we can install that fun game we found in the app store on all the computers? Wouldn’t it look cool if we set the background graphic to the Kidz Express logo? I had planned for this but I let them feel the pain of making the change one workstation at a time for a little while – after all, when I was their age I was flipping floppies and running at 1200baud, no configuration management in sight.
I introduced the group to SaltStack. The desktops could all be minions, I explained, and the server could be their master. We wouldn’t waste time walking around computer to computer; we would make a change once and let automation take care of the rest. I taught them an important lesson that day: The most productive systems engineers are paradoxically lazy.
Over the next few weekends we tweaked our SaltStack States and Pillars, we made the lab look and feel exactly how the kids wanted it. I taught them how to turn off all the computers at once from their phone with a single command. I taught them how to patch the whole lab, also from their phone with a single command.
The kids get taller at an alarming rate. When we started working together almost 3 years ago they all literally looked up to me. Today, half of them tower over me. They see a bright future for themselves in Chicago tech. They’re armed with the concepts and skills used by the hottest companies in town and their resumes are preloaded with 3 years of automation and orchestration experience before they even apply to college.
The future tech geniuses of Chicago are giving up their Saturday mornings to learn how to type, code, and manage infrastructure every week. The Open Source community has provided them with access to the same tools used by the professionals. The time to start seeding these skills is now. Not when they’re entering the work force, but instead even before they’re in high school. Come out and give us a hand on Saturday morning or let us give you guidance on setting up a lab setup in your community.
More about Kidz Express:
· Webpage: http://kidzexpress.org/
· Aljezeera Report on KE (with videos): http://america.aljazeera.com/watch/shows/fault-lines/FaultLinesBlog/2016/2/17/chicago-kids-find-a-safe-haven-amid-violence1.html
Special thanks to my partners in the Kidz Express Computer Club:
The generosity of the group listed below has provided one neighborhood’s kids with the hope, goals, and path to success in technology.
· KE Executive Director – Doug Low
· KE Board Member & SVP CIO of Reyes Holdings – Mark Booth
· Volunteer & VP of Enterprise Technology, Reyes Holdings - Carl McDonald
· Volunteer & Director of HR, Constellation Brands – Erica Berg
· Volunteer & Managing Director, IT Platform Engineering, United Airlines - Ramiro Zavala
· Volunteer & ERP Program Director, Reinhart Foodservice - Vince Danca
· Volunteer & VP of ERP Technology and Development, Reinhart Foodservice - Paul Vermeulen
· Volunteer & Site Ops Incident Manager, Uptake - Howard Madison
· Volunteer & Program Manager, Reyes Holdings - Amita Mirchandani
· Volunteer & SCCM Administrator, Reyes Holdings - Carlos Monzon
· Volunteer & IT Security Professional - Rob Olejnicki
· Patron & SVP CIO, Reyes Beverage Group - David Van Volkenburg
· And all the others that have made donations and taken time out of their weekends to work with the kids…