16 October, 2006

Zune Will Drive Girls Away, says Jobs

Newsweek has done a three page piece on an interview with Steve Jobs. You've probably heard about it already. Even considering the source, it increases my skepticism concerning the Zune's prospects.

Look at the design of a lot of consumer products—they're really complicated surfaces. We tried make something much more holistic and simple. When you first start off trying to solve a problem, the first solutions you come up with are very complex, and most people stop there.

It seems like you could just ship it at this point and improve things over time with firmware updates. That thinking might be considered to align with Agile principles, but I don't think it does. Ship an over-complicated product and it's already to late. I don't believe that release early and often means you get to skip user interface design.

It's not all happy though:

Do you think that it's fair to the customer that the songs they buy from Apple will only work on iTunes and the iPod? Well, they knew that all along.
I find that attitude ... upsetting. It will be interesting to see if pressure from the Zune can help encourage openness at Apple.

I've seen the demonstrations on the Internet about how you can find another person using a Zune and give them a song they can play three times. It takes forever. By the time you've gone through all that, the girl's got up and left! You're much better off to take one of your earbuds out and put it in her ear. Then you're connected with about two feet of headphone cable.
Okay Zune, I'm good enough at chasing away girls all by my self, thank you.

11 October, 2006

Tim Bray on TDD

I would say that, looking back over the 20 years I've been doing this, that the 2 biggest developments in IT, most-significant, are Object-Orientation and Test-Driven Development, and I think that TDD is more important.
From an interview by Obie Fernandez on InfoQ. It's a nice read, I recommend it.

07 October, 2006

The PowerPoint Crutch

“The quality of a speaker is inversly proportional to the number of slides they have” via the 37 Signals blog

05 October, 2006

Yegge On Ruby

I first have to admit that I tend to find Steve Yegge's writings boorish at best. His post on Agile processes illustrates some of his worst. However, he has an entertaining writing style that keeps me coming back.

This brings me to an old post of his on resistance to Ruby. Specifically, the lack of automated refactoring tools in Ruby. When did refactoring become about pushing buttons in an IDE? It certainly never started there. Is it not interesting that the author of Refactoring, Martin Fowler, uses Ruby?

That said, I'm feeling a bit guilty of the whole push-button programming sickness myself. (Maybe Eclipse is a little too cool). I think it's time for me to pick up Refactoring again and give it a good re-read.

In the meantime, I think <gasp!> Steve is right: Ruby is a butterfly.

edit:    this article is a good companion to Yegge's article.

18 September, 2006

New Shuffle

Wow, the new shuffle really is like a "paperclip that plays music."

Renew Your Passports, People

They're about to put RFID chips in passports. I guess I'd better get mine now before any fool with an antennae can read it from across the room. :-/

Via Bruce Schneier

15 September, 2006

Who "Launches" a Product That You Can't Buy Yet?

Microsoft does.

I'm sure they're not the only ones, but I'm in a mood today.

Now, I've shared my opinion on the Zune's chances already. The iPod is a tough nut to crack. John Gruber recently reported on Apple's "Showtime" event on Tuesday. From that entry:

  • Apple claims 88 percent of non-bootleg music downloads in the U.S.
  • 70 percent of 2007 model year cars sold in the U.S. have iPod connectivity built-in. Not “MP3-player” connectivity. iPod connectivity. Note to Jobs: Send nice Christmas presents to the engineers who came up with the proprietary iPod dock connector port.
  • 450,000 Nike + iPod Sport Kits have been sold in fewer than 90 days. Not Nike + MP3 Player Sport Kits. Nike + iPod.
  • The iTunes Store is the fifth-largest music reseller in the U.S., and expects to pass Amazon early next year, at which point they’ll trail only Wal-Mart, Best Buy, and Target.
  • Apple has sold 1.5 billion total songs to date.

So, probably the only company that is afraid of the Zune is Creative.

To be fair, the Zune (somehow they've managed to come up with a name even sillier than iPod) -- the Zune will come to the table with a couple of nice new features. The wi-fi song sharing sounds nice and the bigger screen is certainly a plus. I find it interesting that these are two features that Apple is reluctant to add because of battery life concerns. It should be no suprise, therefore, that we've heard no mention of the battery life of the Zune.

I should be nicer to the Zune, I know. Competition for the iPod can only result in good things. It's just that ... well, Microsoft's actions tend to speak much louder than their words.

23 August, 2006

The Sci-Fi Character Quiz

Which Fantasy/SciFi Character Are You?

Another Geek Quiz! Via Bilz. Apparently I'm a formally schooled Shakespearean actor. Who knew?

22 August, 2006

Working with the Workspace in Eclipse Plug-in Tests

Okay, I've had to figure out how to do this a number of different times that exceeds two; so now I'm writing it down.

The Situation

I want to create a file in the test runtime workspace that I can run tests against.

The Solution, v0.1 ... (beta)

@Before
protected void setUp() throws Exception {
   IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();

   // Create a project in the runtime workspace
   IProject project = root.getProject( "My-Test-Project" );
   project.create( null );
   project.open( null );

   // Get a file from the test plug-in's bundle path
   URL url = MyTestPlugin.getDefault().getBundle().getEntry( "/" );
   URL fileUrl = new URL( url, "resources/my-source-file.txt" );
   String filePath = FileLocator.toFileURL( fileUrl ).getFile();
   File sourceFile = new File( filePath );

   // Create a folder and file in the test workspace
   IFolder folder = project.getFolder( "src" );
   folder.create( false, true, null );
   IFile file = folder.getFile( "testfile.txt" );

   // and set its contents to the file from the plug-in
   file.create( new FileInputStream( sourceFile ), false, null );
}

You will have to delete the project in tearDown. Otherwise, the next time setUp gets called, you'll get a ResourceException.

06 August, 2006

More Eclipse Monkey

Today's Eclipse Monkey offering is entirely selfish in its utility. It updates the version number of any locally modified plug-ins in my workspace.

I've reformatted it a bit to make it fit a little better on this page.

--- Came wiffling through the eclipsey wood ---
/*
 * Menu: Versions > Update Versions of Modified Plug Ins
 * Kudos: Toby Tripp
 * License: EPL 1.0
 *
 * The Update Site URL and Feature ID of the "DOM"
 * for this script:
 * DOM: http://tripp.no-ip.org/eclipse/updates/com.ttripp.eclipsemonkey.doms
 *
 * The above DOM provides the following objects:
 *  * svn - com.ttripp.eclipsemonkey.doms.subversion.SubversionResources
 *  * pluginVersion - com.ttripp.eclipsemonkey.doms.plugins.PluginsFacade
 *
 * Note that this DOM depends on the Subclipse plug-in:
 *   http://subclipse.tigris.org/update_1.2.x
 */
 function main() {
  
    var verIndex =
       Packages.com.ttripp.eclipsemonkey.doms.plugins.PluginsFacade.UPDATE_VERSION
  
    // dirtyProjects returns an array of 
    // Subversion resources (ISVNLocalResource)
    var dirtyProjects = svn.dirtyProjects();
  
    for each( project in dirtyProjects ) {
   
       // This call will increment, by one, the third (update)
       // index of the plug-ins version number.
       pluginVersion.incrementPluginVersion( project.getResource(),
                                             verIndex );
    }
 }
--- And burbled as it ran! ---

My First Eclipse Monkey Script

My mother must be so proud...

The following bit of javascript will search the current workspace for projects that are locally modified subversion resources. In other words, they're checked in to subversion, but need committing. It doesn't do much with the results except to present a dialog box. I'll show you later what you can do with that list.

To install the script, first you have to have Eclipse Monkey installed. Once you've got that set up: copy the javascript below, including the jabberwocky quote surrounding it, into the clipboard. Then, in eclipse, select the menu item "Monkey->Paste New Script" and away you go. The script will appear in the Monkey menu. Enjoy!

--- Came wiffling through the eclipsey wood ---
/*
 * Menu: Versions > Find Modified Projects
 * Kudos: Toby Tripp
 * License: EPL 1.0
 *
 * The Update Site URL and Feature ID of the "DOM" for this script:
 * DOM: http://tripp.no-ip.org/eclipse/updates/com.ttripp.eclipsemonkey.doms
 *
 * Note that this DOM depends on the Subclipse plug-in:
 *   http://subclipse.tigris.org/update_1.2.x
 */
 
 
 function main() {
  
  var dirtyProjects = svn.dirtyProjects();
  text = "\"Dirty\" Projects: (" + dirtyProjects.length + ")\n";
  
  for each( project in dirtyProjects ) {
   
   text += project.getIResource().getName() + "\n";
  }
  
  Packages.org.eclipse.jface.dialogs.MessageDialog.openInformation(  
        window.getShell(),  
        "Monkey Dialog", 
        text
     )
 }
 
--- And burbled as it ran! ---

26 June, 2006

Cell Phone Etiquette

When you first open your shiny new cell phone, it should force you to read these rules: How to Use a Cellphone Without Looking Like an Asshole.

20 June, 2006

Editor list in 3.2

Editor list in 3.2: "Open editors switching is the one thing that I really missed in Eclipse 3.1. But finally it is in 3.2. 80 words. Read More at EclipseZone" This was a short, sweet, and -sorry- somewhat dull piece on EclipseZone until: "And remember ctrl+shift+L is your friend…"

17 June, 2006

Can Microsoft Kill the iPod?

So, iTWire -citing Reuters- is claiming that Microsoft is developing an MP3 player and online music service to compete with Apple's iPod and iTunes. While I don't doubt that they'll try, I don't think Microsoft has it in them anymore to defeat Apple at this game.

I'm sure there was a day when the modern software giant had the capability and willpower to muscle their way into the digital music market. Joel Spolsky remembers a less bloated Microsoft:

June 30, 1992. In those days, Microsoft was a lot less bureaucratic. Instead of the 11 or 12 layers of management they have today, I reported to Mike Conte who reported to Chris Graham who reported to Pete Higgins, who reported to Mike Maples, who reported to Bill. About 6 layers from top to bottom. We made fun of companies like General Motors with their eight layers of management or whatever it was.

That day has long passed, however. On top of that, this week we hear that the hero of Microsoft, Bill Gates himself, is stepping down. Given the company's current size and management bloat, it's easy to overestimate Gates' impact on day-to-day operations. His leaving at this point in time may have as much effect as the Democrats in Congress. Even so, his leaving says a lot about the current direction of the company. Mr. Spolsky again:

Bill Gates was amazingly technical. He understood Variants, and COM objects, and IDispatch and why Automation is different than vtables and why this might lead to dual interfaces. He worried about date functions. He didn't meddle in software if he trusted the people who were working on it, but you couldn't bullshit him for a minute because he was a programmer. A real, actual, programmer. Watching non-programmers trying to run software companies is like watching someone who doesn't know how to surf trying to surf. "It's ok! I have great advisors standing on the shore telling me what to do!" they say, and then fall off the board, again and again. The standard cry of the MBA who believes that management is a generic function. Is Ballmer going to be another John Sculley, who nearly drove Apple into extinction because the board of directors thought that selling Pepsi was good preparation for running a computer company? The cult of the MBA likes to believe that you can run organizations that do things that you don't understand.

I have to suspect that Mr. Gates' leaving has something to do with the modern culture in Microsoft. You don't have to look far for stories on the internal strife and mismanagement happening in Redmond. From a post by Mr. Philip Su:

Imagine each little email you send asking someone else to fill out a spreadsheet, comment on a report, sign off on a decision -- is a little neutron shooting about in space. Your innocent-seeming little neutron now causes your heretofore mostly-harmless neighbors to release neutrons of their own. Now imagine there are 9000 of you, all jammed into a tight little space called Redmond. It's Windows Gone Thermonuclear, a phenomenon by which process engenders further process, eventually becoming a self-sustaining buzz of fervent destructive activity.

This is the culture of the modern Microsoft. This is the giant, tripping over its own feet, that plans to take on what is perhaps the most successful personal music player in history. Apple succeeds with the iPod largely because of their focus on form and elegance. Apple thinks hard about the user experience. Microsoft thinks only of the bottom line. Blake Ross laments the Microsoft attitude toward users in this plea to Microsoft employees:

Then I see the IE7 homepage proclaiming that “we heard you” and I just get furious. I get furious because I know that “you” isn’t really you, grandpa, Meredith, Jamie, Fletcher, Matt, Mike, Phil, it can’t be, because you complained for years and nobody heard you. It’s not you; it’s us. It’s Firefox, Safari, Opera, Flock, Maxthon. Only the drip drip of leaky marketshare echoes in Redmond. I know this is just the game, know that the IE marketing team wrote that sales pitch. The pitch I’m writing now isn’t to them but to the developers. You are working at a company that finds positive impact a mere side effect of competitive destruction. In thirty years, do you want to look back and think “I did that” or “I stopped that company from doing that”? I urge you to find a company that truly listens to them, not us. It is much more rewarding.

"Positive impact a mere side effect of competitive destruction." This is the face of Microsoft. At least, this is how they're perceived. Given this face, you'd expect the Redmond campus to be staffed by legions of gremlins, goblins, and parodies of Dr. Evil. I think we all know that's not the case, but the emergent behavior of all those kind, well meaning, intelligent people is what we see and react to.

Sure, Microsoft has nearly endless supplies of capital to throw at Apple. They're massive enough to fight simply by throwing their mass around. I imagine soon we'll see a media marketing blitz like none we've seen since the release of Windows 95. I simply ask the question: is it enough this time?

30 May, 2006

Maven 2: I Need to Try This

Feel this pain much?
Dependency management has a long tradition of being a complicated mess for anything but the most trivial of projects. "Jarmageddon" quickly ensues as the dependency tree becomes huge, complicated, and embarrassing to architects who are scorned by new graduates who "totally could have done it better." "Jar Hell" follows, where versions of dependencies on one system are not quite the same versions as those used for development; they have either the wrong version or conflicting versions between similarly named JARs. Hence, things begin breaking and pinpointing why proves difficult. Maven solves both of these problems by having a common local repository from which to link to the correct projects, versions and all.
From an article by Eric Redmond. Yet another tool I need to try ... sigh.

24 May, 2006

A History Lesson

By wandering around the original wiki, you can read many conversations that have informed modern software development. Try reading Code Smell, or One Responsibility Rule, or even take a look at the birth of Extreme Programming. If you're at all interested in the ideas that formed and support these principles of object-oriented programming, it's a very interesting place to roam and read.

12 May, 2006

A Project to Manage Eclipse Workspaces

I found this from reading the Open Source at Eclipse Blog (generally an excellent read, by the way). There is an eclipse project for bundling projects together, possibly from various sources, into a single eclipse workspace. The project is called Buckminster and certainly looks worth a try. See the project's home page and the referenced blog post for more details. (Hmm, I just discovered that Camino won't spell-check my form ... hm. Perhaps it's time to once again consider Safari. :-/ )

04 May, 2006

Eclipse Plugins

Some must-have plugins for Eclipse, including their update sites:

Mylar

I'll let them describe themselves.
Mylar is a task focused UI for Eclipse that makes working with very large workspaces as easy as working with small ones. It supports task management and monitors your work activity to identify information relevant to the task-at-hand. Mylar uses this task context to focus the Eclipse UI on the interesting information, hide the uninteresting, and automatically find what's related. This puts the information you need to get work done at your fingertips and improves productivity by reducing searching, scrolling, and navigation. By making task context explicit Mylar also facilitates multitasking, planning, reusing past efforts, and sharing expertise.
Eclipse 3.2RC2: http://download.eclipse.org/technology/mylar/update-site/e3.2 Eclipse 3.1.x: http://download.eclipse.org/technology/mylar/update-site/e3.1

Subclipse

Subversion plugin. Eclipse 3.x: http://subclipse.tigris.org/update_1.0.x

27 April, 2006

There It Is...

There's the idea, the meme (via Dave Hoover's Blog). If only I could have articulated it so effectively. Oh well, I suppose I need more practice. I used to write so much better before the Army. I did it once, I'm somewhat confident I can do it again ... unless I'm too old. Anyway, my mind wanders again (is that age?). Mr. Hoover references the following quote: (I believe from Justin Gehtland)

The "safe language" argument appeals to fear, while the "flexible language" argument appeals to a sense of opportunity and adventure. Both are powerful motivations, so for a long time this argument has been a stalemate. Happily, that period is coming to an end. Two new factors have come into play: automated testing and transparency. Over the next five years they will turn the balance totally in the favor of more flexible languages.

I have a bit more to say about this, but I think I'll mull it over a bit more first. It's a loaded subject.

On the subject of dynamic languages: the new apartment is mostly unpacked, so I hope to find some more time to play with Ruby and Ruby on Rails. Between RoR and Eclipse Monkey, I'm like a kid with way too many toys. I have to apologize to all the gracious folks from CitCon that I promised to contact, it's been a bit hectic.

12 April, 2006

Agile ROI

Via Maruis Marais: Thoughtworks (one of the gracious sponsors of CitCon) commissioned Forrester Research to study the return on investment of their Agile practices. They've published their results here. The results are very encouraging. For example:
Client: Four Fortune 500 Companies

Results:

  • Improved time to benefit by 69%
  • Reduced cost by 57%
  • Reduced effort by 62%
  • Reduced critical defects by nearly 80%
  • Reduced overall defects by more than 60%

Participants in the study indicated they realized or expected to realize 29 to 66 percent risk-adjusted return on investment over three years using ThoughtWorks' agile development approach.

This is not surprising to those of us who've already had a taste of the Agile kool-aide, but hard numbers may help swing some skeptics.

These numbers show why we should do Agile. More value per unit investment. Moreover, the value is returned earlier in the development cycle.

11 April, 2006

Need

This made me smile. It's apparently a portion of a conversation held on the ruby-lang IRC channel. I saw it on zenspider's blog.
<zenspider> singletons are almost always a sign of bad design. <suryam> but i need it in my design... [...] <zenspider> "need" is almost always a sign of bad thought.
Classic.

06 April, 2006

CitCon

Heading off to Chicago tonight to attend CITCon ( http://www.citconf.com ). Should be fun. If not, Lydia and I really enjoy visiting Chicago.

05 April, 2006

You Must Be So Proud...

Saw this bumper sticker on my long drive home:
My gamer fragged your honor student
This popped up on the XP mailing list last week. I don't think I could agree more.
My experience is that the single greatest risk in a software development project is building the wrong software. The money saved by reducing costs is miniscule compared to how much you are risking by building the wrong system (or even building a few features nobody needs). No matter how many SMEs and proxy customers you involve, and no matter how many prototypes and models you build, there is no better way to determine if you are building the right software for your market than the earliest possible release of working software to real end users.

Steven Gordon
Too often is seems that software teams introduce tools and extra processes to try and make sure they're building the right software before they start. How long will it be until we learn that this strategy doesn't work cost effectively?

04 April, 2006

File search and replace with Perl

So, I want to search a bunch of files and do some text substitution. This is a fairly common task, but I can never remember how to do it. Here's how: In Perl:
perl -pi.bak -e 's/FindThis/AndReplaceItWithThis/g' *.fileExtension
This will do the substitution "in place," backing up the original file with a copy having the .bak extension. If you're brave, you can leave off the .bak extension and no backup will be made. I don't remember just now how to do the equivalent in Ruby, I'll come back and update this when I get a chance.