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. Celsius is completely free and open source, and an android version to use with tablets exists.
JAVA-tools for publishing
When polishing the draft of a paper, you often perform mechanical checks that are the same every time: is the punctuation in all equations correct, have I avoided common typos like "... the the ...", are the bibliography entries homogeneous, etc. These tasks should really be automated. I've used a ruby script configured by regular expressions for a while, but I always wanted to have an editor hightlighting potentially problematic parts of the LaTeX source. As a small holiday project, I wrote a first such editor in JAVA, and the result is the open source program Polisher.
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.