June 10, 2009

No 'Team' in 'I': Going Solo with WACD

Clint eastwood on horse To continue from an earlier post on the WACD methodology, here are some tips for keeping the pesky 'team' concept from eroding your development sovereignty.

First off, developing applications in teams runs the risk of contaminating your line of thinking with inferior logic.  The fewer people on your team (ideally, just you), the more freedom you'll have to solve problems the right way. 

Sure, developing in isolation may lead to duplication of efforts in your IT organization but that's OK - IT organizations are full of redundant waist and it's not your job to fix it.  Besides your solution will undoubtedly be superior to your look-a-likes.  Everyone will benefit by learning from your example.

Development teams like to second guess each other by doing code reviews.  This is just a crutch for weak developers with no guts.  Be smart and write the code perfectly to begin with.  As you already know, writing near-perfect code eliminates the supposed benefit of second-guessing weasels. 

In the rare case where factors beyond your control caused you to write a bug, you'll be the only one who'll understand it.  Not only is this is great for your job security but it ensures a peaceful debugging process where you're not constantly being asked questions that begin with "Why did you... blah, blah, blah."  So friggin annoying.

Last but not least, teams often talk of 'camaraderie' and 'morale.'  My advice here is simple:  Camaraderie is for commies, morale for pussies.  Don't be either.  Clint Eastwood didn't ride into town with a Cowboy Support Group and neither should you.

May 27, 2009

Solution to Windows Bug: "The file name is too long"

I couldn't delete a set of files on an old Windows OS because "The file name is too long". After fruitless Google searching, I found the solution and so, am posting here for posterity.
  1. Remove any files you don't want to delete (and whose name is short enough to allow this!).
  2. Ensure recursive write access in the containing file directory and all parent directories.
  3. Starting at the root directory, rename it to a single character, for example 'a'.
  4. Do this for each successive sub-directory, marching towards the one containing the files you want to delete. So you might go from a path like this:
  5. C:\some\long\windows\path\to\files\you\cannot\delete
    to a new path like this:
    C:\a\a\a\a\a\a\a\a\a
  6. Now, try deleting the files. If it still doesn't work trying renaming the files themselves and then deleting.
This ended up working for me when nothing else would. Good luck!

March 06, 2009

Introducing the WACD Methodology

Pronounced 'whacked', WACD is short for:
  • W - Wild
  • A - Ass
  • C - Cowboy
  • D - Development
Key WACD Tenets
  • Use IDD (Instinct Driven Development). After all, you’re the one who has to build it.
  • Always code alone. Other opinions rarely help, so, in the end, they just slow you down.
  • Always don’t test. You know what you're doing. Like opinions, this is just more drag.
  • Document when asked but never again. You’re not a writer. Who’s going to read it anyway?
  • Keep information to yourself. Anything else just risks you losing your job.
  • CM with zip. You're stuff is archived. You know where it is – that’s all that really matters.
Benefits of a WACD Team
  • Overdue projects
  • Low levels of usability
  • Lots of application bugs
  • Costly O&M
  • High staff turnover

March 04, 2009

Google Mail Up

It's back.  At least, for now.

Google Mail Down

Scapture_google_mail_down
Lately, no matter where you look, the unthinkable is being thought of.

Google Mail has been down for last 40 minutes.  Sitting here at downtown Reston's Panera, I have connectivity to any other site to which whim takes me.  Just not Google Mail.  

Sites like this don't have scheduled outages.  At least this used to be the case.

Generally, I recommend Google.  This most recent email outage is starting to put dents in my trust.  After their Feb 09 outage, you'd think they would've pulled out all the stops to make sure mail service wouldn't die only a few days later.

October 14, 2008

Earnings-Based Consumption

We cannot spend our way to good economic health, even in the short run.  We have to produce.

John Stiglitz, Chief Economist of the World Bank from 1997 - 2002 took callers on CSPAN this morning, one of which was a democrat who suggested (paraphrasing), "With the economic downturn and the tax payers being the problem, with the bad mortgages and such, why not just give every American one million dollars? Then people would spend money, helping businesses, and letting people keep their houses and jobs."

Why stop at one million?? Why not 10? How about 100 million? We'd all be set for life.

I'm all for consumption as a important part of market health. However, the problem with consumption based on money given versus money earned is that, when given, you have no skin in the game. No risk taken. This changes everything. If you lose it all because of a bad decision, oh well. 

With money earned, you have a vested interest in not seeing it disappear. With money earned, you do your best to get the maximum value you can for every penny. This kind of incentive works.  Money-given based consumption eventually reduces productivity to point of total dependency.  This is socialism and, as history shows, has a strong track record for destroying markets.

August 23, 2008

RIAs - The New Web UI

SproutCore is slick; has a RoR + Apple pedigree & leverages Javascript very nicely.  MobileMe integrates it.  Apple contributes heavily to the project.  Silverlight, AIR, and Google Gears compete.  Silverlight and GG require browser plug-ins.  Only GGs is open-source.  Here's a good overview: http://rapidappsgroup.com/content/desktop-web-applications-using-sproutcore/

Sproutcore

July 31, 2008

Groovy 1.5: No Private for You!

No_soup

Considering Groovy for your next big project?  We did.  All things considered, it figured to be a safe choice given its Java pedigree. From the limited exposure I'd had to Groovy up until that point, it looked and felt remarkably familiar to Ruby (a good thing).  I had even heard you could cut & paste any amount of Java into a .groovy file and it would just work.  Depending on what 'work' actually means, this is mostly true. 

One of the small untruths about Groovy behaving 'just like Java' is worth serious consideration - especially if you want your .groovy code to become API-ready.

Continue reading "Groovy 1.5: No Private for You!" »

May 31, 2008

RailsConf 2008 Saturday Night Key Note: Kent Beck

I got lazy and didn't blog about DHH's key note last night.  So, before I get on with Kent's salient story-style wisdom, I'll quickly catch up with DHH's.

Continue reading "RailsConf 2008 Saturday Night Key Note: Kent Beck" »

May 30, 2008

Summary: Dialogue Concerning the Two Chief Modeling Systems

Jim Weirich, Joe O'Brien, and Chris Nelson acted out a dialog where they built an application to reserve conference rooms.  Very entertaining and novel approach for a tech conference!  I loved it.  But, to the point now - the summary...


So, you want to build something?  

Their are at least two philosophies to fleshing out the model: Traditional object-based modeling and behavior-based modeling.  How are these different?

Continue reading "Summary: Dialogue Concerning the Two Chief Modeling Systems" »

Yellow Pages.com Rewrite

Lessons Learned:
  • Freeze existing functionality
  • Field small, co-located, talented team (4 developers)
  • Dedicate long technology evaluation, prototyping, and planning period
  • Assign technical decision maker and communicator to management
  • Leverage UX team: all page design and HTML gen, then give to dev to slice up and wire
  • Change only the obvious
  • Deploy beta frequently and actively recruit feedback  

May 29, 2008

RailsConf 2008

Rails2008_logo_conf

I'm at RailsConf.

Portland, Oregon is, well, Portland (overcast and wet). Got in late last night and walked over to Stanford's. The service was friendly, even at 10:30 PM.  Everything about the burger was above average.  And it came with hot, crispy, slightly salty fries.  It was all devoured with sips of a local wheat bear that I forget the name of.

So far, having been away from Ruby and Rails for over a year, it feels like going back to a place you used to live. Some things are still the same. In other ways, I hardly recognize the place.  New techniques like elastic computing (and plenty of competing commercial hosting options), new tools such as git, tarantula, and hobo, etc.  Good stuff.

I'll pretend I blog and let you know how it all goes.

May 07, 2008

Book Review: Sketching User Experiences by Bill Buxton

Sketching User Experiences:  Getting the Design Right and the Right Design (Interactive Technologies), by Bill Buxton, is an excellent read on the scope, purpose, and implementation techniques for designing good user experiences.  Buxton's narrative style is easy, warm, and conveys his rich experience and passion for the subject.  He includes a rich set of stories and case studies that demonstrate the importance of design and techniques for doing it.

Continue reading "Book Review: Sketching User Experiences by Bill Buxton" »

April 24, 2007

The SOA and Agile Culture Clash

In SOA and Agile: Friends or Foes?,  Amr Elssamadisy opens a discussion on the perceived disconnect between what should be the mutual admiration societies of SOA and Agile developers.  Most of the comments to Amr's article are also informative and and well-written.  However, in the discussion, not mentioned are the non-technical forces in play which, hopefully, this response can illuminate.

Continue reading "The SOA and Agile Culture Clash" »

March 06, 2007

Subclipse Installation Problem on Mac OS X

Like my development environments, things change.  Since my next project is to extend a product written in Java and, since I used to develop Eclipse rich clients in my webMethods days, I figured I'd install Eclipse on my MacBook Pro.

We use SVN so, I also installed the most excellent Subclipse Eclipse plug-in.  All was going well until, I tried to synchronize to the repository.  When I did, I got the following error:

Continue reading "Subclipse Installation Problem on Mac OS X" »

December 28, 2006

Ruby Snippet: Shortening Long Strings For Display

Ever had a long string like this:  "myveryveryveryveryveryveryveryveryveryveryveryveryveryveryverylongstring" and wanted to turn it into something much shorter, such as this: "myveryvery...longstring"? 

Here's a little snippet that does just this.  It works great in HTML select lists which, to my knowledge, are impossible to dynamically resize as the user drags their browser window larger or smaller.

Continue reading "Ruby Snippet: Shortening Long Strings For Display" »

December 14, 2006

Resolving Files with TextMate, Subversion, and FileMerge

If you're new or semi-new to TextMate and you're collaborating with someone on the same development project, file change collisions are inevitable.  Textmate has nice support for resolving file conflicts when they show up after updating to the latest SVN depot revision.

Note: This post assumes you are on a Mac :^).

Continue reading "Resolving Files with TextMate, Subversion, and FileMerge" »

December 06, 2006

Ruby Arrays: select(), collect(), and map()

As a former Java developer and new to the concept of blocks, these API options seem perplexing at first.   They're not.  All three take a block.  How they use the block is what distinguishes them.  You should read the RDoc for yourself but, if you want a quick a dirty summary, continue reading this post.

Continue reading "Ruby Arrays: select(), collect(), and map()" »

November 22, 2006

Ruby Refactoring Pattern: "Forward with Default Params"

Introducing Ruby refactoring pattern called "Forward with Default Params."  This applies to any language that supports parameter defaulting, actually.  And, this pattern may already be documented somewhere for all I know - I haven't looked into it.  If someone can point this out, I'll be happy to defer all credit.  In the meantime...

Problem: You keep creating new methods, each calling the same helper or 'core' method (we'll call it 'method_a'), but with different params.  You can't change the required params of the core method because spagetti-legacy code relies on method_a, without params, such as with Rails controllers.  You should fix the spagetti code but time dictates otherwise.  However, you feel dirty violating DRY in your controller.  What to do?

Continue reading "Ruby Refactoring Pattern: "Forward with Default Params"" »

November 18, 2006

The Rails Edge, 2006 - Day 1

In this post and the two that follow, I highlight interesting talks at The Rails Edge, 2006.  I do it for Google searching posterity and for my admittedly selfish desire to reinforce key concepts presented. 

Continue reading "The Rails Edge, 2006 - Day 1" »