Saturday, February 9

My C4[1] Talk...

Mr. Rentczchxh has posted my talk from C4, and if you would enjoy watching a talk without paying, you can watch it. It's on hype, and how I generate it, but it also touches on other topics concerning having your own software company, like making good software, bundling, getting into stores, having sex with cylons, &c.

Watch it!

Or don't.

Labels: , , , ,

Tuesday, January 15

MacBook Air Haters: Suck My Dick

I thought of a lot of titles for this post, but, really, the first one that came to me seems the best.

I've read nothing but whining about the MacBook Air on Mac news sites since it came out this morning. Honestly, I just want to shake these people. Not, like, shake some sense into them, but shake them like you're not supposed to shake a baby.

The criticism all basically goes like this: "It's not like a MacBook Pro!"

No, really? Seriously? I mean, they introduced this new product, and it doesn't have the same specs as the MacBook Pro? God, that is bizarre. I wonder why they gave it a new name, and continue to sell the MacBook Pro, then, if it's not going to be exactly the same. I mean, that hardly makes sense, does it?

Ok, fine, there are some people who want, like, an extra battery Pack. But let's admit amongst ourselves that the overwhelming majority of people out there have never pulled the battery out of their existing laptops, and didn't even know or care that it comes out. In fact, if something goes wrong with their battery, this majority -- whom we'll call "NORMAL PEOPLE" for convenience -- will just take the damn machine to the store and get it fixed, whether it's user-serviceable or not. Because we don't want to hassle with it.

And there are people out there who do video editing on their MacBooks and want FireWire. Great! I respect your choice! You should buy a MacBook! It's an awesome machine! If you want to do that! Which I don't!

I've read journalists complain that you can't get at the hard drive in the MacBook Air. What? I have no fucking idea where the hard drive is in my MacBook Pro, and even if you drew me a damn diagram with labels and numbers and gave me a replacement drive I wouldn't open my machine even in exchange for a year with Zooey Deschanel. Ok, yes I would, but you get my point. I'm sorry, Zooey, I didn't mean it, baby.

Some journalists get so close to the truth it hurts, yet miss the large print. "OMG! The unit is all sealed and self-contained like the iPod!"

Yes... the iPod. That huge failure. Also, the iPhone. Stunning disappointment that it was. I mean, jeebus, why would Apple make ANOTHER device incredibly simple? Clearly the market has spoken, and it wants tons of ports and screws and geegaws and flippers... no, wait, no it doesn't.

You guys are TECHNOLOGY JOURNALISTS. You are GEAR HEADS. There is no shame in this, but, come on, recognize that what you think is cool is NOT what my mom thinks is cool, or what an executive thinks is cool, or what a lawyer who just wants to write a deposition on her laptop thinks is cool.

I'm a programmer. I just want a machine I can write software on. Once, I loved gadgets, too, but now I really just want a gadget that (a) works, and (b) is beautiful and easy-to-use. Sure, my iPhone doesn't have as many raw features as my lawyer's Blackberry + RAZR combined (she carries both). But I understand my iPhone, and I don't have to learn it, because it's learned me. I can take a photo in three seconds, and so can she (we tested) even though she'd never seen an iPhone before.

I'm not the freak, here. In this one instance. I'm with the majority. All software developers should be hailing the advent of the computer-as-appliance, because it means we'll be reaching into markets that are afraid of self-service machines.

I can't take apart my Kitchenaid blender. If they come out with a new motor, I'm screwed. It's not upgradeable! And when the motor blows (as it DID... grrr), I have to send it back. I can't take apart my car. When Lotus came out with a bolt-on supercharger, I had to (gasp) take it to the dealer to have it put in. Somehow I survived.

I don't buy a laptop because I want to replace its drive in a year. I buy it because it seems great and meets my needs today. If my needs magically morph over the coming year, I guess I'll sell it on eBay. Or pay Apple to throw in a different drive, or something. Honestly, I think we need to admit that just because machines get faster every year, doesn't mean that the majority of people need faster machines.

In two weeks I'll be writing Delicious Library 2 on a MacBook Air, every day. Because it's simple and beautiful, and I crave those things.

And all you haters can... well, buy one in six months, when you realize how nice it is.

--

Update 2/4/2008: My MacBook Air with 2GB of RAM and 1.8 GHz cores and the SSD compiles Delicious Library 2 from scratch in 1:59.4. My MacBook Pro with 3GB of RAM and 2.3GHz cores and an HD compile it in... 2:04.3.

MacBook Air FTW.

Labels: , ,

Monday, August 21

Boot Camp of the future...

At the non-non-disclosed WWDC keynote this year, Steve Jobs said Boot Camp will ship as part of Leopard, and it'll be friendlier. Apple has also publicly said in the past that it won't be selling Window pre-bundled on its machines. So, how can they make Boot Camp friendlier, if they won't just, say, do all the work for you, ahead of time?

The friendliest way I can think of is, while you're running Boot Camp and still inside Mac OS X, it should ask you to pop in your Windows CD and Boot Camp installs Windows for you. Then, you reboot, and voila: Windows. (Which is kind of like saying: "Voila: Shit sandwich!")

Is this possible? Well, yes, I think so.

Right now Boot Camp allows you to sort-of repartition your boot drive while you are using it without losing any data, which is really cool and is something us PowerPC types have wanted for years (and still want, hint hint, Bertrand). I say "sort-of" because the partition it creates isn't formatted and isn't formattable by Disk Utility, either (you can select the partition but all the buttons are grayed out). I reckon this is because of EFI mumble mumble blah blah I honestly have no idea.

But here's what I think:I think it's possible to just go ahead and format that partition as a real Windows (FAT) volume from within Mac OS X. I'm pretty darn sure of this because, well, you can format floppies or CDs or external USB or Firewire drives in Window format(s). FAT's a pretty known science by now.

So, imagine Boot Camp formats that new partition in a nice, Windows-friendly way, then unpacks the relevant files from your Windows CD onto this new partition, and then copies its special drivers into their known locations, all from the comfort of Mac OS X. Voila! Bootable Windows! With no stupid hassles!

Now, this actually may be a bit more complicated for Apple than I make it out to be, because it may be that the unpacking of all that Windows crud is actually pretty involved. Apple could cheat a little since they know the exact configuration of the machine that WIndows is going on, but, it still might be hard. Honestly, I know little to dick-all about how Windows installation works. I'm happy in this ignorance, the way some people are happy believing that global warming is a giant hoax put on by greedy environmentalists who stand to profit by... uh... wait, environmentalists don't really make a lot of money, do they? I mean, not compared to, say, oil companies... but I digress...

Anyhow, even if actually installing windows is too complicated, there's a slightly-less-cool solution -- Boot Camp could just copy the Windows install CD verbatim onto a subdirectory in the new partition it makes (into, say, c:\windows install\), and then do the same with the custom drivers, and then reboot that partition and have it install onto itself. This is an old trick we used to do all the time on Windows machines when I was a wee lad, because Windows always used to keep its extra drivers only on the CD, so every time you'd plug in a new mouse Windows would ask you to dig up the Windows CD so it could find a driver (even if it already had one installed), but if you'd installed from a copy of the CD you'd made that was still on your disk, it'd look there first, so you wouldn't have to keep those damn disks around all the time.

One problem with all this is that Mac OS 10.4 can't write to NTFS volumes, only to FAT volumes, and NTFS is the wave of the future for Windows filesystems (and needed for volumes over 32GB). But, Apple should add full NTFS support to Leopard anyways, because interoperability is just a damn good thing to have. Well all need that crap. I need to be able to download my game patches and shit under Mac OS X and then just drag them onto my Windows partition -- don't make me use IE to download Firefox or something, and then have to download some wack-ass decompression programs for Windows (7z?) and then virus protection because I touched the internet and then basically I'm in a living hell just because I want to play me some Elder Scrolls: Oblivion this year instead of two years from now and twice as slowly.

No, I say. Make it easy for me to make tiny, stupid little Windows installs on my MacBook, so I can burn them off-handedly, like matches, and as each one's tiny, stupid little immune system flutters and finally flickers out under such heavy viral loads, I'll simply wipe them clean and burn them again, with a single click in my future perfect Boot Camp.

And I will laugh. Because we have totally pwned Windows.

Labels: , ,

Friday, July 14

Crazy ideas: A possible future for document-based applications...

Tonight I was thinking about global variables (or, their equivalents -- class variables or class methods that return static values), and how gosh-darned handy they are, except for the fact that you don't often use them because what you want is variables that are global to a particular document, and if you have multiple documents open you don't know WHICH particular document unless you have a backpointer to it, in which case it's not a global any more, is it?

And then I realized that, in the future, each instance of an application will have only one document. Which is to say, if the user opens 10 TextEdit documents, she'll actually have 10 instances of TextEdit running.

The advantage to this is that, if you do something that is slow or modal in one TextEdit document, you don't have to, like, go check your mail or do something else -- you can edit another TextEdit document while you wait. When you think about it from a user's point of view, why is it that when TextEdit is hung (doing something really intensive on one document, or even just hanging for the fun of it), you can access Mail or Safari documents, but not other TextEdit documents? Is there some research that shows you are more likely to want to go send a Mail message than edit another text document? This is an app-centric feature in what should be a document-centric world.

But imagine if, say, some crazy web page made Safari crash, but it was that only one window, and all your other Safari windows were still open. Imagine if you hung Preview by saving something as a JPEG2000 while playing a movie (true story) and you could just kill off that document and all your other images you were working with were still around?

So, how would this work? Well, at a lowest level (the OS), it's pretty simple. Mach already will automatically share pages mapped in from the application's resources and object code, between running instances of the app. (In fact, I believe this sharing of resources happens right now if two users use Fast User Switching and run the same app.) The OS would have to actually launch the application multiple times to create multiple documents, which would mean there'd be an extra memory overhead of a whole application's stack being created (and the objective-c environment being fired up, classes being initialized, etc), and there'd be a speed hit from this as well. However, speed and memory are two things that are getting cheaper, whereas programmer time is not. And startup times are getting faster and faster even without hardware improvements, thanks to cool OS and Cocoa tricks. I certainly don't think those are exhausted (freeze-dried apps, anyone?).

Then, at the Mac workspace (Finder) level, Apple would have to do some work with things like AppleScript and LaunchServices so they are aware that there is no longer just one, say, "TextEdit" to which it can send messages. Some things would work just fine with little reworking -- if you have an AppleScript that says, "Open this document in TextEdit and do blah blah" you already don't know and don't care how many documents TextEdit has open right now, so this change wouldn't matter. But if you look at an AppleScript that says, "Go through TextEdit's open documents and tell the first one..." then that would obviously require some OS glue to work correctly.

On the dock, Apple would only show one icon for any given app, no matter how many instances of it were running. Apple could pretty easily rework the workspace so all documents that were running in the same base application were shown/hidden together, even though they were in different address spaces. The Windows menu wouldn't be hard to modify so that it just brought another app to front, as well, if you selected a different document.

The user wouldn't (necessarily) want inspector windows to move around when she switched documents inside a single application, but that would be easy to handle -- it wouldn't be hard to do some simple messaging between instances of the application telling them all where their "Blah Inspector" should be located and whether it should be hidden, for example. This kind of coordination of the "shared look" of the app would be easily built into AppKit -- you'd simply decide ahead of time what should stay the same between documents (maybe you have a special icon dock that sits at the top and should be there for every document, for instance) and AppKit would make sure that all running instances are in the same state, much as it does right now with toolbars (albeit in a single process, but the extension is not hard). Consider, for instance, the color panel, where swatches are always the same across all running programs, or the font panel, which displays the same fonts and groups no matter the app. This is a solved problem.

The user experience for all this could be just like the current one under OS X, except crashes and hangs and modal operations in a document would be handled MUCH more gracefully, and the task of writing document-based Cocoa programs would get simpler. Imagine, for instance, if you're populating a popup button somewhere with, say, the names of all the objects in a Graffle document. The neat thing would be, you wouldn't need a backpointer! There's only one document, so you can just treat it as a global: "Hey, global document, give me all your object names." You're done. (Sure, you can ask the NSApp for its currently active document right now, but there are instances when you're doing work for a document but you can't be sure that it's the active document -- it could be one of the background ones. This would eliminate that uncertainty.)

Conceptually, this whole model seems a lot cleaner to me, basically because different documents inside an app almost never talk to each other. There's really no reason have them in the same address space, except for the fact that launching apps was expensive (up to now) and took up memory.

But as we switch to these new Intel machines, we're finding app launches are, like, a fraction of a second. And, history has shown us, whenever we have an excess of speed or memory, we use it to make programming simpler for ourselves, which allows us to make cooler programs for users.

Heck, in the old days, we only had one address space, and if you crashed a program your whole machine was S.O.L. Now we can't even imagine such a barbaric time. I think one day we'll look back to the days when a single application had multiple documents and say, "Why? That's such a pain to deal with! What if one document corrupts memory! They'll all get messed up! That's crazy!"

Labels: , ,

Thursday, March 16

This Post is Microsoft Enhanced (TM).

Ok, look, I know this is a family blog (What exactly does that mean, really? That Dad reads the blog aloud to his 2.5 kids as he smokes a pipe in his easy chair with his hair all full of brillcreme?), so I don't want to get too ribald, but when I was a kid there were only two kinds of condoms, regular and with bumps, "enhanced for her pleasure."

This apparently meant embedding grains of sand in the latex. I remember that, growing up, I had seen condoms and had read Where Did I Come From? (hippie parents), but had no idea how these grains of sand were meant to enhance sex, even the sort of smooshy-gooshy idea I had of sex back then.

Honestly, I'm 36 now and still have no idea what the hell they were thinking. I don't know if they sell those condoms any more. If they do, I'd like to caution my younger viewers: I've never met a female whose response wasn't: "OUCH! SON OF CHRIST! WHAT THE FRAK! WHY WOULD SOMEONE PUT GRAINS OF SAND IN THAT FRAKKING THING?" (Only, without all the BSG talk.)

--

I think of the phrase "enhanced for her pleasure" every time I boot up my stupid digital video recorder (DVR), because somehow Microsoft managed to talk my cable monopoly into selling me a box that constantly, on every screen, in the upper-right corner, says, "Microsoft Enhanced."

And, much like tiny grains of sand in your genitals, this recorder has so many idiotic annoyances and glitches that I wonder, "What do you guys think enhanced means?" and "WHY would you WANT your name associated with this?" (To both Comcast _and_ Microsoft, I think that.)

I mean, ok, it can, mostly, record TV programs. I mean, sometimes it does. Other times, it just decides not to. I mean, it'll SAY it's going to record all episodes of LOST at 9PM on Wednesdays on Channel 102, and there will BE Lost at 9PM this Wednesday on Channel 102, but it'll say, "Nothing more scheduled to record," even though it's the one that made up the criteria, and it did manage to record the first half of the season, and I can see the other shows in the schedule. Maybe the second half of the season stinks? I'll never know, because, hey, it decided not to record it. (Only 78% full! I checked!)

Microsoft Enhanced! For her pleasure!

But, hey, I'm fine with having to come home before my favorite shows and unschedule them and then reschedule them so my DVR will suddenly decide it's OK to record them again. I like to think of it as sort of rotating the tires; I keep the show schedule fresh. It's amazing how much less TV you'll watch when you have to reschedule everything every week, too. Besides, it's not like the POINT of having a DVR is you DON'T have to be there to start each recording manually. And this is first-generation technology, right? Right? I mean, there's NEVER been any other brands of DVRs, right? Microsoft invented this shit, no? And enhanced it?

But my actual least-favorite "enhancement" is that this DVR decides, whenever I turn it on, that it should default to showing me some stupid channel, full volume. Because, god, what would I do alone in a room with only silence to comfort me? Mayhap I would die. Now, silly "user interface experts" would argue that the idea behind a DVR is that you're a discriminating TV viewer; that you, in fact, hate the vast wasteland that is TV, and that every moment you are exposed to programs that aren't among the 4 or 5 tolerable ones you have selected is actually quite painful. (Think I'm exaggerating? Watch all of "Elimidate." Just once. Then let's talk about pain.)

So, I turn on this stupid DVR (whisper it with me as you press the power button... "microsoft enhanced"... like the wind at your windows) and it starts BLARING whatever is playing on whatever channel it last recorded, because that's probably the best default option, right?

It wouldn't be reasonable to present me, silently, with a menu of shows I've recorded, right? No. Because the most likely answer to "Why did Wil turn on the TV at 2:15AM?" is not "to watch one of the five shows he recorded this week, as he does every week, which is all he ever does with this stupid device," it's "TO WATCH THE LAST 15 MINUTES OF ELIMIDATE! BONK-BONK-WONK-WONK WONK-WONK WONK-WONK, BEOMP BEOMP BEOMP!""

But even that's not enough. As I work through the menu systems, it continues to give me a feed of some random channel in the upper-left hand corner. I'd like to point out that there are something like 900 channels on this system. It doesn't care which one it's showing me. It's just knows that I need to be seeing TV, dammit. I don't care if it's infomercials for electric knives on the Discovery channel at 4AM, that shit is BETTER THAN SILENCE. SILENCE IS THE SOUL-KILLER.

WHAT THE FUCK IS WRONG WITH THE PEOPLE WHO WORK AT MICROSOFT! SERIOUSLY! Do they really enjoy all this noise? IT'S MICROSOFT MOTHERFUCKING ENHANCED, FOR HER MOTHERFUCKING PLEASURE!

If I watch a show, like the season finale of Battlestar Galactica this year, which left me shaking with anger and pleasure at the same time, and then, after the screen fades silently to black, I go back to the main menu, my little Microsoft Enhanced friend is right there for me. "Show's over! Let me pick a channel and show you crap! Full volume! Right up here in the upper left! Having trouble picking a show because I'm yelling at you? About crap? Crap you don't care about? Just ignore me! Go on, pick a show! C'mon, what's wrong, you freezing up? Just pick one! Hell, I'll do it! I'm Microsoft Enhanced! For her pleasure!"

There's other annoyances. For example, if you fast-forward through commercials, and then press "play" when you're actually, you know, back into the program, an incredibly sophisticated set of things happens inside the DVR, none of which are "pleasing." The first is, the machine is so poorly-designed that ANY keypress takes a second or so to register, so it'll appear that you did NOT press play for a second, and the PVR will blithely zip ahead for a while longer. Then, to make up for this fact, they will REWIND the recording some bizarre and ever-changing amount based on their assumption of how slow they think you might react to the show having starting up again.

I'm guessing they tested this DVR on people with Parkinson's disease, because they typically rewind a full THIRTY seconds to before the spot where I pressed play. Try imagine the kind of calculation you have to do on the fly: "Ok, I saw the show begin, so I need to press play sometime soon so that I can start the pause to when the auto-rewind will take me back to before some amount based on the current fast-forward mode I'm in..." I usually spend thirty or forty seconds oscillating around the beginning of the show. It's like Microsoft doesn't WANT me to skip ads! Whaaa? What about her pleasure? Please tell me you didn't forget about her?

And then let's talk about the pause button. If I press the pause button during live TV, which I do a lot, the machine actually waits a second to pause, then stutters, then replays the last two seconds and adds a bonus second I haven't seen before, then really pauses. It's like a kid who wants to test your limits when you tell him to shut up. "Hey, give me a candy bar! Give me a candy bar! Give.." "SHUT UP!" ".. Give me a candy...?" When I first started pressing pause I'd get fooled by the stutter every time and think it hadn't REALLY paused, so I'd press it again, so in another second it'd resume, which made me think maybe the pause button really was the mislabeled "two-second-respite" button.

The stuttering pause is annoying all the more because the pause button is my only savior, because when I first turn the DVR and TV on, 'pause' is the ONLY button that will stop the noise. Let's think about this. You turn this device on and there is NOTHING you can do, short of finding the one button out of 800 that's labeled 'pause' (by definition, a temporary block) to stop it from blaring crap at you. Crap that you don't want, and never wanted. Now, I'd like to point out, the "stop" button doesn't work in Live TV mode. You can't say, "No, I don't want a channel going, I'd just like silence." Sure, you can pick WHICH channel of crap you to view, and you can ask for a brief break from crap, but you can't pick "No Crap." Because, you know... the enhancements... the ones made by Microsoft.

And if you pause the live feed for that glorious, brief release, and choose and then play a program you like, and then stop that program... the PVR will go back to live. Yes, it unpaused itself while you were watching what you actually wanted to watch. "Hey, uh, we noticed you left us all paused, there, for like an hour, and, uh, we figured, 'that can't be right', so we just restarted the channel of crap there for you in the upper-left. No charge this time, buddy. Just thank Microsoft Enhanced."

The impression you get from this device (admittedly, sold to me by Comcast, my cable company BY LAW MOTHERFUCKER) is that TV is not just like a faucet, it is more like a stream. If you block the flow of TV for more than a few minutes you will JAM UP THE CABLE FLOW AND CAUSE SERIOUS HARM TO SOMETHING. THE PRESSURE WILL BUILD. THE ENHANCEMENTS WILL SUFFER. THOSE BASS FISH AREN'T GOING TO CATCH THEMSELVES. THE WINDBAGS ON CNN HAVE IMPORTANT STORIES ABOUT MURDERS AND KITTENS TO TELL. I feel like I'm in Max Headroom: 20 Minutes in the Future, where all TV sets were permanently stuck "on" by law.

Here's the kicker: pausing the live feed actually starts a timer, because the PVR is still recording its randomly-selected channel in the hopes that you'll later give it a reprieve and watch whatever random crap was on. I mean, maybe you just need to go to the bathroom, and didn't want to miss the part where the electric knife can cut through a frozen pizza AND a slice of bread -- LENGTHWISE! But, here's the best part: after a couple hours of recording, the PVR will run out of disk space from recording this live TV feed. (Which, remember, you cannot turn off.) What would be a reasonable thing to do here. Let's look at this as dispassionate UI designers, OK?

You're making a PVR. Someone pressed pause six hours ago. You've been recording live video with the assumption the person might come back, but now you've run out of disk space. The screen has been frozen for six hours. Might you, the putative UI designer, assume at this point that the person has left? That their TV is now off and they're done with the system? And, thus, when you run out of disk space, you'd say, "Heck, I'll hold onto this live feed stuff until the user comes back, or until some other program comes on that the user actually asks me to record, but until then I'll just go into sleep mode."

NO! IDIOT! The TV must flow! The person probably fell into a stupor. The logical thing to do is RESUME LIVE PLAY. That'll wake 'em up!

And indeed it has. No joking, in the days before I learned this cute little UI decision, I paused my DVR (instead of turning it off), turned off my TV (but not my 500 watt stereo), went to bed, and been woken up THREE TIMES in the last year at 4AM to some ads blaring at the top of their lungs in the next room, because the DVR ran out of air and just HAD TO GET IT ALL OUT! I CANNOT WASTE THE PRECIOUS STREAM OF CRAP! Let me tell you, waking up to this will make a grown man wet his bed. I'm not proud of it, but there it is.

Microsoft Enhanced. For their pleasure.

Labels:

Sunday, January 15

Thinking, boxes, & what kittens can do to them.

Recently a fifteen-year-old developer wrote me:
Quite often I find myself outside lighting left over sulfer-powder mixes from the fireworks last 4th of July and thinking of product ideas. However I just can't think of a single unique idea that would actually turn out to be a hit. Everyone just tells me to think "outside of the box." Honestly, that never works for me.

Do you have any suggestions on how I might increase my developer creativity?

Delicious Library is what mostly sparked my mind, this is probably the most unique and yet still useful application released for Mac OS X.
Aw, I'm blushing. No, wait, I'm hungover. I get those two confused.

First off, left me discourage you from playing with homemade fireworks. My earlier advice notwithstanding, as a programmer you'll need your fingers and sight.

Second, my inclination is to tell you to think INSIDE the box. Because, honestly, when I think back to ideas that have changed the world, they aren't really that crazy. They're pretty normal when you think about it. It just took someone to put the pieces together and DO A GOOD JOB OF IT.

Let's take the canonical example, the iPod. Now, portable music players have existed for a long time. So that part was obvious. Digital music was completely taking off, led by iTunes. That part was obvious. Portable hard drives were very common. Obvious again.

So someone at Audible says: Gee, people like music to go, they have music on their computers, and we now have tiny hard drives that are portable... hmm, I could come up with a new device here. And Audible makes the first MP3 player. And the world yawns, because it's not that amazing and because it doesn't have a great user experience for downloading all the music you've stolen from the net. And Audible marketed it for audible book downloads (surprise!), which is frankly not nearly as exciting to our nearly illiterate, constantly gum-snapping country.

Then someone at Apple says, "Hey, we can deliver the whole experience, and make a device that's really beautiful, because we've got iTunes and we've got good engineers and we've got Jonathan Ives who is good at making things look sexy and is bizarrely muscular himself and was recently knighted but we don't have to call him sir."

So Apple makes the iPod, and everyone says, "Wow, they totally invented the MP3 market," which they totally didn't. They just did a good job of it. Hell, to this day Creative still sells some P.O.S. MP3 player called the Bedouin or some shit and nobody even acknowledges their existence. Creative is like that ugly guy who shows up to the party with bizarre, wispy, patchy facial hair and parks himself by the food table and everyone pretends not to notice him so they don't have to actually talk to him. (Note to ugly guy: sorry, man. Try shaving and eating right.)

THAT is the key. (No, not shaving.) The key is taking an idea that the world obviously wants and doing a GOOD job of it. This is how I've made my living.

I've only had like seven truly original ideas in my life. Three of them are in OmniGraffle 3 (see if you can find 'em!) and a couple more are in OmniWeb. (iSight barcode scanning is one, as well.)

All the others are just refinements of other people's ideas. I stand on the shoulders of giants, which weighs them down a ton, and frankly they probably resent it, but it works great for me.

Delicious Library was not an original idea. It was a new approach to an idea that's been around for as long as computers. Hell, longer. I think the first cavemen carved on rocks when they lent out their, uh, sticks to other cavemen. Which wasn't efficient, but still worked better than Microsoft Windows. There are many other shareware programs that do approximately the same thing as ours, in theory, they just kind of bite. We took the idea of a media cataloging app and we made the friendliest, most fun version of it we could. But the basic idea was NOT ours. We don't ever claim it was.

So, think inside the box. Look at what people are using right now. Can you do a better job? Is there any chance people will switch to yours, or is there a market leader that's so entrenched you're going to get killed? Or can you write a simple version of what is now a program only for professionals? Can you do the converse? Can you adapt an idea from one market to another, like making a word processor for screenwriters? (Don't really do this, it's been done.)

I mean, sure, don't write a generic word processor, even if you think you are a super-genius. Word is a de-facto standard, and you don't want to mess with that. And don't re-write Excel. But, for example, when the Excel product manager got up on stage at MacWorld several years ago and said, "We've found that 85% of our customers use Excel just to make lists and outlines," we (Omni) said, "Shoot, that'll be our next product. We can do a GOOD job of making lists and outlines, and sell it for a lot less." And OmniOutliner was a pretty decent success.

Use all kinds of software yourself. Play with Final Cut Pro even though you don't make movies, because there are metaphors in there you need to know. Talk to people about what they do with software. Watch everyone around you and what they are doing, and not doing, on their computers. If there's a solution out there to some problem, but it's so complicated that most people don't use it, then there effectively IS no solution; it's a wide-open market. In my experience, programs don't get simpler in subsequent versions. You can kill your competition if you come out of the gate with something simple and friendly and cheap, even if they have a head-start with a crappier program.

Labels: ,

Saturday, September 3

I am really angry at Palm.

Today, I complain about something that I really wanted to like, but cannot any more. My Palm Treo 650 phone. It is a cautionary tale, one from which we can all learn a lesson. Maybe not a lesson on the level of "don't stuff the government with your idiot cronies and then be surprised when it doesn't function when disaster strikes," but those kinds of lessons apparently need to be learned the hard way, again and again. (While I'm on the subject, Delicious Monster is donating our 2005 Q1 Amazon revenue to disaster relief, since, you know, the richest federal government in the world is congenitally incapable of doing anything that might be mistaken as "good," since all our money is busy being spent toppling nations.)

What was I talking about again? Oh, yes, phone. I used to really wuv my Treo, but now I've taken to hating this device, because I've spent a small fortune on it and countless hours, and it has progressively become less and less functional.

When I first bought it, I spent extra to get the "unlocked" version, thinking that I would surely own this lovely Palm longer than I would stay with any particular carrier. I should mention that I haven't owned a Palm in years, because I used to have a beautiful Palm V, made of shiny Titanium or some such. It was a small, gorgeous work of art, made when Palm was at its apex. But it didn't function as a cell phone, and I found I really got tired of having my pockets stuffed with pagers, cell phones, and Palms, so I stopped using the Palm V. And after it Palm released the almost-useless Palm VII, which was ugly, weighed about 700 pounds, and had sort of network access, sort of, but not a phone.

Then they started releasing all these plastic pieces of crap, and licensing their operating system to others so they could release ugly pieces of crap. The amazing thing was that I'd hold up my Palm V and say, "Ok, has anything this beautiful come from Palm or Handspring or Sony in the last seven years?" and the answer would always be, "Oh, no, not really, although we have this ugly piece of crap..."

So I used the calendar and contacts in my cell phones, which synced perfectly with my Mac, and made do with their tiny screens and their no-keyboards.

But, lo, a friend showed me his Palm Treo 650, and it had a beautiful screen, and I saw that it was good. So I bought one.

And the keyboard is surprisingly easy to use.

Unfortunately:

• It turns out that the built-in e-mail reader, VersaMail, actually doesn't really delete your mail from your IMAP mail servers. Now, I'm not an idiot when it comes to protocols and stuff, and I've tried it with two separate services, and it simply does not work. Oh, sure, there's a PREFERENCE you can set to delete mail from the server when you delete it locally (also: DUH!), and there's a PROMPT, and then it'll go ahead and merrily ignore you and download the same mail and spam you just deleted, over and over. HEY, it turns out THAT IS NOT USEFUL. In fact, it's completely useless for the way I read mail if I can't delete the junk and transfer the good messages to other mailboxes when I've read them. Apparently this mail reader is for people who literally want to only read their mail, and not actually, you know, DO anything with it.

So, I never use that.

• The web browser, although a truly amazing piece of engineering (with JavaScript and images and all kinds of things), is freaking slow. The 650 has, like, no memory, an anemic processor, and a tiny little capillary to the internet, and so every time you load a page it takes like 30 seconds or so. It can't cache pages, so going back and forth from a google list takes literal minutes.

I have, honestly, tried to use it several times when I was out, and each time everyone around me has lost patience and gone on with their lives before I found any useful info. It'd be like, "Hey, where's the bar?" "Oh, I'll look it up on the internet..." [5 minutes pass] "Uh, I'm just gonna call 611..." "No, really, the page is coming up! I swear."

None of this is really Palm's fault (unlike the mail-reader that can't delete), but it's still a case of, nice try, but I don't use that.

• The messaging system is really nice, but unlike the Danger, you can't talk to people on AIM, you (and they) have to pay 5 cents a page to talk to each other. So, I do use messaging, and I love the keyboard on the Palm, but it really could stand some improvement.

• Syncing with the Mac was an exercise in arduousness. Certainly, it was possible, with enough time and know-how and installations, to install the Palm Desktop software which I'd never use, and set up a fake Bluetooth to serial line, and install the iSync -> Palm Desktop conduits, and enable them in Palm HotSync Preferences, and disable the Palm Desktop conduits, and get the damn phone to sync, once I'd discovered that the group I was syncing to my phone in Address Book had to contain at least one person, not just other groups, otherwise NONE of the people would sync (unlike with my Motorola and Sony-Ericsson phones). And certainly a lot of this was Apple's fault, but, honestly, Palm should have just said, "Damn, every Mac ships with a built-in, shared calendar program and an address book -- let's chuck this crappy custom stuff we've been making and get our software to work well with what Apple's doing!"

• The phone sound quality was always bad (there was ALWAYS a hiss on the line) and it would periodically just hang up in the middle of a call. It was pretty annoying.

I'd like to mention at this point that Palm just spent a gazillion dollars buying the name "Palm" back from PalmSource (who they just spun off) so they can use the name "Palm" all over. This is one of those Dilbert-style management things, where they're all, "We should spin off our hardware and software! No, wait, buy back the name! No, sell! License the fromjub! Re-org! Capitalize our key assets!"

This is always a bad sign for a company. I'm like: Hey, here's an idea... spend your time and money making your products not suck. Nobody gives a crap if you're called Palm or PalmOne or Pam or Spam. Your asset isn't your name, you dickweeds, it's your reputation for having a cool device, which you are destroying by having the device not be cool any more.

So, now Palm comes out with a firmware update they recommend to everyone. Now, here's where the story really takes a tragic turn. First off, it's not just one firmware update, it's like four of them, and you use a different revision depending on what carrier you use. Confidence-inspiring! Because I'm SURE that there aren't going to be 4x the bugs in four different revisions.

But they recommend everyone upgrade, and say that the sound quality gets better, and mumble about other improvements in mail. Sign me up.

Let's talk about how not to do an upgrade, shall we?

• Don't come out with an upgrade that simply cannot be loaded into the anemic memory you provide for your device without the user deleting the programs that come with the device. That sucks!

• If you go ahead and do the above, then for gosh sakes write a nice custom program on the computer that will unload everything from the device, upgrade it, and then put everything back. Don't just provide instructions on your website on how to create a second, dummy account on your computer to do the syncing with a minimal system install. If you ever find yourself writing an upgrade where EVERY user is going to have to create AN ENTIRE SECOND ACCOUNT JUST TO UPGRADE THEIR STINKING PHONE, you are PROBABLY MAKING A MISTAKE. TAKE SOME OF THE FUCKING MONEY YOU SPENT BUYING THE WORD "PALM" AND SPEND IT ON WRITING AN UPGRADER.

Ok, so after an ENTIRE evening and part of the next afternoon trying, I got my phone upgraded and working again. It had lost all its settings and no longer knew about my computer, which meant I had to set up syncing again. Palm warned me to use the newer version of Palm Desktop with this newer firmware, so I downloaded it, as well, and after dancing the magic dance for about six hours, I had my Palm syncing once again.

Here's the worst part, though: syncing ONLY worked because the computer already knew about the Palm, and was still happy to talk to it, even though the Palm had forgotten about the computer. (If only ex-girlfriends were so forgiving!)

The next week I have a computer crash. I get my drive replaced entirely. Here's where the REAL FUN starts. Obviously, I need Palm Desktop to sync with the Palm again. So I got to palmone.com. Except, wait a minute... the software that they said was REQUIRED to sync with the new version of the Palm is gone. Replaced with a page that says, "Mac users: Sorry, we took the new version down. Just use the version on your CD. Except we told you not to. Good luck!" For the last two weeks, it hasn't been on their web site. TODAY, they've added it back.

Now, again, I'm going to make a short list of things you can do with your money instead of spend it buying the word "Palm":

1) YOU COULD MAKE YOUR SOFTWARE WORK WHEN YOU REQUIRE EVERYONE TO UPGRADE.
2) FOR REAL.

Hmm. Well, problem is solved now, right? Because now I've finally got the new Palm Desktop from Palm, so I can dance the magic dance again (install Palm Desktop, and, under Tiger, just click button to install Apple conduits) and maybe sync.

Except, here's the panel from when I paired my phone with my new Mac:



Hey, be sure to zoom in on that photo. That's right, after the firmware upgrade, there are NO SUPPORTED SERVICES on my Palm. I can't use it as a dial-up modem any more, even though I'm paying extra to get all-you-can-eat data from Cingular. No point in that! And I can't sync with my phone, nor dial with it!

Heck, I'm not even sure why I bothered pairing it with my computer, because it sure as hell can't do shit! What an idiot I am!

Now, this may be Apple's fault. Who knows? Except, here's my logic:

• All these things worked with my Palm and my Mac.
• Palm upgraded the Firmware
• Now none of these things work.
∴ It's Palm's fault.

But, wait, I can still go into iSync on the Mac and tell it to look for devices. Maybe it'll pair up with the phone anyways?



Hah! Denial! It's not just a river in Egypt, that has overflowed for thousands of years and yet still our leader can't grasp the concept of rivers overflowing.

But, hmm. Maybe I can hack around a bit. I run Palm Hotsync Manager, enable the Bluetooth connection, and check the conduit settings. The iSync conduit isn't enabled, since iSync couldn't find the Palm. However, when I enable the conduit, SUCCESS. The Palm shows up in iSync, and I can finally, finally, update my address book and calendar on the Palm. Sure, I still can't use it as a modem, but even getting back basic functionality seems like a godsend after all this time using the Palm as a dumb phone.

And, a dumb phone it is. Because, see, the upgrade woes are not the only problem with the Treo. Sure, with the upgrade, the sound got better, but here are some other fun fone features:

• If you don't disable the touchscreen when you're on a call (using preferences), you'll press the "hold" soft-button with your cheek. A LOT. A WHOLE LOT. EVERY SINGLE CALL, EVEN. There's no way to know you've done this if you're talking, so you'll just talk and talk for a while and then finally notice the person isn't responding, and then when you look at your phone you notice they've been on hold this whole time, and since they don't know why it suddenly went silent, they'll have hung up. But if you DO disable the touchscreen, well, you can't touch the buttons and put people on hold and the like.

• About half of the time now, my phone rings once and then instantly sends the person calling me to voicemail, with no record that anyone called. Not in the logs or anything. Which is amazing to me, because I'm like, "Hey, didn't you just ring? How come there's no log of an incoming call?" And the phone is all, "Ring? I'm not sure what you're talking about?" And I'm all, "Well, it seems awfully suspicious that I THOUGHT I heard a ring just now, and now, 20 seconds later, you're telling me I have new voicemail, but you never told me I had an incoming call, and it's not in the log." And the phone is all, "¿Que? No habla englais."

Now, admittedly, this happens a lot when the phone is in my pocket, so possibly my pocket is magically always pressing whatever button is set to "send this to voicemail and also forget you ever received it." And if it's my pocket doing it, you might call this user error, except, you know, I'd would ALMOST THINK that a phone would be DESIGNED to come out of a pocket while ringing and NOT HANG UP on the person calling. Because, see, this is amazingly annoying. I've had entire days where no calls get through, and I have to check voicemail every couple minutes. EXCEPT...

• The touch-tone keypad often sends double digits when you press a single digit key, on either the touch screen or the keypad. So, if your voicemail password is, say, "1234" (mine is not, nice try), you'll send "122344". Now, you may think this sounds like user error, but it happens about half the time for me. And, here's the rub, the PALM ITSELF says that you typed "1234". I mean, there's a record of what you typed right there on the screen, and it's clearly been typed correctly. Except, no, it's sending doubled digits. SO I CAN'T GET INTO MY VOICEMAIL.

I only found this out because I called my pharmacy's refill service, and when I typed in my refill number the computer repeated it back to me, only with half the digits doubled. I was like Ellen Feiss, all "duhhhh?", and I typed it again, and they repeated it back doubled again, and I typed it again, and the computer is all, "Please hold while we transfer you to a real person, IDIOT..."

Oh, and when you press the "#" key on the keyboard it sends the "#" keytone FOREVER, although "#" works on the soft-screen. I'm not saying "FOREVER" as in, "amazing long," I mean, IT ACTUALLY WILL NEVER STOP. IT JUST KEEPS SENDING #.

Is this a feature? Because I don't find it useful. I think this is pretty stunning, because, you know, it's not that uncommon for a computer to be all, "Give me such-and-such a number, followed by the # key," and yet NOBODY at Palm has EVER hit that key on their keyboard, and noticed IT GOES ON FOREVER? It's really obvious, on account of the not-stopping.

--

Let's talk about the philosophy of complaining a bit. I didn't sit here for an hour typing this in because I hate Palm and want them to die. I honestly don't have that kind of free time. I'm complaining because I want them to do better. I want them to create a device I can love again, the way I loved my Palm V. It was, for its time, a truly beautiful piece of work, inside and out.

Now, the Treo does a lot more than the V, but at every step there's a little gotcha. A little rough edge that nicks you. To me, it's too much like using Windows; sure, the features are there, SORT OF, if you fight enough for them. But after a while, you get worn down, and you stop trying.

For $600 (unlocked), this should be an amazing phone. It should knock my socks off. I can buy a Motorola flip-phone for like $120 that is half the size and has all the features I can use on the Treo right now, and it'll work without all the gotchas and magic dances. (I know; I've owned a couple before, as well as two models of the execrable Sony-Ericsson line (Motto: We put the "slow" in "Damn this crappy phone is slow!").)

I like my keyboard. I like my big, bright screen. I like having a general-use computer with other software. But somebody at Palm needs to start thinking like Steve Jobs. Someone needs to make it her job to say, "This detail sucks, and if the details suck the whole thing sucks, and if our product sucks we suck, so we're going to stay here and we're going to fix this and we're not going to ship until the phone doesn't suck."

Good luck, that person.

Labels: ,