Build, Buy, or Partner

Lot of angst in the Mac Community in the wake of Safari, Apple’s new Mac OS X browser.

Free is a very attractive price point to the consumer. Usually, free software isn’t a major competitor to the professional developer, because it doesn’t have access to the User Interface talent required to build a first-class consumer application. But when someone like Apple [or Microsoft] bundles your functionality, then you’re looking at a world of hurt.

Apple has the problem of balancing their own value proposition and the overall Mac ecosystem. On the one hand, Apple needs to emphasize the differences between them and Wintel. And on the other hand, Apple needs a robust developer community to insure that a full set of applications are available on their platform.

The digital hub and it’s ease of use have become an important Apple differentiator. I think it was a foregone decision that Apple would bundle that functionality. And if you see an Apple PDA in the tea leaves, then the combination of .Mac and iLife starts to look like a place to avoid as well.

What does this mean for the software developer? As always, you need to anticipate where the 800 pound gorilla will go and act accordingly. Apple will always be looking at their primary customer segments and the compelling applications in those segments for bundling. They need to make the choice between build, buy or partner. You need to make buy and partner much more compelling than build.

3 flee the USOC

The USOC loses three more ethics panel members and continues to implode.

At this point, I think that everyone besides the remaining members of the USOC executive committee agrees that CEO Lloyd Ward is guilty of an ethics violation. The question is: Where do they go from here?

While I had always felt it was an ethics violation, I didn’t feel that it was a major breech requiring Ward’s termination. And absent any further details, I still feel that way. Unfortunately, I don’t really see any other way out of this now.

Pure Speculation on my part, but I suspect that Lloyd Ward saw the USOC position as just another stepping stone in his career. In today’s post-Enron, post-Tyco, post-Worldcom world, he felt that he [and the USOC] couldn’t afford any ethical blemish and successfully politicked that result. Only to have it blow up in his face.

[22 January] The plot thickens.

Ant Hello World

There is a long standing tradition in software of starting with “Hello World.” We’ll start our series of Ant tutorials with the same. I’m going to assume that you’ve successfully installed Ant and that you understand the basics of XML syntax. And just in case it makes a difference, I’m using version 1.5.1:

1
$ ant -version
Apache Ant version 1.5.1 compiled on October 2 2002

Copy the following lines into a file named “build.xml” (the default name assumed by ant).

1
2
3
4
5
<project default="hello">
<target name="hello">
<echo message="Hello, World"/>
</target>
</project>

And execute ant.

1
$ ant
Buildfile: build.xml

hello:
     [echo] Hello, World

BUILD SUCCESSFUL
Total time: 2 seconds

Now that we’ve got a working build file, let’s take a closer look at it’s contents:

  • Project
    The project is the root element of the build file, it contains one or more targets. The default attribute is required and specifies the default build target (in this case: “hello”).

    • Target
      A target represents a project milestone in ant, it contains zero or more tasks. The name attribute is required and specifes the name of the target (in this case: “hello”). Users may specify which target that would like to achieve via the command line (see below).

      • Task (echo in this case)
        Tasks are the smallest units of work in ant. Tasks may operate on many files, but the same operation will be applied to each file. The echo task’s message attribute specifies the text that is generated by this task.

Next, let’s create another build file and examine some common command line options in ant. Copy the following lines into a file named “echo.xml”.

1
2
3
4
5
6
7
8
9
<project default="hello">
<target name="hello">
<echo message="Hello, World"/>
</target>

<target name="goodbye">
<echo message="Goodbye, Cruel World"/>
</target>
</project>

Execute ant using:

  • -f echo.xml to specify “echo.xml” as the build file
  • goodbye to specify “goodbye” as the target rather than the default
1
$ ant -f echo.xml goodbye
Buildfile: echo.xml

goodbye:
     [echo] Goodbye, Cruel World

BUILD SUCCESSFUL
Total time: 2 seconds

Finally, let’s take a look at the target depends attribute. Edit “echo.xml” and add the target “all” as shown below:

1
2
3
4
5
6
7
8
9
10
11
<project default="hello">
<target name="hello">
<echo message="Hello, World"/>
</target>

<target name="goodbye">
<echo message="Goodbye, Cruel World"/>
</target>

<target name="all" depends="hello,goodbye" />
</project>

The target depends attribute specifies targets that should be achieved prior to executing the current target. Ant will attempt to execute depends targets left to right, but this may be altered by their respective depends targets. In this case “hello” and “goodbye” have no dependencies, so they will execute in that order.

1
$ ant -f echo.xml all
Buildfile: echo.xml

hello:
     [echo] Hello, World

goodbye:
     [echo] Goodbye, Cruel World

all:

BUILD SUCCESSFUL
Total time: 2 seconds

24 Jan: Ant Hello World Revisited

Disclaimer: I don’t claim to be an expert on ant. Please send comments and corrections.

Make the Call

I’ll confess, as I watched overtime in the Steelers and the Titans, I hated the running into the kicker call. No question that it was a foul by the letter of the law, but you had to let it go under the conditions.

But I’ve had a chance to think things over. I don’t want officials to be thinking about the game situation when they make their calls. NHL officials think that way, and they practically swallow their whistles in overtime. They may keep them from deciding the game, but the resulting game can get pretty ugly.

Just make the call and let the chips fall where they may.

Lead by Example

True leaders lead by example. Unfortunately, right now too many people in authority are poster boys for do as I say, not as I do. All leaders should be held to a higher standard.

It’s all fine and well to work for reform from within. But it is also important to know when you’re tilting at windmills. Reform from within can succeed as long as the problem has not reached the top. Once the problem is ingrained at the top, it is time to reform from without.

Which is why you hold leaders to a higher standard. You want people to reform from within; it is less disruptive and it keeps the dirty laundry private. But people will walk once they lose faith in leadership.

Today’s examples are Brian Derwin and Pat Rodgers, who have resigned from the US Olympic Committee in the wake of the ethics committee investigation of USOC CEO Lloyd Ward. Both resigned rather than promote an ethics code to the membership that is not lived up to by the leadership.

Interestingly enough, USOC CEO Lloyd Ward is also a member of the all male Augusta National Golf Club. The USOC is “an organization whose ideals reflect gender equity, fair play, tolerance and inclusion.” Ideals somewhat in conflict with an all male golf club. Ward feels he can be more effective in promoting gender equity from within. Despite all evidence of the power and intransigence of Augusta Chairman Hootie Johnson to the contrary.

I Switched

I switched to a iBook a few months ago. This is my second tryst with a Steve Jobs computer.

The first time was a NeXT turbo slab. I had unix on the brain at the time, and the NeXT offered the best blend of consumer software and unix development around. I eventually left to play games on Windows 95.

Now it’s a 700MHz iBook with Mac OS X. I guess I’ve still got unix on the brain. I was looking for a new laptop and the usual suspects didn’t pass muster – they were either too expensive, too heavy or both. The iBook fit the bill at $1499, 4.9 pounds and just enough horsepower.

The Verdict – after 4 months with the iBook, I’d do it again. There is something special about picking up a machine built with panache. The iBook feels like an elegant tool where most windows boxes feel like blunt, heavy instruments. My only regret is the standard electronics buyer’s remorse: the 800MHz iBook and the new 12” powerbook look very nice.

I just can’t figure out why the desktop replacement Windows laptop is so popular. I used to carry around a Thinkpad 770Z for work. It was your basic 8 lb., 12” x 10” x 2.2” brick. My iBook feels like a feather compared to it.

With the addition of the new 12” and 17” Powerbooks, Apple has a nice progression of laptops from the 700 MHz G3 iBook to the 1 GHz G4 PowerBook. Each one truly portable. Each one truly self contained. Ok, maybe the 17” PowerBook isn’t that portable, but it does have a reasonable weight.

Most of the Wintel world seems to have forgotten that laptops were meant to be portable. Toshiba seems to understand this with their Protege line, but their prices start at around $1900 with a built-in optical drive (I reinstalled the OS on a colleague’s laptop without a built-in CD and I’m not doing that again).

Not that I blame the manufacturers, I’m sure that they’d make more if people would buy more. My guess is that the Intel MegaHertz marketing campaign has been too successful. A 867 MHz P-III has ample oomph for most users, but they’ve been brainwashed into thinking they need a 2 GHz P4.

First Post

I confess. I worked myself into a state of complete writer’s block. I frittered away my 30 day free trial of Radio Userland.

And then I remembered one of my first lessons as a freshman:

  • 1 >> 0
  • n + 1 > n

This first entry may not be very impressive, but it’s a heck of a lot more impressive than nothing. And it will get better as I go.

That’s how I got a title and a first post.