Computer Club Project Ideas
Table of Contents
- Containers for everyone
- Restructure our website
- Network boot PXE hackery
- Debian packaging, automated Debian configuration
- Migrate mail to IMAP-only
- AFSexploring
- Wikicleaning
- Packaging for Contributed Software, tinker with package managers
- TAPP
- Automating Computer Club social media
- Organize the machine room
- Computer Club maintenance scripts
- Storage server
- Virtual machine service
- Platform-as-a-service
- Demoscene
- Set up a NAT for our internal IPs
- Do something related to networking
- Work with existing services
Here is a big, unorganized list of project ideas!
Containers for everyone
sbaugh has a radical and interesting project to use containers to give every AndrewID access to easy hosting. There are a number of smaller subprojects involved in this. If you want to help out, ask him. Subprojects:
- Mess with OpenSSH to get easier access into the containers
- Find some webserver that will properly proxy the connections into the containers without masses of manual configuration
- Figure out how to handle authentication, and get Unix account info from the Andrew LDAP servers
- Mess with Linux kernel networking stuff
Restructure our website
Argh, our website is PHP and messy. If you know web development stuff, maybe you could help? Our website is almost completely static, so we probably want to use one of those static site generators. (Probably Jekyll).
- Look at our website in
/afs/club.cc.cmu.edu/www/
(this is actually a bunch of different websites stored together but whatever) - Look at some static site generator.
- Extract CSS and theming stuff from our website.
- Get the static site generator to generate something similar to our website.
- Tell sbaugh and he will cry tears of joy
Network boot PXE hackery
Set up fancy PXE boot stuff so we can boot installers and more over the network.
- Try out PXE boot by making a VM.
- Learn how PXE works (it's some DHCP variables that point at a storage server)
- Figure out how to boot and install multiple operating systems without changing those DHCP variables
- Do that.
- Rejoice when you can netboot cclub servers, and even your own laptop. So stateless! So cool!
Debian packaging, automated Debian configuration
Learn Debian packaging and package up the CClub configuration. Debian is actually really awesome! You can automate it and it's great!
- Google for a tutorial on how to make Debian packages
- Make a simple package to get your feet wet.
- Package the k5login section (where it says "make this a Debian package) of https://wiki.club.cc.cmu.edu/org/ccwiki/Common%20Maintenance%20Tasks/Clubifying%20a%20machine
- Rejoice! Making a clubified machine is now much easier!
Migrate mail to IMAP-only
Currently CClub mail is delivered in the old Unix style, directly to your home directory in AFS. This is actually really awesome and cool. But, delivering to homedirs requires a lot of AFS permissions and is ultimately insecure. We could instead run an IMAP server as the canonical way to get your mail, and synchronize that IMAP server with the mail directory in your homedir.
Moving to that would require following these these steps:
- Make qmail deliver to two places (homedir and a new place)
- Set up an imap-ng.club IMAP server that serves mail out of the new place.
- Tell people to use the new server.
- Wait a bit
- Shut down old IMAP
- Wait a bit
- Shut down homedir mail delivery
- (Optional) Find a new way to deliver mail to homedirs, like "Make the user run this script and it will set up offlineimap". If we had systemd on our shells we could run offlineimap as a (lingering) user-session service, so each person gets their mail delivered automagically.
AFSexploring
Hunt through afs/club.cc.cmu.edu and map it! It is a strange land filled with mystery. Many ancient things lie within.
- Get access to AFS (probably install it on your laptop)
- Poke around it with your file manager of choice
- Record what you discover.
Wikicleaning
Search through a Markdown dump of our ancient wiki and unearth the treasures of past ages. Also maybe delete some of those treasures and reorganize it a little.
- git clone /afs/club.cc.cmu.edu/usr/sbaugh/ccwiki.git
- cd ccwiki
- ikiwiki –setup .ikiwiki/ikiwiki.setup
- Explore, both with your browser and with your text editor on the actual markdown source (I prefer the latter)
- Delete some of the crap, commit, and ask sbaugh to pull your changes.
Packaging for Contributed Software, tinker with package managers
Andrew has super out of date software, and limited software. Contributed Software fixes that!
- Look at http://cmucc.org/doc/contribsoft
- Look at afs/club.cc.cmu.edu/contrib
- Realize that sbaugh compiled all those things individually and it was a huge pain.
- Look into using an actual package manager/package build system to build these packages (they need to be built from scratch against RHEL6 which is what unix.andrew.cmu.edu has) (maybe use EPEL?) (consider pkgsrc, portage, etc.)
- Test it out in a subdirectory of your CClub homedir. (ask for more space if you need it)
- If it works (and is easier than compiling each package individually), ask someone to make afs/club.cc.cmu.edu/contrib2 and give you access.
- Test it there.
- If it still works, celebrate and update the documentation online to point at contrib2.
TAPP
This is our project to automate creation of talk series stuff from a single canonical JSON file. It is progressing well, and written in Python. See it at https://github.com/cmucc/tapp and ask tparenti.
Automating Computer Club social media
Computer Club members are super lazy. In particular, we are lazy when it comes to making posts/tweet/messagess/whatevers on social media sites. This is a project to write a few scripts to automate this, or at least centralize it, so we don't have to go through the annoyance of logging into a bunch of accounts to make these posts. Ideally someone would just send a properly formatted email off to some address on some machine, and some process would parse it and make all the posts. If you're interested in scripting, interacting with email, and random web APIs, this is a good project!
Organize the machine room
This sounds boring but it is an opportunity to let your OCD go wild! At the moment the best place to begin new organizing would be the workbench, which is tragically unable to be used for work, seeing as it's always cluttered. Also useful would be cable management, organizing the vast amounts of cables on the back of a rack so it doesn't look hideous, confusing and distressing. Soon we will be getting access to some long term storage to store our jun- treasures in, and since you will be one of the people determining what should go there, everyone will be extremely grateful to you for your decluttering efforts. If creating beautiful systems of organization that will make everyone else's life a lot easier sounds interesting, this is a good project!
Computer Club maintenance scripts
We have a bunch of scripts which are helpful to do all kinds of things: add new users, spin up new machines, etc. etc. Unfortunately, these scripts are aging and suffering from bit rot. Also, they have some failings - adding new users can't be done on demand, it's triggered by an hourly script. Their error messages are also quite cryptic. Please help freshen them up! Everyone will be grateful, we're just too lazy to do it ourselves. This project would basically involve figuring out what the scripts are doing, and then reimplementing them, better, WITH MANY COMMENTS. If you're interested in scripting Unix systems, and turning CClub infrastructure into a well-oiled machine, this is a good project!
Storage server
We have recently received a donation of 22tb of very fast (NetApp) networked storage. We already have basic access to it through NFS. However, we'd like to run AFS on it as well so we can get some of that sweet sweet storage for ourselves. This is a matter of setting up a virtual machine to interface with it and probably reading some NetApp/NFS/AFS documentation. If networked storage and distributed filesystems sound interesting to you, this is a good project!
Virtual machine service
Setting up an easily accessible virtual machine system is an ongoing project. We already use virtual machines heavily internally; but this project will make it easy to allocate new VMs on request by non-members, or even let non-members allocate machines themselves, if there was some way to keep that under control. You would be working on bringing up a heavily-documented and flexible piece of software which we hope will let us achieve this goal. If you're interested in getting to know about virtual machines or the mechanics of servers in general, this is a good project!
Platform-as-a-service
Platform-as-a-service is some cloudstuff that lets you use web development platforms like Ruby on Rails or Node.js without actually managing a server. This is what companies like Heroku sell. It might be useful if Computer Club offered this in addition to full virtual machines. The primary difference here is that no-one has been working on this at all. You'd do some Googling on how to set up a platform-as-a-service service, and then… set it up! This might be very easy or very difficult, I have no idea! If you're interested in web development or you like to gamble (don't worry, you can stop working on this if it turns out to be a huge pain), this is a good project!
Demoscene
It's the demoscene! Demos! Yes! Demos! If you're interested in learning about some ancient hardware, why it's superior to modern hardware, and how to trick it into rendering 3D graphics despite being at about calculator level, this is a good project!
Set up a NAT for our internal IPs
We just got an allocation of internal IPs from CMU, want to set up a NAT for them?
Do something related to networking
- Learn physical networking
- new member project, hook up the network map to the netgear
- another project, test out the network card in rack 6 ups
Work with existing services
- CMU Contributed Webserver
- Usenet
- Linux package mirrors
- Mailservers
- KDC (Key distribution center)
- DNS (Domain Name System)
- AFS (Andrew File System)
- Shell servers
- Storage servers
- Backups