Thursday, November 04, 2010

Agile Austin Meeting Nov 2, 2010

http://www.fincher.org/images/2010-11-02-1921-IMG_0911__Small_.jpg
http://www.fincher.org/images/2010-11-02-1848-IMG_0905__Small_.jpg
At this month's Agile Austin meeting 60 people came to hear Jeffrey "Party with" Palermo and Matt Hinze both from talk about "Iteration Zero", setting up a project's source control, build environments and deployment. Below is my jumble of takeaway items:

They recommended the book "Configuration Management" by Aiello
When the audience was asked which version control they used the raised hands indicated percentages like this: Svn 30 git 30 hg 20 Visual Source Safe 5 other 15
Don't centralize libraries for all your projects; each project should have its own hibernate libraries so they can upgrade individually.
You can get hosted version control for about $10 per month
Headspring uses bitbucket by Atlassian for source control, Psake for building, TeamCity by Jetbrains for Continuous Automation (other popular ones are Hudson or CruiseControl.Net), Watin for GUI testing, Rackspace cloud for servers
Matt: "We are digging a pit of success and pushing you into it."
Developers should have their test database on their own box so development can continue without a network
The USPS hosts some sort of Address validation
In batch files include an "& pause" so the windows stay open for inspection

I was surprised how much Headspring uses the cloud for their servers. Jeffrey said they like the pay-by-the-hour usage model of spinning up a server, doing their work on it, and then closing it.
Headspring is an interesting company in that they do training, but they also develop software commercially for profit. I like the fact that their advice is not some academic thinking of a subject, but hard-won knowledge based on what really works in the trenches.

http://www.fincher.org/images/2010-11-02-1901-IMG_0908__Small_.jpg
http://www.fincher.org/images/2010-11-02-1900-IMG_0907__Small_.jpg
Scott Bellware was present to add the Lean perspective to the evening.
pic

Saturday, October 16, 2010

A Signpost to the Future - Genetically Engineered Silkworms Spin Like Spiders


Spiders have very strong silk, but it's difficult to obtain commercially. We can gather silk easily from silkworms, but its not as strong as spider silk.
Very interesting article at discovery.com about injecting dna from a spider into silkworms to create stronger silk more easily.
This is a signpost to the future. More and more of our products will be made this way. Chemical factories could be replaced with vats of bacteria churning out desired chemicals much easier, safer, and more environmentally friendly.
Do you think this is a good thing?

Wednesday, October 13, 2010

Austin .Net User's Group, October 11, 2010


Brandon Satrom presented "Testing the right thing: Behavior-Driven Development in ASP.NET using Gherkin, SpecFlow and WatiN" to a crowd of 70 developers. Brandon started by saying this was his journey of testing for his projects and not necessarily the way to test all projects. (I do appreciate his humility and think he will be a good Microsoft Developer Evangelist).

After his presentation, Brandon graciously allowed Scott Bellware to present a counter point - basically that the "customer readable" scripts were too detailed and customers would not read them anyway and that the overly-detailed scripts just get in the way of the total process. The discussion between Scott, Brandon and the audience was refreshing.
(BTW, TeKSystems opened the session saying that $60/hr was a good contracting rate, business is heating up in Austin, and Silverlight is getting some traction.)

Monday, October 11, 2010

F# has Units of Measure

One of the great things about F# it that it allows you to annotate values with Units of Measure. (Remember the Mars Climate Orbiter burning up because all subcontractors used metric except Lockheed Martin?) F# will do limited testing to make sure your units are consistent. Units of Measure doesn't really understand the concepts of length, volume, force, or currency, but used wisely can be a great help. A little example:

[<Measure>]
type cm
[<Measure>]
type inch
val cmPerInch : float<cm/inch> = 2.54

> let length1 = 1.0<cm>
let length2 = 1.0<inch>;;

val length1 : float<cm> = 1.0
val length2 : float<inch> = 1.0

> let length3 = length1 + length2;;

  let length3 = length1 + length2;;
  ------------------------^^^^^^^

stdin(41,25): error FS0001: The unit of measure 'inch' does not match the unit of measure 'cm'
> let length3 = length1 + length2 * cmPerInch;;

val length3 : float<cm> = 3.54

Wonderful "Paper" Cartoon of Star Wars

I don't often post videos, but this one is just too well made and clever not to share. The video is made with just paper cutouts, something anyone could do. Enjoy.

Wednesday, September 29, 2010

Austin Java User's Group September 28th - Cassandra, MapReduce, and Roo


Forty people heard Jeremy Hanna present integrating Cassandra and MapReduce. My jumble of notes:
Cassandra, a horizontally scalable key-value database, was born at facebook.
It has no "master" node, just a bunch of peer databases.
Very fast for writting, fast for random reads, not good with ad hoc queries.
"Pig" is a scripting language used at yahoo that compiles down to MapReduce.
"Hive" used at Facebook is similar to "Pig", but more SQL like.

Ryan Stewart demoed Spring Roo, a scaffolding system that builds common code blocks like screens for create, edit, delete and data access functions for java; much like scaffolding pioneered by Ruby on Rails. I was very impressed by the intelligence built into Roo. My notes:
Roo accomplishes its magic by creating AspectJ files that are blended into the java objects. (C# has a more straight forward method with partial classes).
Roo is a process that runs in the background that can update its AspectJ files when it detects a change to a java object file.
Roo has a great help and guidence system.
Eclipse can be used to access Roo commands.

A few years ago our Java Users Group had demos of amazing code building tools shown by companies that charged thousands of dollars per seat for their software, now the amazing software is mostly free open source projects.

Friday, September 03, 2010

Playing with AutoHotKey

After reading so much about AutoHotKey I decided to take the plunge and tackle one of my annoying manual tasks - toggling the text and background colors in Firefox from normal to my most coveted, easy on the eyes, "white-on-black" theme.
screen shot
With AutoHotKeys handy recorder I saved this script to c:\home\mfincher\bin\toggleff.ahk:
Send, {ALTDOWN}{ALTUP}to
WinWait, Options, 
IfWinNotActive, Options, , WinActivate, Options, 
WinWaitActive, Options, 
Send, {TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{ENTER}
WinWait, Colors, 
IfWinNotActive, Colors, , WinActivate, Colors, 
WinWaitActive, Colors, 
Send, {TAB}{TAB}{SPACE}{TAB}{TAB}{TAB}{TAB}{SPACE}{TAB}{ENTER}
WinWait, Options, 
IfWinNotActive, Options, , WinActivate, Options, 
WinWaitActive, Options, 
Send, {TAB}{TAB}{ENTER}
Then in "My Documents\AutoHotkey.ahk" startup script created a mapping for "Windows-f" to run my script:
#f::Run c:\home\mfincher\bin\toggleff.ahk
Now if Firefox is the active window, and the Options panel has "Content" preselected I can just enter "Windows-f" and my colors are toggled.
Next, how to auto select Firefox and set the Options tab to be "Content".
Cheers.