Saturday, December 29, 2007

A Little Story from History with No Relevance for America Today

I love a good story. Today's story is about the epic struggle between Sparta and Athens, the superpowers of ancient Greece.
The Spartans were the ultimate military machine and it's enemies never got close to their city. In the ancient world it was said that in 600 years the women of Sparta had never seen the camp fires of their enemies. Just a small detachment of the scarlet-cloaked Spartan warriors sent fear into the heart of other cities.
Sparta fought the Athenians for decades in the terrible Peloponnesian war and Sparta eventually won. Flush with victory, Sparta then installed its own form of government upon Athens and Athens' allies. Sparta even replaced the governments of its own allies with "better" forms of government.

But a funny thing happened. The other Greek city-states didn't appreciate the wisdom of Sparta. One by one they rebelled against the Sparta installed governments in bloody civil wars and reverted to their more traditional forms of governance.

Thinking that Sparta represented freedom from Athenian tyranny, Thebes had been a stanch ally of Sparta during the war. But Thebes, disillusioned with Sparta, formed an alliance of the willing, went to war against Sparta and, to the astonishment of all, won.
Sparta was destroyed oddly enough after becoming the only superpower and forcing its own form of government on others, drawing the hatred of all. I think the Greeks called this attitude "hubris".

Well, that's today's story. Sometimes we learn things from history, but today's story has no relevance for modern times, but it's a good story nonetheless.

Thursday, December 20, 2007

Renaming xml attributes in VS2005 using Regular Expressions

In our product at work we have zillions of xml test files to feed nUnit. Refactoring becomes a problem when we want to rename an attribute in all those files.
In this case I wanted to rename the "Survey" element's 'id' to 'registrarId', but not the other elements' 'id' attribute. The element name and the attribute to change must be on the same line for this to work. A tiny sliver of regular expression in the "Find and Replace" dialog did the trick:

Find What: \<Survey {.*} id=
Replace with: \<Survey \1 registrarId=

The "Find What" says find "<Survey " followed by any characters followed by " id=".
The "\1" takes the value of all the characters skipped with the {.*}.

Tuesday, December 11, 2007

CafePress and the Long Tail

Over the years I've gotten requests for a poster of an alternate design of the Periodic Table I created back in the early 90s. I encouraged these people (who possess excellent taste) just download the gif file, take it to Kinkos and get a poster printed. I toyed with the idea of getting a batch of 50 or so printed and selling them from my home. But the capital costs and hassle of handling the money, tubes, and postage always dissuaded me.
Enter CafePress. Now anyone can sell an image on T-Shirts, posters, coffee mugs with minimal hassle. CafePress also will press your band's awesome CDs and print that novel you wrote in college - all on demand. They make it, ship it, and handle the money. All those "Long Tail" obscure designs can now have a home. You just upload your image and they make the items to order. Check out my store at and the which explains the design.
I like this new web2.0 concept of everyone can do what only a small minority could do in the past, but is this a good thing?

Saturday, December 08, 2007

Future Factories of America - It's the small things that count

Under the title, "Nanotube-producing bacteria show manufacturing promise", tells about bacteria producing nanotubes. I think this is just the tip of the iceberg.
In the not too distant future, most of our chemical factories will be replaced with vats of genetically engineered bacteria cranking out our needs.
Today, algae are being breed/engineered to produce oil that will be converted into something like gasoline. In the future the algae will just directly produce gasoline.
Most anything chemical we need could be produced from our tiny friends. But you ask, "What about milk?". Yep. It's not inconceivable that bacteria could be engineered to produce reliable, consistent, yummy white stuff. This would reduce a plethora of greenhouse gases. Creating the feed for cows creates lots of greenhouse gases. The cows themselves emit methane, a powerful greenhouse gas.
The revolution in chemical production is coming. Grab a hot chocolate-chip cookie and glass of cold milk, and prepare to be marveled.

Friday, November 23, 2007

Happy Thankgiving from the Finchers

Thankgiving dinner at the Finchers. The rest of us are busy getting the food ready and Rachel surveys the table. In honor of both our American Indian and Jewish heritage, on the far right we set a plate for Squanto.

Saturday, November 17, 2007

Why Oil will be $30 a barrel in 30 years

Ok, Ok, I know you don't believe me and it's heresy to say such things, but please read on.

In the US we use two-thirds of our 21 million barrels of oil a day for transportation.
If you believe the CIA factbook we import 58 percent of our oil. Let's see, if we do the math, that's 66 percent imported - 58 percent used in transportation, uhm, that gives us 6 percent left over.
The US would be self-sufficient in oil if we replaced the energy in our transportation sector with something else. If the US were self-sufficient in oil production, the price of world crude would collapse.

Any of the following, or more likely combinations of these, will make this happen:
electric car
1. Electric Cars. Electricity is much cheaper than gasoline to power cars. Electricity can be produced domestically in the US from solar, wind, geothermal, biomass, wave, coal, or nuclear. The problem with electric cars is the battery. Batteries today are too expensive, too heavy, and have too short of a life span. That is changing. If any of many competing successors to our current battery technology pan out, the electric car will replace a majority, but not all, of our petroleum-based vehicles. Things like supercapacitors from technology by MIT, GT, RPI, EEStor, or EPod, could easily make the electric car viable. Incremental improvements to our lead or Lithium batteries may work.

shale oil
2. Shale Oil. Colorado has three times the energy of Saudi Arabia, but it's locked up in rock. Shell oil thinks it has a way to produce the oil for $30 a barrel.

3. Coal. Coal can be converted into liquid fuels for about $35 dollars a barrel. Germany, Japan, and South Africa have all done this. These technologies have not been pursued in the past because oil was so cheap. Who wants to invest billions in a refinery to make $35 oil when it may drop to $20?.

Many other technologies like cellulosic ethanol, biodiesel, methane hydrates may also work.

If OPEC will just keep prices high for the next decade, people will invest in these alternate technologies and eventually the price of crude oil will collapse.
Despite what all the "peak oil" supporters claim, these alternate technologies will force the cost of oil to be only $30 a barrel in 30 years.

Great Entrepreneur Idea - Training Crows to Scavenge Coins

I just saw a great video about training crows to collect discarded coins. 215 million dollars worth of change is lost in the US each year. This guy built a vending machine that dispenses peanuts to crows in exchange for them finding coins in the streets. What a great thinking-outside-the-box idea to get crows to do work for peanuts. When can I buy a machine for my neighborhood? Or should I build and start selling them?

Tuesday, November 13, 2007

Migraine Headaches, Computer Monitors and Cell Phones

CRT monitors, LCD monitors and LCD cell phones can cause migraine headaches.
crt monitor
Cathode Ray Tubes (CRT) monitors are the old fashion kind with a depth of 15 to 30 inches. Internally an electron gun shoots a beam of electrons to hit tiny phosphorous dots, or pixels, on the screen. Each dot glows when hit by electrons, but quickly fades so the gun has to "repaint" each pixel. Sixty times a second (60Hz) is usually the lowest "refresh rate". The brains of most people just smooth this flickering out so it looks like a solid image. For those at risk of headaches, their brains work faster and can "see" the flicker. The flicker is interesting and exciting to the brain - too exciting. The result is a cascade of electrical impulses overstimulating the brain.
To solve this problem with CRTs may be easy. You can tell your computer how fast to refresh the screen. In the best of all worlds, just set the refresh rate to 85 or 100Hz and you're done. But not all computers can generate a signal that fast and not all CRT monitors can handle that speed. In windows XP, right click on the background of the screen then select "Properties/Settings/Advanced/Monitor". Set the refresh rate as high as it will go. I made a youtube video to walk you through the steps. If Windows says your monitor is of type "Plug and Play" you may need to install a specific driver for your monitor to get higher refresh rates.
Liquid Crystal Display (LCD) monitors work in a different way. Each pixel on the screen has a tiny red, green, or blue "filter" in front of the pixel. When the pixel's shutter is open the backlight shines through the filter and lights up the pixel. When the shutter is closed, no light gets out and the pixel is dark. The Windows XP/Windows 7 refresh rate means how fast this shutter can open and close. Unlike a CRT, this refresh rate on an LCD does not significantly affect headaches.

The problem may be with the backlight. In most LCDs today the backlight is a Cold Compact Flouresent Light (CCFL). The problem is that these CCFLs can cause headaches. I used to think it was because the frequency was too low, but according to Andrew's comment below, the refresh rate is in the kilohertz range - far too high to be a problem. Perhaps it is overlap between the multiple CCFLs in a monitor? Some LCDs have four CCFLs, some have 6. I will be doing some more research into this and update this post. [I did the measurements and the CCFL does indeed create light at low frequencies in the 60 to 70Hz range. See for details.]

To solve this problem with your LCD screen you have to buy a new one. But predicting which LCD will work for you is almost impossible. I tried diligently with Dell, talking to many people and no one knew the refresh rate and no one knew who would know. For me the 20" Dell 2007FP gives me a headache quickly, but the 19" Dell 1908FP is fine.

Some LCD screens have an LED backlight - I think some of the Mac laptops do. LEDs can have a true constant on light which is the best thing. Sometimes LEDs are cycled on and off to save energy, but are cycled in the KiloHertz range so it is fine. You are probably much better off with an LCD screen with and LED backlight. Let me by commenting below if you have success with one or the other.
Cell Phones with an LCD screen work the same way with a backlight. It took me months to figure out that my shiny, wonderful new T-Mobile MDA caused headaches. Here again you can't change the refresh rate of the backlight on cell phones, you have to eBay the phone and try again. And it's next to impossible to learn the refresh rate of the phone's backlight. You have to go to the phone store and stare at phones to see if they give you a headache. Your best bet is to find a phone with an LED backlight.

In summary, with CRTs you can set the refresh rate and hopefully get it to 85Hz or 100Hz, with LCDs and cell phones you have to look at them for a while and see if a headache starts.

Good Luck.

Wednesday, November 07, 2007

Microsoft's MVC Framework

I'm very excited about Scott Gutherie's new ModelViewController framework. It's very similiar to RubyOnRails, Grails, and Monorails where the three logical concerns of Model, View, and Controller are separated. This separation makes Test Driven Development much easier. In the current ASP.NET world the ModelViewPresenter pattern is used to separate these concerns, but it's a pain.
Cool Features of Microsoft MVP:

  1. xUnit friendly
  2. Built-in mock objects
  3. Very pluggable for Dependency Injection and other major components
  4. Friendly REST-like URL generation
  5. Separate directories for Model, View, Controller just like RoR

Scott's original blog entry is here.
A video from the Alt.Net conference in Silverlight is here and if you can't get Silverlight audio, the wmv file is currently here.
(Yeah, I know you're not suppose to do the "click here" links, but some studies show that using them doubles the clickthru rate).

After the success of Java in the late 1990s, Microsoft did some serious research on the strengths and flaws of Java (one of my fiends was in a Microsoft sponsored focus group about Java). C# was the result - a slight improvement on Java. I'm encouraged that Scott and his team have researched many MVC frameworks and have learned from each.
The MVC framework should be here in a month or so and we can play with it inside VS2008.

Tuesday, October 23, 2007

Watir Tip

I ran into a problem using Watir - it could not find a frame that is really on the page. I got this error:

c:/opt/ruby/lib/ruby/gems/1.8/gems/watir-1.5.2/./watir.rb:2664:in `locate':
Unable to locate a frame with name frmeLHS (Watir::Exception::UnknownFrame Exception)

Oddly enough the problem was with my Internet Explorer security settings. Adding the domain to my "trusted sites" ("Tools/Internet Options.../Security/Trusted sites/Sites.../Add") did the trick.

Tuesday, October 16, 2007

Cheap Memories of Goodwill

staffTo upgrade my daughter's ancient Dell to Ubuntu I wanted add to its 128 Meg memory with some SDRAM PC100 256Meg chips. I bought some at a local geek store for $40, but I've since learned our local Austin Goodwill Computer center at 1015 Norwood Park Blvd (637-7501) sells the same thing for $13.99 and it's for a good cause. Zac and Bridgette can help you find cheap gently used hard disks, memory, cables and other computer paraphernalia instead of sending these parts to the landfill.

Remember what Wally says, "reuse is better than recycling".

Monday, October 15, 2007

Microsoft Immunotherapy

I prefer solaris and linux, but like many working stiffs I do Microsoft to pay the bills. Sometimes I get frustrated by the pitiful quality of their tools, glacier-time scale for new releases, and overweening arrogance. This gives me a bad attitude about the convicted monopolist that crushes innovation at every turn. So I've got a new strategy to improve my feelings toward the company - Microsoft Immunotherapy.
Just like with allergy shots that give you a little bit of the things you are allergic to in a shot, I try to give myself just a wee bit of Microsoft branding in small doses everyday. Here you see my Microsoft-branded mug and notepad. I'll let you know if it improves my disposition to the bloated, standards-averse company.

Friday, October 12, 2007

Batch Scripting ftp in windows xp

I'm a luddite. For the past decade to move files to my hosted computer I've used manual ftp command lines or mounting a directory in network places and dragging the files over to the website. Tonight I broke down, took 10 minutes to research on the web, and now can batch ftp the files with a button. No more dragging directories of files from one pane to another. And its quite easy. My script file, ftp.scr:


user myuserid
cd www
cd news
cd 2007
lcd c:\home\mfincher\images\new
mput *.JPG
lcd originals
cd originals
mput *.JPG

The directions at microsoft's site don't quite work with dreamhost. The secret is to let the ftp session error out on the username/password and then reenter them in the script.
To run the script: ftp -s:ftp.scr

Monday, October 08, 2007

Watir Is Insanely Great

I just started using Watir to do GUI testing of web apps and am blown-away. Watir is so easy to use. I wrote my first script from the examples. It opens google image search and shows pictures of kittens.

require "watir"
ie = #create an object to drive the browser
ie.goto ""
ie.url == "", "Images").flash #flash the item text "Images", "Images").click #click on the link to the images search page
ie.text.include? "The most comprehensive image search on the web" #test to make sure it worked
searchTerm = "kittens" #set a variable to hold our search term
ie.text_field(:name, "q").set(searchTerm) # q is the name of the search field
ie.button(:name, "btnG").click # "btnG" is the name of the google button
if ie.contains_text(searchTerm)
puts "Test Passed. Found the test string: #{searchTerm}. Actual Results match Expected Results."
puts "Test Failed! Could not find: #{searchTerm}"

Arctic Ice Nonsense


Argghhh. Are journalists just getting stupid?
From the Oct 1, 2007 issue in Time magazine on page 30:
"This summer, however, saw something new: for the first time in recorded history, the Northwest Passage was ice-free all the way from the Pacific to the Atlantic."

OK, we are all to believe that global warming is real based on this fact.
Later in the magazine they clinch the environmental danger from the opening of the passage with this:

"The idea of Liberian-registered tankers chugging through the Northwest Passage or oil spills that can't be cleaned up--that's what terrifies me," says Mike Beedell, an Arctic adventurer who sailed a small sailboat through the passage 20 years ago.

Wait a minute. This summer is the first time the passage is open, and they are quoting a guy in the same article who sailed the passage 20 years ago?

I can understand the reporter not researching their own Time magazine archives and missing an article from 1944 describing Henry Asbjorn Larsen's trip through the Northwest passage. (which by the way mentions a previous trip through the passage by Roald Amundsen). But to miss something later on in the current article?

So we are to believe this is the first time in history the passage is open when the magazine itself mentions three previous maritime voyages through the Northwest passage?
Do the editors of Time think the excessive heat from global warming is addling our brains and we won't notice? What do you think?

Saturday, October 06, 2007

Saturday Project: Add dual-boot Ubuntu to Ancient Dell

Since Windows 98 is no longer a safe OS, this Saturday I guided my 11 year old daughter through the Ubuntu dual-boot install using this guide.
The process was amazingly easy. Then I used EasyUbuntu to download all the goodies not in ubuntu - although Flash did not work and I installed that manually.
Youtube has a handy video tutorial on installing a dual-boot system.

Snagit + YouTube = Educational Videos

I downloaded Snagit to record mini-movies of using a computer. Snagit is very easy to use and only cost $30.
I've been thinking of doing our team's next installation guide with a video. Instead of tediously cutting and pasting screenshots into a word doc, why not just take a movie of a sample installation? It would be faster to create and better for the installer who could pause and rewind at their leisure. What do you think?
Anyway, you can see the results here:

Friday, October 05, 2007

Why can't my computer be as smart as my smoke dectector?

In my house the smoke detectors go off by themselves without a hint of smoke. They just start blaring like crazy. Here's the interesting part - they always go off between 2am and 4am in the wee hours of the morning. Somehow my smoke detectors know what time it is without ever having been synch'd with since they have never gone postal at say, 2 in the afternoon when it wouldn't bother anyone.

They always sound off just before a very important early morning event at work so I can't sleep late after having my heart go from 40 beats/minute to 270 in 2 seconds flat.
They must also have a wireless link to my outlook calendar to know when important meetings with stakeholders are scheduled first thing in the morning.
Why can't my computer be as smart as my smoke detectors?

Wednesday, October 03, 2007

Importance of Functional Programming

I like this quote from Joel (you know, the Joel) from his blog on Functional Programming:
Without understanding functional programming, you can't invent MapReduce, the algorithm that makes Google so massively scalable. The terms Map and Reduce come from Lisp and functional programming. MapReduce is, in retrospect, obvious to anyone who remembers from their 6.001-equivalent programming class that purely functional programs have no side effects and are thus trivially parallelizable. The very fact that Google invented MapReduce, and Microsoft didn't, says something about why Microsoft is still playing catch up trying to get basic search features to work, while Google has moved on to the next problem: building Skynet^H^H^H^H^H^H the world's largest massively parallel supercomputer. I don't think Microsoft completely understands just how far behind they are on that wave.

Tuesday, October 02, 2007

US Debt Approaches 10 Trillion Dollars

Our national debt is approaching 10 Trillion dollars. That's 30,000 dollars for every man woman and child in the united states. A nice chart showing the growth of the debt is here.
Half a trillion for the wars in Iraq and Afghanistan certainly have not helped.
Here's a list of our foreign friends who finance 2.2 Trillion of our habit:
Data from

Joost is Open to Everyone

Joost has finally come out of invite-only status.
Joost is peer-to-peer video sharing software with commercials injected in real time brought to us by the guys who started KaZaa and Skype, Friis and Zennström.
I've been watching the betas occasionally for the last few months. The video quality has been slowly getting better, but finding content is still a little awkward.
The biggest hurtle is getting the content from the computer to your TV. If only Joost and TiVo would make a deal. I'd love to be able to stream content from Joost to my TiVos.

Thursday, September 27, 2007

My site made top 10 at digg!

My site made the digg top 10 today briefly.
Lots of hits.
Lots of new hits.
Web host shut down the site.
Oh well.
I had my 15 minutes.

Tuesday, September 18, 2007

Free Photos for Blogs at

I just stumbled upon's website which provides free media to the public (well, mostly free. Check individual file's license).

Monday, September 17, 2007

New Tech Group in Austin -

Eighty people showed for the first meeting of Jim Van Riper - VP of Product Planning and Development at Troux Technologies talked about Agile in his company. Some of the items that struck me:
1. Staff turnover is good - it brings in new blood.
2. Don't focus on the customer, focus on the customer's boss.
3. Ask why the customer needs a new feature to learn more about how they use the product.
4. The Product Owner should not reside in a separate group, like marketing, but the Product Owner should have complete control of the means of production.
AgileAustin looks like it will be a great group.

Wednesday, September 12, 2007

Toyota Production System


My team at work is reading Extreme Programming Explained: Embrace Change, second edition. In chapter 19 Kent talks about Toyota's success with Lean Manufacturing. I was hearten this morning that the first suggestion for a tag on the wikipedia article on Toyota Production System was "agile". The parallels between manufacturing and software development are fascinating, as are the dissimilarities. One of the parallels is eliminating waste. Toyota
In the Toyota system just moving and doing something is not work. An employee needs to be doing something useful to sell. In the same way, in software development we are often guilty of doing lots of cool coding, adding framework features that will never be used. These are just waste.

Monday, September 10, 2007

Lucky Shots and Trivia

A group of astronomers have developed a new technique for getting pictures better than the Hubble from earth bound telescopes calling it Lucky Camera. It defeats the distortion of the atmosphere by taking several snapshots of the sky and uses software to overlay the pictures and take out the variable distortion of the atmosphere. Better Living Through Computing.

Regular picture

"Lucky Picture"

Today's trivia:
Those little boxes with weird numbers and letters you have to decipher on signup pages are called CAPTCHA for "Completely Automated Public Turing test to tell Computers and Humans Apart".

Wednesday, September 05, 2007

Time Disappearing

In the following code that spawns a background task, resharper always whines about "_timer" not being used anywhere. So I removed variable and the background task never fired.

private static Timer _timer;
_timer = new Timer(_registrarCallback, textWriter, 0, registrarUpdateInMillisec);

This morning I learned why it needs that reference. Without the reference to the Timer object it can be garbage collected before it ever fires.

Tuesday, September 04, 2007

Transferring Big Files

I stumbled upon, which lets you, eh, well ... transfer big files. During our last family gathering each of us shot some great photos of the kids. is a good way to ship those big zip files between us since google has a cap of 10Meg.

Friday, August 24, 2007

Dual Monitors

A few months ago we got new dual monitors at work. It's been wonderful.
The coolest thing is to put the desktop over two monitors, like shown above.
How to do that? My dell has a 256MB ATI Radeon X1300PRO. I selected "Start/Programs/Catalyst Control Center/Advanced/Catalyst Control Center Advanced" then the "Displays Manager". I set the Desktop area to be 2560x1024.
I know its annoying to have the middle of the virtual screen interuppted with the monitor edges, but two 19" flat panels are really cheap compared to a 38" screen.

Thursday, August 23, 2007

Netflix for Books

I ran across an interesting website that loans books like netflix loans dvd. For 20 dollars a month you can have three titles out. What do you think? Will this fly?

Saturday, August 18, 2007


Paul Graham, author of On Lisp, wrote an excellent article on having too much stuff.

And unless you're extremely organized, a house full of stuff can be very depressing. A cluttered room saps one's spirits. One reason, obviously, is that there's less room for people in a room full of stuff. But there's more going on than that. I think humans constantly scan their environment to build a mental model of what's around them. And the harder a scene is to parse, the less energy you have left for conscious thoughts. A cluttered room is literally exhausting.

At the Fincher household this article initiated a three day cleaning frenzy which has been refreshing. I've always complained our house doesn't have enough storage space, but see now that we just have too much to store.

Friday, July 06, 2007

Google Web Toolkit

Joseph Sinclair from the Phoenix Google office demo'd GTW (rhymes with 'Whit') at the Austin Java User's Group. He said the Austin Google office was one week old and they would be hiring soon. Sidney, ad recruiter was on hand to answer employment type questions.
GWT compiles real java code into JavaScript that will run crossbrowser applications. GWT obsficates the code and reduces the download by 5 to 10 times. GWT uses the Visitor and Decorator patterns extensively.
GWT is tested by Selenium and fitnesse.
More info at
Sidney handed out a bunch of cool notebooks and pens.

"No Fluff, Just Stuff" Austin 2007

Last weekend I attended the "No Fluff, Just Stuff" conference here in Austin for the second year. Here's a brief jumbled summary of items that struck me hard enough to remember.

  1. Neal Ford gave a talk on Service Oriented Architecture:
    SOA is much easier with an Agile Process
    Read Martin Fowler's book "Patterns of Architecture" especially "ModelViewPresenter".
    For SOA inside the Firewall just use chunks of XML wizing between your apps.
    Use WebServices for outside your firewall.
    Strongly typed interfaces make fragile apps - use xml instead.
    SOAP is Corba with angle brackets.
    SOAP is the answer to the question: How can I make my apps slower?
  2. Stuart Holloway talked about Ajax
    Tips for using the Prototype library:
    $A turns collections into iteratable collections: $A(['asdf','fda','asdf']).each( )
    JavaScript is more dense, but has the same number of bugs, so you need to test more often.
    The move to functional languages, which is really going on, will make us think denser.
    Functions used all the time should have shorter names.
  3. Neal Ford on Debugging the Browser
    He asked how many developers had to deploy on IE? Almost everyone raised their hand. How many use Firefox to develop? Almost everyone raised their hand.
    Recommended using Firebug to debug and profile code.
    Venkman is a good tool as well, especially for debugging XUL since Venkman can start before XUL.
    "No time to stop for gas, we're already late!"
    JsUnit is a port of JUnit for testing JavaScript.
    Neal gave an example using "Perfect Numbers", those whose factors sum to themselves.
    He demonstrated Selenium which was impressive.
    He recommended XPather plugin for Firefox for creating XPath expressions.
  4. Scott Davis on WebServices:
    Dave Winer, originator of the SOAP idea: "SOAP is a failure."
    Google has deprecated its SOAP interface, moving to REST.
    SOAP is the EJB of the XUL world.
    Roy Fielding creating the idea of REST in his 2000 Doctoral dissertation.
    All Yahoo api's are REST.
    Amazon says 10% of its api usage is SOAP, 90% REST.
    Recommended "Restful Web Services" by O'Reilly.
    Gdata is the new api for all of Google's web apis.
    Atom does PUT, POST, GET, and DELETE

Parting thoughts: Every presenter used a mac. JavaScript is making a comeback.

Tuesday, June 26, 2007

"Proxy Authentication Required" for .Net Apps

The A/C in our office is out for the second day so we are all working from home. It's been a good break and I haven't missed the drive.
I've been working through an issue in our test farm with our .Net application. The error being trickier by the addition of our new domain at work and our new machines. I recently got this error:

System.Net.WebException Message:
The request failed with HTTP status 407:
Proxy Authentication Required.

The problem was the .Net 2.0 application was not using the proxy exclusion list in my IE settings - for some reason. The problem was solved by the addition of this little wad of xml in the web.config:

<proxy usesystemdefault="False"/>

This forces .Net to not use a proxy by default, but to use a direct connection foregoing the need for authentication and making everything zippier.

Thursday, June 21, 2007

Sweet new fuel for your car

A synthetic form of diesel called DMF (2,5-dimethylfuran) can now be produced from the sugar in plants . Ethanol is often the end product of energy from biomass, but ethanol as a transportation fuel has many drawbacks. Ethanol takes lots of energy just to create, especially in the distillation process. DMF takes only one-third the energy for distillation. Ethanol cannot be shipped via pipelines because it combines with water; DMF does not have this problem. Ethanol is not very energy dense, DMF packs more power in a gallon.
The sugar to DMF process is still experimental and DMF will need to be certified as safe for human contact.
DMF looks like a promising alternative to create a transportation fuel from biomass.

Monday, June 11, 2007

Amazon Unbox and Tivo

Tonight we watched our first video downloaded from Amazon Unbox straight to our Tivo.
The whole process worked great. Two unfortunate things about the experience though. I had to sit at my home pc to order the movie from the web (although it was very easy). Tivo says they will have "order direct from Tivo" ability in the near future. That will be great.
The other unfortunate thing is the price. It cost about 4 dollars to rent a movie for a day which seems a bit excessive considering the cost of NetFlixs. For the next 24 hours we can watch the film all we want, but after that it disappears.
Amazon Unbox

Friday, June 01, 2007

Venezuela's Banned TV now on YouTube

The Venezualian goverment shut down a major TV station for broadcasting anti-goverment news. The station has gone off the air and has moved to YouTube to get their message out.

Very interesting use of the internet to avoid censorship. YouTube's reach is too small in Venezuala to really be a viable network of information, but is a trend for the future.

Thursday, May 24, 2007

Compressed Air Cars

In 2005 an Austrailian film crew produced this video on compressed air cars. It's worth watching. Compressed air cars have been around for a while. Early work on the concept was done in South Africa.

I'm skeptical about the cars because this was filmed 2 years ago and we haven't heard anything since. Also the claims of being able to drive across a continent on a single tank seems too far out.

Using compressed air as an energy storage device for our cars has numerous advantages:
1. We could stop importing oil from the Middle East. This would keep billions of dollars in our own country and stop funding regimes who hate us.
2. Our city air would be cleaner.
3. The design looks fairly simple and perhaps more reliable than current cars.

Some disadvangates:
1. Well, it's not here yet. Will it every be safe and profitable?
2. The demo cars were very noisy.

What do you think?

Tuesday, May 22, 2007

Are You Losing Interest In Your Bank?

I got a rude awakening to the adult world a few weeks ago. I checked the interest rate on our savings account. 0.3%, zero point three percent! "How can that be? Just yesterday it was 3.5%".
Well, my bank, who shall remain nameless, (OK, their initials refer to a snake) had slowly been lowering the interest rate. See Boiling Frog story. I went to talk to my local branch bank about getting into CDs to raise my interest rate or moving the money to Schwab. The bank guy said, "Hmmm.... let me see. I could put you in an affinity group and raise your rates to 4.7%. Would that be OK?".
I've lost lots of interest money just by not paying attention in the first place and not asking in the second.
Check you interest rates. If you aren't getting 4.5% go to Immigrants Direct or Electric Orange, or ask to join an affinity group at your bank.

IE7 css hack

When IE7 came out last year I upgraded my css menus to account for the change in the box model from 6 to 7. Unfortunately the new css worked in IE7, but broke IE6 pages.
To fix the problem, microsoft has given us the helpful conditional tags. I put this on the base page of my site in the header and now IE6 and IE7 play nice.

<!--[if IE 7]>
<style type="text/css">
ul#nav li a { z-index: 100; width: 149px;}
ul li ul {left: 160px;}
</style> <![endif]-->

Monday, May 07, 2007

Austin CodeCamp 2007

The Austin CodeCamp was held this last Saturday in Austin. Here are a few of the highlights:

Rick Garibay gave a talk on Windows Communications Foundation (WCF) which abstracts SOAP web services, .net remoting, and other communications into a single api with lots of configuration files. Rick mentioned any application can host a web service now. You don't need to configure iis to create a virtual directory and stuff. Now you can easily deploy all your 'bots to clients using .net. Rick mentioned the .Net Web Service Studio from GotDotNet as a great tool.

Anil Desai gave a great presentation on SQL server tuning.

The author of WATIR, Bret Pettichord, gave a good overview of the GUI testing tool. We used the IE Developer Toolbar to query web pages for widgets to control. After executing "gem install watir" we executed the following lab, test.rb, to control ie.

ie = Watir::IE.start ''
ie.text_field(:name, 'q').set 'ADNUG'
ie.button(:name, 'btnI').click

Bret recommended installing "rspec" and "ruby_breakpoint". More details at "

Cody Powell gave an encouraging talk about the new functional programming constructs in c# 3.0 which will support natively maps and reducers.

Scott Bellware also talked about new features in c# 3.0 including being able to attach methods to classes. Using NUnit.Spec he wrote an interesting test line,

//instead of

Friday, May 04, 2007


Afterworld is a new sci-fi series with a twist - it's distributed not by the Sci-Fi channel or Fox, but by Youtube. The bet is that when commercials start rolling this fall on YouTube, Afterworld's producers can recoup their investment by advertising on the web instead of in TV land. Is this the first salvo in the battle of Internet viewing vs. traditional TV.
If only my Tivo got YouTube.

Thursday, April 26, 2007

Carbon Offset Lies?

The Financial Times has an interesting article about how some carbon credit offset certificates are frauds. Here in Austin these credits are used to offset the carbon emissions generated during some outdoor concerts to run the speakers and lights. Now it's shocking to hear that some companies have been selling fraudulent offset coupons. Organization who use to think their activities were carbon neutral now have to rethink them. Al Gore may have to investigate the certificates his company bought to cover his lifestyle.

I think it would be OK if the cheating carbon trading companies had just bought 'lying offset credits' from people in the third world who could have lied at a point in the past, but didn't.

Monday, April 23, 2007

Google Just Does the Right Thing

I wanted to know the US dollar amount for 280 Euros. On a hunch I entered "280 Euros" into Google. It returned. "280 Euros = 381.08 U.S. dollars". It just does the right thing. Quite refreshing really.

[Update March 11, 2008: the same query returned "442.20400 U.S. Dollars"
BTW, I entered "200 degrees kelvin in Fahrenheit" and our friends at Google returned a very helpful, "200 kelvin = -99.67 degrees Fahrenheit". 200 kelvin in the news at]

A Google Computer Just Makes Sense.

With Google offering free word processing and spreadsheets online why do some people need a full fledged PC? Well if they need viruses and malware I could see it. If they want to constantly be slowed down by their active virus scanners or if they want to always be downloading the latest OS patches.

I ran across the web site for and found it interesting.

For many users this is all they will need. This would be great for older people who just want to email their grandkids and watch Youtube.

With tax prep, photo editing and other general purpose utilities now available via our browsers, a desktop PC is less relevant than ever. Plus you get automatic backup of data and the ability to acess and update your data from anywhere in the world.

My daughter is using She can work on her documents at school or at home. Sharing documents with friends is easy.

Security is a big concern. Do you trust Google with all your documents? Well, do you trust your PC with all your documents? With all the keylogger and Trojan programs running around, many people would be more secure at Google.

I can see Google teaming up with a few hardware vendors to produce a Google-ready diskless PC designed only to connect to the Internet.

Stock Tip: Buy What You Love. WRONG.

I heard it again over the weekend. A talking head on a business channel said you can make a fortune in the stock market by buying stock in companies whose products you love. "If you love a sweater, chances are your friends will too - buy the stock."
This advice can't be more wrong. It's wrong for two obvious reasons (but the advice like an unrelenting wronged mummy won't die).

Reason One: Just because a company has a great product, doesn't mean the company will make money. The company can have bad management, more nimble competition, or a patent lawsuit around the corner. For example, take the best product of the last millennium - Tivo. It's arguably the best invention since the flush toilet. All my fellow Tivo-people love their Tivos. We can't imagine going back to watching plain TV. With two Tivos, I happily send them $17 a month for a service that probably cost them $1. And yet Tivo stock is pretty much worthless. It's gone down from $70 to $6. I'm puzzled on why this is so. It's like a crack cocaine dealer coming back to his supplier saying, "Man, I just can't make any money moving this stuff."

Reason Two: The stock price can already be over-inflated by the time you buy. If everybody loved that type of sweater and bought stock the P/E ratio could be in the hundreds and no matter how much you love the sweater that ratio is unsustainable.

Buy stocks the old fasion way, based on the numbers and research, or better yet, buy index funds, but don't buy what you love.

PS: If you don't own a Tivo, pick one up on your way home today.

Thursday, March 29, 2007

C# 3.0 inches towards Ruby

On Scott Guthrie's blog he talks about new features in C# 3.0. My first thought on seeing some of these is, "Gee, it's looking kinda Ruby-ish."
The new automatic properties get rid of
public string LastName {
get {
return _lastName;
set {
_lastName = value;
and replace with the much more succinct,
public string LastName  { get; set; }

Which is a backing into the Ruby attr_accessor function.

attr_accessor :last_name

The main difference is that in Ruby attr_accessor isn't part of the core language, it's just a helper function that anyone could add.
Also the new object initializers,

Person person = new Person { FirstName="Scott", LastName="Guthrie", Age=32 };

Look so similiar to the Ruby style of passing in a hash of values.

my_func (FirstName=>"Scott", LastName=>"Guthrie", Age=>32)

These are great new changes in C# as we travel towards the Ruby Way.

Microsoft Office Communicator

Being the big fan of Microsoft that I am (ahem), I've been pleasantly surprised with Office Communicator. Here at Innotech we've used Communicator instead of WebEx for over the wire demos and it works great, well mostly great. Sometimes the images lag, but overall it's been great. Watch out WebEx.

Death of the Busy Signal

While dailing the phone my daughter told me, "Daddy, there's this wierd noise on the phone."
I listened to her phone call and the wierd noise was a busy signal. It dawned on me that my little girl had been using the phone for years and never heard a busy signal. With rollover voicemail on all our relatives phones, we never hear busy signals anymore. A more loquicious blogger would make an analogy to how modern humans are now constantly in touch and never have down time and how it's destroying a sense of selfness and privacy, but that's not me. If you'd like to discuss this, call me and leave a message.

Friday, March 16, 2007

A Small Bridge Building Parable

A small county in rural Washington needed a bridge to span a creek for a new road. Joe, the county road supervisor, contacted the Redmond Bridge Company for a bid. The RBC rep, Bill, came on site and said, "Shoot, we can build a bridge here no problemo. It's all prefab so your road crew won't have to learn a thing except how to snap pieces together."
Joe contacted the Penguin Bridge Company for a second bid. Their rep came on site and said, "Yep. We can help you build a bridge here. We can teach your employees how to hot rivet and build it with our steel trusses."
Joe thought about it. He didn't want his employees to learn hot riveting. Joe thought snapping sounded easier. Joe just wanted a bridge, so he gave the contract to Redmond Bridge even though they were more expensive.
Soon massive steel trusses arrived in trucks. Joe's team started snapping them together. True to Redmond's word, that's all they needed to learn. Joe was so pleased he had selected Redmond. The bridge grew everyday. All were happy until Joe ran out of trusses with 20 feet of creek to still span. He called Redmond Bridge, "Hey Joe here. We've got the first 80 feet of the bridge done and it was easy, we just need the rest of the supplies to reach that last 20 feet. Can you have the stuff here in the morning?"
"Well," the Redmond rep said, " unfortunately we only make 80 foot bridges. I thought you knew that?"
Joe replied, "Well how do I finish the last 20 feet?".
The Redmond rep said, "Do you know how to hot rivet?"

The above story from some local newspaper in the Northwest (whose url escapes me at the moment) summerizes so much of my experience with Microsoft tools. They get you 80 percent of the way there and stop. At the end of the day, I have to learn all the stuff Microsoft was sheltering me from.
Yesterday I was setting up a batch build on our nightly build machine. The new MSBuild tool is great. It saved a ton of time until it got to my deployment projects, at which time it said,
"*.vdproj is not supported by MSBuild and cannot be built.". Hmmm. It will build all the projects except the one I need to actually deploy the code.
Microsoft, the 80 percent solution.

Tuesday, March 13, 2007

I finally GET POST

The little popup box in browsers saying "The page you are trying to view contains POSTDATA..." has always annoyed me. I just want to refresh the page, not be interrupted by a confirm dialog box. I even checked for firefox extensions to skip the dialog and just do the repost like the more friendly GETs. Now I realize how wrong I was. The dialog box annoyed me because it's my friend, and friends tell you things you don't want to hear to help you.
I used to think POSTs were used when the data being sent back to the server was bigger than could fit on a URL string, or you didn't want to spend the time url encoding a bunch of data. I now see how naive that was.
I came to this enlightenment late in my career through a little web site I'm building to learn Rails called
Kids submit their jokes and vote on other jokes by clicking an href link on the smiley/frowny faces. I was overjoyed in the first week with the terrific number of voters. Hundreds of votes were being cast. I ignored the fact that the average for all the jokes was something like 2.984 or 3.023. Then the sad truth dawned on me. Search engines were scanning the page and following each link and voting five times for each joke. This made the vote count high and the results close to the average of 3.0.
I needed a way to stop search engines from voting - that way is POST.
POST is not used for large data streams, but operations that are not idempotent. Idempotent basically means operations that can be repeated without altering the underlying data. If you refresh the front page of, no data is changed on the back end - it's idempotent. If you are buying a book and refresh, you can buy two books - that is not idempotent.
Simple hrefs and GETs are cool. GETs are fun. Links with GET allow the user to bookmark pages, search engines to index the page, and users to refresh easily. Only use POSTs when your data is not idempotent. Search engines know not to follow POSTs.
BTW, make the world a better place and share your favorite kid joke at

Friday, March 09, 2007

Free Audio Book Recordings

I've just started listening to "The Time Machine" at and am very impressed with the quality. Librivox organises readers to produce free audio versions of classic literature. You can pop them on your ipod (after creating a playlist for all the chapters in the correct order) and listen to great literature at your leisure.

Saturday, March 03, 2007

Why do gas pump prices fall so slowly when crude falls?

gas prices
I often hear people complain that gas station owners jack the price of gasoline immediately when the price of crude rises, but slowly lower the price when crude falls.
Why is that? Why can they get away with lowering prices so slowly. I'll tell you why.
American consumers are lazy.
Look at the photo above. The closer Shell station is selling gas for $2.30 and the adjacent Chevron is at $2.31. Oddly, the Chevon had three cars filling up and the cheaper Shell station had only two. I've seen these two stations which share a parking lot vary by three cents. How can the price vary so much between two adjacent stations, when Adam Smith's invisible hand tells us that people would flock to the cheaper price? It's because the gas station owners know that the American car driving public are slothful creatures of habit. We will fill up at the same station regardless of the price - we are just too lazy to look out our windows, compare the prices and do a subtraction.
If you want gas stations to lower their prices faster, ruthlessly seek out the best deal in town. This will force the owners to be competitive. As it it now, the owners think we are just herd animals - and they are right.

(BTW, all the gasoline at these stations come from the same pipeline. Shell puts in 300,000 gallons in Houston and draws out 300,000 in New York, but it's not the same 300,000, it's just the same amount. So Shell could be pulling out gasoline put in the pipeline by Chervon. OK, the companies add their own additives just before taking the gas to the station, but big deal, it's just gasoline.)

Monday, February 26, 2007

Demographics, the Elephant at the Far End of the Western World's Room

I'd recommend reading A Global Intelligence Briefing for CEOs. The mosting interesting part is that the birth rates in Europe and Japan are so low the countries risk imploding in the next few generations.
From the article:

The birth rate in Russia is so low that by 2050 their population will be smaller than that of Yemen. Russia has one-sixth of the earth’s land surface and much of its oil. You can’t control that much area with such a small population.

The native European population will be overtaken by the guest workers whose birthrate is so much higher.

Saturday, February 24, 2007

Air Powered Cars

Interesting article on air powered cars. The concept has been around for quite a few years, but no real products yet.

Monday, February 19, 2007

NetBeans 5.5 and Java 6


To maintain my web site, I use a series of java programs to automatically prep pictures and create html. I downloaded NetBeans 5.5 with Java 6 to add some long needed features to the programs. NetBeans seems much better than the last time I took it for a spin. It's fairly fast with many new features. It's worth the download.

Please welcome...Rachel Ann Fincher

Pam and I just had our second daughter, Rachel Ann.


Monday, February 12, 2007

PodCast with David Platt

I highly recommend this podcast with author David Platt on his book,
. The interview is an easy listen. David doesn't give hardcore technical guidelines, but makes a compelling case that the user experience is critical to successful software.

A Quiet User is Not Necessarily a Happy User

Note to fellow software developers:
Just because the users of your software are not complaining to you, doesn't mean they are happy. You need to periodically communicate with your customers to see how they are doing with your software. Discover what features they need and learn what confuses them about your software. A quiet user is not necessarily a happy user.

Wave of the Future

D-Wave is announcing a demonstration of their 16-qubit quantum computer tomorrow. If true, this will be the technology story of the decade. While the mainstream media and blogsphere have been fixated on Vista, D-Wave could be the paradigm shift of computing.
While finding the primes in a 256-bit number might take our fastest computers millennium, quantum computers can run through all the possibilities in a clock cycle. Digital encryption as we know it now would be dead - if D-Wave's announcement is true. Whole new vistas of science will open as complex protein folding algorithms which previously took months to calculate are discovered in seconds. Crash simulations at auto companies can be performed over hundreds of body designs instead of just a few promising ones. It will be a brave new world of computing - if true.

Another story at Techworld .

Friday, February 09, 2007

Why Can't Microsoft Hire Adults to do Programming?

Recently, I noticed my Windows XP machine running out of memory. Casual inspection in the Task Manager revealed the "svchost" process consuming 360 megabytes of memory! TaskManager
The svchost process just manages other processes. One of those processes is "Automatic Updates", the process that periodically polls Microsoft to see if bug fixes and security updates are ready.
According to Microsoft, the "Automatic Update" service has a memory leak.
At my coworker's Scott's suggestion, I went into Services and turned off "Automatic Updates". Now svchost does not suck the marrow from my machine.
But why can't Microsoft write decent code? Detecting memory leaks during testing is hardly rocket science. It's even rumored that there are utilities that can actually detect a memory leak and where the memory was allocated. So how can the coders of this utility get it pushed out to millions of users without a cursory check for bugs? Don't they have a QA department? Why doesn't Microsoft code with this new thingy called ".Net" where memory is automatically managed?
The only reason I can think of is that they are outsourcing code development and QA. Outsourcing to some Junior Highs in Redmond. Why can't they hire adults?

Wednesday, February 07, 2007

Tivo Unboxed and Joost 0.74

A very exciting post from Tivo came today. Tivo and Amazon are combining forces to delivery "unbox" video straight from the net to a Tivo. The most interesting feature is a record of the purchase is stored on Amazon servers. You can purchase a movie today and re-download in a few years.
Also in the video news Joost has announced version 0.74. Joost is an amazing new peer-to-peer network to share licensed content from tv shows and other video. Joost networks collect bit-torrent type packets and inject commercials targeted to specific users, say all the women aged 25-50 in zip code 90210. Since the ads are targeted, advertizers will pay more for them, and in theory, fewer ads would be shown.
Soon we may be able to watch any TV show any time we want with fewer commercials.
I wouldn't bet against Joost - the founders of Joost gave us Kaaza and this little thing called Skype.

Thursday, February 01, 2007

Cropper - A Free Utility for Capturing Screenshots

I just downloaded and tested Brian Scott's Cropper at Jeffery Palermo's recommendation. It's a wonderful tool for cropping a bit of your screen to include in documents.

Tuesday, January 30, 2007

Create a virtual image from a physical machine

I was excited to read vmware's article about their software that converts physical machines to virtual ones - for free.
Here at innotech we are using virtuals for test environments and are soon to deploy them for production. The whole concept offers so much promise.
The march of virtualization is going to be pushing against the phalanxes of Microsoft Previously, in a license scheme that even our Microsoft rep said was brain-damaged, Microsoft required a license for each OS in a virtual whether it was being used actively or not. Which meant you couldn't store different test configurations of your product without paying a fee for each virtual in the 'freezer'. They changed the license so you only need licenses for the virtuals you are currently running which seems more reasonable.
If a company has a Microsoft OS running in five virtuals on a machine, they need to buy five copies of the operating system. With Linux or Solaris they don't need to buy any. The pressure will be to move away from the 'pay-per-virtual' operating systems to free ones.

Friday, January 26, 2007

Number Sections in Microsoft Word

Shuana Kelly has the best overview of numbering sections in Microsoft Word. After struggling for an hour trying to get all my numbering to work, I visited Shuana's site. The writing is simple and clear. After struggling with Word's numbering system for years, Shuana taught me in 20 minutes how it really works.

Tuesday, January 23, 2007

Austin On Rails Meeting

Tonight Hal Fulton of 'The Ruby Way' fame gave an overview of good programming techniques in Ruby. I missed Sam Griffith's opening talk on Domain Specific Languages, but he should post slides soon.
Afterwards we went next door for drinks and snacks. I loved the conversation - it was all about the latest trends on the web, what would be good businesses to start, why other businesses failed.

US Petroleum Use Declining

US petroleum consumption actually dropped in 2006 from 20.8 million barrels a day to 20.6. Even with a growing economy and population the petroleum usage fell.

Saturday, January 06, 2007

DVD Format Wars: Blu-ray or HD DVD?


I just read another article on the format wars for the next generation disk. But the "war" will drag out for a few years and by that time the optical disk will be obsolete.
Consumers will just download movies to their terabyte harddrives. It's really much more convenient than going to the store to buy. It's even more convenient than owning a physical dvd ("Where's the dvd for 'The Incredibles'?" would no longer be whined).
The only problem with DDtHD (Download Direct to Hard Drives) is the drive failure, which will all know is not a matter of if, but of when. But the ideal download store of the future would always hold a record of your purchase and you will be able to download the movie as often as you would like.
I'm going to wait on buying a Blu-ray player.

Tuesday, January 02, 2007

Is IT Print Media Doomed?

I used to read several free computer magazines every week. Now I find that when I puruse the tree-based media that the news is old hat - it's over three days old! Ancient news.
True the longer articles are not so time based, but still alot of the content is often stale. I find myself reading them less and less. I think the print version will gradually lose critical mass and fade to the online version.
What do you think? Are the IT magazines doomed?

Monday, January 01, 2007

Using ImageMagick instead of PhotoShop for resizing

I've gotten tired of waiting for PhotoShop Elements to load (what in the world are they doing with all that time? On my 2.3GHz box it takes 50 seconds to load). I downloaded the free ImageMagick (download it here) instead to do batch resizing on the command line. I can now convert all my images faster than it takes PhotoShop to appear. The command to resize a set of images to be 500 pixels wide and retain proportion and whose names starts with '2006-12-25-DSCN' is:

mogrify -resize 500 2006-12-25-DSCN*.JPG