When I used to have a laptop, Excel was my friend.
Also, I wrote a neat little script that took a command line argument and gave me a die result. Like "roll.vbs 20" would pop up a messagebox with a d20 random result. I then put a link in my Start Menu to each of the normal dice and then set hot keys to them:
4 - Ctrl-Alt-4
6 - Ctrl-Alt-6
8 - Ctrl-Alt-8
10 - Ctrl-Alt-1
12 - Ctrl-Alt-2
20 - Ctrl-Alt-0
Once I got used to it (confusing the 2 for 20 and the 0 for 10 was the hardest thing to overcome), I could just hit those keys whenever I needed a die result. Didn't matter what app I was running at the time. I have tried to figure out how to get something to run in the taskbar (like Media Player does), but to no avail.
Other than that, I used notepad for everything. Notes, Initiative order, current HP, etc. After I was done with the session, I'd just upload the stuff to my server for use the following week.
In the past, I also created a nice Spell program. By getting all the spells in XML format (which took quite a bit of data scrubbing on the SRD HTML files), I could look for, say, spells of level 1-3 that require no material components and have no saves or fortitude saves. Made creating spell lists and figuring out a good spell to use in any given situation really easy. Of course, it had an integrated dice roller. So if the spell said 1d6 / level I could click on that and based on what level I set for the caster, it would give me a result. It did auto DCs, etc. just by clicking on what caster you were using. This program has since been lost, and I do not have the heart to recreate it.
I'm currently designing/writing (but probably never finishing, that's just the way of things) a whole suite of tools to be integrated into one app so that I never need to open more than one app at a time again. If completed, it will let you take notes, do the whole spell things, support grid-stuff, work as a simple spreadsheet (useful math functions only), store maps, fully index the core books, have a context sensitive roller (anytime it recognized a die roll, it would allow you to click on it for a result), and have a table generator ("col1=row; col2=prevrow + (col1-1) * 1000; rows=1 to 100" for instance would generate the XP table for levels 1 through 100). I can't tell you how often I would like to generate a table on the fly for something and just wish there was a tool to easily do so. It would also fully support XML so that you could add new data to it as you see fit.