10 July 06Moving Blog Location

After battling spambots and upgrades with blogging software hosted on my site, I'm moving to a public blog host. For future posts please visit

06 July 06AustinOnRails With DaveThomas


Dave Thomas spoke to 130 people at the Austin On Rails group tonight. Thirty people in the audience indicated they were doing Ruby On Rails development work which surprised me that it was so high. Dave talked about the metaprogramming possible with Ruby and predicted Domain Specific Languages would continue to gain momentum this year. The session was informal and light hearted. A fun time had by all.

06 July 06Installing Ubuntu 6.06

A friend of mine moved from the Mac to Ubuntu and has not looked back. So, this week I installed Ubuntu 6.06 on an old 600Mz dell. The process was amazingly easy. All was gui based and straight forward. It took probably 10 minutes of my attention to install. Configuring for our proxy server took longer.

You can get the CD from here. If you don't have a bittorrent client already installed consider downloading opera 9 which has bittorrent built in (albeit slow).

05 July 06One Domain to Rule Them All

My hosting provider maps and to the same website by default. Although this is nice for lazy people like me who prefer typing "" instead of "", it can hurt your ranking with search engines and confuse cookies. Below is code to put in your .htaccess file to map all requests from "" to "".

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^fincher\.org$ [NC]
RewriteRule ^(.*)$$1 [R=301,L]

30 June 06Backups with Nant

I've always backed up my home and development directories weekly with a little perl script using zip to gather and compress the files and then copy it over to a server. Now I've switched to using a Nant script which works much better. With the 'exclude' its easy to not zip the .exe and all the other garbage. It creates a file like ' which makes sorting the files much easier. If you know the easier way to calculate the date, please put it in the comments. Here's the backup code:

<project name="backup" basedir="." default="all">
	<target name="init">
                <property name="day" 
               <if test="${string::get-length(day) == 1}"> 
                        <property name="day" value="0${day}" />
                <property name="month" 
               <if test="${string::get-length(month) == 1}"> 
                        <property name="month" value="0${month}" />
                <property name="datename" 
                   <echo message="datename:${datename}" />

        <target name="all" depends="mfincher,SurveyDirector,workfiles" />

	<target name="mfincher" depends="init">
        <property name="zipfilename" value="M:/mfincher-${datename}.zip" />
        <property name="zipbasedir" value="c:/home/mfincher" />
	<echo message="backing up ${zipbasedir} to ${zipfilename}" />
	<zip zipfile="${zipfilename}" failonerror="false" verbose="true">
			<fileset basedir="${zipbasedir}">
				<include name="**/*" />
                                <excludesfile name="backup.excludes" />
				<exclude name="java/Acme/**/*" />
				<exclude name="**/weblog/**/*" />
				<exclude name="**/temp/**/*" />

	<target name="workfiles" depends="init">
        <property name="zipfilename" value="M:/workfiles-${datename}.zip" />
        <property name="zipbasedir" value="c:/workfiles" />
	<echo message="backing up ${zipbasedir} to ${zipfilename}" />
	<zip zipfile="${zipfilename}" failonerror="false" verbose="true">
			<fileset basedir="${zipbasedir}">
				<include name="**/*" />
                                <excludesfile name="backup.excludes" />
				<exclude name="**/vendor/**/*" />
				<exclude name="**/InProgress/**/*" />
	<target name="SurveyDirector" depends="init">
        <property name="zipfilename" value="M:/SurveyDirector-${datename}.zip" />
        <property name="zipbasedir" value="c:/inetpub/wwwroot/SurveyDirector" />
	<echo message="backing up ${zipbasedir} to ${zipfilename}" />
	<zip zipfile="${zipfilename}" failonerror="false" verbose="true">
			<fileset basedir="${zipbasedir}">
				<include name="**/*" />
                                <excludesfile name="backup.excludes" />

The backup.excludes file gets rid of all the unneeded-for-backup files like .svn. It looks like this:


30 June 06My First Ruby TK program

I've been playing around with Ruby like everyone else and wrote my first little utility called 'Commander' (yah, there's a ton of them out there already). The TK part reminded me of when Tcl/TK was cool. You type in command lines you use a lot and it stores them and executes them.


Newbie Source code

28 June 06Adios JEdit, Welcome Back Emacs

When my daughter turned nine, I started looking for a way for her to write her own web pages directly in HTML. I looked at JEdit and was impressed with its ability to remotely edit pages through ftp (well if you get the right beta version with the right ftp plugin). Sarah did well with JEdit and writes her own webpages using the familiar ctl-c, ctl-v from microsoft products from school.

I decided to switch from my ancient emacs editor to a more modern java-based editor to take advantage of the ease of macro writing directly in java instead of lisp. JEdit was much slower than emacs, but I trudged onward. A few weeks ago I decided to program mouse clicks with modifiers (e.g., ctl-left_mouse is delete-word) like in emacs and posted a note on the jedit forum. Nada. Nothing came back.

I have gone back to emacs and it feels wonderful. All my old Alt-Shift-LeftMouse key strokes work and it is very zippy. Sometimes the old is better.

28 June 06JMatter, A Better Framework

Eitan Suez has just open sourced jmatter. Jmatter builds programming infrastructure automatically by using introspection of objects and making intelligent choices about database persistance.

Eitan first told me about the ideas several years ago and it just made sense. Why should we hand-code edit pages for our objects when a framework could introspect an object and create the edit pages? Why should we have to write all this persistance code when the objects could make some assumptions and do that for us as well.

jmatter is a great framework. Check it out.

- - -

21 June 06Scrapping off Barnicles - Windows XP Performance Tips


I noticed this morning that the free Windows Defender spyware remover can help your system performance. Defender can tell you what programs are loading when you computer starts, so you can diable or remove those from your startup sequence. Removing the programs will speedup your boot time. Your computer should be zippier after that since it will have one less running program to monitor. It may not be much but each startup program is like a barnicle slowing down a ship.

The programs detected by Defender are not always shown in the "Start/Programs/Startup" menu.

I removed the QuickTime player from running at startup time. Quicktime still runs when asked, but probably takes a tad longer to load, but its worth it to have a faster ship.

19 June 06US Oil Consumption Declining


Consumption of oil in the US declined from 20.732 million barrels per day (mbpd) in 2004 to 20.655 mbpd in 2005. It seems like 72 dollars a barrel is actually making us think twice about using so much oil. This high price will encourage alternate energy supplies and hopefully reduce our dependence on foreign oil.

15 June 06Visual Studio .NET cannot create or open the application.

I've been playing around with subversion and Perforce lately with a real codebase. Things were going quite well and then not. Visual Studio 2003 gave me this error after playing with different directories of source:

Visual Studio .NET cannot create or open the application. The likeliest problem is that required components are not installed on the local web server. Run Visual Studio .NET setup and add the web development component.

I finally deleted "C:\Documents and Settings\MFincher\VSWebCache" and everybody was happy. What a pleasant way to waste an hour. What would really help us developers would be for microsoft to put a link to google on each error message with the error text embedded in the request. That way we don't have to retype the error message (since it's not cut/pastable). I think the GDP might scrunch up just a bit on that alone.

15 June 06Austin On Rails Meeting

Tuesday night at the austinonrails meeting, Damon Clickscales presented on the migration component of ruby. Migration allows easier upgrading and downgrading of databases. Each database has a table (VERSION?) with an integer describing which version. Using rake, the ant of ruby, any version of the database can be automatically upgraded, or downgraded to any other - very slick. This is also something we could implement in .Net or Java.

Damon started with a quote attributed to Charles Darwin which should warm the hearts of Agile programmers:

"It's not the strongest species that survive, nor the most intelligent, but the ones most responsive to change"

Ken Freeze presented on Asterisk, an open source pbx project, and ruby on rails. The most notable item was how expensive phones are from commercial installers. For a medical office he was quoted $750 per phone for 8 phones with a total cost of $13,000 - I'm in the wrong business.

13 June 06MCI Credit Card Phishing Scam - Update

We got two phone calls on our answering machine asking us to call 1-800-563-0427 and update our expiring credit card number for MCI. Our credit card number had recently expired, but we don't use MCI currently, so I assumed they just kept our account around. I called the number and they asked to verify our phone number by pressing "1" and then enter our new credit card number.

But I knew it was a scam right off. They didn't start with "For English press 1, for Espanol, numeral dos", nor the "Listen closely as our options have changed recently to serve you better.", both the hallmarks of a real telemarketing operation. Yep, these phishers were too cleaver by half - they we just too efficient - no legitimate phone reps are so direct and practical. The real kicker was that they didn't even try to sell me some "got-to-have" identity theft insurance or something on my way out.

Update: OK, my wife actually called a real MCI number and they said it was a valid MCI 800 number and we really had an old mci calling card. I think they were telling the truth because the phone operator had an Indian accent.

12 June 06PVCS Version Manager Leftovers

While watching my virus scanner run (ok, it was a slow day), I noticed a zillion files in something called C:\tmp\tempfs. Our current version management software, PVCS, leaves a temp file in the user's temp directory for each action. On my disk it was taking 3/4 of a gig! My disk is a little lighter and zipper now. We are evaluating subversion and Perforce. Please leave a comment if you have any strong feelings about either.

08 June 06How to keep up with software development trends

My friend eitan has good ideas on how to stay current with trends in software development. One of his suggestions is to meet with other developers. The AgileATX group in Austin is an excellent example. We meet every other Thursday, sort of, at Central Market on 38th at 11:30am. I go just to try and gleam tidbits of knowledge.

Today's discussions went all over the map: 'Why are Microsoft development tools so terribly misguided?' Is Ruby on Rails as good as it is sounding. Does subversion have project level security? Should validation on the browser break MVP for efficiency's sake?

Join us if you can.

BTW, if the web seems a bit zippier today, it's Sir Tim Berners-Lee's birthday.

06 June 06Will Vista Ever Ship?

After our last Java User's Group meeting we were chatting at Bahama Breeze. One of the people doubted that Vista would ever ship. It's just too complicated.

That made me think of a recent interview with Michael Dell where he did not lament the fact that Vista missed the Christmas, er, rather Holiday season, but he just wanted it to work well. Michael does have a point. A friend of mine who used to work at Dell said that if a customer calls support twice on low end models, Dell is losing money. Can you image what will happen if Vista is released and everyone calls Dell Support four or five times? Dell would have to charge a significant premium for Vista. No wonder Dell just wants Vista to work.

Which brings me to my next rambling topic - ratio of software to hardward prices. In the old days software was a tiny part of the cost of a system. now with a bare bones box costing $179 at Fry's, the retail cost of Vista is higher (not that you could run Vista on a box like that). Linux should have more of an opportunity now. Would you rather by a $179 computer using Google OfficeWorks or a $700 box with Microsoft Office.

Most people would still go for the $700 box, but $521 is tempting.

BTW, what ever happened to Cairo?

31 May 06Adventures with CruiseControl.Net

I've been installing CruiseControl.Net 1.01 and ran into two problems:

There were exceptions connecting to the following servers:

Server Name Url Message
local tcp://localhost:21234/CruiseManager.rem No connection could be made because the target machine actively refused it

But the real problem was just that I didn't have ccnet.exe running at the time.

The other issue was

There were exceptions connecting to the following servers:

Server Name Url Message
local tcp://localhost:21234/CruiseManager.rem Ticks must be between DateTime.MinValue.Ticks and DateTime.MaxValue.Ticks. Parameter name: ticks

This was solved by editing ccnet.exe.config and commenting out the latest version of .Net after consulting ThoughtWorks.

	<!-- <supportedRuntime version="v2.0.50727" /> -->
	<supportedRuntime version="v1.1.4322" />
	<supportedRuntime version="v1.0.3705" />

25 May 06Why Peak Oil Doesn't Matter

Peak Oil is all the buzz these days. The basic idea is oil production world wide will soon peak and the civilized world will spin into a morass of economic decay.

But Peak Oil doesn't matter - if it comes slowly. Why? Because other forms of energy will become economically viable to replace some oil. The chief contender for cars is synthetic diesel from coal. The Third Riech and South Africa produced synthetic oil to run their industries. The US and China have centuries of coal reserves. We can produce synthetic diesel for 30 to 40 dollars per equivalent barrel of oil. It will take time and money, but it's possible. With oil at 70 dollars a barrel, other forms of energy will also be viable - wind power, shale oil, tar sands, biomass, and nuclear.

Our energy should come from a mix of sources. Each of the sources slowly growing or shrinking depending on relative cost and demand.

George Bissel financed the first oil well only when whale oil got to be prohibitively expense. Afterwards, whale oil sold for $5 dollars/gallon and his new kerosene sold for 10-25 cents per gallon.

Yes, governments should help finance a portion of the research costs and encourage innovation. But ultimately, Adam Smith's invisible hand will solve Peak Oil.

24 May 06More of the same I've starting visiting for my latest news. It's like digg, but stories seem to make it to the top faster. Also I've noticed a new bookmarking site,, racking up the referrals. It's like, but with graphics.
I think it's great that new web sites are springing up doing basically the same as others, but with a little twist. As web consumers we will benefit from the competition.

19 May 06TiVo - back with a vengence

I was excited to hear that TiVo won their lawsuit recently and received a large settlement. I'm sure their lawyers got rich on the deal as well. I usually don't cheer millions of dollars being awarded for a patent that is fairly obvious, but this is TiVo. Hopefully they can stay in business a while longer. It's puzzling that a product as great, nay immensely great, nay magnu cum laudy great - as TiVo can't turn a profit.
Speaking of TiVo, I've tried their new video podcast downloading which is groundbreaking. Now I can download video podcasts straight to my TiVo, which is already next to my TV, and watch video from the net. Downloading movies on demand should be a breeze now - except for those lawyers.

19 May 06Agile Austin Discovery Session

Last night, about a dozen illuminaries of the Agile software development technoriti met at Koreana to discuss the creation of a group to promote Agile methodologies in Austin. I was surprised to get such a large turnout. Kert Peterson organised the meeting. We will probably be meeting again soon. I will post a note here with details.