On skins and plugins
I started this post over six months ago, but never quite got around to finishing it. It might never be finished. But this is a thorn to me, so I'm just going to post it as is.
Should your new application support skins?
Probably not. Skins are often a programmer's way of saying "Oh, I don't do UI. We'll let someone else get it right." Only nobody ever does, at least not in your product. Your UI just isn't as compelling as the one it's replacing.
The corollary to this is that if lots of people are demanding skins, it means your UI sucks. Once you add skins, you'll never be rid of those skins, and you won't have fixed your application either.
You'd probably do better to fix your application's appearance and behavior.
Now, should you do a custom appearance?
If you're planning a completely custom appearance for your applications, odds are it will suck. Unless you have artists that are beyond simply competent, but brilliant, you'll probably fail.
First, you need a UI that looks and feels good. Secondly, it probably needs to fit in with the native platform. If you're planning a full screen game, it's fine to not fit in. But if you're building a Windows-based BIOS updater, that custom UI that you think looks so amazing? The truth is, it looks like complete shit.
You're better off fitting custom UI into the OS rather than changing your whole application to fit them.
Now, finally: What about plugins?
This one is a little less clear. There's great reasons to do plugins. Integration with another system (whether technical such as a web site or social such as particular requirements for reporting) is a good one.
But you know what isn't a great reason? Making your product a platform. Do you want to be a product people use, or a platform people struggle with?
Firefox's plugins make me flinch. They're usually poor quality, craptacular tools that lunge for a particular nugget of a good idea and fall flat on their faces a few yards away from it. There are a few that are interesting, but they'd benefit from being rolled in, or being a separate stand-along product on their own.
Pick your features carefully. 37signals didn't become popular by picking an extensive list of features or allowing people to write their own features. Instead, they built something they wanted to use. And they're not alone. There are a few things I'd love to see (MarkDown instead of Textile, for instance), but even if a hypothetical plugin system could add these things, they'd be overwhelmed by the layer of suck.
Before you build a plugin architecture, put the effort into your application.
Gadgets seen as best way to tell white lies.
Beating a dead horse
My relationship with Microsoft Word for the Mac has always been a love/hate one. I can't really describe why I love it - there's just something about the way the main document window behaves that fills me with word processing joy, as stupid as that sounds (once the keyboard shortcuts have been de-Microsoft-ized, at least). However, the rest of the product seriously sucks.
We have multiple testing checklists that need to be followed, and items checked off, every build we're seriously testing. I could go into a whole rant about these lists, but I think everyone who's seen them (and especially had to use them) would agree with me on it. At the moment it has to be done, and that's it.
Microsoft Word for Windows handles these with ease. It's only when they're brought over to my PowerBook that they start to cause problems.
The spinning wait cursors abound as I try to work with this document. A lot of it is caused by the documents being in Page Layout mode. Switching to Normal mode fixes this, but I hate Normal mode. It confuses me why I'd have to use it, considering how responsive Word for Windows is, even in Page Layout mode. Still, I can put up with this.
More significant, though: I fill this form out by repeating the formatting change that checks an item on the list. Sometimes I apply it to the wrong line, and then it's time to Undo. Undo has about a 70% chance of crashing Word. Not every use of Undo, but just undoing this particular formatting change.
Seriously.
How did this ship? And how did Microsoft manage to release roughly ten minor updates to Microsoft Word without ever fixing this? Does the Mac team at Microsoft use Word on Windows for all their large documents? Are the Mac team at Microsoft perfect people who never use Undo? That's a trick question. If they were perfect, Undo wouldn't crash. (Not that I expect perfection. I can't attain that myself, after all.)
This seriously, seriously sucks. It's cost me serious amounts of time. What good is software that crashes all the time? Why do people - including me - keep paying for products like this?
"Programs that crash have been proven to be less useful than those that don't." -- Apple Technote #117
Just another day
This is the first year I've decided to completely ignore the scary side of Halloween. And yes, this is a permanent thing, and will include when I have kids. In fact, that's the main reason I gave it up.
I have to admit, I've been thinking about this one for a while. My pastor said something about it in early October 2005, and nothing since, but I've been turning it over in my mind since then. It makes sense to me. We don't have a "Let's pretend your mother and I are married to different people" night, a "Let's pretend it's okay to kill people" night and we don't really need a "Let's pretend we're afraid of ghosts, witches and the dark" night. Fear is not rational. Good sense, sure, but not fear.
My parents walked a very fine line when I was a kid, making it fun while completely discarding the idea that we were pretending to be afraid of things. I went out as a clown or something. Not a scary clown, either. I don't think I can walk that line, of pretending to participate but not traumatizing my kids.
Don't get me wrong, it's not like I'm going to be a complete stick in the mud about it. There's other ways to celebrate, and I'll do my best to make sure my kids don't feel left out completely. There will be parties, and there will be candy, and there will be fun. Just no scary costumes. Here's where it's good to know some like-minded people.
Honestly, the only thing I miss about giving up Halloween is I'll never get my chance make up a really great medieval/priate/Jedi costume. I do have a friend planning a medieval wedding. Maybe I can convince another friend to have a marriage at sea. The Jedi thing is totally out, but after the last three movies, who cares anyway?
Forced Hardware Upgrades
Several attempts to re-install Ubuntu 6.06 later, I was forced to conclude that something was wrong with my power supply. Since it was an integrated power supply from Antec and I don't feel like giving them any more business, it was time for a new case.
I picked an X-QPack, which is a microATX case. It's available in several colors, but the Langley NCIX had only black and blue in stock, so blue it was. (I have something of a hatred for black PCs. It has always struck me as the trendy way to avoid beige for the clueless.)
It's slightly larger than my Antec Aria was, but this is both good and bad. Bad, because it's slightly too large for my desk. Good, because it's much easier to work inside and seems to do a better job of keeping components cool.
The X-QPack offers a 420watt power supply (compared to, I believe, 300watt). Oddly enough, there doesn't seem to be a fan on the power supply.
The case is actually remarkably well thought-out; the motherboard mounts on a drawer that slides in and out. There's an carrying handle integrated into the front panel, and has knock-out panels for two 5.25" devices and a single 3.5", plus space for two internal 3.5" drives. Despite the small space, there's room to screw everything in on all mounting points. If I was going to describe this case in just a few words, it would be "tabs into slots mounting hardware."
It's a good thing it was well designed, or I wouldn't have figured it out. There was no documentation at all.
The downside to this case is that all the sides are clear plexiglass (or something), and the rear fan has an integrated and bright blue LED. Not a big deal until you combine it with how ugly the inside of my PC is. At least I'll know if someone steals my hard drive.
I'm largely back up and running now, and trying the 6.10 upgrade again (but this time, through the GUI). I think this is the very last piece of adhoc hardware I will buy. My next purchase is going to be a Mac mini, even if it is to replace my PC.
I wish I had a prize to give out, but nevertheless -- can you top this? I'm sure you can. Video and audio card manufacturers have been racing for years to produce terrible interfaces. Surely someone has made a bigger abonimation towards mankind than this.

Palm Development Tools Still Suck
I wrote this in November 2004. It remains just as applicable to this day.
I wanted to make a few comments on the state of Palm OS tools and such, and I didn't want to post them publicly because they're not exactly positive. If there's a better place to send them, please let me know. Don't worry, there's no questions here... and I don't mean any of this to be insulting, either, if I've phrased some of it that way I apologize...
PalmSource seems to be focusing mostly on "Cobalt." This is important for the future, I definitely agree with that. But in the near term, there are no Cobalt devices actually shipping and will not be for months yet. How long until the majority of shipping handhelds are Cobalt? I'll be a bit optimistic -- I figure it's at least two years. Developers in the business of making a profit over the next few years need to focus on Garnet. I have not even looked at the Cobalt tools yet, and have no intention of doing so for many months yet.
The current state of affairs for Palm OS Garnet development is rather poor. PalmSource seems to be putting the majority of their efforts into the Palm OS Developer Suite. I am starting a new Palm OS product, and am no longer actively involved in maintaining the first one (which is on the market and being maintained by someone else; if you're curious, see www.principalm.com). So it was the perfect time to switch to the new tools. I downloaded PODS and gave it a try, but I ran into a few problems.
The first is that the IDE is pretty unfamiliar. And this is from someone who has used a dozen or more IDEs over the years. I couldn't even find a way to "quick open" SDK header files within the IDE. Making a makefile was easy (and, to be honest, I prefer this approach to an IDE) but getting the files recognized by the workspace was a pain. I'm not exactly sure how anyone uses a SCM with it; just the limitation of storing everything in Program Files is huge, and I never found a way around that one.
But finally I had everything in the workspace and compiling. Here's where the real problems began -- I had to segment. Segmentation is a fact of life under Garnet, and the documentation for segmentation is very weak -- did I say weak? Between myself and a co-worker (working on yet a third product, with no code in common with either of the first one or mine), we couldn't find anything on it as part of the install. I had some ideas how to do it for C, but none at all for C++. He figured out how to segment eventually and emailed me on it...
Now, which segments were too big? The error messages were next to useless for figuring it out. Still, through trial and error I reduced the size of my segments. That's when I started running into data segment size issues. What was wrong? Well, I still have no clue at all.
So one night after about a week of fighting it, I threw threw in the towel and moved back to Codewarrior Palm (the latest Mac version). I sent an email to my coworker: "I gave up on PODS. It struck me last night that even if I got everything compiling in PODS, there was no real advantage over Codewarrior that was likely to matter to me for a while. [With Codewarrior, I] had my project compiling within ten minutes. No segmentation issues at all. Hopefully by the time I start to run up against the limitations in Codewarrior Palm's tools will be ready, because they're not right now..."
I expected him to tell me to keep fighting PODS, but apparently he'd done the same thing the vary same day, only he moved to the latest Windows version: "I came to same conclusion late last night and am now doing my demo work in CodeWarrior."
So I just put in an order for the latest version of Metrowerks' Windows-hosted tools. Will they save me? I don't know. I'm worried -- the new version of Codewarrior is based on the PRC tools,. So am I probably going to be fighting it for data segment size. (I know the standard RTTI/exceptions off trick. I need exceptions. I'm trying to write 21st century C++ here, not 1988-era ANSI C....)
As an aside, this is wrong -- Codewarrior Palm 8's linker is not based on PRC-Tools. This is why I ended up settling on Codewarrior as my development tool.
My conclusions:
1. There has to be a greater focus on Garnet development. Cobalt is the future (maybe.. if it's late enough, the future is probably going to be the dreaded PocketPC), but it isn't going to keep me or anyone else in business now.
2. There has to be a lot more work done on both documentation and tools for Garnet. The current (PRC-based?) toolchain -- in particular, the linker -- needs a lot of work and is under-documented.
3. All of these segmentation issues I'm dealing with are "artificial," in that segments don't actually hold any meaning other than legacy to the current Palm OS. If there was a way to write an application for Palm OS 5 that wasn't PACE/68k, this whole series of problems wouldn't exist. But still, there's a couple years to wait until I can stop worrying about this mess.
Anyway, I hope none of this insulted you. Not my intent at all. And I could very well be wrong, I just call it like I see it.
![]()
We're almost in 2006. What's changed since then? NOTHING. Cobalt still doesn't exist in any tangible way, and there's still been no significant efforts put into the Garnet toolchain.
(Also, I want to add: For the one guy out there who recognizes this email, I do not blame the lack of progress on you. I dug up this particular email only because I felt it was the best one I'd written on the subject.)
PCWorld a list-washer?
Got this in response to a spam report. Yes, I said spam — I've never subscribed to any PC World mailings, and have years of archives to prove it.
Unfortunately, since you chose to have SpamCop conceal your actual e-mail address, we have no way to respond by opting you out of PC World e-mail.
If you will reply to me with your actual e-mail address, I shall be happy to comply with your request immediately.
Michael England
PCWorld.com Customer Service
Apple using AMD?
This image was forwarded to me by a reliable source in Apple. It seems that in addition to compiling Mac OS X for x86, Apple has a backup plan for the Intel backup plan: AMD.
See, geeks all along have been arguing that Apple should have gone to AMD instead of to Intel. AMD offers higher performance, you seee. But, of course, we know the main reason for the switch to the x86 architecture is that IBM can't produce a portable version of the G5. AMD doesn't have much in the way of lower power, high performance chips yet, either.
But Apple's ready anyway.
Here we have an actual photograph of a prototype Opteron-based PowerBook. Get it quick before Apple legal forces me to take it down! Remember, this is a prototype only — the final version will have a color screen. The black and white screen is actually touch sensitive.
