January 30, 2008

TeamCity Tryout

I'm doing a gig for a local company (a non-software company) that is trying to build a development team.  My job is two-fold: 1. help them get some software up and started so they have something to build on, 2. train their current staff (consisting of one developer) on good patterns and practices for software development. 

The project is interesting and the people are pleasant, not a bad gig at all.  So far I'm manage to put source control in place (SubVersion via the VisualSVN Server -- they really have the best install around for windows), they are getting on board with TDD, I'm slowly working in User Stories into their process (by osmosis really), and I decided to try to go the extra mile and get a bit of Continuous Integration going.

In the past I would have hit up CruiseControl, struggled for a few days, swore, kicked a couple of dogs, and then get everything working.  This time I thought I might be able to spare the dog by trying TeamCity from JetBrains.  Result, the dog got an extra treat this week. 

I got the entire friggen process up and working in about three hours.  And that was on the first try!   Most of that time was spend fixing dependency issue in the projects (which were my fault, not TeamCity's -- that is why you want one of these things after all). 

The first process I set up was to create a test build.  The test build did these things:

  1. Monitor Subversion to changes in my project, if there are changes, downloaded them and proceed to step 2.  Otherwise: repeat step 1.
  2. Compile all the source.  I chose to build the project from the solution file.  If this were an internal project I might use a Nant script, but considering the client I just stuck with the solution file.
  3. Run all unit tests. Report any failures.
  4. Let me know all is well.

For #4, I had to log onto the TeamCity web site (created by the install), and install the client task tray application (similar to CC.Tray for CruiseControl really).  The only annoyance with any of the tools is that the TeamCity tray application doesn't make any noise, and it isn't very configurable (like CCTray is).

But, for an extra bonus step I set up a second build to recreated the test web site on command.  This second build took 30 minutes.  The TeamCity's configuration web site has an option to copy an existing build.  I made a few modifications and I was good to go.   The two modifications were: change the build directory, and no to monitor subversion for changes.  I want this build to be kicked off manually.

So now, the only part of the process that is not automated is the move to production.  I have to make web.config changes for that (meaning I have to do some custom msbuild work to swap connection strings).  But all in all I am very happy with where things are at considering the amount of time spent.

CruiseControl might be more configurable and have a better tool set, and for a different project on a different team, I might go down that road again.  But for an inexperienced team, or for a project with non-demanding build requirements, TeamCity is an excellent tool.

I am officially a TeamCity convert.

January 15, 2008

On-line backup hosts

OK, we all know we need to back up our data.  And we have all been told to have an off-line location for all of our data as well.  More than likely, the business we work at does just that.

But at home? Not a chance.

Heck, we are lucky to have a backup anywhere.  Maybe your lucky enough to have several computers with large hard drives and you can copy your data between them.  Or, if you are really geeky, you have an external hard drive that you can pass around. That's a good start -- but what about the off site part?  Could be that is just too much trouble. But there are answers.

Several web sites are now offering off-site backup for home users, and for not much money either. Here are some solutions:

Mozy (a user group favorite): 2 gig free, $5 a month for "Unlimited space".  Might not be unlimited, but still a good deal.

IDrive: also offers 2 gig free.  You can map a drive to it (Vista is not supported), and "Unlimited Space -- 150 gig" for $50 a year (slightly cheaper than Mozy).  IDrive also supports versioning.

Carbonite: No free space, but everything else is comparable.

Of course, this blog is mainly read by developers, we want to backup our code, and there are lots of options for that.

If you don't care if someone else sees your code, things are easy and free.  The hardest consideration is do you want to store your code in Subversion, CSV, or something else.

SourceForge: the original.  Uses CVS and Subversion

Google Code: a new kid on the block, but very popular with many open source .Net projects. Uses Subversion.

Tigris: these guys make Subversion -- and offer space.  They also list a number of hosting site.

CodePlex: Microsoft sponsored site for open source projects.  You will find the AJAX Toolkit, and the Patterns and Practices stuff there.  I believe they use Team Systems for source control. Interestingly, you will also see many other open source libraries with listings there, but the code is actually on Google Code (because CodePlex doesn't support Subversion).

Commercial Hosting.  Lots of options here as well, and lots of price ranges.  Just Google "subversion hosting" and you will see a ton of options.  Price is one consideration, but also look for bug tracking while you are there.  Here are a few options:

SvnRepository: Starts at $4 month, includes 500MB and Trac for bug reporting.

CVSDude: Starts at $5 month, includes 100MB.  They also have Trac and Bugzilla, but you have to pay more.

OK, there are a few options, but not a definitive list by any stretch.  If I left something out, please leave a comment and I'll update the post.