Tuesday, December 22, 2009

Embedding date and time into a file in windows - "But it worked last night"

I'm patching a tiny project at work with duct tape until we can get an enterprise solution. A small batch job runs on the windows scheduler doing something like this:

MyCommand.exe  --output=Saturday1201amUS_%date:~10,4%-%date:~4,2%-%date:~7,2%-%time:~0,2%-%time:~3,2%-%time:~6,5%.txt


I ran it yesterday afternoon and it worked great. It created a file named
Saturday1201amUS_2009-12-21-15-46-00.21.log. This morning I did another test with my client and it failed miserably after creating a file named 'Saturday1201amUS_2009-12-22-'. A little investigation turned up that windows does not prepend a zero in front of the hours before noon so my executable file was getting a space in front of 9 oclock:

MyCommand.exe  --output=Saturday1201amUS_Saturday1201amUS_2009-12-22- 9-47-20.31.log

It worked great after putting quotes around the file name.
MyCommand.exe  --output="Saturday1201amUS_%date:~10,4%-%date:~4,2%-%date:~7,2%-%time:~0,2%-%time:~3,2%-%time:~6,5%.txt"

Monday, December 21, 2009

One Stock Trading Company Claims Compute Power of Lawrence Livermore

Interesting article from Technology Review about the computing power of the high-speed stock traders:
The explosion in high-speed automated trading has engendered a massive buildup in technology; Renaissance Technologies, a hedge fund based in East Setauket, NY, boasts that its computing power is equal to that of the Lawrence Livermore National Laboratory.

Wednesday, December 02, 2009

NHibernate Intellisense for Visual Studio 2008

From the NHibernate distribution, I renamed nhibernate-mapping.xsd to nhibernate-mapping-2.2.xsd and nhibernate-configuration.xsd to nhibernate-configuration-2.2.xsd. Then I copied those two files to C:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas and immediately intellisense started working for me in Visual Studio 2008.

Tuesday, November 24, 2009

Bitter Refactoring


Kimberley Bitter
Originally uploaded by kamoda
After reading Martin Fowler's book on Refactoring I've been a big fan of the practice. We all know that adding in tests to insure the refactoring doesn't change the results is essential.
But this last week the real world crept into our world of programming paradigms. We refactored a complicated section of code to make it simpler, more readable, and faster - a big win; except that after the code was fielding, one of our customers reported a problem.
Their use of our product actually depended on a bug in the old version. Refactoring the code fixed the bug and caused our customers grief.
I'm still a big fan of refactoring and continue to do it, but now I'm a little wiser that refactoring carries more risk than I'd thought before.

Friday, November 13, 2009

Simian - a code duplication finder


Today I downloaded simian, a code duplication detector. It's very easy to download and run. Simian detected a few chunks of duplicated code, which need to be refactored into a single method, or pushed up into a parent object. Simian is worth a quick download to test your code. Eval copy is available for free.

C:\opt\simian\bin\simian-2.2.24.exe -reportDuplicateText -threshold=5 *.cs > simian.txt

Wednesday, November 04, 2009

Agile Austin - Domain Driven Design and the Naked Objects Pattern


Last night at Agile Austin Eitan Suez explored the relationship of Domain Driven Design and the Naked Objects Architectural pattern to a packed house of 60 people.
The thing that struck me the most was how using the Naked Objects concept of having the objects themselves create the GUI forces a Ubiquitous Language on the developer since the user will see the object and method names on the screen.
Eitan gave a great example by having the jMatter framework autogenerates a permissions table with objects and their actions on the vertical axis and the types of users on the horizontal axis by reflecting the code and dynamically discovering the objects, their methods, and the types of users.

Thursday, October 29, 2009

When Will We Have Enough Computing Power?


DNA rendering
Originally uploaded by ynse
At the last Java User's Group meeting here in Austin, Gary Frost mentioned that if he took his $300 Gateway computer with its $300 graphics card back in time 6 years, his computer would be in the top ten fastest super computers in the world. Which got me thinking, "How fast do computers need to get?".
Well obviously a lot faster. I'll be happy when computers can do either of the following (I'm not picky):
1. Store every person's DNA and their medical history. That's 3 billion base pairs per person times almost 7 billion people gives 2.1 × 10^19 base pairs or about a Zettabyte. Then compare and contrast every person's DNA with their illnesses with everyone else and produce a report showing which diseases are related to which DNA differences. For example, asthma could be related to any of 307 combinations of 24 genes being different. Then we should be able to design drugs to compensate for the "defective" genes, or perhaps tweak those genes with a small bit of DNA from a friendly virus.
Storing a Zettabyte seems reasonably straightforward, diff'ing all the genes will take enormous computing power- but that's the power we need.
2. Predict the future health issues of a fertilized human egg based on its DNA. We would need the power to replicate division of all the cells grow the egg into an adult and simulate the running of the biology in each cell and predict the health issues.