Portable XAMPP: Potential Uses

XAMPP is like having a little web host company on your thumb drive. If you did have a WAMP (or LAMP) application you wanted to run, it would make more sense to put it on your web host instead of a thumb drive. But since we can, let’s try to rationalize it.

Localhost is faster.
Localhost is more private.
Localhost is disconnected.
Localhost doesn’t cancel your account when you go-over your download limit.
Localhost is free. If you are the only one using your web host account, maybe you should just blog to your thumb drive.

The above are all handy for using Zena as a streaming media player, which would be slow, not 100% available and expensive in terms of bandwidth if you put it on your hosted account. On the other hand, given that you still have to use Itunes or Windows Media player to play the streaming files, you might as well use then to read the files direct from the thumb drive—the only difference would be the folder browsing.

I couldn’t bring myself to install any personal information management (PIM) type applications. I’d rather have those on a connected server. If data loss didn’t worry you, then you might consider time trackers, address databases, etc. These PIM apps were never very compelling before web 2.0, now they are much more compelling as multi-user social applications.

Speaking of folder browsing, most web-based file browsing system suck, but if one existed that didn’t suck, it would be nice to have that on portable XAMPP. Right now if you want to search your thumb drive, you are stuck with the host OS’s search. IF you use Fast File Search, you can index your thumb drive—indexing it via the FileZilla FTP server is probably superior, since the drive letter will keep changing if you index file system directly.

XAMPP is handy as a development environment. If you are a typical geek, you spend 8 hours in front of your work machine, but outside of the office you might be at your home machine, a laptop or visiting family when you have time to write code. Install Flyspray to maintain a more secure and better performing bug tracker. I still don’t know of a good portable source control server, but you can use RapidSVN as a portable client. You might not want to program in PHP, the asp classic of the curly braces world, you can get portable ruby or Instant Rails. (Instant rails comes with yet another copy of MySQL and Apache, so if you are already using XAMPP you will have a merging project to do.) And if you are really ambitious, you can try to get ASP.NET to work on XAMPP. Try mod_aspdotnet.mo or Grasshopper.

You could lose it.
It isn’t globally available like your web host.

TimeSnapper: A Review

Free Version
The trial version is not bad, I used it for quite a while to remind myself what time I started working.

Paid Version
I now have the paid version ($40/each). Every day I check my productivity score, which really just is the ratio of time spent in work applications – time spent in browser, time spent in front of the computer and start and stop times.

Time spent in front of the computer has a different quality to it and it’s hard to estimate how long you are in various applications. Time spent in front of the computer also has a lot of ‘same-ness’ which makes it hard to remember what you were doing. Time snapper gathers a lot of data from which you can infer what you were up-to.

It is extremely easy to use TimeSnapper data to calculate a billable/not-billable split and total time worked. Doing a spit between time spent on one client vs another is more challenging because you probably use the same set of applications to do work for each client, but with the movie of the day, you can get an hour by hour break down with just 8 clicks.

The customer support is fantastic. The code base is under active development and the developers are responsive to their customers.

There is a side effect to screen recording, namely you can recover lost data. TimeSnapper even has an OCR tool for extracting text from screenshots.

Usage Advice
Put all your time snapper files into an encrypted TrueCrypt disk (or turn on EFS if you have windows XP Pro). Plain text passwords will show on your screen and pose a security risk. Also, having a recording of everything you do will make you look worse than other employees should management get a hold of your recording because there will be proof that you visited a non-work website, while for other employees there will only be a suspicion.

For versions up to, watch out for low disk space errors. If TimeSnapper can’t write to disk, it will silently log the problem, but not report that it is no longer recording.

Wish List
I wish I could get multiple computers to record to the same TimeSnapper directory, for example, if I work on three remote desktop sessions and two virtual machines and two different workstations, they should all record to the same shared encrypted folder. Also, there isn’t a clear strategy for profile switching. If I switch from an administrator to limited user profile on one machine, I should be able to record them as a single stream. This may be possible with the free version, but I haven’t tried it. The pro version seems to collect meta-data in addition to the screenshots, so there might be contention for that file.

Encryption should be an automatic option, even if it is just the built in Windows EFS

Internet usage tracking is not usable, but competing products like pageaddict are also usable. What I mean is that a typical browsing session involves visiting dozens of sites for small periods of time, many of which you will never visit again. Individually assigning all of these to billable/not-billable categories or even assigning them to individual contracts is not practical. Some sort of automated split, say between intranet vs internet would be useful, or some report that shows all sites with more than 10 minutes of total usage, vs all sites with less than 10 minutes usage each lumped together would be more usable.

I wish I could view the day in hour by hour screen shots in a single screen, ie. The 8AM screen shot, 9AM screen shot, 10AM screen shot, etc. Then I could visually figure out what client I was working for at hourly intervals.

I wish it could be installed to my USB drive.

Everyone who has to do a time sheet or wants to be more productive should use TimeSnapper. Since getting it, my productivity has gone up.

Review: Google Gears

Ok, I think I grok it now. Google Gears is a huge cookie that can store files and SQL data. It also acts as a web server should the real internet be down. The API is all JavaScript.

The only caveat I see so far is getting people to install the Google Gears plug in. For MSIE, you get warning after warning about the plug in. You also seem to need to be an administrator to install the plug in. Without a sophisticated user base or a sympathetic IT department, the ActiveX component installation could be a show stopper.

As for integration with ASP.NET, ASP.NET has never been very friendly to JavaScript developers. ASP.NET changes the element ID’s, so you will need to code generate some JavaScript with <%= ClientId %> golden nuggets each time you reference a controls ID.

JavaScript counts as an out of bound call

Software Review: Free MS-SQL DB Documentation Generation

SchemaSpy is a free database documentation generation tool.  It uses Java and JDBC to gather schema information.  The output is a browsable website for each database. It generates ERD’s if you have Graphviz installed.  It also supports a large number of other databases, (important for me, SQL 2005).  I haven’t figure out how to get intergrate security to work, but it does appear to work with just a user in the db_datareader role.

Red Gate SQL Tools

Red Gate SQL Compare: It does a better job than Apex SQLDiff, although I liked the UI of Apex SQLDiff better. In particular, Red Gate is more likely to generate a data preserving change script that will run without modification, however, it will choke on hard things like changing the data type of a column in a primary key.

Red Gate SQL Data Compare: On large databases, it is a bit slow. No matter how you write this code, the computer needs to read in 20GB of data at least twice, and that is a lot of IO and network chatter. Expect to find yourself resorting to alternative solutions, like replication, table copies, etc. The typical use case would be refreshing the data on a test or development server without blowing away the new stored procedures, indexes, etc on the development server.

Red Gate DTS Compare: I got a ‘Library not loaded’ error. Couldn’t test it. (update: it was DSO objects becoming unregisterd, had to reregister with regsrv32)

Red Gate SQL Packager: This is pretty cool, although I’m not sure when I’d use it. The typical use case would be selling an packaged application that depends on a SQL database and you don’t expect an SQL expert to be at the client’s location to set up the database.