I've been programming computers as a hobby for ages by now and still find it a rather nice way of spending parts of my spare time. The level of frustrations tolerance you need is definitely lower than in theoretical physics (as the problems you encounter are certainly much simpler) and it can even be relaxing (unless you have to deal with badly written documentation).
Celsius Library System
One of my larger projects is the Celsius Library System, which manages electronic documents like pdf-files of scientific papers and keeps the associated references in order. It is specifically adjusted to the needs of a theoretical high-energy physicist, but it can easily be adapted to anybody else's needs. Originally, Celsius was designed to allow for easy offline-browsing of papers and lecture notes I downloaded. Nowadays, one has internet access pretty much everywhere, but I still find this software very useful, as it allows me to group papers into categories and search only the subset of papers which I downloaded at one point.
I'm not particularly crazy about Facebook itself (it can certainly be a huge waste of time), but the possibility of developing useful webpages which integrate nicely into this social network and thus reach a larger audience is fascinating. And so far, my anger about the incredibly bad documentation of the Facebook APIs has not stopped me from continuing doing this. Below are links to the applications I developed:
WalkWarrior is a pedometer diary application, which gives you statistics, lets you compare your daily step counts with your friends and allows you to trade walking credits for badges.
MyHotSpots lets you mark your favorite places as cafes, bars, restaurants, theatres, parks to read books in the sun etc. on a map, share these maps with your friends and browse the maps of other people to discover new places. You can also integrate it into your homepage. If you'd like to have a look at my favorite places, you can browse through my HotSpots here.
JAVA-tools for publishing
When finishing a paper, I found that there are many tasks, which should really be automatized. Among them is to sort the bibliography according to the appearance of the citations in the text and to warn you, if a bibitem appears twice or is not referred to (OK, this is not necessary, if you use BibTeX). Furthermore, there are some basic checks about spacings, lower/uppercase writing etc. For this, I wrote a small JAVA-tool, which leaves the source file of a paper untouched, but generates a file called "report.txt", which contains all the warnings about problems and the sorted bibliography.
Creating an index by adding index-tags in a tex-file can be a rather cumbersome task. Therefore I wrote the indicate-tool, a JAVA program that will go through all the tex-files in a certain directory and add index-tags for a predefined list of words. It also provides some more advanced features, which are explained in the enclosed documentation.