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 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.)

Using cron/launchd(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 using cron, which will first have you write a short script, 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!

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 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.

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 Linux Mint) and boot up using that device.

Where can I get a live Linux distro?

Want a copy of the Linux Mint distribution? Come see me and I'll give you one! I've got DVDs that you can boot into if your machine has an optical drive, and USB flash drives that you can boot from, both Mac and PC.

Or... follow the instructions and make your own LinuxMint 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.

Run Your Own Server

Coming soon.

Own Your Own Domain

Coming soon.

Build Your Own Box

Coming soon.

 

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.

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.

Create an IPython Notebook

Coming soon.

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.

For more info, check out this tutorial on Buying and Setting up a Raspberry Pi.

Do stuff with your Raspberry PiMinimum Time: 2 hours — Cost: $35 - $150

Looking for something fun to try with your Raspberry Pi? Check out Raspberry Pi for Secret Agents, by Stefan Sjogelid.

Fun!

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.

Also, here's how to turn your Arduino proof-of-concept into an actual thing.

Write a Mobile App

Coming soon.

Git and GitHub

Coming soon.