Additional Projects
The study of "computers" may include lots of things, including computer science, software engineering, digital logic, hardware, systems administration, website development, computer security... This course has only scratched the surface of what you might become interested in.
Fortunately, information about various computer-related projects is easily found on the Internet. If you're looking for an outside project to get involved in, take a look here and see if any of these projects interest you.
Then get started!
- Read About the Command Line
- Learn the Command Line
- Process Audio and Video with the Command Line
- Automating Tasks
- Take an Online Course
- Learn More about Python
- Build a Wearable
- Make Some Art
- Parallel Processing in Python
- Use Python to send email
- Use Python to make a Timer
- Use Python to interact with webpages
- Learn to Use a Serious Text Editor
- Hack some Hardware (Amazon Dash Button)
- Try Linux
- Set up a Virtual Machine
- Start up a Server
- Build Your Own Box
- Learn About Digital Security
- Build a Raspberry Pi computer
- Do stuff with your Raspberry Pi
- Arduino
- Write a Mobile App
- Git and GitHub
- Create an IPython Notebook
- Run Your Own Server
- Own Your Own Domain (Website)
- Generate Poetry
- Write a Game
- Build a Cool Website
Read About the Command LineTime: 2 hrs — Cost: $0
Many of the projects given here are in some ways related to Linux, and/or using the command line interface to interact with your computer. For a great introduction to that idea, read Neal Stephenson's In the Beginning Was the Command Line [zip file of text file].
Learn the Command LineTime: 15 min — Cost: $0
On Linux machines, and on Apple's UNIX-based OS X, opening up a Terminal will allow you to issued text-only commands via a "shell" program. Issuing commands via the command line and writing shell scripts to perform certain operations is one of the quickest ways to increase your knowledge of how your machine works.
Do an online search for command line tutorial and start learning. Note that commands issued via the command line don't usually offer the same forgiveness that your operating system does, so caution is required! At the very least, ensure that you have a good backup of your hard drive before you go playing around on the command line.
Windows users have a command prompt program but it doesn't operate in the same way, so if you want to play around on the command line you'll need to do so on a Linux machine, instance, or partition. (See Running Linux and Setting up a Virtual Machine below.)
Process Audio and Video on the Command LineTime: 30 min — Cost: $0
Check out these two tutorials on youtube-dl and ffmpeg. Use the command line to download YouTube videos and process audio and video. Neat!
Automating tasks(OS X/Linux only) Time: 15 min — Cost: $0
You can use your own computer/server to run scripts or programs automatically at any given time of the day.
Take a look at this short tutorial on automating tasks with shell scripts, cron, and launchd. , and then create a cron job to automatically run that script at a given time/day.
Very cool.
Take an Online CourseTime: varies w/ course — Cost: $0
If you enjoy the structure of an educational course, there are a number of institutions that offer online "classes," many of them for free. Lessons are prerecorded and typically via an interface in your web browser. You don't have direct access to the instructor, and the quality of the courses varies wildly, but you can't beat the price.
My favorite courses are those offered by Udacity. Sign up for Intro to Computer Science (Python!), Intro to Java Programming, or any of the others offered and get started!
Learn more about PythonTime: 1 hour - 1 year — Cost: $0
A nice list of references where you can pick up more Python is available at https://medium.com/@lockpaddy/10-resources-to-learn-python-3-9a735db7aff9. Get your Python on!
Build a wearableTime: days — Cost: <$50
There are all sorts of things that you can build and wear!
Make some Generative ArtTime: 1 hour - 1 month — Cost: <$0
The Processing platform was designed to allow you to create art, including Generative Art. Read that article, download Processing (works with Python or Java) and get started creating!
Try parallel processing in PythonTime: 10 minutes — Cost: $0
Python's great, but it runs processes as a single-thread, by default. Three lines of code → four-threads! https://medium.com/@ageitgey/quick-tip-speed-up-your-python-data-processing-scripts-with-process-pools-cf275350163a
Use Python to send emailTime: 15 min — Cost: $0
Using a Python program to send email via your Gmail account is easy to do. Take a look at this program and modify it as necessary to interact with Google's Gmail servers.
Now your programs can talk to you via email!
Warning!
Be smart about using programs like these. Google tracks all use of its servers, and limits the number and frequency of emails that you can send via your account. If your script tries to send 100 emails via GMail in the time it takes the program to run, you may very well find your account locked for some period of time.
If you're interested in setting up more industrial-strength email delivery via Google or Amazon servers, there are ways to do that. Those are well beyond the scope of these programs, however.
Use Python to make a TimerTime: 20 min — Cost: $0
Python has lots of libraries that you can use to do all sorts of things, including telling time and playing audio files.
For this project, import the time, os, pyaudio, and wave libraries and put them together to create a countdown timer with an alarm (alarm_bell.wav) at the end.
Use Python to interact with webpagesTime: 15 min — Cost: $0
Python's urllib module allows Python programs to interact with webpages. This program uses the urllib module to read in a webpage, parse through it looking for the data we want (in this case, the most recent temperature recorded by NOAA at the Burbank International Airport), and display that information in the terminal.
Read the comments in the program to see how it works.
What other information would you like to be able to scrape off of webpages? Movie times? Sports scores? Traffic conditions? Using this program as a base, play around and see what other uses you can come up with.
Hack Hardware: Amazon Dash ButtonTime: 1-10 hours — Cost: $0
The Amazon Dash button was designed to order stuff from Amazon.com. Learn how to hack it to do other things, like... donate to the ACLU! https://github.com/nathanpryor/donation_button
Learn to Use a Serious Text EditorTime: 1-10 hours — Cost: $0
Notepad++ for Windows, TextWrangler for OS X, and gedit for Linux are all fine, but almost all serious geeks move on to a serious text editor at some point: vi or emacs. Discussions of the benefits and drawbacks of each editor have launched entire holy wars, but don't let that bother you. Find a tutorial online and try them both out to see which one you like better.
Try LinuxTime: 1 hour — Cost: $0
When you get tired of the "Mac vs. PC" debates, come on over to the Linux side, where the software is free and open source. You don't even need a new machine to try it, and you don't even have to install it on your computer. Just get a copy of a recommended Linux "live" distribution (one that you can run from a disk or USB flash drive without installing—I suggest Ubuntu MATE) and boot up using that device.
Where can I get a live Linux distro?
Want a copy of the Ubuntu MATE distribution? Come see me and I'll give you one! I've got USB flash drives that you can use in your Mac or PC to boot from to try it out.
Or... follow the instructions and make your own Ubuntu MATE USB flash drive.
Like what you see? Knowing about Linux is an important aspect of being a computer geek: many servers (including the one for this class) run Linux, and being able to navigate your way around that operating system is just something you should know. Trying out Linux via a live distribution is fine for playing, but eventually, you'll want to set up Linux in a virtual machine on your computer, run it on a Raspberry Pi that you've built, or perhaps even put it on Your Own Linux Box. These are all more advanced projects that will require a bit more time and tinkering.
Set up a Virtual MachineTime: 2 hours — Cost: $0
A virtual machine is a software-based "computer" that runs on your actual computer. My Apple laptop, for example, currently has two virtual machines on it—a Windows 7 installation and a Linux Xubuntu installation—that I can boot up and run whenever I want. It's pretty cool, and a great way to learn about other operating systems.
The cheapest way to create a virtual machine on your computer is to use Oracle's free VirtualBox software. You'll also need an .iso file for the operating system that you want to install. ISO files for Linux distributions are free, and available on the Internet. ISO files for Windows are available from your Windows installation disks. Running a virtualized instance of Apple's OS X is difficult to do, but if you want to try it out, Google "hackintosh" and see what you come up with.
For a step-by-step guide to installing Virtual Box and Xubuntu, see VirtualBox and Xubuntu.
Start up a ServerTime: <1 hour — Cost: $20
A server is simply a computer set up to communicate with other computers over a network. Typically a "web server" is a computer configured to deliver webpages via the World Wide Web, a "mail server" is a computer designed to facilitate sending email messages, a "file server" stores digital files, etc.
It's possible to configure a home computer to act as a file server: I have a couple sitting at my house doing that right now, one of them a PC running Linux, and one of them a Raspberry Pi. (See Run Your Own Server below for information on how to set that up.) And while your Internet Server Providers (ISPs) won't complain too much if you're occasionally connecting to your computer remotely, if you want to start up a serious server, you'll want to use a commercial hosting service like Linode or Amazon Web Services.
Join me for a brief overview of how you can start up a server using Linode.
Build Your Own Box
Building a computer of your own is one of the most interesting and awesome things you can do, technology-wise. Working on a laptop is great, and most people I know don't even use a desktop computer anymore... but that doesn't mean it's not amazing.
When you build a computer you're selecting parts—a motherboard, a CPU, RAM, SSD or disk drive memory, a power supply, and a case—and assembling them to create a single desktop "tower" which can then have a keyboard, mouse, and monitor plugged into it. Not all CPUs work with all motherboards, so getting a collection of parts that will all work well together includes some research. For your first machine, you'll be best off using a guide prepared by someone else, which will typically give you some options available to you in selecting parts.
If you do an online search for "build a gaming pc" or something similar, you'll eventually find a number of different websites offering guidance—there's a great example at https://www.tomshardware.com/reviews/best-pc-builds,4390.html. Some sites offer more or less counseling in what you need to do to design and assemble a tower.
Learn About Digital SecurityTime: 15 min to many hours — Cost: $0
There are three concepts related to your security that you should be aware of.
- Security
You, your computer, and its data should be free from danger or harm. - Privacy
You and your data should be free from unwanted observation or attention. - Anonymity
You and your data should be free from unwanted identification or recognition.
You may not want or need high-levels of security in your digital life, but if you do—or maybe you just want to avoid having your data looked at by Google and the NSA—there are a number of strategies you can use to ensure that you and your data remain as secure, private, and anonymous as you wish.
Spend some time checking these out, and then get to work protecting yourself.
- Communicate in Complete Privacy
It's both easier, and harder, than you think. A step-by-step guide. - PGP / GPG
Digitally sign and encrypt your emails and data.- An intro to PGP/GPG (from the Electronic Frontier Foundation)
- Strengthen your passwords
One of the easiest things you can do right now - Enable 2-factor authentication
Many online services now offer this feature. - Establish a data backup plan
The most common way to lose data is not theft, but a simple hard drive crash. - Establish a VPN
A Virtual Private Network offers you enhanced security when online. This PDF explains how to set it up using a Raspberry Pi. - Learn about Buffer Overflows
There are lots of ways for a computer to be exploited. Here's a great explanation of the classic "buffer overflow."
Build a Raspberry Pi computerMinimum Time: 2 hours — Cost: $35 - $150
The Raspberry Pi refers to a series of small, inexpensive microprocessor-on-a-board computers that are perfect for someone who wants to experiment. These are really small computers (about the size of a credit card in area), and very inexpensive (around $35), although you'll need more than the Pi itself to get things up and running.
The first thing I'd recommend you get is a guide for helping you get started. Check online for tutorials, or get an inexpensive intro book like the one recommended below.
One note of warning before you start. As with any other computer, there are different models of Raspberry Pi. The first one, Raspberry Pi A, is very cheap, but rather difficult to work with. The Raspberry Pi B, released a couple of years ago, is a solid model that you can do a lot with. The more recent Raspberry Pi B+ is better, however, and doesn't cost any more. Get a B+, and because the board layout is a little different, make sure that you have a tutorial/guide that's designed for the B+. (I recommend MakerShed's Getting Started with Rasperrby Pi, 2nd Edition.
You'll need most of the items here, either purchased or scrounged. A good jumping off spot for finding these things is Makershed.com, where they also have a nice kit including most of these for $129.99.
- Raspberry Pi
- Transparent case (essential for protecting the Pi)
- Memory card
- Power supply
- USB Hub (powered)
- USB keyboard
- HDMI cable (for monitor)
- Ethernet cable (for connecting to Internet, at least initially)
- Wireless adapter (for connecting to Wifi)
- Monitor (for initial set-up at least)
- A guide to help you get started
For more info, check out this tutorial on Buying and Setting up a Raspberry Pi.
Oh, and once you've gotten it up and running, you'll need to secure your Raspberry Pi against attackers [Make magazine].
Do stuff with your Raspberry PiMinimum Time: 2 hours — Cost: $35 - $150
There are so many things that you can do with a Raspberry Pi that there's an entire separate page for that.
Set aside some time this afternoon, this evening, this weekend, and build something cool.
Arduino
An Arduino is a small, inexpensive, microcontroller that you can have a lot of fun with. While a Raspberry Pi has the power to run a full operating system on it, the Arduino is better at running small, hardware-based projects. It's specifically designed to allow sensors to control actuators.
- Learn more here.
- Here's how to turn your Arduino proof-of-concept into an actual thing.
- Get creative with your Arduino and servers: Halloween pumpkin with multiple eyes.
Write a GameMinimum Time: 8 hours? — Cost: $0
You can totally write a computer game, text-based or graphics-based.
- Trosnoth is a game built on Pygame. This blog post gets pretty deep into game design mechanics. Fun!
- Pygame is a great audiovisual platform for developing games using Python. Installation can be tricky, but give it a try!
- Processing.org is another development platform for creating games using Python (Java, Javascript, etc.).
Git and GitHub
git is a local command-line utility that you can use to manage your software development, track multiple version, fork branches, etc. GitHub is an online software management website that you can use git to interact with.
You can learn how to use git here, and GitHub here!
Generate PoetryMinimum Time: 8 hours? — Cost: $0
Coming someday.
Write a Mobile App
Coming someday.
Create an IPython Notebook
Coming someday.
Run Your Own Server
Coming soon.
Own Your Own Domain
Coming soon.
Build a Cool WebsiteMinimum Time: varies — Cost: $0
It's interesting to see how much you can do with a very simple idea. Check out https://asoftmurmur.com as an example.