Saturday, November 17, 2012

Pictures from Keep Austin Agile 2012 Conference

Agile Austin hosted a conference on November 16th in Austin on applying "agile" (with a little "a") to the workplace.  Here's a few pictures:
 Before the sessions started, I ran into an old friend of mine, Kelly, who mentioned that Agile has reached a "tipping point" with the big companies.  They used to just ignore Agile, but now after hearing so many success stories, the big boys are telling their IT departments to do this Agile thing - now.

The food was amazing - great breakfast food and lunch.

Matt Roberts, president of Agile Austin started the day.
A sellout crowd of 400 people attended.
 David Hussman, aka, "The Dude" gave the keynote.  My take of his message:  Agile is like musicianship - it takes lots of practice, jamming, listening, learning, repeating.
(He also said humans have played 200,000 years of Angry Birds).
He reiterated the cost of context switching - if you're shoveling three piles of dirt around context switching is not hard; if you're juggling 3 different projects, it's very costly.
"Slack" by DeMarco was a recommended book. 

Chris Weldon spoke on How to Enable Your Team to Continuously Deliver Softer.
What make Agile work?
Teams must be highly motivated and stay together.  If the teams are constantly being reformed around projects, they don't have time to develop trust and learn their velocity.
Business partners must be fully engaged.
Attention to getting things done, before starting something new.
Technical excellence and quality.
What makes Agile fail?
local optimization.
 Mike Cottmeyer spoke on Patters for Agile Adoption

 Walter Bodwell talked about Deploying Often.  I liked his talk since he was speaking from his own experience of deploying software everyday.  One of the advantages of Continuous Delivery is that if you have problems one day, it's probably last night's software changes - you don't have to sort through six months of changes.

 George Miranda spoke about IT Infrastructure Automation
Automation + Culture = Agility.
The natural tension between IT and Dev:
Dev's job is to add new features.  IT's job is the keep the machines fast and stable.
Really both department's job is to enable the business.

My take on conferences like this: 85% of my time in sessions will be wasted.  15% will be well spent.  Some of the most interesting things happen in the hallway.  The boring sessions are even good because my mind wanders to my current work project and what needs to be done in the broader scope.

Tuesday, November 13, 2012

The Danger of the Digital Pierian Springs

A little learning is a dangerous thing;
   drink deep, or taste not the Pierian spring:
there shallow draughts intoxicate the brain,
   and drinking largely sobers us again.
Alexander Pope (1688 - 1744) An Essay on Criticism, 1709

[The ancient Greeks believed the Pierian Springs, sacred to the nine Muses, imparted knowledge of the literature, the arts, and sciences to all who drank.]

As software developers we have to always be on guard against the latest crazes promising multiple  times the efficiency of current "stone age" software development.  For a while it was ObjectOriented Programming/Design, then GUI builders, then Patterns, then Functional Programming, then Service Oriented Architecture, then Software As A Service, then the Cloud, then REST and MVC.  (Ruby, Interpreted languages, and Kanban are in there somewhere).
I have seen quite a few systems (and built some of my own) that were slavishly and unnaturally following a paradigm far beyond what would make sense.  Do not be afraid of the new technology, some are really useful, but remember to drink deeply and see the flaws and limits of fresh intoxicating technology.

From Linus Torvalds:
Any time you have "one overriding idea", and push your idea as a superior ideology, you're going to be wrong. Microkernels had one such ideology, there have been others. It's all BS. The fact is, reality is complicated, and not amenable to the "one large idea" model of problem solving. The only way that problems get solved in real life is with a lot of hard work on getting the details right. Not by some over-arching ideology that somehow magically makes things work.
Linus quoted on

Disappearing Menus in Firefox on Windows 7

A few weeks ago the menus in Firefox 16.0.2 on Windows 7 started to disappear.  Like a ghost the menus would fade in and out all the while being clickable.  Very annoying.  The solution was simple - turn off hardware acceleration. Select "Tools/Options/Advanced/Browsing" and toggle off "Use hardware acceleration when available".
Life is much better now that Casper is gone.

Monday, November 12, 2012

Apple "Jumping the Shark" with the iPhone5

I along with millions of others were disappointed with the iPhone5.   Last year in the US, 93% of iPhone users said they would buy another iPhone, this year it was down to 88%.
Lightening to 30-pin adapter
To me it came down to two factors:
1.  The new maps were not ready, but Apple assumed they could foist bad software on people because they are Apple and their fans would adore them for it ("Thank you sir, may I have another?").
2.  The non-standard connector.  This one really gets me.  The whole world is moving to the micro-USB connector for cell phones for data transfer and charging.  In Europe it's the law to charge with micro-USB.  With the same cord that charges my wireless Logitech mouse I could connect to my phone - what a great idea!  No more tangled masses of incompatible chargers and cords.  But no, Apple has to Think Different(tm).

If I upgrade from my iPhone4S to an iPhone5, I'd have to get all new connectors for work and home and car, while still having the older 30pin connectors for all my other older i-devices.
It would be one thing if the new connector offered something worthwhile, but it doesn't.  It's slightly smaller and it can plug-in upside down, but that's it - not nearly enough benefit to me for the hassle.

The shine is off Apple, with it's brazen move to maximize revenue while inconveniencing their customers.
I'll be looking at the Samsung Galaxy Note II for my next phone.

Friday, November 09, 2012

vs2012 "no symbols have been loaded for this document"

I upgraded an older project from vs2010 to vs2012 this morning and debugging broke.  When attaching to the web server process this error appeared:
"no symbols have been loaded for this document".
The solution was easy, I switched the default code type from "Managed (v4.5,v4.0)" to "Managed (v3.5, v3.0, v2.0)". 
(I'm not sure why vs2012 can't look and see that my project is running as .Net v3.5 and just automagically set it.)

Saturday, November 03, 2012

Differences between isql, osql, sqlcmd and Invoke-Sqlcmd

What's the difference between isql, osql, sqlcmd, and Invoke-SqlCmd?
My GreatGreatGrandFather, Elijah Fincher, playing the part of "isql"
All four of these tools let you interact with SqlServer via the command line.
I'm not a big database guy, so I thought I was cool a few years ago moving to osql from isql. Wrong. The cool kids are on Invoke-SqlCmd
What's the difference:
isql - the grandfather, last used in SQLServer 2000. You should only be using this if you are working for some government agency.
osql - the father, introduced in SqlServer 2000, will probably be phased out soon. Use this if you work for a large corporation like GM.
sqlcmd - new kid, introduced in SqlServer 2005, used in current SqlServer insta
lls. This is what everybody else should be using.
Invoke-SqlCmd - the new cool kid, used inside PowerShell. Use this if you are really cool and have installed linux on your old computers at home.

Example using sqlcmd:
sqlcmd -S MyServerName\SqlExpress -E -Q "CREATE DATABASE Movies"
sqlcmd -S MyServerName\SqlExpress -d Movies -E -i "C:\workfiles\Movies_CreateTables.sql"

The "-E" option says to use trusted identity;
"-Q" the query to execute
"-d" the database to access
"-i" the command input file

Friday, November 02, 2012

Austin Java Users Group - RESTful Web Services

On October 30, 2012 Ryan Stewart of Rackspace gave a wonderful presentation to fifty people on creating RESTful web service using Gradle for building, JAX-RS(Jersey) for the web services and Spock for testing. It was very impressive. In 100 minutes Ryan wrote the tests for a small web service in Groovy using the Spock framework, created the code to implement those tests, and deployed to Red Hat's cloud. He reiterated the mantra of HTTP verbs:
POST is to create
PUT is for updates
DELETE is for well, deleting
Ryan used the sublime editor for small things and IntelliJ for coding (he really liked IntelliJ more than Eclipse, even the community edition).
jacoco used for a code coverage tool.
"Test your source code with a more powerful language." So we used Groovy for testing.
I learned that the 201 status code is for "OK, I created an object" and by convention the objects location (identity) is passed back in a header.
Ryan liked, what .Net people call "Fluent" style, where methods can be chained together if we return the object, e.g., user.withRole("admin").expires("never")...
public User withRole(String role) {
  return this;
Ryan demonstrated "JerseyTest" which was amazing.
For REST systems, instead of wsdl like SOAP used, we have a simpler format called "wadl", which is not standard at the moment.
When retrieving info from a REST server we can imply the format by appending an extension, /usr/345.xml or /usr/345.json
JerseyTest impressed me with the excellent separation of code possible. Ryan went out of his way to write all the code to be testable, and only use the meta info on the methods to describe their web behavior, so we could test their POJO behavior easily with NUnit.
He used to autogenerate accessors.
"gradle distZip" created the distribution package
The most impressive part of the demo was to take our shiny new web service and seemlessly deploy to RedHat's OpenShift cloud service. His slides are here and the web service is here.