October 2005 Archives

Giles Turnbull

AddThis Social Bookmark Button

The worst thing about feeling ill is the lack of motivation. It’s not just that you’re incapable of doing anything constructive, you also tend to be completely uninterested in doing it.

In the middle of last week I caught a bug and ended up spending a day in bed. I took the usual list of things upstairs - paracetamol, water, a decent book, a laptop - and settled down to spend a day doing as little as possible.

I took the painkillers. I drank the water. I read almost all of the book. And on the laptop? It would be nice to be able to say that I managed a little work, or caught up on my bulging ‘toread’ folder, or dealt with some of the email backlog; but I did none of those things. No, I played games.

Partly because of my age, and partly because I’m just not very good at computer games generally, I often enjoy playing ‘retro’ games. Give me something that looks and sounds like the mid 1980s and I’m a happy man.

And where did I go on my hunt for entertainment? Why, Emacs of course.

Now I’ve encountered the Emacs psychiatrist before, and I knew about Emacs Tetris. But that didn’t stop me firing up Tetris once more, just to check it was still functioning as it should. After 30 minutes or so of mindless block-sorting, I was convinced that it was.

But there’s much more buried underneath the Tools -> Games menu in Aquamacs Emacs, my favorite ‘Aquafied’ fork of Emacs; Snake, Solitaire, Tower of Hanoi, even a dungeon-style text adventure. Really, enough to keep you busy for hours on a long flight, or even a day spent sneezing and coughing in bed.

What games do you play on your Mac when you can’t be bothered to do anything else?

AddThis Social Bookmark Button

Well, I almost made it yesterday, I promised two more posts for the day in my first blog of the day and I almost delivered. Alas, in the end, sleep won over and I just had to give in. Nevertheless, I did finally finish my third posting and here it is now for your viewing pleasure.

In this entry I will cover one of my favorite features of the Python programming language—its documentation tool pydoc.

pydoc is a tool that comes with Python that can be used for viewing and generating Python documentation. The main reason I love this feature is because it means that everywhere I go, I have easy access to Python’s documentation. Thus, I don’t need to carry heavy books, or download extra documentation, and best of all, its all accessible from the command line, so I can access documentation while programming without even switching applications. The pydoc documentation tool can even be accessed from within Python’s interactive interpreter. What this means is that if I need to use Python for a simple task like parsing files to make repetitive changes to the text, then I can do so by firing up the Python shell and typing out my program and if I can’t remember how to do something I just import pydoc and look it up in the documentation.

What I propose to do in this blog is just go over a few of my favorite features of Python’s built-in documentation tool. I’ll go over how to view and search documentation, how to use pydoc in the Python shell, how to view HTML documentation using a built-in web server, and how to generate HTML documentation for your own python files.

Why don’t we start with using pydoc from the command line. Let’s say that you’re programming in Python and you find you’ve forgotten how to quit a program. You remember that there is function in the sys module, but you can’t remember the name of the function (I know you can probably guess that its sys.exit(), but bear with me, it was late when I came up with this example). What do you do? Well, in this case you’re going to call the pydoc program from the command line, like so:

$ pydoc sys

Keep in mind that the dollar sign, ‘$’, is the command prompt and not part of what you’ll actually type into the Terminal. Once you’ve typed in the line above and pressed Return, you should see something that looks somewhat like a man page, and as such, it will act like a man page as well. So, since we are looking for a function, we can narrow down our search by pressing the forward slash, ‘/’ (just like in Vi, this allows you to do a text search), character and typing in the search term, in this case we will type in ‘FUNCTIONS’ (yes, case does matter, so make sure it’s in all caps), then press Return again to start the search. Subsequent searches for the same term can be performed by repeatedly pressing forward slash ‘/’ and Return. You can also use the arrow keys to navigate the documentation or just hit the space bar to scan through a page at a time, and to quit your pydoc session, just type the letter q at any time.

Well that pydoc command works great if your at a command prompt, but what do you do if you’re currently in the Python interactive shell and you need to look up something in the documentation? Well, you could always suspend your session with a Ctrl-z, follow the instructions above, and then enter back into the shell where you left off by typing in fg and Return. Another option would be to import the pydoc module directly into your current Python shell session and use the help command to find the documentation you need. Below is an example of how we might check the documentation for the sys module, like we did in the last paragraph, but this time during an interactive Python session.


>>> import pydoc
>>> import sys   # Import this in order to check its documentation
>>> pydoc.help(sys)

So, now we’ve accessed the pydoc tool from the command line and from Python’s own interactive shell. The only thing left to do is get our documentation into a nice HTML document.

If you’ll remember earlier, I mentioned that you can generate HTML documentation using pydoc. Below is just one example of how you can do this (by the way, the open command just launches whatever application is the default for dealing with the specified file. In my case, it would open the hello.html file in Safari):


$ pydoc -w hello > hello.html; open hello.html

The final feature of the pydoc tool that I want to show you is the web server feature. Basically, by calling pydoc with the -p option and passing to it an open port number, you will start a web server that will allow you to access all of the Python documentation on your system through a web browser, and by “all”, I mean both Python’s own documentation and documentation for your own files as well (assuming you’ve used docstrings correctly and you’ve added your file’s location to the PYTHONPATH environment variable). Below is the command that will start your pydoc web server on port 9999:


$ pydoc -p 9999

Once, you’ve started your pydoc web server, you can see all the documentation by loading the following url in to the web browser of your choosing:

http://localhost:9999/

So, that’s it for now. Those are all my little tips and tricks that I use on a regular basis. Once you get used to the having all the documentation you need right there at your fingertips you’ll find it hard to go back to other languages that aren’t quite as accommodating. You’ll also appreciate the ease with which you can document your own code just by adding a few lines to the beginning of each function, method, class, module, etc.

I look forward to talking to all of you again very soon…see you in my next post.

If you know of, or find, any other interesting uses for the pydoc tool that I haven’t covered here, make sure you leave a comment for the rest of us so we can get some use out of it as well. I know I’m always interested in learning a few new tricks.

Derrick Story

AddThis Social Bookmark Button

We’ve been covering how to shoot movies and the best ways to compress them for the latest iPod. But what if you want to transfer content from a DVD you already own to the iPod?

There’s a nifty piece of open source software called HandBrake that lets you convert DVD content to MPEG-4. Here’s a tutorial page that explains the process.

HandBrake is available for both Mac OS X and Linux. It was originally developed for BeOS

Finally, you may have noticed that I’m back from the wilds. I’ve posted a few of the shots I captured while camping. If you like such things, here’s an image of a Blue Heron, a 14-point Tule Elk, and a funky Post Office. I’ll be posting more over the coming weeks.

AddThis Social Bookmark Button

As promised, I am back with my second blog post for the day. This one is on an Open Source visualization project called Graphviz that was developed by AT&T’s research lab. I found this project in a fit of rage as I was trying to draw a graphical representation of a decision tree for an article I just finished this weekend and I’ve got to tell you, I’m in love with it so far.

I’m not necessarily the best at using drawing tools for the computer. Programs such as Visio and OmniGraffle, though quite useful, frustrate me to no end. Thus, I tend to get a little bit aggravated at these products from time to time and this week was no different (luckily my apartment’s walls are insulated well enough, otherwise, my neighbors would have assumed my vocabulary was made up of only four letter words).

This past week I was using OmniGraffle (which I actually think is a really great program) and it was taking way too long to draw and make changes to a graph of a decision tree for my article. I had spent hours with the application creating my diagram and was only about halfway complete when I reached the limit of how many objects I can place in the diagram (just in case you don’t know, the trial version of OmniGraffle has this limit, not the full-fledged version). Since, I’m somewhat allergic to paying for software and I wanted a much easier way to complete my diagram, I decided to take a look for something else I could use, and low and behold, I found it. The holy grail of graphing software for programmers—Graphviz. This program is beautiful. It allows me to create graphical diagrams the way the good lord intended for me to—by scripting them, of course.

Seriously though, Graphviz is a really nice tool for creating diagrams that combines an easy to use textual description language with a set of graphical visualization algorithms. It can export these diagrams to a plethora of different formats (SVG, JPEG, and PDF to name just a few). While I’ve not had a lot of experience with it, I can definitely tell you that it will be my tool of choice for creating simple diagrams for class, work, articles, you name it. I was able to learn enough of the dot language (dot is the simple text language that you’ll use to describe your diagram) in about an hour to complete my diagram. Total time for learning and creating my diagram’s description—1.5 hours. Total time to get halfway to completion with OmniGraffle— approximately 2 hours.

Now, while I’m gushing over this new tool, I don’t want you to think this is a silver bullet or anything. Like I said earlier, I’ve had very little experience with Graphviz, but from what I’ve seen, the more complex the graph gets, the better off you may be using a tool more like Visio or OmniGraffle. Nevertheless, for most of the jobs I need to do, this tool will do me just fine, and as I stated before, its an absolute breeze to use. And, even though this tool was originally created with other operating systems in mind, it does have an OS X port which looks really nice and it was done so well as to have actually won an Apple design award in 2004.

Just to give you an idea of how easy it is to produce a decent looking diagram, I’ve included below the dot file that I created to generate my decision tree diagram for my article below:

digraph dtree {
    node [fontsize=10, shape=box];

    age [label=Age, style=filled, fillcolor=grey89];
    age1 [label="< 18n---------n2-will buy/1-won't buy", shape=plaintext];
    age2 [label="18 - 35n---------n0-will buy/4-won't buy", shape=plaintext];
    age3 [label="36 - 55n---------n5-will buy/3-won't buy", shape=plaintext];
    age4 [label="> 55n---------n5-will buy/0-won't buy", shape=plaintext];
    income [label=Income, style=filled, fillcolor=grey89, pos="111,170"];
    high [label="highn---------n0-will buy/1-won't buy", shape=plaintext];
    low [label="lown---------n2-will buy/0-won't buy", shape=plaintext];
    no1 [label="Won't Buy", style=filled, fillcolor=burlywood];
    yes1 [label="Will Buy", style=filled, fillcolor=burlywood];
    no2 [label="Won't Buy", style=filled, fillcolor=burlywood];
    marital_status [label="Marital Status", style=filled, fillcolor=grey89];
    yes2 [label="Will Buy", style=filled, fillcolor=burlywood];
    married [label="Marriedn----------n0-will buy/3-won't buy",
             shape=plaintext];
    single [label="Singlen----------n5-will buy/0-won't buy",
            shape=plaintext];
    no3 [label="Won't Buy", style=filled, fillcolor=burlywood];
    yes3 [label="Will Buy", style=filled, fillcolor=burlywood];

    age -> age1 [arrowhead=none];
    age -> age2 [arrowhead=none];
    age -> age3 [arrowhead=none];
    age -> age4 [arrowhead=none];
    age1 -> income [arrowhead=none];
    income -> high [arrowhead=none];
    income -> low [arrowhead=none];
    high -> no1 [arrowhead=none];
    low -> yes1 [arrowhead=none];
    age2 -> no2 [arrowhead=none];
    age3 -> marital_status [arrowhead=none];
    age4 -> yes2 [arrowhead=none];
    marital_status -> married [arrowhead=none];
    marital_status -> single [arrowhead=none];
    married -> no3 [arrowhead=none];
    single -> yes3 [arrowhead=none];
}

Now, keep in mind that the code listed above was not written to be beautiful, or reused, or for that reason, even legible. I wrote it after only studying the documentation on the dot language and graphviz for about an hour, not to mention that I just wanted to get a usable diagram up and running as soon as possible. That said, I do think it is a good example of just how easy it is to use Graphviz to produce rather good looking diagrams. Below is the product of the script above after being ran through the Graphviz visualization tool and exported to a JPEG.

image

So, that’s Graphviz. My recommendation is that you go out and download it and give it try. There’s a very good chance that it may save you some time on your next project or research paper. However, before I sign off on this article there is one more thing that I want to share with you all. If you are an Emacs user (as I am) then it might be nice to have a dot-mode that allows you to edit *.dot files in Emacs with syntax highlighting and all. You can find the emacs lisp file here. Below is the line you need to add to your .bashrc file (if your using bash as your shell) if you want to be able to open *.dot files from Emacs.


(load-file "PATH_TO_FILE/graphviz-dot-mode.el")

That’s it, go out and download everything and give it a try. If nothing more, it is rather fun to play around with. In the meantime I’ll play around with Graphviz myself and see if I can’t put together a more in depth article for MacDevCenter.

Stick around for my next posting on Python documentation.

AddThis Social Bookmark Button

I have to start this post off with a quick apology for already breaking the blogging schedule that I had setup in my first posting. In it, I stated that I was going to try (notice the word “try”—rule No. 1: always leave yourself a way out) to maintain a weekly posting schedule. Well, here it is only my second blog posting and I am already falling behind schedule. I do have good reasons for this though. I haven’t been slacking off these past two weeks, but rather I have been putting the finishing touches on a brand new article for O’Reilly’s ONLamp website, which, by the way, I’m hoping you all will come and checkout as soon as it goes live. (Shameless plug alert!!!) The article is the first in what I hope will be a very entertaining and informative series on artificial intelligence programming with the Python programming language. In the first article in this series, I go over decision trees, a topic of machine learning in which the program learns—through a set of example data—how to classify records in a dataset. So, as soon as the article goes live, I’ll blog it here and give you all a chance to run on over to the ONLamp site and read up on decision trees.

So that’s what I’ve been working on for the past couple of weeks, but what about today? Well, in order to make it up to each of you for my most egregious disregard for schedule keeping, I thought I might try to make several posts today. First, there is this sad attempt at attrition in which I’ll also cover quickly a new tool that all you OS X / Unix lovers can use to make your DarwinPorts experience a little nicer. Following this, I have two posts that I have been working on for the past couple of days, that I plan on sharing with you all today. The first of these will go over a tool that I recently found while working on the aforementioned decision trees article. It’s called graphviz and it makes creating diagrams as easy as scripting. The second article is going to go over one of my favorite features of the Python programming language—its documentation. We’ll cover pydoc and docstrings and all of that fun stuff. It’ll be great, so make sure that you tune back in in the next few hours for each of these postings, or better yet, why not just subscribe to my RSS feed.

Now that I’ve gotten all of the apologies and previews out of the way, why don’t I go ahead and get to the point of this post. In my last post I quickly pointed out two very important applications that you’ll no doubt be using from time to time if you make a habit of following my blog closely, namely, the Fink and DarwinPorts projects. (By the way, if you missed my last post, and you’re interested in using either of these tools, make sure you check it out. It has links to two great MacDevCenter articles that will get you started in both of these programs.)

If you took the advice in my previous post and installed both of these programs, then one thing you’ll notice is the lack of a GUI for the DarwinPorts program. Fink comes with its own GUI, FinkCommander, however, DarwinPorts (at least to the best of my knowledge) comes with nothing more than a command line interface. Now, while I’m not dissing the beauty and efficacy of a CLI interface (far from it, I’m writing this post in Emacs from the Terminal application as we speak), I do realize that not everyone has the same appreciation for it that I do. So, I did a bit of digging around the ol’ interweb and came across a nicely designed Tcl/Tk based GUI entitled PortAuthority for the DarwinPorts application.

Installation of PortAuthority couldn’t be easier (well, I guess if somebody else installed it for you, or if supermodels were installing it…ok, tangent, let’s get back to PortAuthority, shall we?), just go to the PortAuthority website and click on the download link on the right side of the page. This will transport you to the project’s page on sourceforge. From there just download the zip’ed file and unzip it onto your computer. Inside the zip’ed file is a single binary that you can drag-and-drop into your Applications folder, and that’s it, you’re all done. Double click the application and get started with some downloads. If you’re using OS X 10.4 (Tiger) then this application should “just work”, since this edition of OS X comes with a fairly significant subset of Tcl/Tk for Aqua. If you happen to be on an earlier version however, you can download Tcl/Tk for Aqua here. Its a fairly easy install as well, since binary distributions of each with a familiar installer package can be found for, I believe, all of the former OS X renditions.

Ok, so I hope I’ve redeemed myself in each of your eyes. I have apologized and I’ve even come bearing gifts (well, just one gift really, but “I come bearing gift” doesn’t have the same ring to it). I hope you’ll all download the PortAuthority program and give it a try. Its quite nice, and best of all its Open Source. So, not only is it free to use, but you can also take a look at the code if you’re interested in learning any Tcl/Tk scripting, which is not a bad idea since this is an extremely portable, easy to use, and ubiquitous scripting/gui combination. So, enjoy the application, and I hope you’ll all come back in a few hours for my next posting on Graphviz.

See you then!!

Robert Daeley

AddThis Social Bookmark Button

In Is Mac gaming still a punchline? I mentioned that ‘there is some hope to be found in open-source games.’ Today I’m going to point out some of those bright spots. This isn’t an exhaustive list of open source games that work on Mac, just the ones I’ve had a chance to play and enjoy. I’d invite you to list other favorites in the comments.

A caveat: like many open-source projects, these are not as polished as would be commercial releases. On the other hand, if you have the programming stuff, you can make changes yourself. Also, if you’re not comfortable in X11 or on the command-line, you might want to stick to the for-money world for now.

#

Freeciv

Appropriately enough given the inspiration for my earlier post, the first game is Freeciv, a Civilization clone that has an old-school feel to it. If you’ve played Civ, you’ll be right at home in Freeciv. There’s also an active developer and player community, always a plus.

The project didn’t try to replicate an old Civ experience: they’ve actually one-upped the original by including multiplayer and alternate rulesets.

Warning: Freeciv is just as addictive as its inspiration. Do not start the game if you have anything else you need to get done over the next few days.

#

Scorched 3D

Video games with artillery pieces lobbing things at each other have been around since forever. Over the years, the concept has moved from arcade to console to home computers and back again. Entertaining examples on Mac: DomeWars and Treads of Fury. The long-time popular favorite, however, was the old DOS game Scorched Earth.

Nowadays we have the thoroughly awesome Scorched 3D, where multiple players (bots or online opponents) fire tons of different kinds of weapons at each other over destructible island landscapes, gorgeously rendered in OpenGL. If you’re going to have a bunch of destruction, it should be easy on the eyes. ;)

One tip: if you run it in windowed mode (as opposed to fullscreen), choose the ‘Invert mouse y axis’ option to get the cursor moving correctly.

#

TripleA

Back to the strategy genre and another title with board-game roots. Axis & Allies recreated WWII from an abstracted grand-strategy perspective, a casual family game rather than a hardcore simulation. (An official computer version was released a while back.)

TripleA is not technically a clone of Axis & Allies, but more of a ‘gaming framework’ that you can use to create all kinds of different game experiences, simple or complex. One of those is a re-creation of A&A. It is Java and fairly polished, but there are some glitches and strange behavior.

You can play locally, over a network, or (and I love the fact they added this) via play-by-email. They are working on an AI, but it was not enabled in the last stable version I tried (0.6.0.1).

#

Vega Strike

Do not download Vega Strike. Do not install and configure it. Whatever you do, do not launch it and begin playing. Do not buy and sell resources. Do not get involved in epic space battles. Do not warp from system to system, trying to avoid (or get involved in) the space-opera backdrop of conflict among a dozen different groups. Do not marvel at the gorgeous 3D graphics.

If you fail to follow my advice, you will be sucked into an endless cycle of enjoyment, from which there can be no escape.

Did I mention there’s a Star Trek mod under development? Don’t download that either.

Think of the children. Or, if you’re like me, and the ‘child’ is 18 and taking care of himself, think of the dog, who will be standing next to you whining pitifully for a walk. ;)

#

Given the popularity of the first-person shooter (FPS) genre in the commercial gaming industry, it’s no surprise there’s a lot of development happening in this arena (so to speak). I’ll just highlight three here, which are in various stages of development and quality.

Nexuiz

Networked deathmatch is what the developers are going for with Nexuiz, bringing it back to basics. They’re also intent on not requiring a high-end gaming rig to play, so that’s a definite high point. Checking out the screenshots, you can see they haven’t skimped on graphics quality.

Cube

Cube is intriguing as much for its engine as for its game play. From the website: ‘Cube is a landscape-style engine that pretends to be an indoor FPS engine, which combines very high precision dynamic occlusion culling with a form of geometric mipmapping on the whole world for dynamic LOD for configurable fps & graphic detail on most machines. Uses OpenGL & SDL.’ What that means for you is that they’re going for a good-looking environment to run around in, shooting stuff. This isn’t the latest Doom3-based crazy-graphical experience, but it’s fun for a distraction.

Wolfenstein: Enemy Territory

Wolfenstein: Enemy Territory is based in the Return to Castle Wolfenstein world. This isn’t an open-source title from what I can tell, but it is free and there’s an active 3rd-party developer community.

It’s a little confusing the various related websites and whatnot, but basically from the official site’s Flash interface, you can get info about Wolfenstein: Enemy Territory which is described as ‘a free stand-alone, downloadable multiplayer game in which players wage war as Axis or Allies in team-based combat.’ W:ET is developed by Splash Damage. There’s also the players Resource site.

#

FlightGear

Finally, there’s a game in a genre that has a special place in my heart: FlightGear, a flight sim. This is rough around the edges, and you’ll be challenged getting used to everything, but there is great potential here. Considering how much commercial alternatives cost, slack can be given with relative ease. ;)

Do you have your own favorites? Is open-source worth the trouble? What’s your take?

Matthew Russell

AddThis Social Bookmark Button

Related link: http://www.apple.com/macosx/features/spotlight/

I don’t know about you, but after having Tiger for many months now, I can say without a doubt that Spotlight is my favorite feature. It changes the way I do my work, and a while back, I wrote an article on how it can really shave some time off of your daily grind. My dependence on it has continued to grow steadily since then, and I’ve especially come to appreciate the productivity I gain by using it to look up bookmarks. It’s indispensable during research, and for that matter, I don’t even bother hierarchically organizing bookmarks anymore.

Like many of you, however, I often switch back and forth between several different browsers — mostly Safari, Firefox, and Camino — and along the way, I’ve noticed that Firefox (as of 1.5 beta 2) still isn’t making its bookmarks searchable. Of course, can use a workaround, but I find this rather annoying and disappointing, so I just started working on Bug 293323 to get Spotlight integrated into Firefox. Hopefully it’ll come to closure soon.

And since we’re talking about bookmarks, it looks like .Mac makes a pretty good sidekick to Spotlight. I tote my PowerBook around everywhere I go, so I don’t experience many of the .Mac frustrations that I so often hear about, but as I understand it, the iDisk is continuing to be a real crowd pleaser. Safari can automatically sync bookmarks with .Mac, and there’s a Firefox plugin that can export them to the iDisk for you, but unfortunately, Camino is still lagging behind a bit. It looks like the best way to work out Camino’s shortcoming (for now) is to export your bookmarks as a webpage via the Edit menu and manually save them to the iDisk. Heck, this is an easy one to knock out, so I figured I’d go ahead and crank on it, Bug 228123, as well. I’d like to see Camino continue to fight the good fight. And besides, you gotta do your civic duties, and I’d rather lay down code than pick up cans on the side of the road any old day of the week. But that’s just me.

Is Spotlight and/or .Mac changing the way you work? What apps do you use that could make better use of them?

Matthew Russell

AddThis Social Bookmark Button

Related link: http://www.pcpro.co.uk/news/79223/creative-warns-of-christmas-mp3-player-shortag…

Normally, I try to post about topics that have contemplative intellectual value of some form or another, rather than just ramble out personal commentary. This time I couldn’t resist being a commentator, although there is definitely a thing or two that must be pondered here.

You know those experiences where every once in a while you run across a webpage and you just think to yourself, “Is this for real?” Well, I just had one of those, and here it is. It’s a news blurb where the CEO of Creative makes some pretty pathetic excuses about how they’re going to run short on their 1GB flash MP3 players around the holidays — and it’s all because Apple is hogging up the market.

Umm. Does anybody see anything wrong with that logic? Let’s see if we can make it a bit clearer in case you missed it the first time through:

if Creative can’t stay competitive then
   Whine, complain, and blame it on Apple // ?!?

Oh, and I guess it’s worth mentioning that this activity took place amid a conference where Creative announced a bigger than expected loss. What message exactly does this send to the shareholders? To just go ahead and invest in Apple (who will apparently be doing quite well over the holidays) until Creative can get its act together? If I owned any Creative stock (Nasdaq: CREAF), I’d be pretty ticked right now.

Here’s a couple of interesting quotes from the story. They’re from the Chairman and CEO of Creative himself, Sim Wong Hoo:

Industry demand for high-capacity flash memory currently outstrips supply and this will impact availability of our 1GB flash MP3 players for the holiday quarter…The shortage of flash memory … is primarily a result of a special deal that Apple has secured from a key supplier

Excuse me? Isn’t a “special deal” the kind of leverage that makes or breaks a company when it comes to supply and demand? Apparently, what this means is that people who would otherwise (possibly) be buying Creative MP3 players won’t be able to, because they just won’t be available. Maybe it’s just me, but I don’t see their players going on eBay for hundreds of dollars because of a shortage spawned by a “special deal.” Rather, they’re just going to have a particular part of their body handed to them and Apple is going to continue scoring big. Here’s the way I see it:

if Creative has less players in the store then
   Apple probably makes more money // fine by me

Would Steve get up on stage and whine like that, or would he make things happen? Or at least cleverly divert our attention by pushing another product for a while instead? Probably neither of those things: he would have used his uncanny ability to deliver and would have secured a “special deal” to make sure that Apple didn’t get into this predicament. Oh, wait a minute — he actually did that already! Whew, and to think I was getting concerned for a moment.

Thus saith Sim Wong Hoo once more:
…a number of competitors in the MP3 space have been forced out of the market because of the competitive pressure that Apple is applying.

Hmm. That’s deep. I could spend the next hour or two trying to unravel the mystery behind it, but I’d rather hear from you.

Am I being a bit harsh here, or should a chairman be derailed for making public comments like that?

Chris Adamson

AddThis Social Bookmark Button

Related link: http://money.cnn.com/2005/10/20/technology/hp.reut/index.htm

The Blu-Ray versus HD-DVD war is spilling over into nearby fields, including Java, thanks to the fact that Blu-Ray uses Java to provide its interactive features. Consider the following quote from an article from EE Times, in which HP’s general manager for personal storage says HP compared Blu-Ray Java to the Microsoft-created iHD interactive standard in the HD-DVD and “found Java in Blu-ray was much more mature and robust with complete test suites. In contrast, we found many holes in Microsoft’s proprietary iHD.”

Then tell me how it is that last week, HP called for Blu-Ray to adopt iHD?

If you want to stop here for a quick recap, a good source for information on the Java spec for Blu-Ray, BD-J, is the JavaOne 2005 session “Java Technology Goes to the Movies: Java Technology in Next-
Generation Optical Disc Formats”, which is available from JavaOne Online. BD-J is a J2ME Personal Basis Profile with API’s borrowed from interactive television (DVB with the broadcast stuff taken out), HAVI (for a consumer electronics oriented GUI), plus the previously-moribund JavaTV API (for the concept of an Xlet) and Java Media Framework (for reasons unstated… perhaps pity). The resulting platform claims to offer deep programmability, including layering of graphics, video, and background, synchronization with video (either in a tight frame-accurate style or a looser callback scheme), and more.

Details on iHD have been somewhat harder to come by. I did find a general description in the article HP requests feature additions to Blu-ray disc technology, in which Microsoft’s director of technology strategy for Windows Digital Media says the idea behind iHD is to “use Web-like tools such as XML, and that would make it very easy for a creative person that did not need to be a software programmer, to be able to create interactivity menus and applications for optical media,” adding “the vast majority of studios prefer iHD over BDJ, because it’s easier to author, you can have your creative people involved, it’s cheaper, [and] it’s got all these benefits.”

OK, seriously, we’re still comparing markup and executable languages? This is like saying that HTML is better than C because it’s easier.

Oh, I know, context: easier for the content developer. No kidding. As the JavaOne session says: “Most content will probably be written with high-level tools” and that “opportunities exist in tool building”. Clearly, the expectation is that simple markup environments can and will be written on top of BD-J, quite possibly including iHD, but the fact that the standard is the executable allows these environments to compete, and doesn’t close the door on functionality advancements. The interactivity can get better as developers discover new ways to exploit BD-J. Plus, nobody’s writing “bonus” games for the kids with a markup language, at least not one that will be interesting for more than two minutes.

The big picture is that this remains a consumer electronics versus PC’s battle and the consumer electronics side is winning. Forrester says Blu-Ray will win, and Warner Bros adopted Blu-Ray and joined its board last week. Blu-ray certainly has immense advantages, not the least of which is the fact that it will be on the PlayStation 3, set to launch early next year. The PS3 makes the scenario more interesting by including internet connectivity as standard equipment — internet connectivity is part of the BD-J spec, and if Sony’s implementation chooses to implement it, then there are tremendous opportunities for fundamentally new kinds of content, with material available and updated even after the disc is stamped and sold, to say nothing of e-commerce plays (every movie can have its own online store, accessed from the disc).

By the way, if you’ve heard this from me before, it’s because I was advocating using Java as a home theater technology a few O’Reilly Conferences ago, in a session called Why Mac Users Hate Java.

One thing that bugs me is that I haven’t found how to get started with BD-J. Consumer electronics devices aren’t the most open thing in the world to begin with, so maybe it’s not surprising that you can’t just get an SDK from www.blu-ray.com and start coding with your J2ME environment of choice, emulating the player until real hardware and burners are generally available. It’s possible this is a pay-to-play scenario, to keep the platform limited to the expected players (movie studios and other content developers); I simply don’t know. Still, it would be tremendously interesting to see how far you could take Blu-ray as a general-purpose J2ME application delivery environment, something that some talkbacks to one of my java.net blogs called for.

By the way, would anyone be interested in a series of blogs in which I try to get the needed tools and develop BD-J software?

Robert Daeley

AddThis Social Bookmark Button

The irony of today’s Aspyr release date announcements is pretty apparent. What was announced? Civilization III: Complete for Macintosh will be released in December, while the highly anticipated Civilization IV is coming in ‘early 2006′. I know this thanks to a press release on MacNN, not (at least as of this writing) due to any notification on the Aspyr website.

Why is this ironic? Well, mostly because Windows-using friends of mine got their copies of Civ IV today.

Now, there’s nothing new about the sad state of Mac gaming. It has been a punchline for a long time now, and one of the biggest talking points Windows users love to throw in our faces (also one-button mice, but never mind that). Mac gaming, to use the technical industry insider term, bites.

Looking at the What’s New In Mac page for Aspyr.com, the five featured ‘new’ games at the top of the page are (with their accompanying real release dates in the rest of the computing world, according to gamespot.com):

* The Sims 2 (2004)
* Stubbs the Zombie (2005)
* Sim City 4 (2003)
* Doom 3 (2004)
* Tiger Woods PGA Tour 2005 (2004)

Stubbs is only out for Xbox at the moment, so there’s an actual new one. Oh, and Tiger Woods PGA Tour 2006 was released last month, by the way.

Not to pick on Aspyr too much, but again, nothing new here. It is saddening for someone who remembers the heady days of Marathon, the original SimCity… heck, The Ancient Art of War was the very first Mac program I ever used back in 1985. Saddening, but not news.

Nowadays, I’m probably more likely to pick up a Playstation 2 controller if I want to play a ‘modern’ game. It’s just pragmatism, really, after years of trotting out the old ‘At least we have the big games, even if they are 6 months late!’ argument. Mac gaming might have the quality games (although even that is arguable), but quantity-wise, there is no comparison.

There is some hope to be found in open-source games, but not for the latest greatest. And of course there are individual titles here and there that are joyfully Mac-only, but not like the envy-inducing Marathon days. (A side note, which would you rather have had released this year: a Doom movie, or a Marathon movie? Well, there’s always Halo. ;)

Sure, we could make the point that the lack of games means we can be way more productive sans distraction, but what do y’all think? Can Mac gaming be resurrected? Is it really that big of a deal? Isn’t gaming a barometer for the health of a computing platform?

What’s your take? Sticking with Sim City 4? Or does the Windows gaming aisle call you with its siren song?

AddThis Social Bookmark Button

Seems like there is a buzz in the air these days about the demise of Java. Two recent examples include Marc Andreessen’s comments on how Java has acquired all the issues that its predecessors have and how PHP will take the lead away from Java in the not so distant future and Bruce Tate’s recent OnJava article on specific places where Java is losing ground to other languages.

So is Java on the way out ? I hope not, because I believe that fundamentally Java is a great language, but Java does have some real problems. I think the root cause of most of the problems is Java’s enormous scope and complexity.

A couple of months ago, after reading all sorts of articles on Ruby and Ruby on Rails, I decided that I would try them out. My goal was not to create some epic program, just to get something working that gave me an idea of what Ruby was all about. I started by downloading and installing Ruby (not realizing that it was included in OS X) and some libraries, then I downloaded and installed Ruby on Rails, then I found an article at OnLamp.com and used it to create my first Ruby on Rails application. Total time from the first download to the program working, including setting up the database, was somewhere between an hour and an hour and a half. Not too bad, from my point of view that is just about the right amount of time a developer should be willing to dedicate to going from no knowledge to having a simple working demo. The same thing in PHP might not have been as easy to code, but the setup would have only 10-15 minutes, giving me more than an hour to code up an example

How long would that whole process take in Java? Just think of all the steps involved: downloading and installing the JDK, figuring out to use Tomcat (or some other servlet engine), installing Tomcat, getting the JDBC driver, setting up the JDBC driver, deciding how to do the database queries (either through your own code or with Hibernate or some other package) — then assuming I didn’t go off shaving yacks, I would finally be ready to sit down and write code.

Think about this: Java is so complex that new OS X versions come out months after the Windows and Solaris versions and needs to be compiled and optimized by Apple, not Sun.

What’s worse for all this complexity, we don’t even get :

  • a basic scripting language
  • a built in, simple web server
  • a built in, simple servlet container
  • a built in build tool

Sure all of these things exist in the greater Java community (Groovy, Jigsaw, Tomcat and Ant respectively, for example) but since a large amount of Java’s installed base is developing web apps, why does Sun keep adding marginally useful Swing widgets instead of trying to include things that developers might actually use ?

What does Java need to do to get it’s act together ?

Tom Bridge

AddThis Social Bookmark Button

Related link: http://www.flickr.com/do/more

I’ve been a .Mac member since the iTools days, when space was free and email was plentiful. At the time, it was a great service that interoperated well with all Macs, and gave Mac users a chance to store their photos in striking galleries, build cool webpages and have a neat, short email address.

But then came Flickr, which took care of all my hosting needs, with more space than I could shake a stick, or my Canon 10D, at. For a quarter of the price. Now, I can’t make pretty webpages, and I can’t mount my flickr storage on my desktop, nor can I get email, but wow, what an improvement over the .Mac photo gallery. With Fraser Speirs’ FlickrExport, I sure can’t see a difference in the interoperation of the .Mac service versus the Flickr service.

Now, Flickr’s doing things that even iPhoto can’t do, allowing you to make DVD slideshows without a DVD drive, turn your photos into (expensive) stamps or turn Target into a 1 hour photo place for your prints. What’s best about the whole thing is that flickr has free accounts with full access to all these features. And $25 buys you twice the space for photos than a .Mac account, at a quarter the price. {Note after the fact: $25 buys you 24GB of photo uploads per year, with an unlimited amount of storage. Meaning you can literally keep adding 24GB of photos a year to your flickr account. Try doing that with .Mac!}

The problem here is that with the exception of data-syncing, .Mac is a the same service it was in the late 1990s, and that’s concerning. If I wasn’t so dependent on my mac.com email address, I might well be looking elsewhere for email services and relying on flickr for the rest of what I use .Mac for. How can .Mac improve as Flickr has in order to keep your business?

Flickr or .Mac?

Daniel H. Steinberg

AddThis Social Bookmark Button

Related link: http://java.sun.com/developer/technicalArticles/Interviews/kluyt_qa.html

Jan Heiss interviewed Onno Kluyt, senior director and chair of the JCP on Sun’s site in an article titled Ensuring Speed and Openness at the Java Community Process. I was at EuroOSCON at the time enjoying Onno’s home country and have only now gotten a chance to read the interview carefully.

Onno begins by addressing what he considers to be the misconception that JCP standardization is slow. He says that from February 2000 until today the JCP has delivered three versions of J2EE with a fourth expected by the first half of next year. Onno counters “In that same period Microsoft still has to get around to delivering Longhorn.”

I’m baffled.

Why is that a counter argument to the speed or lack thereof of the JCP. He could equally have said “In that same period Apple has delivered five versions of Mac OS X and four versions of Mac OS X server.” But that would be no more relevant. J2EE is not an operating system. He could just as well have said “In that same period GM has delivered five lines of cars” or “the price of gas has doubled”. None of these address whether or not the JCP is slow.

Further, the fact that there are regular releases of J2SE and J2EE is not really the complaint with the speed of the JCP. The complaint is how long it takes features to make it into a release. Onno answers this with the statistic that “In the first three years of the JCP’s existence, JSRs took 100 to 150 days longer to complete than JSRs that were started in the last three years.” That’s a wide range 100 to 150 days - and what is the average time to completion now?

I’m not saying Onno’s job is easy. There are a lot of JSRs that are never completed and there are JSRs which are mired in politics. I just don’t think that this addresses the issue of standardization being slow. The traditional complaint is that we build a JSR before we have working code. We don’t often take something that’s working and build a spec around it. Imagine what we’d have if Spring or Hibernate had to go through the JCP before being released.

Onno then addresses sources of FUD around the JCP. His answer concludes, “When a company outside the Java ecology tries to confuse its audience about Java technology and the JCP, that is expected. But for companies that benefit from this ecology, it’s disappointing when they only manage to find negativity.” I’d love to know who he’s calling out here.

At JavaOne 2004 there was a panel on the JCP where very serious issues were raised. I give Sun a lot of credit for hosting this discussion at their developer conference, but it was clear that individual members, corporate members, and non-members all had concerns with the JCP. I thought it was healthy for the community that these were raised in a public forum and have been heartened that many of them were addressed. There may be some companies that fall into the “negativity” category, but I think most members are more interested in improving the entity to which they belong.

Slow or no?

Francois Joseph de Kermadec

AddThis Social Bookmark Button

Since it was introduced, iSync has been the iTunes of the office world: millions of users entrusted it with precious data, used it on a daily basis and marveled at its ability to leave manufacturer-provided applications in the dust. Sure, iSync had its occasional fits but, all in all, it turned out to be a great companion, a faithful assistant, standing at our side daily.

From day one, the iSync interface has struck everyone by its awesome simplicity and the Apple website became full of brushed-metal buttons,

à la

iSync, to signify an area of brushed metal bliss was upon us.

With the release of Tiger however, brushed metal was politely kicked in parts that shall remain nameless on the O’Reilly Network and iSync was thanked for its hard work: .Mac synchronization was removed from its interface, iTunes took over iPod synchronization and the whole synchronizing thing went haywire.

Providing users with seamless web based synchronization is a good idea and a sound feature, for sure: go into your web browser, click on a button and poof, your bookmarks are synced with a remote computer. Open Address Book and boom, your contacts fly all by themselves to the phone nearby.

This, however, is nowhere near where we stand today. As far as I can tell, almost only Apple applications master the art of synchronizing and developers don’t seem overly hot on the idea to build new preferences for that stuff to take place. Now, I don’t really blame them given synchronization is tied into .Mac, an excellent but only mildly popular service. Is that a bad thing? Not necessarily as it has the advantage of providing users with a standard “landing ground” for data, so to speak, and alleviates much administrative pressure. It means however that until Apple can attract almost all its Mac OS X users to .Mac and provides assurances regarding the security of transfers to the .Mac servers, there will be little incentive to provide such a feature.

With synchronization out of iSync’s dying walls, things are at times highly confusing. Remind me why Safari attempts to connect to configuration.apple.com every time I toy around preferences while the .Mac preferences pane does just the same? Do I really need two interfaces to the same feature? Worse, should I not be interested in synchronizing anything, do I really need to see the same empty box twice?

I’m sure Apple has great plans for synchronization and that they should soon bear fruits. In the meantime however, we’re all a bit stuck into the gray area of transition.

iSync, I miss you already.

Todd Ogasawara

AddThis Social Bookmark Button

image


There are two welcome changes for 5th generation iPod (nano and video) owners.
(1) nano and video iPods show a blue dot next to podcast “artists” with unplayed podcasts.
(2) Podcast is a top level category under Music (although it is still listed inside of Genre too).


Gotta give credit where credit is due.
I noticed change number 2 after the last couple of updates for Tiger and the iPod.
But, I did not notice the blue dots at all.
I read about it on
The Unofficial Apple Weblog: 5G iPod treats Podcasts like iTunes

Any other as-yet little known iPod UI tips and tricks for 5th generation iPods?

Giles Turnbull

AddThis Social Bookmark Button

David Weinberger’s Point. Shoot. Kiss it goodbye is a wonderful essay on the fundamental problem of digital photography.

Digicams make everything so quick, so easy, that we all go a little crazy. We take hundreds, thousands of snaps and actually look at, or make use of, a tiny fraction of them. We’re filling hard disks with gigabytes of pictures, and we have no idea of what’s there and whether it deserves to stay. If you could find all the bad pictures, all the useless ones that you’re never going to use again, wouldn’t it be nice to dump them and free up some space?

Sure, some people are organised enough, and have the spare time to devote to keeping their photo collections under control. You can get hold of apps and plugins like Keyword Assistant which makes adding tags a breeze, but that still requires you to devote the time to sit down and do the tagging.

I believe there’s plenty of people - myself included - who are too lazy or too busy to sit down for hours at a time, tagging or otherwise organizing their photo collection, no matter what software they use to do it. We need something that fits in with the way we work.

So here’s my idea. Let’s call it Tagnag.

It’s an app, or a utility, or an iPhoto plugin. It works by interrupting you at a time interval you set in the prefs - every five minutes, every two hours, once a week, whatever - and showing you a photo from your archive. Under the photo is a blank text field and a line of instructions saying: “This photo has no tags. Please enter some now; or hit Command+Delete to remove the photo from your archive.”

All the user has to do is bang in some tags (names, places, anything meaningful to them) and hit Enter, and the Tagnag window disappears, making changes to your iPhoto/iView Multimedia/A.N. Other Photo Manager App database in the background. You’re free to carry on with your work.

OK so it will take a while to go through a collection of thousands of photos, but the idea is that this approach is flexible and fits in with your other tasks, in a manner that suits you. If you find yourself sitting in an airport with nothing constructive to do, you’d be able to engage Tagnag’s “Turbo” mode and zip through 50 or more photos one after the other.

Did somebody say Lazyweb?

Chris Adamson

AddThis Social Bookmark Button

So, there are new PowerBooks and new dual-core PowerMacs. Nice.

But I don’t think I’d buy one right now.

OK, sure, the politically correct thing to say is that “if you need a computer now, go get one”, “all products are vapor until they ship”, etc. But given the Intel transition, is that really a good idea?

The key is probably: how soon will it be until new stuff that you want won’t run on your PowerPC Mac? Here’s how I’m teasing out this logic: at WWDC 2005, we were promised a look at Leopard (Mac OS X 10.5) at WWDC 2006, which is next Spring or Summer. There’s usually a lag between unveiling an OS to developers and shipping it, so the developers can learn and use the new features. Add 6-12 months to the Leopard preview and we probably don’t expect Leopard until, what, late 2006 or (more likely) sometime in 2007. Intel Macs are supposed to ship in mid 2006, so clearly some future version of Tiger will support them, as will Leopard.

Apple said with the release of Tiger that the timeframe between major OS releases would slow down, so when do we expect to see Leopard’s successor? If Tiger shipped in 2004 and Leopard is in 2007, then maybe Mac OS X 10.6 ships around 2010 or so. That’s four years after the Intel switch.

And therein is the big question: will the PowerPC’s be sufficiently old by that point to justify not supporting them in OS X 10.6? There’s a big cost to having dual-platform code: everything has to be compiled for and tested on two different architectures. At an Apple BoF at JavaOne 2005, the Apple guys said they were a little concerned about how they’d now need to support six Java runtimes: Java 1.3.1, 1.4.2 and 5.0 for PowerPC, and 1.4.2, and two different HotSpot VM’s for 5.0 on Intel. Oh, and Mustang (Java 6.0) ships in Summer 2006, so add two more, one each for PowerPC and Intel. Multiply this line of thinking across all the major libraries and frameworks — Quartz, OpenGL, QuickTime, Core *, Cocoa, Carbon, AppKit, etc. — and supporting those four-year-old boxes may start to look like something of a luxury.

So, I suspect that Leopard is the end of the line for PowerPC, and that 10.6 will be Intel-only. That means you are buying into a four-year dead-end on PowerPC. Is that OK? A lot of professionals and business types figure that computers have a three- to four-year expectancy of usefulness, so maybe that’s OK. In the home realm, I think people are more careful with their money and expect their computers to last longer (even if they do upgrade this frequently, I’m not sure people really realize that they do).

My brother asked me recently if he should upgrade his ancient iBook now. Knowing the terrible performance of the Apple laptop line — notice that the new PowerBooks didn’t get any faster in the latest rev — I said he’d be much better off toughing it out until the laptops go Intel. The crazy fast desktops may be a different story, but I still think you have to admit to yourself that you’re buying four years of Mac, and amortize appropriately.

This is where you flame me for telling people that they shouldn’t buy Macs now.

Daniel H. Steinberg

AddThis Social Bookmark Button

Related link: http://www.macdevcenter.com/pub/a/mac/2005/10/10/how-to-podcast.html

In
How to Record a Podcast Interview
, Glenn Fleishman shows you some nifty tricks for recording your audio, especially if you want to capture phone interviews for syndication. His toolkit includes Soundflower, Skype, Audio Hijack Pro, Audion, and a USB headset.

Daniel H. Steinberg

AddThis Social Bookmark Button

Related link: http://venture.blogs.com/vb/2005/10/web_20.html

David Hornik wandered around the Web 2.0 conference asking various attendees “What is Web 2.0″. Hornik’s Web 2.0 blog entry lists those interviewed as ” Caterina Fake, Toni Schneider, Ross Mayfield, Stewart Butterfield, Joshua Schachter, Anil Dash, James Joaquin, Evan Williams, and many more”. He has edited the various answers together along with a jingle and an intro that he recorded on the drive into the conference. Download What is Web 2.0 (time 10:46, 7.9 MB)

Daniel H. Steinberg

AddThis Social Bookmark Button

Related link: http://www.itconversations.com/shows/detail452.html

ITConversations has posted a podcast of Gary Flake: Yahoo Research Labs from the O’Reilly ETech 2005 conference. At the time of this talk, Dr. Gary Flake was Director of Yahoo!s Research Lab, and he discusses the philosophy behind the Research Lab. He also demonstrates some of the new tools being developed a Yahoo!, including a collaborative prediction system (with prizes!) in which you can participate. The MP3 runs 17:25 and is 8 mb.

Robert Daeley

AddThis Social Bookmark Button

In a recent entry — Full Screen Text Editing — I looked into the options for creating a writing environment that encompassed the entire screen, hearkening back to halcyon text editing days. Here’s a followup on a couple of items in that article.

I mentioned that apparently Tiger had removed the ability to use >console as a login name and thus bypass the OS X GUI. A commenter said that it worked on their installation, and with a little investigation it seems as if that on clean Tiger system, i.e. not a Panther one updated to 10.4 like mine, this does still work.

At the end, I wrote about trying to get the minimalistic ratpoison window manager working in X11. Since then, I came across another WM that seems to fit the same bill, and with the added bonus of compiling without errors, at least on my test system. The Ion window manager (despite being in fink unstable as an older version) is built from the ground up with the keyboard user in mind. This offers an alternate route to investigate for those who want to achieve a similar experience.

Another option that is available without a bunch of additional installation is using screen, the familiar terminal-based WM, which can actually divide up a single Terminal window into multiple regions simultaneously. Of course, you’re foregoing finer GUI living ;) but that does have its advantages if you’re trying to get a bunch of writing done.

Tom Bridge

AddThis Social Bookmark Button

Related link: http://chuck.goolsbee.org/archives/14

I love my Keychains. I have two: my really, really secure one, and my normal every day one. My normal contains my passwords for things like my blogs, logins for the New York Times and Washington Post, and various other trivial passwords that I’m supposed to remember on a whim. My email and several other more critical things, like my bank logins and whatnot, remain hidden and secure in my sooper sekrit keychain. My friend Chuck discovered an infuriating behavior in OS X Tiger this week that makes me wonder about the security of the keychain feature:

On a whim, in MacOS X 10.4, because I was tired of my old login passwd, I changed it. No biggie, right?

I was presented with a dialog, basically saying “Your keychain password has also been changed.” …huh?

Bahhhh!!! No! I didn’t want that!

What’s worse is that he can’t change it back. Like my simple keychain, his simple keychain password is engrained in muscle memory. Unlike my simple keychain, his simple keychain password is short, and so Apple won’t accept it. The purpose of the keychain system is to allow many keychains with varying degrees of security, and increasingly difficult passwords. Is there a way that Chuck can go back to using his short, but secure, password?

Keychain Woes? Share on.

Giles Turnbull

AddThis Social Bookmark Button

INT. DAY.

A TYPICAL CORPORATE MEETING ROOM

A large oval table surrounded by people.

They’re a mixture. Programming dudes. Marketing dudes. Sales dudes.

They’re all looking at a MYSTERIOUS DUDE, hidden from view behind us.

MYSTERIOUS DUDE
Whatcha got for me, guys?

1ST DUDE
New iPods, boss! Triangular! Here!

1st Dude tosses a plastic gadget across the room. A hand flicks up in front of the camera and catches it, SNAP! Like that. The hand pulls down, clutching the gadget like a claw.

(Beat)

MYSTERIOUS DUDE
I hate it.

F/X: Sound of something hitting a trash can.

MYSTERIOUS DUDE
Next.

2ND DUDE
Uh, we got some new UI mockups for Leopard. No borders - that’s sure to go down well. And a new skin we’re calling “Brushed Purple.”

(Beat)

MYSTERIOUS DUDE
Get out of here.

2ND DUDE
But -

MYSTERIOUS DUDE
Does purple say ‘cool’? Does purple say ’success’? Does purple say ‘Look at me, everyone, I’m a Mac user’? Does it? Huh?

Collective mutterings: “Nossir,” “Right on,” “You got it,” “The man’s got a point there.”

2nd Dude’s chair scratches across the floor. His face hangs down, shamed. He moves to stand up.

MYSTERIOUS DUDE
Purple. Purple. That’s the most ridiculous thing I ever heard.

2nd Dude starts to move away from the table.

MYSTERIOUS DUDE
Wait a minute.

2nd Dude lifts his head. His face a picture of misery.

MYSTERIOUS DUDE
You said something about no borders?

2ND DUDE
Uhhh - yeah.

MYSTERIOUS DUDE
I like that. That will go down well. And what are the corners like?

2ND DUDE
The corners? Well, uh, they’re like the old corners. Ya know, kinda rounded.

MYSTERIOUS DUDE
Pfft. Rounded’s out. Don’t you use iTunes anymore? Gimmie squarer corners. Ditch the purple, and gimmie squarer corners. You got that? Squarer!

We momentarily zoom in on 2nd Dude’s face, which is slowly brightening into a smile.

Then suddenly cut to Mysterious Dude, whose identity is now clear, even though he is silhouetted by a brightly-lit Mac desktop projected on the wall behind him. The Flurry screensaver is running, and it appears that the moving curves of light are coming right out the top of Mysterious Dude’s head. Like he’s a genius or something. The very air around him crackles like a force-field.

We zoom in on the scr