Good Software

There is a lot of bad software out there. Some of it comes with spyware. Others try to take over your machine. Media players claim to play media, but don't handle most common kinds of media files and don't come with ANY commonly used codecs. So, here I list the software that has been useful to me that actually does what it is supposed to and well.

NameWhat it isWhy you need it
MPlayer MPlayer is a media player. It can play just about anything you can throw at it, be it video or audio. It comes with commonly used codecs, unlike other media players. It can play DVDs if you have libdvdcss (available separately due to legal concerns from the DMCA). It can play everything from QuickTime files to tar'd rar'd SVCDs. It can even play m4a files from an iPod. This is the only media player that I have used that would just play a file when I asked it to. Most media players have their own formats. QuickTime plays mov, RealPlayer plays rm, and Windows Media Player plays wmv. They don't support each others formats. MPlayer supports all of them. These other media players don't even know what a Matroska file is, let alone how to play it.

In addition to this, MPlayer comes with many different filters. If interlacing annoys you, there are several deinterlacing filters. You can even set even frames to be on 1 side of the screen and odd frames on the other if you like. Just for the fun of it, you can watch a movie rendered as plain text.

MPlayer comes with mencoder which allows you to transcode files. This way you can compress large files with better codecs or make it fit the specifications of a portable video player.
GPG GPG is a free version of PGP. It is an encryption tool. It can handle symmetric encryption, public-key encryption, and signatures. It also tracks how much you trust various entities (a generalization of certificate authorities). It makes it easy to keep your private information private. Signing allows you to know that your files have not been tampered with and that they are actually from you.

For example, you can safely back up your personal information to an untrusted remote machine. Even if that machine is compromised, they will not be able to get your data. If they alter it, you will see that it is corrupt because the signature will not match.

As another example, the from field in e-mail headers does not actually indicate anything. You can type whatever you want there, regardless of your e-mail address. By adding a digital signature, you can demonstrate that an e-mail is actually from you and not from a virus that infected someones machine that had you in their address book. There are plugins for many e-mail clients to add GPG integration. Personally, I use EnigMail.
Subversion Most programs only let you undo 1 change. Fancier ones let you go back 10 changes. Using Subversion is like having infinite undo and then some. This is called versioning. Subversion is a vast improvement over CVS and addresses all of the shortcomings that I saw. Furthermore, it has SSH integration which makes it easy to use from a remote machine. It allows many different branches of a project to exist concurrently. You can see who made changes to what parts when. You can set guidelines for what can be committed and what isn't allowed. Many people work on big projects. Using this tool, you are safe. If you make a mistake, you can revert it. If you want to try out something and don't know if it will work, you can make it into a branch and work on it there to see if it does or not. You can take snapshots of particular revisions for quick reference. For example, if you are writing a paper, you can mark each draft that you submit. This way you can check what you have submitted regardless of subsequent changes that you have made.
SSH SSH allows you secure remote access to your computer. You can have both graphical and commandline access as well as forwarding arbitrary ports. In addition to telnet-like access, arbitrary other subsystems can be used. It can use password and public-key authentication. How many times have you gone somewhere and remembered that you needed a file for your presentation? You can grab it using SFTP over SSH. If I am downloading large files, I can connect to my computer and check how far along it is. With public-key authentication, you can have scripts automatically upload files and tell the other machines what to do with them. If you work at a place that blocks certain Internet traffic, you can use SSH to route it through another machine so you don't have to worry about the restrictions.
Wireshark Wireshark is a tool for examining network traffic. It can capture packets as they go by and has many filters available to examine various protocols. This actually lets you see what your computer is saying over the Internet. It is good for checking that programs are only doing what they are supposed to and not sending out your personal information. It has a large number of filters and its own rule language so you can describe just the packets you want to look at, since there is bound to be a lot of them. It also knows about fields in common protocols so you can quickly dissect and read those packets.

Lots of programs like to send out HTTP requests to other machines. With this, you can see who they are talking to and what they are saying. For example, you can see where Flash games send the high scores to and in what format.

It also allows you to listen to wireless traffic to make sure that you are not broadcasting sensitive information as plain text.