A week or so ago I decided I wanted to get all of my archived mail from Mac OS X's Mail.app into a more readable format. I was a bit surprised to find that ever since 10.4, Mac OS X stores its mail in an Apple-invented format called "EMLX" (well, this is what I'm calling it at least...each mail message is stored in a file that ends in ".emlx"). A very rough sketch of the file format:
(1) The first line of the file (beginning of the document to the first linefeed) is an ASCII-encoded number representing the size of the actual email message in bytes.
(2) Starting with the first byte after the linefeed is the email, exactly N bytes in size where N is the number of bytes specified in #1.
(3) From the end of the email message to the end of the .emlx file is an XML-encoded Apple PList containing metadata about the email message (presumably for spotlight).
I really don't care for the .emlx file format. The only application that's able to read it is Mail.app. Really the only reason for its existence is because Apple wants Mail messages in Mail.app to be indexable by Spotlight, and Spotlight mandates that there's a one-to-one relationship between files and search results.
Anyway, I searched around a bit to try to find an app that would convert my messages from .emlx to mbox. The only thing I could find was this app, which was graphical. It requires you to drag and drop your individual .emlx files from the finder into the app, which is an absolutely horrific way of requiring users to pass input to your app (I have many tens of thousands of messages, and making finder pass this many files via drag-n-drop is really difficult to do without crashing Finder). Additionally, I had some problems with the application dropping some number of messages. So, I wrote my own quick python script to handle converting .emlx files into one giant mbox-formatted file. I've posted the script here:
Its behavior is never to overwrite the mbox file specified, only to append to it, so you can pass an existing mail spool (so long as nothing else is writing to it). It doesn't do any sort of mail spool locking (so you may want to manually lock your mail spool first or make a copy). The appending behavior also means you can use xargs to pass the script thousands or millions of emails if you like (e.g. 'find . -name "*.emlx" | xargs emlx2mbox.py mbox_file').
Because some of you won't shut up about it, I've added RSS to my blog! It should appear automagically in your browser of choice, but if it doesn't, you can find it here:
When did the media start growing balls? This editorial piece by Keith Olbermann is freakin' impressive...piercing through the seemlingly patriotic rhetoric and displaying Bush's speech for what it really is...subtly manipulative and incredibly disingenuous.
I saw an interesting entry from the fortune cookie program tonite:
page 46
...a report citing a study by Dr. Thomas C. Chalmers, of the Mount Sinai
Medical Center in New York, which compared two groups that were being used
to test the theory that ascorbic acid is a cold preventative. "The group
on placebo who thought they were on ascorbic acid," says Dr. Chalmers,
"had fewer colds than the group on ascorbic acid who thought they were
on placebo."
page 56
The placebo is proof that there is no real separation between mind and body.
Illness is always an interaction between both. It can begin in the mind and
affect the body, or it can begin in the body and affect the mind, both of
which are served by the same bloodstream. Attempts to treat most mental
diseases as though they were completely free of physical causes and attempts
to treat most bodily diseases as though the mind were in no way involved must
be considered archaic in the light of new evidence about the way the human
body functions.
-- Norman Cousins,
"Anatomy of an Illness as Perceived by the Patient"
One thing that I thought was interesting is that almost all of the drugs mentioned affected users by causing your brain to flood itself with neurotransmitters, namely dopamine. Many of the drugs work by inhibiting the reuptake of these neurotransmitters much like antidepressants work, which surprised me. I guess we often forget that things like antidepressants and ritalin are just less intense versions of things like ecstasy and methamphetamine.
I feel like I should be writing more, since I haven't written a lot lately. So I'll just throw out some crap that's on my brain for good measure.
Appears that Debian's been hacked again. I read about it on Digg but the story has gotten less publicity than the last Debian hack in 2003. These semi-frequent hacks are really bad PR for Debian...I guess at least they caught it as soon as they did.
Migraines suck. I have been taking a new drug called Midrin which seems to be better at actually aborting migraines that are in the process of forming. It's basically just Tylenol plus a vascoconstrictor and a sedative; a cocktail of sorts. The sedative part makes me loopy though. That's often the problem with migraine drugs...often the side effects of the drug are worse than the migraine itself. Maybe I should ask my doc if there's any way I can just get the vascoconstrictor and take it with a Tylenol?
In California, when you go to the DMV to get your new license, they can't print you a license on-site. Instead they hand you a temporary paper license with no photo identification. They send you your real license in the mail. This seems so backwards; why can't they just print your license at the DMV? Maybe they want to use it as a way of verifying your mailing address?
I have progressively been getting into work later and later. I am finding that my body is requiring more and more time in bed (at this point I really need to be in the bed 9 hours before I have to wake up to feel fully rested). And additionally, I have a hard time getting moving when I wake up. In fact, I've just felt very unmotivated in general lately. I guess the stress of moving and coping with a totally new environment has left me a bit more tired and lazy than usual. Granted, I am the first to admit I can be a lazy bastard in general, but nowadays I'm so lazy I do things like leaving dishes in the sink for days on end.
So, for those whom I haven't told, I've accepted a job with Apple Computer and will be moving to beautiful Silicon Valley here in about a week. I'll probably be posting a bit unfrequently til the transition is completed (and I'll also likely be a bit less accessible too). Commentary about the area and life there will be forthcoming in future posts, I'm sure...
I'm 25 today! And here's a document I wrote a while ago with some ideas for a piece of task management software, but I forgot to ever post it. The general idea is you enter your tasks in the software, and it figures out based on criteria you specify when to annoy you about a particular task. It's kind of like the task trackers you find in iCal and Outlook, except that the task tracker itself is responsible for reminding you to do things (well, Outlook does this but in a very limited way) instead of requiring you to periodically "poll" your list of things to do and make a decision.
We've been discussing software engineering processes at work lately, and turns out that I have a very different view of software development than most of the people I work with.
When you look at the process of engineering a piece of software, it's not hard to make the transition to seeing this process as a list of tasks that must be performed. First you gather requirements, you think, and then you turn these requirements into a base software design (and you need a team of various types of specialists for this), and then this design gets passed off to code monkeys, etc. Then you start assigning these tasks to individuals based on that individual's specialty. For example, "here, you're a database guy, so you design the DB", or "you're good with people, so you gather requirements".
The problem with this approach is coherency. With so many different individuals on your team, each specializing in a certain area of the process, no one person has a real understanding of how all the different pieces of the puzzle fit together. Your database guy doesn't care about code architecture or UI, so he's designing in a black hole with regards to other aspects of the application. Your UI guy doesn't care about architecture or DB storage, so he may not be thinking about the nuances of how the application responds to different types of input based on the app's architecture.
Plus, with every point of interaction between human beings, data is lost. If your requirements guy is nontechnical, you can be sure that when he passes his "data" on to the more technical folks on the team, there will be giant holes. Maybe he didn't ask the right questions because he didn't know to ask them? Maybe he wrote down information he thought was important while neglecting other information that the technical team needed? Either way, any time data leaves your brain and goes out your mouth or on to paper, information is lost.
It's strange to me how many accomplished developers think that the "each team member specializes in one or two areas and nothing else" approach is good, despite the fact that no one can really cite a situation where this sort of team worked out. It's almost like an assembly line paradigm, in that it's way too static. Different people with different "skillsets" (I hate that word, because it implies that having competency in a certain area makes you good at designing software) are placed along the assembly line with well-defined jobs but little freedom to understand or be a part of the design of the final product.
Software development is a craft...an art. The best software development processes, realizing this, get out of the artist's way. They place a group of talented developers front and center and task all other team members in support roles, where they should be. This isn't to say that the support roles aren't needed; they are very important. The carpenter is responsible for turning wood into furniture for a customer, but without someone to provide the wood, for example, he can't do anything.
These front-and-center software developers are responsible for every aspect of turning client interaction into software ideas. They take client-prepared data, host question and answer sessions, build prototypes and get feedback from them--anything they can do to understand what the client needs--and turn all this data into a software architecture and a plan of action. This group operates as a team. All developers are competent and there is little or no hierarchy (possibly a senior developer is put in charge and has the final say on issues where there are conflicting opinions). Specialists like DB gurus are not a part of this team, but are support. They are called on by the team when needed, and their input is always considered and weighted by the team. But the team has ultimate authority over what ideas are good ones for the particular application in question.
It's only tangentially related, but Zen and the Art of Motorcycle Maintenance has a few interesting quotes that can be applied to the art of engineering high quality software:
---
"Peace of mind isn't at all superficial, really," I expound. "It's the whole thing. That which produces it is good maintenance; that which disturbs it is poor maintenance. What we call workability of the machine is just an objectification of this peace of mind. The ultimate test's always your own serenity. If you don't have this when you start and maintain it while you're working you're likely to build your personal problems right into the machine itself."
---
"It's the format," I say. "No writer can buck it. Technology presumes there's just one right way to do things and there never is. And when you presume there's just one right way to do things, of course the instructions begin and end exclusively with the rotisserie. But if you have to choose among an infinite number of ways to put it together then the relation of the machine to you, and the relation of the machine and you to the rest of the world, has to be considered, because the selection from many choices, the art of the work is just as dependent upon your own mind and spirit as it is upon the material of the machine. That's why you need the peace of mind."
"Actually this idea isn't so strange," I continue. "Sometime look at a novice workman or a bad workman and compare his expression with that of a craftsman whose work you know is excellent and you'll see the difference. The craftsman isn't ever following a single line of instruction. He's making decisions as he goes along. For that reason he'll be absorbed and attentive to what he's doing even though he doesn't deliberately contrive this. His motions and the machine are in a kind of harmony. He isn't following any set of written instructions because the nature of the material at hand determines his thoughts and motions, which simultaneously change the nature of the material at hand. The material and his thoughts are changing together in a progression of changes until his mind's at rest at the same time the material's right."
---
This eternally dualistic subject-object way of approaching the motorcycle sounds right to us because we're used to it. But it's not right. It's always been an artificial interpretation superimposed on reality. It's never been reality itself. When this duality is completely accepted a certain nondivided relationship between the mechanic and motorcycle, a craftsmanlike feeling for the work, is destroyed. When traditional rationality divides the world into subjects and objects it shuts out Quality, and when you're really stuck it's Quality, not any subjects or objects, that tells you where you ought to go.
By returning our attention to Quality it is hoped that we can get technological work out of the noncaring subject-object dualism and back into craftsmanlike self-involved reality again, which will reveal to us the facts we need when we are stuck.
---
To put it in more concrete terms: If you want to build a factory, or fix a motorcycle, or set a nation right without getting stuck, then classical, structured, dualistic subject-object knowledge, although necessary, isn't enough. You have to have some feeling for the quality of the work. You have to have a sense of what's good. That is what carries you forward. This sense isn't just something you're born with, although you are born with it. It's also something you can develop. It's not just "intuition," not just unexplainable "skill" or "talent." It's the direct result of contact with basic reality, Quality, which dualistic reason has in the past tended to conceal.
I've actually been trying to get up earlier lately, though "earlier" for me is more like 8:30 and less like the 6:00 (or earlier) that this guy is talking about. Still, it's a good read.
I've been interested in getting a Blackberry for some time. I've done some development for the devices, and I have to admit they are pretty neat to play around with. They seem extremely popular among politicians and businessfolks (many of our clients use them), and I had been needing a calendaring-on-the-go device to replace my Axim for some time. So, when my Motorola T730 snapped at the hinges and I needed a replacement, I decided to try out the Blackberry 7130e, from Verizon.
After playing with it for about a day, I returned the device. I have to say, so many things about Blackberrys are so cool, except...that freaking $50 data plan they make you purchase with the device!!! What is the deal with that? The sucky thing is that your $50 data plan really only gets you 2 or 3 things:
(1) simple email forwarding/push/whatever to your handheld
(2) the ability to chat on various IM services
(3) the ability to surf the web using a rather crappy built in browser
I think that if work were reimbursing me for the data plan, that maybe #1 would make enough money to justify the $50/month fee. Scratch that...I am 100% sure that you'd make your $50 back easily just by being able to respond to emails quickly when away from your computer. #2 is somewhat useful if you IM a lot more than you email. #3 is a novelty at best. I was hoping to be able to tether the machine to my Mac as well, to get EVDO access (if I had been able to successfully do this, I would have kept the device), but I was never able to pull that off.
I was also disappointed that the device really is too big to carry comfortably in, say, the front pocket of your blue jeans. You are going to be using a belt clip (I dislike them) most of the time. Additionally, the phone's UI, while it is relatively quick for performing non-phone tasks, is rather cumbersome for common tasks like, say, quickly calling someone from your contact list. Additionally, Blackberry still cannot sync via Bluetooth; this is rather silly given that much cheaper phones have been doing this for years now.
I ended up buying a Razr instead. The Razr is a much smaller device. It syncs with my Mac laptop via Bluetooth (with some custom iSync modifications that can be found quickly over Google). It has text completion that, while not nearly as good as the text entry system on the Blackberry, is still a step above that of my old Motorola phone.
Phone companies are going to have to do one of two things to make the Blackberry more appealing to the average consumer, I believe:
(1) come down on the data plan price
- or -
(2) offer more features with the data plan
$100/month for voice and data is just too much money for someone who's not already rolling in a fair amount of dough.
I just finished an hour long composition session with GarageBand, and I have to say it is probably one of the best production programs I have ever used, at least if you want to compose with virtual instruments. I've been playing with Cakewalk, Cubase, and Reason (all on Windows, but that's beside the point) for a while now, but none of these applications really lend themselves to easy input and manipulation of MIDI data/score data (rather surprising, since the cheapest one is still $400). GarageBand makes dealing with MIDI data easy though...after a few minutes of getting my feet wet with the controls and user interface, I actually found I didn't have to grapple with the program to deal with the music. It's such a refreshing feeling, and I'm so amazed that a cheapo $99 application can do a better job of providing a UI for music input than some of these $500 applications.
I'd really like to play with Logic, which is the "real" application that GarageBand is based on. GarageBand has some pretty lame limitations that I guess make sense for an entry level application. For example, there can be only one tempo and time signature for the entire song, and you must chose from a (relatively small) list of predefined time signatures. Not sure why they placed these restrictions on the user, though maybe they were going for a simpler UI.
Still, even with its limitations I really like GarageBand, and I think it's really cool of Apple to provide an entry level music composition/production application like GarageBand. I will have to write move as I discover more of GarageBand's features...and maybe even post some compositions eventually.
OK, I admit it. After complaining about the Apple I had been playing around with for a few weeks, I began to notice, subtly at first, that the Apple was growing on me. I found myself edging away from the home PC more and picking up the Mac for various computing tasks. The end result is that months later, I've found myself to be the proud owner of a 12" iBook.
Many of the gripes made in my earlier post really turned out to be just the product of unfamilar UI. Once I got settled in, I found myself working at about the same pace (with some minor differences) as I would on a PC. The main benefits to the Mac are stability (things have messed up once on me thus far, but otherwise I've had 1.5 months of no OS crashes) and an excellent array of 1st and 3rd party apps that let you quickly and easily perform tasks that seem relatively difficult on the PC.
By default, when opening a folder window, the parent window closes automatically. This surprises the sort of people who will never be confident enough to investigate Nautilus's preferences, and who expect things on their own computer to stay where they left them. It is unfixably inconsistent -- it does not happen for the Computer window, or for the Desktop, or for opening documents rather than folders. And it dramatically reduces the usefulness of the file manager for managing files, as it is extremely difficult to get source and destination folders open simultaneously.
This is another horrible habit of Linux distributions. Instead of going with the default UI and look-and-feel chosen by upstream maintainers (you know, the people who wrote the applications), distributors randomly change things that they don't like.
This is appalling for a number of reasons, but mainly because the developers of KDE and GNOME invest time and money making their respective desktop environments look and act as pleasant as possible, and distributors simply throw these changes away at a whim.
In fact, if you look at DistroWatch, you begin to realize how many top-ranked distributions go with heavily-tweaked versions of the standard desktop environments. Fedora, Mandrake, and Ubuntu all tweak this stuff heavily. As a result, a Fedora user who sits down at a Mandrake machine is lost. What is this icon? Why is that there? Who knows? Maybe some random developer stumbled in a moment of arrogance and thought it was a "better" choice to override the decisions of the team that spent years designing and implementing the original system?
Thus, the problem above. It's not that Canonical's bastardization of Nautilus is inherently wrong (well, I think it is bad UI, but evidently some developers at Canonical think it is good UI), it's just that now all these Nautilus users will have to relearn that "oh, we are on Ubuntu GNOME and it acts different from every other GNOME on the planet".
Perhaps this is the reason that I generally come back to Slackware and Debian. They have their faults, but they seem to offer the most consistent systems that are most in line with what the developers of those systems intended. Coincidentally, they are also much easier to use...
The other problem is that by tweaking the desktop environment heavily, you may end up introducing some new problems that might not have emerged in the original system. The only way to avoid ending up with a buggy piece of software is to have a rigorous quality assurance process, and I am 99% sure the only major Linux companies with such a process are going to be RedHat and Novell/SuSE.
So let's recap. Distributions changing random elements of your desktop environment causes:
(1) UI confusion by users who are used to "stock" environments or environments packaged by other distributions
(2) Bugs caused by changes made by distributors
(3) Flat out bad UI by rogue developers who do not understand (or maybe just don't care about) the UI decisions made by upstream maintainers
One big problem plaguing GNU/Linux distributions these days is the lack of focus on and lack of integration with a core set of packages. People who produce distributions are often afraid to make what I sometimes call "distribution-level decisions". In my world, a distribution-level decision is a decision to include (or not include) a particular package or feature because of how it integrates with or affects the entire distribution as a whole.
Which MTAs a particular distribution includes is a good example of a distribution-level decision. Slackware includes only one MTA, Sendmail. RedHat includes only one as well (I think), also Sendmail. Debian includes a lot of MTAs, including Exim, Sendmail, and Postfix (and probably others).
I think many Linux users believe that including a lot of MTAs is a good thing, because it introduces an element of choice. Debian's default MTA is Exim (which I am not particularly wild about), but if I don't like Exim I can simply switch to Sendmail or Postfix.
However...several things to consider:
For starters, a user's overall experience in an OS is often a function of how often things "just work". By focusing on one MTA instead of providing a million different alternatives, a distributor can take the time they might have previously spent packaging alternative MTAs and use this time to create some custom configuration tools for a single MTA, or packaging that single MTA in a good, easy to use manner. At some point, end users will stop caring what MTA you use anyway, because, let's face it...most MTAs work and offer roughly the same feature set. Your custom configuration tools save the user from needing to know all of the intricacies of a particular MTA (namely its configuration files).
Secondly, distributors should consider that the software included in their distributions is a sign of the quality of the distribution as a whole. If a piece of software does not meet this "quality" standard, it should be cut from the distribution or fixed in a way that it does meet this standard.
For example, say Debian packages a new MTA called "Bob's Super MTA". We'll call it BSMTA for short. BSMTA is OK, but it seems to crash about once every 2 days. Debian developers (who have never worked with the BSMTA source code before) now have to dive into the source, become proficient with it, and finally fix the bugs in question. This wastes time and developer energy that could have been spent elsewhere, making the OS friendlier and easier to use.
In contrast, Slackware would have never included BSMTA unless it offered significant benefit over Sendmail (in Slackware's case, if it had widespread acceptance and was simple, stable, and secure). Even at that, Patrick would likely have run BSMTA for some time (maybe 6 months or so) before considering it high quality enough to be packaged in Slackware.
Because of this, I know when I install Slackware on a new system that I am getting a quality distribution. I know that the software included has passed the "Patrick Volkerding" test, which means it will be stable, secure, and reliable enough to use for critical work in a production environment.
If I absolutely hate Sendmail and can't live without Exim, I can simply download the Exim source and build it myself on my machine. It's not like it's hard to do so. With a Freshmeat subscription I can even be alerted via email when new versions of Exim are released.
Window managers and desktops also fall prey to this sort of "offer users a choice" philosophy. I switch back and forth between KDE and GNOME depending on what distribution I'm in, but I can't help but feel they are both basically the same (save a few UI quirks). There are elements of KDE that I like, and there are elements of GNOME that I like. Why can't the developers of these two desktop environments merge their efforts to create one coherent desktop with the advantages of both? In contrast, Mac OS X does not offer multiple desktop options, which means it "just works" for Mac users. New Linux users likely don't even know the difference between GNOME and KDE, so why are we asking them to choose? Even most advanced UNIX users don't care whether they are using GNOME or KDE, so long as they have a coherent desktop, just like most UNIX users don't care whether they are using Sendmail, Exim, or Postfix, so long as they have a working MTA that's easy to configure.
Earlier today my Axim stopped beeping for appointments. Tried resetting the device, but that didn't do anything for me. After scouring the Axim forums for a few minutes I ran into a series of posts from users having the same problem (many of them were dated over a year ago, so I guess this has been around for a while). The fix? Set your PDA clock to some time in the future, then set it back to the correct time. Apparently when you do this, the OS is forced to re-generate system notifications with the correct time offset. Arrgh!
A while ago I was running into another problem which seems to have fixed itself (possibly via a ROM update), where the Axim wouldn't correctly "wake up" to deliver notifications. Instead, it would sleep through the notification, and then when you turned the PDA on the notification would immediately appear. Of course it was always minutes/hours/days late.
The Axim gets such high praise online, and Windows Mobile seems to be doing such a good job overtaking Palm in the PDA market. Do people even use these things before reviewing them? I have to admit one of the reasons I bought the Axim was because it had such good specs for such a small price, but the OS's reliability is just hideous. I could have easily missed important appointments (that is, if I ever had important appointments). But the OS's ability to be consistent, to provide the sort of support you would expect from a PDA, is never mentioned in a single review. I never heard anyone say "the OS has critical bugs which make it completely undependable in certain situations", yet that has been my exact experience! Am I going crazy here?
This is probably much of the reason I don't like Microsoft or Windows at all. I never feel like they bother to deliver on the promise of security or reliability. I don't know what about these two principles make them so hard to implement. Apple and PalmOne are two companies that seem to be able to deliver proprietary solutions that suffice on both fronts. Even though (as I've stated below) I don't like Apple's UI, I can respect them for creating a solution that does work 99.999% of the time. So why can't Microsoft and Dell create a PDA that wakes up and beeps at me when I need to be doing something important?
I tried to like it, but Apple Fails to Win my Heart
The whole Ipod experience (which has been very pleasant) got me interested in trying out an Apple, so I opted to borrow the work iBook for a few days, just to try things out. After having used it about 33% of the time for about a week now, I can pretty definitively say I won't be buying an Apple any time soon.
Why, you ask? I was actually expecting the user interface to be extremely intuitive (the iTunes interface definitely is), but for someone who has used Linux and Windows for years, the overall UI of Mac OS X just is too different. For starters, I dislike the Apple's notion of an "application". It's sort of hard to explain if you've never played around with OS X, but Apple apps are either "open" or "closed", and all windows from one open app are sort of grouped together behind the scenes. For example, I can close all of the Firefox windows, but the Firefox application can still remain open. On Windows and Linux, when I close the last Firefox window, Firefox the application closes. To me, this makes way more sense, but then again I am coming from years of Windows and Linux use.
Other things I didn't much care for:
When you click the Firefox or Safari icon in the dock for the first time, the app is started and a new window is opened. After that, clicking on the Firefox or Safari application in the dock only brings the respective application to the front. It doesn't spawn a new browser window, as would happen if you clicked a Firefox or IE icon under Windows. Why do you have to be aware of an application's behind-the-scenes "open" or "closed" state in order to predict what will happen when you click its icon? And why do I have to go into a menu or use a key combination to create a new browser window?
The laptop trackpad lacks a right mouse button. This doesn't seem bad at first, but click-and-hold and/or control-click gets extremely annoying after a while, especially when dealing with cross-platform software like Mozilla. Additionally, the trackpad just /feels/ wrong. It's hard to aim very exactly, and I find myself constantly correcting my mouse movements in a way I never have to on my laptop...though I am willing to admit that this might just be a learning curve.
I had also expected X11 software to "just work", but it turns out that X11 software really doesn't just work at all. Since X11 software doesn't follow the "persistant application" model described above, there's no way for X11 apps to integrate with Apple-isms like the dock (though you can minimize X11 apps to the dock with some success). So if you fire up an X11 app like Gaim, it won't appear in the dock...which is counterintuitive, since native Mac OS X applications do appear in the dock when run. All of your X11 apps are basically stored under the "X Server" dock entry. Also, X11 apps don't use Carbon, so they "break the UI rules" by doing things like rendering menus in their windows instead of at the top of the screen.
I understand why Apple puts the menu bar at the top of the screen...because it's easier to aim and hit a menu bar up there than it is to aim and hit a menu bar in a window. The underlying assumption made here is that at any given point, I am working in one and only one open application (since only one menu bar can be shown). But this just isn't true! Especially with multi-monitor setups like I have at work, I am frequently using several applications at once. I have open a calendaring app, mail app, IM app, terminal, browser windows, etc. I frequently want to move quickly between these apps, and I don't want to have to use something like Expose, which--though it's pretty--is slower than dealing with the task bar.
Anyway, here's my conclusion: at the end of the day, Mac OS X is pretty to look at and much more stable than Windows. It's simpler in some respects (device configuration is notably more hassle-free than Windows), but it's also more complex (right mouse clicking, switching applications) than Windows. As much as I hate to admit it, Windows XP Pro on decently good hardware (like my Thinkpad) is pretty much the apex of quick, inexpensive, easy to use, mobile computing at the moment, at least for most of us.
There are things that the Apple can do better, and I like the fact that it's stable and powered by UNIX, but if it can't let me work quickly and efficiently, then I'll settle for something that does let me work quickly and efficiently but that is slightly less stable and not powered by UNIX. Plus, I can always use Linux, which from my standpoint has all of the good UI of Windows (and Mac OS X, too) with little or none of the bad UI...except for system configuration, which OSS developers are still working the kinks out of.
I bought an Ipod last week. I've wanted one for some time now, and I decided a few months ago that I'd purchase one with my tax return money (which was more than enough). I bought the 30GB Ipod Photo, priced at $350. The 20GB model was priced at $300, had 3 hours less battery life, and a b&w screen...so I think the 30GB was well worth the extra $50.
The Ipod is a great device, by the way. In fact, it really has two things going for it. Number one, it's very very small...you can slip it in your pocket and easily forget it's there...and number two, its user interface is very conducive to quickly selecting music from a particular artist, album, or playlist (created on your desktop).
A few months ago I got into an Apple-hating stint and thought about buying a Neuros. But I didn't, and looking back I'm glad I didn't. The Neuros has some really nice extra features, like the ability to play ogg files, a built in radio broadcaster, and switchable hard disk drives (in case you want to replace your HDD with a larger one), but what you get in features you pay for in convenience. I read a lot of reviews online, and most reviewers complained that the size of the Neuros made it flat out unusable in a lot of situations where portability was an important factor (like going to the gym).
Anyway, one thing that has inadvertently happened now is that I'm having to consider whether or not I want to keep my Dell Axim around. I only have so much pocket space, and it's getting crowded in there with a cell phone, wallet, keys, Axim, and Ipod.
I have to admit...the Axim has always been kind of a third wheel for me. I have the Rhinoskin, which is a great case except for the fact that it practically doubles the size of your PDA. So what was once a medium sized PDA is now a big ole honkin device. It takes up one entire front pocket by itself and certainly isn't unobtrusive.
I had been toying with the idea of buying a co-worker's poor reviews.
I've also been thinking about going the Blackberry route. A whole lot of people I know have started buying Blackberries, and many swear by them. I played around with a Blackberry a bit last year but the UI really turned me off. Back then I just dismissed the whole Blackberry thing as a passing corporate fad.
Yesterday I was walking around CompUSA looking for Ipod accessories when I happened to walk by the cell phone display. I got a chance to play around with the PalmOne Treo 650 for a few minutes and was completely blown away. Suddenly, I started to understand why devices like the Blackberry and the Treo were so popular...because they have predictable user interfaces that can be operated quickly and easily with minimal input! The Blackberry interface, for instance, can be navigated entirely with your thumb. The Treo includes a stylus, but most basic navigation can be performed without even pulling it out. Both devices contain keyboards, making them useful for tasks such as instant messaging and email on the road.
I've been playing around with my Axim more these days, and I've begun to notice a number of critical flaws. For starters, simple tasks like adding appointments take a lot of keystrokes (see this article on palmone for an example). If you've begun to enter an event in pocket Outlook, you can't elect to "cancel" and not create the event...instead, you have to finish creating the event, then delete it. The Palm's "daily appointments" screen typically fits all of your appointments in one screen, whereas the Pocket PC (in an attempt to space everything evenly) forces you to use a scroll bar to see everything.
Figuring that someone might have made a better replacement for the native Windows Mobile PIM apps, I looked around at Pocket Informant. Both applications add functionality above and beyond the core Pocket PC PIM applications, but neither application is pleasant to use! Both are chock full of incredibly busy screens, icons everywhere, flashy colors...things that a user who is pressed for time just doesn't care about! This is why those corporate executives use the Blackberry...because they don't want to have to figure this stuff out. They want a simple UI that just works. I suspect most corporate executives don't even enter most of their datebook information in their Blackberry directly, but use Outlook and sync instead.
I think this is the biggest critical mistake of the Pocket PC. The Pocket PC attempts to bring (and encourages PPC developers to bring) full fledged desktop-y applications to a handheld device, instead of assuming that handheld users want a simple, easy to use, quick to deal with, predictable user interface. Like the Neuros, the PPC device has so many features...but in doing so fails to be a pleasant, usable device.
For example, the Ipod doesn't have a playlist editor. There is absolutely no way to build playlists on the fly from your Ipod. You must create these playlists on your desktop, then sync them to the Ipod where you can use them. When you think about it, introducing a UI for creating playlists on-the-fly, while it seems like a "feature", would really require a lot of effort with the trademark Ipod scroll wheel. So, it's rightfully absent. Instead, the Ipod's UI is built around use cases and usability studies, basing interface on what users in the real world need to do...the goal here is not to have applications on your handheld that do 100% of what their desktop counterparts do, it's to have the core pieces of your desktop functionality laid out in a way that's easy to deal with.
Palm hasn't really introduced any new PDAs recently (save the Tungsten T5), and I believe that's because they've (correctly) determined that the future of the PDA is in the smartphone. The Kyocera that I've been playing with isn't wonderful, but its rugged form factor and the form factor of the Treo are both more pleasant to use than the Axim's form factor. Small, better form factor, quicker to deal with...these are all reasons that the Palm and Blackberry (especially Blackberry, which is all over the place now) smartphones take the enterprise market away from Pocket PC PDAs and Smartphones, which are just bulkier and have poorer UI.
Correction: I'm told by Doug that you actually can create playlists on your Ipod, through a feature called "playlists on the go". You can read about it here.
I think my point still stands though. In general, you wouldn't want to edit all your playlists using the Ipod's UI (think about trying to type their names out with the scroll wheel!), and the on-the-go playlist is simply a special case where the UI actually works out.
I really like the user interfaces of GNOME applications and the GNOME desktop as a whole. Way more than KDE. Back when I used KDE with frequency, one of my major gripes was that the functionality was all there, but yet the UI felt so clunky. With GNOME things are much simpler, easier, more Zen-like.
Until you try to build applications from source, that is. And then, GNOME gets really really un-fun. I've been attempting to build Evolution 1.4 so I can sync my Pocket PC's appointments and contacts with it (Evolution 2 isn't fully supported by MultiSync yet). In addition to requiring a multitude of little piddly libraries which must be individually obtained, built, and installed, configure doesn't even pick up the libraries on my system correctly. I've got to create a special "jail" and symlink only the libraries I want there, so that Evolution's world view includes the correct assortment of libs it needs to build. Sheesh.
For about the last 3 months, I've had this ongoing internal monologue about my PDA. Although I have to admit it's great having my schedule and contacts on me all the time, and I like the Pocket PC user interface well enough, the PDA I own is just way too big and bulky. Especially since I plan to buy an iPod in the near future, the prospect of carrying around both my PDA and an iPod isn't all that appealing (I already carry keys, a cell phone, and a wallet).
One big inhibitor to dumping the PDA has been the lack of cheap, easy to use, decentralized calendaring. I've found plenty of open source web-based calendaring/groupware tools, but most do WAY more than I would ever want. And they're hard to set up, bulky, and inconvenient. The fact is, I just want to be able to fire up a calendaring application at work and at home and see the same calendar...without having to do any sort of manual copying of files.
Turns out there's already a solution! It's iCal + webdav. webdav is a vendor-neutral way of saving and retrieving files over http (pioneered by ?). So anyway, you can set up a webdav area on your web server (in my case, Apache2), set up normal Apache authentication, create a new calendar in Sunbird (or any other calendaring application that supports iCal+webdav, and most non-Outlook ones do), and publish your calendar to the webdav area. I have only fooled around with Sunbird, but I know at the very least it refreshes the remote calendar every 5 minutes or so, and updates it immediately when you make changes to your local calendar. So I can add an appointment at work, go home, pull up my calendar at home and *bam*, the appointment is right there too. I get all of this without having to run a complex calendaring server (yay) or having to use Outlook (which forces me to boot into Windows to even see my calendar, yuck).
For groupware-ish situations, you can even subscribe to multiple calendars, making some calendars totally private, or private to a group of users, or private write-only to a group of users but public to read, etc. The list goes on. I've thought about creating a work-only calendar that is public-access for other employees (can be done since we use LDAP as a central authentication agent) while keeping my personal calendar on my personal web server and locking it down to where only I can use it. Might also create a project-specific calendar that project-related people can subscribe to.
If I do end up changing, there are definitely a few nice features of the PDA that will be missed. For example, the PDA beeps at me before upcoming events. I could probably duplicate this by having a daemon scan the iCal file every few minutes and send email to my SMS inbox when events are coming up...but this may mean custom programming (bleh) that I'd rather not spend my time on. Also, I like being able to enter events into my PDA when I'm on the road, and I lose that capability this way. I've got no good solution to this one (maybe carry around a notepad every where I go?)
I'd be curious to know if anyone has proposed a similar solution to centralized contact management. Seems like vCard over webdav would be easy to setup and could solve that problem as well.
It was a good fight, but the web won, and I've decided to join the blogging craze. I've replaced the old, crunky brownjava.org page with a flashy new one using the great Serendipity blogging suite. May eventually spend some time making my own purty theme, but for now I just stole one of the defaults (mua ha ha).
Blogging should give me an unstructured way to get some of my OSS thoughts out in the open. It'll also give me a chance to practice some of my writing skills, which seem to be in higher demand these days.
Is something on your mind? Maybe you should let me know!