The Façade of Success

25 12 2007
buy cheap doxycycline online cheapest synthroid prices xanax without prescription cheap prozac tablets cheap tramadol acomplia zithromax pharmacy tramadol without a prescription phentermine pills buy generic accutane where to buy cialis cheap zoloft online doxycycline prices cheap generic phentermine nexium online cheap cheap synthroid tablets acomplia online nexium pills buy cheap propecia buy plavix buy diazepam without prescription accutane online stores accutane cheap cheap generic viagra clomid without prescription cheap plavix buy bactrim without prescription tramadol online phentermine without prescription buy synthroid diazepam online stores discount diazepam nexium online stores bactrim online stores order diazepam purchase lasix online purchase lorazepam bactrim prescription buy cheap tramadol zithromax online cheap acomplia generic phentermine plavix for sale cheap plavix tablets cheap tramadol tablets pharmacy lasix lasix sale pharmacy diazepam buy doxycycline accutane prices buy cheap phentermine lasix prices buy cheap nexium synthroid for sale plavix discount buy doxycycline cheap lowest price alprazolam cheap lorazepam online nexium cheap cheap generic cialis discount propecia pharmacy prozac soma discount soma online buy generic flagyl discount nexium cheapest tramadol prices discount viagra levitra generic buy accutane cheap synthroid pharmacy where to buy phentermine acomplia pills viagra sale bactrim pharmacy buy accutane without prescription lowest price acomplia buy lorazepam cheap buy phentermine without prescription diazepam for sale cheapest clomid valium prices buy prozac online tramadol sale clomid online synthroid cheap cheap alprazolam online order soma online buy zithromax phentermine no prescription where to buy lorazepam accutane online where to buy bactrim propecia cheap cheapest valium prices pharmacy lorazepam bactrim for sale price of soma buy cialis order bactrim online lorazepam without prescription zoloft without prescription lowest price diazepam pharmacy clomid cheap propecia buy levitra cheap purchase soma online purchase prozac order zithromax valium no prescription valium prozac prices nexium generic zoloft cheap cheap generic prozac order doxycycline online diazepam pills levitra accutane no prescription buy lorazepam tramadol prices online doxycycline where to buy synthroid buy alprazolam online alprazolam prescription zoloft buy cheap flagyl online zithromax pills online valium acomplia cheap plavix pills cheap zithromax online levitra online stores lorazepam pills order flagyl online doxycycline prescription cheap lorazepam buy acomplia discount acomplia cheapest prozac prices alprazolam without a prescription online synthroid cheap phentermine tablets alprazolam order clomid online cheapest diazepam prices zoloft for sale viagra pharmacy buy cheap lorazepam online clomid online cheap pharmacy tramadol buy cheap soma purchase clomid online cheap doxycycline purchase prozac online purchase cialis flagyl prescription diazepam prices viagra online stores accutane prozac pharmacy bactrim generic buy zoloft without prescription lowest price flagyl clomid pills buy clomid online cialis pharmacy pharmacy phentermine price of clomid buy acomplia online price of prozac phentermine online tramadol buy lasix online levitra without prescription buy cheap xanax online cheapest propecia prices cheapest acomplia prices buy lorazepam online cheap generic xanax accutane without a prescription synthroid without prescription order plavix flagyl without a prescription buy generic clomid lowest price lorazepam order soma order zoloft online propecia sale synthroid discount pharmacy cialis price of lasix prozac pills tramadol without prescription valium pharmacy purchase zoloft online buy cheap lorazepam accutane for sale lowest price clomid levitra no prescription synthroid sale nexium prices lowest price nexium generic lorazepam purchase synthroid xanax online cheap purchase bactrim cheapest alprazolam synthroid generic cheap xanax cheap generic acomplia buy cheap lasix online accutane pharmacy alprazolam pills cheap valium online lowest price cialis plavix generic buy levitra online tramadol online stores buy cheap nexium online zithromax lorazepam online stores acomplia no prescription lorazepam cheap bactrim no prescription buy plavix online lasix generic purchase clomid buy cheap zoloft online buy generic xanax doxycycline online cheap lorazepam online cheap cialis online cheap zithromax for sale generic lasix cheapest synthroid generic nexium purchase phentermine online prozac generic order prozac online clomid prices where to buy tramadol price of phentermine phentermine prescription lowest price propecia cialis online stores discount plavix cheap diazepam soma generic cheapest viagra prices cheapest bactrim prices buy cheap flagyl lorazepam pharmacy buy diazepam online propecia discount buy valium buy zithromax without prescription buy generic tramadol order levitra valium discount nexium online discount doxycycline bactrim cheap propecia prices plavix prices online nexium clomid generic synthroid buy cheap prozac online lasix online stores buy cheap valium online cheap xanax tablets xanax without a prescription buy soma online cheap phentermine online where to buy prozac where to buy alprazolam buy cheap plavix online order phentermine generic clomid buy tramadol cheap prozac cheap propecia tablets generic xanax purchase zithromax levitra online purchase viagra propecia generic generic synthroid buy cheap alprazolam online where to buy propecia acomplia without prescription cheapest diazepam order lorazepam xanax discount where to buy zithromax cheap diazepam tablets price of cialis cheap generic lasix order flagyl buy clomid without prescription diazepam online cheap order accutane zithromax without prescription doxycycline cheap lasix online cheap cheapest plavix alprazolam online buy cheap clomid online buy generic zithromax levitra for sale buy cheap acomplia doxycycline online stores purchase flagyl online nexium generic plavix pharmacy nexium price of alprazolam purchase nexium online buy generic cialis cheap flagyl tablets buy cheap bactrim online buy alprazolam cheap soma sale buy generic synthroid phentermine sale plavix pharmacy buy viagra online xanax purchase cialis online pharmacy flagyl alprazolam no prescription cheapest bactrim buy cialis online clomid sale flagyl online stores tramadol pills propecia online cheap lowest price tramadol cheap valium tablets price of viagra clomid no prescription synthroid pills order doxycycline nexium sale order cialis price of zithromax buy nexium cheap alprazolam for sale discount valium buy generic acomplia generic tramadol plavix without a prescription online clomid cheapest lorazepam prices lasix without a prescription order levitra online cheap cialis online online soma cialis no prescription buy propecia zoloft discount lowest price lasix cheap prozac phentermine generic cheapest levitra levitra pharmacy clomid pharmacy bactrim prices acomplia online cheap where to buy diazepam cheap generic levitra accutane sale tramadol discount cheapest doxycycline purchase acomplia online accutane online cheap cheap generic tramadol price of bactrim order lorazepam online order xanax online purchase levitra flagyl online valium for sale cialis plavix sale cheap levitra tablets price of zoloft purchase viagra online cheap generic zoloft flagyl discount prozac prescription soma pharmacy propecia order propecia online price of flagyl online levitra price of doxycycline bactrim propecia without a prescription acomplia prescription order synthroid zoloft online cheap flagyl sale buy synthroid cheap buy lasix without prescription zoloft without a prescription alprazolam sale buy tramadol without prescription prozac without a prescription flagyl generic buy propecia online cialis prices purchase lasix cheapest nexium purchase diazepam buy lorazepam without prescription buy cialis cheap lorazepam no prescription where to buy accutane xanax online zithromax discount prozac discount synthroid prescription lowest price bactrim discount zithromax accutane generic buy generic bactrim order valium online buy generic lorazepam cheap generic flagyl where to buy zoloft purchase accutane online discount phentermine plavix cheap zithromax cheap cheap generic lorazepam viagra cheap xanax online purchase bactrim online generic valium propecia online stores flagyl pharmacy lowest price valium buy synthroid without prescription cheap viagra online buy cheap lasix cheap doxycycline tablets levitra cheap online alprazolam diazepam pharmacy cheapest nexium prices purchase acomplia xanax pharmacy propecia pharmacy cheap accutane online valium without prescription cheap alprazolam purchase propecia purchase diazepam online cheapest phentermine prices generic zoloft order tramadol clomid online stores plavix no prescription price of synthroid cheap generic propecia cheapest tramadol order alprazolam online buy alprazolam without prescription buy cheap cialis discount levitra where to buy valium cheap prozac online cheap generic soma lorazepam generic buy flagyl cheap price of propecia lowest price soma order acomplia online lowest price viagra buy doxycycline without prescription cheap zithromax tablets flagyl no prescription diazepam without a prescription cheap levitra online prozac online cheap levitra without a prescription buy generic doxycycline buy prozac cheap phentermine for sale buy bactrim cheap pharmacy zithromax cheapest flagyl where to buy flagyl acomplia online stores buy lasix cheap buy cheap propecia online cheap soma cheapest accutane prices pharmacy alprazolam lasix pharmacy cheap zithromax viagra prescription zithromax without a prescription online accutane cheap lasix online acomplia generic cheap flagyl cheap clomid tablets order lasix online cheapest alprazolam prices buy nexium buy cheap clomid synthroid without a prescription accutane pills buy clomid diazepam sale bactrim sale lorazepam cheap doxycycline online valium pills buy soma cheap buy lasix phentermine online stores buy synthroid online online lorazepam lasix no prescription buy generic propecia xanax for sale cheapest zoloft prices buy phentermine cheap plavix online cheap bactrim cheap viagra tablets viagra without prescription cheap generic diazepam buy zoloft cheap order accutane online cheapest soma prices clomid cheap viagra prices phentermine cheap nexium pharmacy discount synthroid lorazepam prices buy xanax flagyl cheap cheap generic doxycycline buy cheap levitra prozac no prescription buy zithromax cheap discount lasix discount tramadol prozac without prescription discount cialis cheap lasix soma prices online phentermine buy propecia without prescription cheap diazepam online online diazepam plavix online cheap order bactrim where to buy soma cheapest xanax prices buy cheap xanax xanax prices cheap clomid online prozac online lowest price zithromax online bactrim cheapest cialis valium online stores synthroid online stores zoloft prices generic acomplia xanax cheap diazepam discount viagra online purchase tramadol online valium without a prescription order zithromax online doxycycline no prescription tramadol clomid for sale pharmacy soma viagra discount synthroid online cheap purchase propecia online viagra online cheap cheap valium cialis without a prescription discount prozac lasix online levitra online cheap cheap soma online buy levitra without prescription buy flagyl online buy cheap zithromax online acomplia discount where to buy plavix cheapest soma soma online cheap nexium without a prescription purchase alprazolam zoloft online tramadol no prescription cheap phentermine online cialis zoloft online stores phentermine online lasix pills valium sale cheap bactrim online clomid prescription generic viagra levitra pills purchase xanax online buy bactrim pharmacy plavix buy cheap diazepam accutane prescription buy cheap diazepam online buy nexium online cheap lorazepam tablets cheap alprazolam tablets price of valium buy cheap synthroid online discount bactrim lasix without prescription generic alprazolam flagyl without prescription online xanax viagra no prescription generic zithromax levitra prices generic cialis buy cheap phentermine online buy clomid cheap buy xanax cheap cialis online buy generic viagra doxycycline discount order clomid online propecia cheap plavix online purchase valium online cheap zoloft generic propecia lorazepam discount buy cheap soma online buy cheap prozac phentermine prices xanax pills online prozac prozac online stores acomplia pharmacy acomplia prices buy viagra lowest price doxycycline cheap acomplia online cheapest levitra prices buy cheap doxycycline buy cheap tramadol online propecia prescription zithromax generic buy tramadol price of plavix lowest price phentermine prozac sale buy alprazolam cheap generic clomid cheapest accutane discount soma purchase synthroid online buy generic plavix doxycycline generic purchase plavix xanax prescription valium generic bactrim online cheap purchase lorazepam online buy xanax online alprazolam online stores price of acomplia zoloft prescription soma pills generic levitra cheap synthroid discount zoloft alprazolam pharmacy viagra cheap cheap accutane cheap generic bactrim buy phentermine online buy flagyl buy levitra cheapest acomplia buy generic phentermine price of tramadol buy cheap zithromax cheap lasix tablets buy plavix cheap nexium discount tramadol pharmacy purchase accutane phentermine online cheap buy cheap acomplia online cialis cheap lasix for sale cheap flagyl online nexium no prescription cheapest lasix prices pharmacy xanax buy tramadol online alprazolam without prescription buy zithromax online order nexium viagra generic buy generic valium where to buy acomplia acomplia without a prescription buy cheap viagra pharmacy levitra order phentermine online buy flagyl without prescription buy accutane buy cheap alprazolam purchase zithromax online lowest price prozac lowest price accutane doxycycline sale bactrim without a prescription alprazolam online cheap cheap generic zithromax pharmacy bactrim levitra discount cheapest plavix prices buy cheap synthroid purchase doxycycline online buy cialis without prescription generic bactrim buy zoloft online synthroid prices propecia online cheap acomplia tablets buy cheap zoloft doxycycline pharmacy cheapest prozac cheap viagra cheap nexium online price of diazepam cheap generic plavix cialis prescription xanax online stores soma prescription plavix without prescription soma for sale lowest price zoloft cheapest zithromax prices cheapest zithromax buy generic alprazolam lorazepam for sale alprazolam generic cialis for sale cheap tramadol online cheapest cialis prices synthroid online order tramadol online buy viagra without prescription order viagra online zithromax no prescription order plavix online flagyl pills cheap cialis tablets cheap clomid diazepam generic buy generic nexium purchase alprazolam online flagyl propecia pills viagra without a prescription propecia for sale cheap cialis flagyl for sale prozac cheap diazepam without prescription zoloft sale order viagra accutane discount doxycycline for sale valium prescription lorazepam online bactrim discount cheapest valium order zoloft alprazolam cheap zoloft generic buy prozac without prescription purchase phentermine online lasix online flagyl cheapest propecia lorazepam sale order synthroid online valium online cheap purchase doxycycline cialis discount lowest price plavix purchase xanax zithromax prices pharmacy propecia buy prozac doxycycline cheap generic synthroid purchase tramadol pharmacy viagra cheapest xanax soma cheap generic accutane soma no prescription order lasix price of nexium buy valium without prescription buy cheap accutane xanax generic doxycycline without a prescription buy cheap levitra online synthroid no prescription cheapest phentermine valium online buy generic levitra cheapest doxycycline prices prozac for sale plavix online stores purchase levitra online lorazepam without a prescription zithromax online stores lasix prescription buy cheap cialis online buy valium online pharmacy zoloft pharmacy doxycycline price of accutane cheapest clomid prices clomid without a prescription valium cheap acomplia sale bactrim without prescription zoloft pharmacy levitra prescription tramadol cheap buy viagra cheap cheapest zoloft buy soma cheap propecia online flagyl online cheap cheap generic alprazolam cheapest lorazepam buy diazepam purchase soma soma without a prescription buy generic diazepam buy cheap viagra online cheap levitra cheap generic valium purchase zoloft order prozac plavix zoloft no prescription discount xanax pharmacy valium clomid discount cheap accutane tablets accutane without prescription soma without prescription soma cheap propecia no prescription propecia without prescription zithromax prescription pharmacy accutane cheapest viagra buy bactrim online diazepam cheap order acomplia buy generic zoloft order valium cheap soma tablets xanax sale buy generic soma viagra for sale cheap zoloft tablets lorazepam prescription diazepam prescription price of xanax nexium without prescription order diazepam online discount flagyl where to buy lasix pharmacy synthroid cheap nexium tablets buy cheap valium generic prozac buy xanax without prescription zithromax sale cheapest lasix bactrim pills lasix where to buy xanax diazepam online order xanax doxycycline pills purchase nexium phentermine pharmacy cialis pills buy doxycycline online buy soma without prescription lowest price levitra clomid alprazolam discount buy phentermine buy generic lasix buy acomplia without prescription cheap bactrim tablets discount lorazepam zithromax online cheap buy diazepam cheap generic soma order propecia generic diazepam order nexium online tramadol online cheap purchase plavix online lasix discount online viagra alprazolam prices phentermine discount where to buy levitra acomplia for sale soma online stores buy cheap bactrim bactrim online price of levitra generic accutane buy cheap accutane online order cialis online nexium for sale where to buy nexium price of lorazepam buy propecia cheap doxycycline online levitra sale cheap nexium cheapest flagyl prices cialis without prescription buy nexium without prescription discount accutane where to buy viagra zoloft pills where to buy doxycycline tramadol for sale buy zoloft tramadol generic cialis sale where to buy clomid online zoloft cheap synthroid online buy accutane online nexium prescription purchase flagyl flagyl prices buy generic prozac discount alprazolam diazepam no prescription buy cheap plavix viagra pills phentermine without a prescription buy valium cheap generic flagyl cialis generic online zithromax cheap generic nexium doxycycline without prescription lasix cheap online plavix buy plavix without prescription generic doxycycline plavix prescription buy acomplia cheap diazepam xanax no prescription discount clomid purchase valium online acomplia lowest price xanax tramadol prescription pharmacy acomplia lowest price synthroid order alprazolam

People look at the trappings of materialism, of possessions, and of an indulgent lifestyle, and they infer the absence of hard-work, sweat and struggle. They associate the possession of goods with success, representative of a successful person or someone who can get things done; being obviously done, because he’s no longer working hard.

However, the true measure of one’s success are the goals he has set for himself. For success is the achievement of goals, and unless your goal was the possession of great many material possessions, you are no more successful by having them then you are in not.

Understanding this, we can say Bill Gates isn’t a success although he has achieved great material wealth. The goal he had established for Microsoft, as defined in their original mission statement, was “A computer on every desk and in every home, running Microsoft software.” This is the reason why Microsoft competes vigorously in any industry related to computer software or which is heavily dependent on software.

If you think I’m just nit-picking over minor details, then you’re getting the cart before the horse. You’re looking at their position of prominence and wealth as establishing their character; whereas by focusing on their mission, the people of Microsoft didn’t stop once they achieved a measure of material wealth. They kept trying harder and harder to dominate other markets, and risked that material wealth, until they eventually dominated those markets.

You’re also demonstrating a great deal of self-centeredness, measuring others against your own personal standard for success.

Chances are, when you first read the title of this entry you thought of the façade rather than the success. Hopefully, by thinking more clearly on what is the true measure of success, your personal measure of success, you’ll concentrate on those critical areas which will help you achieve them rather than the façade.



The Day’s Not Done Yet

25 12 2007

it’s been excessively frustrating and tiring. To cap off the season I was hoping to release the overdue 1.6.8 today, but there are still difficulties in getting the new defaults system working correctly.

The debugger is failing in the middle of an initializer method (self becomes 0×1, and the argument becomes invalid), which typically indicates an invalid pointer, but I’m just using -[NSCharacterScanner scanInt:], which shouldn’t be so problematic. (But it is, after all, Cocoa.) And it turns out that isn’t the correct tactic to use anyway as I want to extract info from the internal version number (MMmmb.bs.rr), not the public (MM.mm.bb[s[rr]]), and Cocoa doesn’t have an API for handling fixed-length records. (Possibly the only functionality from COBOL I actually miss! I mean, there are BCD libraries for C, right?)

So I’ve spent much of the day tussling through docs and links for various RegEx frameworks for Cocoa, and trying to add RegexKit to the Blocks plugin framework; first 0.5beta and then 0.4beta via compilation. Now I’m attempting to use the prebuilt binary, which is problematic because frameworks are normally used by applications, not plugins, so it doesn’t exactly fit right (or run). But as the clock’s been ticking, it looks like it’s time to punt and attempt another tactic by hard-coding a parser for the internal version scheme or using defaults for the optional fields in the public version scheme.

This is just to fix the bugs in the version class I added in an earlier version, which I have to get out of the way to continue fleshing out the revamped defaults system I created with unit tests and component code in order to release! Argh!

It hasn’t been all sweat and tears, though. I went through a period of idea generation (both software and marketing/entrepreneurism) early during the process and also, last night as I was organizing several years of accumulated papers, bills and what-not, found several new UI ideas I had come up with (and forgotten) and the missing FreeHand install CDs.

Now to get these final PITA problems licked so I can continue to move Mori forward!



It Takes a Loser to Show You What a Winner Looks Like

22 12 2007

Recently, Turner Classic Movies aired the 1956 film The Opposite Sex, a film about the stereotypical 1950’s housewife who discovers her husband is having an affair, divorces him, but remarries him a year later (I guess).

Anyway, some of the dialogue is noteworthy as it demonstrates the error of just reacting to events instead of remaining cool, analyzing the situation, and acting on decisions that put you in a position to collect the desired outcome. Your desired outcome.

Here it is:

Once her divorce becomes final, one of her friends flies out to Reno (remember, this is the ’50s) to accompany her on the long trip back to New York (remember, this is the ’50s).

Amanda asks, “Are you satisfied?”

Kay hesitates.

Amanda continues, “Steven isn’t. Kay, has it ever occurred to you he might marry that girl?”

Kay hesitates again. “If that’s what he wants.”

“That isn’t what he wants. She wants it, and she hasn’t been wasting any time. I’ve seen clever operators in my day…”

Kay pauses packing. “You don’t seem to understand: it’s over.”

“You’ve played right into her hands. Walked wide-eyed into every trap she’s set for you. And now you’ve removed Steven’s last protection, his marriage.”

Kay looks at Amanda. “Why rehash this?”

“Because this is wrong! You’re not like these jaded, frenetic women shedding their husbands like they shed last year’s dresses.”

Kay continues packing.

“Look, Kay. I hate airplanes, and I hate cactus, and I hate people who give advice to other people. So I don’t know why I’ve flown 3,000 miles to this God-forsaken waterhole unless it’s because I can’t stand seeing something good go down the drain.

“Maybe it was good once…”

“Oh, you’re talking like a child! What do you think marriage is anyway? Something safe and comfortable you can take for granted? This is a rough world, Kay, and marriage has to live in it. It has to be won over and over again, as many times as necessary and against all challengers! And anyone who hasn’t the guts for it ought to have learned to live alone and like it a long time ago!”

Kay glares at her. “Like you?”

Amanda steels herself and continues, “That’s right, like me.”

Kay fumbles about. “I’m sorry, Amanda, that wasn’t very nice.”

“Well, at least it’s a step in the right direction. Stop being so nice, Kay! If you have any feeling left for the guy, get to New York as quickly as possible and tell him.”

“Oh, I don’t know. Maybe I’m just not the fighting kind.”

Now, you may be asking yourself, “Why has Alfonso gone nutso and started quoting old movie scenes. And especially bad movie scenes?”

Simply because earlier today, Scott Anguish, one of the eminent NeXTStep/Mac OS X developers who’ve assisted the rest of us Cocoanauts in getting our code to work and whose works have been referenced by Wikipedia articles, began shuttering his site due to one of the Internet trolls stealing his work. (Again, the topic of another blog entry which I’ll post after Mori’s latest bugfix is released.) He ended his explanation of events with the following, “I’ve worked 13+ years on supporting developers by maintaining Stepwise (which truly is a labor of love) and I don’t want this theft and misrepresentation to damage that effort.”

Really?! Then why just roll over and let him keep it? Don’t just cave into him! Do to him what should be done to all bullies, you kick them in the teeth and pound their heads into the ground!

Now, the perpetrator of this infringement might be a little more skilled than the average individual where programming is concerned, but that doesn’t make him more skilled than the average programmer. Indeed, having only one area of human activity you’re skilled in doesn’t make you skilled in all. Nor does having the right answer once make it the right answer all the time.

There’s an old saying, “When all you have is a hammer, everything looks like a nail.” Well, it’s obvious this bully needs to acquire additional tools, because he’s got a few loose screws.

Keep your material up, Scott. Please keep adding to the valuable content which has benefitted us, and the users we work for, tremendously. No amount of sputtering by a counterfeiting troll can prove to be a substitute for you.



A (Hopefully Brief) Update on the Delay of Mori 1.6.8

21 12 2007

As I was reviewing the code changes I had made, I slowly realized that the Mac’s user preferences system had a minor philosophical flaw which makes for dangerous situations in the program.

One of the goals of this version is improved recovery from faulty stored values relating to the preferences and UI, so you can continue with only minor inconvenience and perhaps a need to again set preferences to your liking. Not adequately performing this resulted in some of the missing toolbar and empty window problems that were experienced before. (For a more exciting example of cascading faults, read about the 2003 Northeast blackout.)

So after some delays in getting the unit tests for this new component to execute properly, I’m now adding that component into the program. Once I have the Cocoa preferences system replaced, I’ll be releasing 1.6.8. Then I’ll work on the possible fix for the SpotLight ‘odd name’ bug for a quick-turnaround (later today) 1.6.9.

If that particular bug can’t be quickly fixed, I’ll work on some other long-standing issues in Mori for an update that will be released after a few days.

Incidentally, Tobias had a valid concern regarding the update process: “Where does testing feature in this? In olden times an update was a build with only known problems since a few people played with it for a week before it was awarded a version number. WebKit offers a choice between bleeding edge nightly r1234 and release 3.0.”

I plan to continue to rely on the Beta Test Group for testing updates, with a release candidate at least one version ahead of what is shipping. However, at the time of this writing there are 320 open bug reports for Mori, even after having pre-release testing candidates as part of the process. That just isn’t right.

I’m primarily depending on the unit tests to prevent shipping defects to you. They serve to expose bugs in existing and new code; and by adding tests for the types of bugs identified in the bug reports, the tests will continue becoming more valuable to the release process.

The purpose is to continuously speed up the process by improving its results. It shouldn’t be a shock when a program works right off the bat. The delays are (partly) associated with having so many steps of repeated inspections on the same system. It multiplies the time it takes to get a new release out the door. The less I tolerate it, the quicker it gets done correctly.



Mori Update: More Bugfixes and More Frequent Updates

17 12 2007

Because of the difficulties fixing the toolbar bugs and getting Leopard compatibility complete (or reasonably so), Mori has quickly approached version 1.6.10 (not yet, only 1.6.7 has been released so far, but bear with me). This has some odd psychological barrier attached to it, as we seem to recognize it as a significant occasion, a hurdle we do not wish to cross.

I’ve been collecting fixes into a single release, attempting to conserve version numbers. There’s currently improved “Check and Repair Notebook”, more cautious handling of user preferences, improved Italian localization, a fix on the Drag and Drop stall, clearing of compiler warnings, some refactorings, and more unit tests. A couple more fixes I’d like to incorporate into this one: fixed word count (whether it’s in English or Greek), correct Smart Folder behavior and making wildcards optional in search terms.

But anything.10 is an artificial milestone, rather than a significant one. And MOX has already passed it and even gone on to 10.4.11, so what’s troublesome about it now? And with the new versioning class I added to Mori back in 1.6.4 or so, it should be able to handle even version 1.6.99 if necessary!

So I’ll be trying to post new updates more frequently. I’m not certain how frequently it’ll be, but I’d like to get to the point where there was a nightly build, like the Safari team provides. That’s too frequent for most users, of course, but then you’d be able to skip a few interim releases until something you need is included. The other benefit it would provide is allow me to move all the apps forward a little bit at a time, rather than doing continuous development on one app for weeks at a stretch before rotating development to the others.



A Superficial Review of TaskPaper (Cuz superficial is all my backlog allows)

14 12 2007

It doesn’t matter how much we complain about time, we’re not being realistic or honest about our use of it. Everyone gets the same amount every day; that is, if we’re getting the whole day. But asking for more time to do things has to strike someone as having too many things to do, and being grown up enough to abandon or postpone those things for which there isn’t time.

There are plenty of Time Management systems out there. Gettings Things Done (GTD) is a recent one with a lot of buzz and adopters. There are plenty of GTD software packages for those who prefer computer-based systems to paper, including two versions for Mori: Jeff Fisher’s mGTD plugin and Jim Harrison’s MoriGTD scripted system.

Now, I’ve had the audiobook for GTD for years but I’ve never listened to it. (I did at least listen to Merlin Mann’s David Allen interviews when I was on the road.) And now that I’m developing (and using) Mori I’ve even installed the mGTD plugin, but that was more for testing purposes than actually knowing what GTD was about (or how to use it).

So when Jesse introduced his own GTD app, TaskPaper, as a simpler way to getting things done with “paper-like simplicity” I was of course concerned that it would cannibalize Mori sales. But TaskPaper only manages tasks, not notes like Mori does. So unless your notes are one-liners used only to manage your activities, you’ll still need to grab a copy of Mori. ;)

But the real reason not to be concerned is TaskPaper is an awesome app in its own right. Jesse prodded me a couple times to try it, and even provided me with a license. So the next time I needed to jot down a task reminder, instead of using Mori, I opened up TaskPaper and gave it a try.

Now I have to admit, being both a GTD noob and a programmer, TaskPaper’s interface threw me at first. Let’s face it, any device with less than five buttons on it leaves me scratching my head. But I do know how to use an outliner. So with that interface in mind I set out to discover just how it was earning such wonderful reviews.

But TP isn’t exactly an outliner. It just uses an outline-like interface, and I emphasize that point. You’ll be productive very quickly, but I also got my list complicated very quickly by adding sub-sub-headings to my project. (But you have to expect that from a GTD noob and a programmer.) The beauty is that by using a very simple text editor/outliner interface, TP doesn’t complicate the ability to change your organization of tasks and projects. Nor does it complicate your ability to add extra info about the task (its metadata). Avoiding special columns and a form interface, TP instead uses the following special text characters to signify meaning: “:” for projects, “-” for tasks, “[tab]” to nest tasks within other tasks (which are themselves nested within a project), any non-reserved character for notes, and “@” for the interesting context.

Contexts are GTD’s way of giving you a way of lumping similar activities together. They aren’t necessarily part of the same project, but just things which are done at the same place (e.g., @home, @mall), the same type of activity (@computer, @phone), and so on. TP refers to them as tags, and uses the normal GTD syntax (I guess) to refer to them.

TP’s interface is very sparse, which means less clutter and distractions. It’s nonetheless powerful, letting you filter to a specific project or context. The point is to spend more time doing your activities than actually organizing what they are. And TaskPaper handles that beautifully (and elegantly). I now understand what the Hog Bay Notebook users have been clamoring for!

I also have a better understanding of how GTD works, even more so after I sat through the mGTD screencast put up by Jeff, which in turn helped me make better use of TP and GTD.

There are definitely some features I’d like to see added, though:

The UI signifies task completion by changing the text style to strike-through, but the only way to mark the task as completed textually is by adding the context @done or the keyboard shortcut cmd-D. (You can also mark it completed by clicking on the open circle in the left margin or the menu item “Project > Mark as Done”, but that requires lifting your hands from the keyboard to use the mouse. I would prefer some other delimiter such as “x”, or a checkmark to signify completion, just for continuity.

I’d like to see true tags supported, perhaps using Chris Messina’s “#” tag delimiter.

So while there are some features I’d like to see added for more sophisticated capabilities, for GTD noobs like myself (still) and those who just want to work and not manage yet another system, TaskPaper should be the first stop to GTD (and priority) mastery!

In time, I might become profficient enough at GTD to be able to use mGTD or MoriGTD. But for now I just need to start the “filtering the inbasket thing” to help things along. That, and redefine my understanding of the word “superficial”.



Now That It’s Winter, Developers Should Develop Some Thick Skins

13 12 2007

How timely! I had been working on the last entry for nearly a week, and was giving the 8th or 9th proofing when Manton Reece tweeted, “Finding the comments on CandyBar upgrade pricing kind of interesting. http://tinyurl.com/26aggr“.

That’s happened quite a bit lately, as I’m a bit of a perfectionist and entries I’ve began have been bogged down in my proofing stage. At least I was able to finish and publish the entry when those comments began. I guess I’ll have to do less polishing and just more shoot from the hip, dangerous though that may be for a corporation; and likely to result in a retraction or two in the future.

But it’s precisely those retractions and changes in policies and reactions to public opinion that developers should learn to handle. Most just don’t like having to say no. Well, most people don’t like to say no. But it’s important to know to say no, as you don’t have time to do everything you want, and you have to learn to prioritize based on what’s important to you.

Here are a few of those interesting comments left for that article:

I bought CandyBar 1 & 2. I won’t be paying Panic for 3, they priced it outside of my impulse range by trying to make it into more than it needed to be. I’m sure it was a lot of work, but that upgrade price is just too much for some icon swapping.
– Aurich

Another $5 product priced at $25.

Sounds like a job for serial box!
– Greasy Breakfast

There’s always LiteIcon. Not nearly as pretty and doesn’t do the dock trick — but it’s free.
– Insomnic

And that’s the point: if you want more functionality, expect to have to pay more for it. If you don’t want to pay for it, settle for less or do without. You’re not obligated to work overtime on your day off so your company can make more money off you, nor are companies obligated to lower their prices just so you can afford to buy their products.

quote:
Why are some people so against paying for something that had a lot of work put into it?
Because it doesn’t DO very much! If I put a lot of work into taking a dump are you going to pay me for it? What if I were to wrap it in shiny plastic? Would you pay me then? CandyBar is about 99% interface and 1% function. The point is that what this program actually does is largely unspectacular and is available for free by other means regardless of how much work was put into it to make it look nice.
– Fiendish

Schools used to teach that things could be separated into wants and needs, but back then parents used to take responsibility for their kids’ education. A Lexus is no more effective, yet is far more expensive, than a Kia for driving from one place to another. A Ferrari even more so. Not everyone wants or can afford the more expensive vehicles, yet they sell very well. A man has to pick the standard of living he’s content with.

If you’re running a business, the most important thing has to be the money (or some reasonable substitute). Some people like to espouse terms like ethics and morality and customer service, but those aren’t requirements for running a business. Those are principles by which you make decisions for how to run a business. And making decisions with those principles can make for a healthier business in the long run. But they aren’t necessary for a business. An unprincipled business that is profitable will outlast a principled business that isn’t.

People are afraid of money. People don’t want to be greedy, or worse, don’t want to be seen as greedy. Most people have a dysfunctional gauge for money which varies wildly depending on its context and is completely disproportionate to its true purpose. Money is just a product, made by man, used to trade goods and services. It is a way to shift one asset you have to another. Like your health and time or a house or car, money is just another resource that you can manipulate and assign a value to. Money doesn’t exist or accomplish anything on its own.

From a moralistic point of view, money lacks any. It is neither good nor bad. Even the saying “Money is the root of all evil” is a misreading of text from the Bible, which doesn’t condemn money. The actual text is, “For the love of money is the root of all evil: which while some coveted after, they have erred from the faith…,” and you don’t have to have a dollar to your name to covet. You don’t need a dime. In fact, a great many people in the world who criticize those who work hard to achieve financial success are also out there buying lottery tickets every week. Is money attained hastily in a desperate attempt to improve your life better than money gained after working a lifetime, or inherited?

You should think of your role in business as a farmer, looking for a harvestable crop. Disregard what you’ve heard about money not growing on trees. Everything grows. It’s a universal truth. You just need to recognize what the tree is for a business: its relationship with its customer. Now you can’t just have any customer and expect to harvest cash from him. Just like expecting walnuts from an apple tree, there are customers that don’t produce money for you because they aren’t the right tree for your business. And even the right tree requires the right soil conditions, the right amount of sunlight and the right amount of water. If you don’t have the right environment for the tree, pick another tree or you’ll waste a lot of your time and effort and trees.

But some trees are unhealthy. Some trees won’t bear fruit no matter how well you nourish them. Letting yourself be cheated of your hard work is just as bad for business as cheating your customers. There has to be a balance which is healthy for both parties in the relationship.

Now there may be a lot of customers who cannot afford your product, who will have to go without, or resort to unethical behavior to obtain it. But the same is true for your business, it cannot afford to buy everything to maximize its efficiency. You have to compensate and adapt and act based on your abilities.

But if you can’t refuse to take work which isn’t profitable your business won’t be profitable. And if your business can’t be profitable it can’t survive (unless its main purpose is to be a tax write-off!).

Uproot the wrong trees so they can be replanted in the proper environment, and plant the right trees. You’ll be able to take better care of them, and the remaining trees will be better off as well.

So this winter, do the right thing by your business and your customers: learn to turn away customers which are unhealthy for your business so you can take better care of the ones who aren’t.



Mori, PIMs, Pricing and the Business of Software (Was Re: Mac PIMs in General (was NightHawk)

12 12 2007

A few days ago, there was a thread on the Macintosh PIMs group that descended into a diatribe against the current state of PIM software and the cost of software. In response, I wrote what turned into a very long, poorly-conceived, and most likely ill-advised response to some of the opinions voiced. Very few quotes are enclosed, as it’s mainly a response, not a rebuttal.

Please forgive what is sure to be a foolish action on my part, but nothing concerning the current state of affairs will improve by actively avoiding public discussion of the issues. None of my comments are an attack on the people whose comments I responded to, particularly db whom I responded to especially. Consider his remarks a proxy for a lot of the “it costs too much” complaints I see on sites like VersionTracker, MacUpdate, iusethis, and elsewhere on the Internet. And it’s with the intent to publically respond to those complaints that I choose to do so here, rather than the Macintosh PIM group’s mailing list. My apologies to the Mac PIMs group, and the rest of the netizens (although there are worse things one should unsee). With that in mind, here is Apokalypse’ contribution to the conversation. Your comments are welcome.

Ted Goranson wrote [Context added so his position is somewhat clearer. His remarks are included as Mori is mentioned. -- AG]
> the value added. Users who know nothing about development somehow
> expect the same, unreasonably low pricing scheme.
>
> These people, for example are why we don’t have Incontrol and
> Infodepot, why we lost MORE. Why Mori was all but lost.

db wrote:
> I’m going to try again (to change this topic ;-)
>
> Ted/Edward,
>
> I appreciate the understanding and constructive disagreement, however
> large or small, though actually I don’t think we really disagree about
> anything substantial, other than pigs flying. I have proof, from the
> state of Maine no less, which is the original home state of Mori and
> still the home of Mori’s original Developer, HogBay Software:
> http://sendbread.com/
>
> Mori got smart and moved to Florida, well before winter set in. I have
> no idea where the pigs went.

db wrote:

> And you expect Mori to get
> it right with a part-time developer.

Since there’s been some mention made of Mori of late, I believe it’s in the community’s best interest for me to stir things up a tad bit more in the hope that by sharing my experience as Mori’s owner/developer, a better understanding of the current state of the Mac software market might help to improve the situation for us as users and businesses.

And I know, db, that you like to constantly talk about Mori’s “original” developer, in a wistful (or rueful) tone, but the truth is Jesse wasn’t developing Mori when I purchased it from him, had lost all interest in continuing development months before, and never wants to touch Mori code again. This isn’t an attempt to be cruel, but to make the point with finality. If anyone has any bugs to report or feature requests they want to make, they’ll have to tell me. I’m the only one who’s responsible for the condition it’s in now, and the only one who’ll be able to make the necessary changes. I’m the one taking Mori into the future. Or to put it into less delicate terms, Mori may once have been Jesse’s little girl, but I’m making her a woman.

The Low-Baller Wins Myth

> There are some folks who will defend M$ pricing, or the price of an
> unlocked iPhone in Germany. That’s OK, but not me.

> If you recall, I am asking for a more modest personal edition price,
> to help the product succeed by increasing market penetration (and
> frankly, user goodwill) in order to make an integrated PIM available
> to more users. I’ll bet that your Mac and it’s apps save you $1000s
> more than they cost if you use them effectively in a work environment.
> But if Apple sold them at a price that more closely approached the
> savings gained by it’s users, users would have revolted and there
> would be no Macs. The Apple IIe saved me a ton of time in college but
> that doesn’t mean I would have been willing or able to pay two or
> three times as much for that option. My strategy is to charge as
> little as I reasonably need to and I’ll keep busy. If some fool wants
> to pay someone more thinking they must be getting a something better.
> Fine. I don’t like working for fools anyway.

> I think their is a marketing possibility that more at lower pricing
> will offset less at higher. Not everyone is a fool.

The problem with your strategy is it fails to account for shortfalls in sales volumes, changes in the market, and other unforeseen events; both corporate and personal. For a lower price to make a difference it has to be substantially lower, and for volume to make up the loss in margin it has to be several times higher. Selling 25% more of a half-off product won’t cut it. And when your target market is the price-conscious, economic conditions which impact their budget also impacts your sales. Wal-mart successfully, though unintentially, demonstrated that for us these past two years.

People spend 50-300% more for an Apple iPod than for anyone else’s portable media player. Not just 20-30%, but up to 300%! That’s two to three times more for a device to play songs or display pictures. The multiple is even higher when you consider the features lacking in an iPod which are available in other players. So you think iPod buyers are fools. I think your opinion that price is the main consideration for consumers is faulty. Or is there some special excuse we give Apple for pricing above the market, instead of “a more modest personal edition price”? (The iPod Shuffle furthers my argument, not yours, as the Shuffle is priced against Apple’s own products, not the rest of the market: it is has even less features.)

When you made that crack about me developing Mori part-time, I was insulted. But then I realized that, in all honesty, I am only developing Mori part-time. I’m also handling web-site duties part-time, which include controlling spam, updating the site software, touching up the databases, writing blog entries, performing backups, and preparing traffic reports. I’m also fielding customer support, whether it’s email, IMs, the fora, or bug/feature tracking. I’m also handling marketing, which includes contacting blog writers, contacting writers and editors in the media, preparing market plans, product literature, artwork, etc. I’m also writing user docs, screencast scripts, tutorials, and the like, in several languages. I might be doing all this, but my development work on Mori itself is, as you say, strictly part-time.

Most software developers in the Mac market are small shops. MicroISVs. Indies. Whatever the term, sometimes it’s a shop of two or three people doing product development. By far, though, the bulk of the product developers today are one-man shops. Somebody working solo. And that solo developer typically doesn’t make enough to support himself on his products’ sales. It usually doesn’t matter because these indies are usually students or employees of another company. Their product is just something they whipped up for their own needs or interests, and they decided to offer it for sale to make a few bucks (just like the Apple story we’re all so fond of).

However, I’m neither a college student nor employed anywhere else. I’ve even turned away contracting offers due to the backlog of development tasks. So I have to question what your beliefs are when I read your crack about my work on Mori as nothing more than part-time in the same paragraph where you complain that Mac software is overpriced, and how small shops can’t afford market research!

A Cowboy [Coder] Isn’t A Landowner

> I think many (not all) of the little one-man shops fail because they
> lack the willingness or ability to see or use the advantages of
> cooperation with others. They sometime simply want to be in charge,
> their own boss, and see cooperation, of course, as giving up control.
> That’s the way it is when you work with others. Unless they have such
> a big hit that allows them to hire others, they’d be far better off
> cooperating with others. Look how many GTD and info management apps we
> have from very small shops. Few have a chance at decent success
> working alone, and especially when competing with the larger shops
> which simply engender more consumer confidence because of their size,
> never mind having more resources to begin with.

Now you’re finally saying things I can almost completely agree with: most indies want to strike out on their own so they can be their own boss. The problem is most lack the chops to do it. Being intelligent in one field, many assume they know what it takes to be successful running a venture entirely on their own. Being socially awkward, many are too untrusting of others to risk venturing with them. Indeed, many realize the likelihood is that any new venture will go belly up in less than five years. Though most entrepreneurs fear personality clashes with potential partners, the most common cause of failure is insufficient resources.

What incentive does one developer have to cooperate with another? to give his source code and a promise to share profits with a competitor? I’ve repeatedly attempted to persuade other developers to work with me, but loved as I am for my winning personality and disarming smile, I’ve been unable to convince them to abandon their products and support mine instead! Crazy, no? Perhaps they need some sort of compensation for their investment in their product and their customers; some security or other evidence of the legitimacy of the deal, and its probability of success. Would having a bankroll improve the likelihood of him joining me so that we “have a chance at decent success”? How do I accumulate this bankroll with your strategy “to charge as little as I reasonably need to and I’ll keep busy”? While being a low-price leader may be a marketing strategy, volume isn’t proof of commercial success. Long-term commercial success is dependent on your money being busier than you.

There are a couple of your comments that undermine your entire “more modest personal edition price, to help the product succeed by increasing market penetration” fallacy. One is, “Unless they have such a big hit…” Unless? So you admit the chance of that happening is slim. And if the chances of having a big hit and the volume that it creates are slim, then prices will have to remain high to stay in business. Also, if you think having a low price will guarantee a big hit, you are guaranteed that a competitor will come along and undermine your sole competitive advantage with an even lower price.

The other comment debunking your assertion is, “…larger shops which simply engender more consumer confidence because of their size, never mind having more resources to begin with.” Without the margins and volume to build up your resources, how do you expect to engender more confidence in consumers?

If you don’t make enough profit with the early adopters of your program, you’ll never last long enough to develop the additional features, user resources, documentation, etc. to be purchased by the mainstream. In addition, your organization will likely implode due to an inability to adequately provide service for your customers.

You probably have a larger selection of PIMs to choose from now than ever before, so why aren’t you satisfied? It’s because they aren’t as powerful or feature-rich as the old ones were. You’d say they lack the quality, or aren’t of the same caliber as the old apps. I’m pointing out that, twenty years later, the apps are substantially less expensive as well; and they don’t get better because the developers can’t afford to invest more development time and money in them!

Road Closed Due to Growth

Do you know what it takes to add that power and those features you long for to the software on the market? It doesn’t take listening to the customer, because customers have been talking about their needs for years. It doesn’t take writing better docs, which people don’t like to read anyway. It doesn’t take promotional discounts or educational versions, which have a limited lifespan in effective marketing.

It takes engineers. Software engineers and time. Time to think about how the current product was architected. Time to think about what features need to be added. Time to think about what features can be added given the current state of the product. Time to design the code to add those features to the product. Time to code the features into the product. Time to test the code. Time to fix the code. Time to redo the steps again and again until it’s ready to be released. Or worse, until they run out of time.

Do you think engineers are given special treatment for all this wonderful code they’re adding? Do real estate developers or hotels put a roof over their head because they’re improving products? Are hospital visits, medical treatment, or even health insurance without a price because we’re indispensable? Do engineers get any food or caffeine of any quantity without charge because of their role in society? Or should they be required to sacrifice their own needs and wants for transportation, entertainment, family, etc. to fulfill some “higher calling”?

Someone who enters the PIM market as a business isn’t looking to scrape enough money to buy himself a shiny new MBP for Xmas. There’s more than just the cost to purchase equipment. Or pay electric bills. Or Internet access. Or to purchase technical books and journals. A business can’t just make enough to cover the salaries of its employees, its legal fees, its taxes, etc. It has to cover the cost to invest in growth: of its products, its corporate infrastructure, and its owners.

Someone has to foot the bill for all these things while time is being spent adding those improvements you want so much, whether it’s a VC, an angel investor, a spouse, family, friends, whatever; and that someone is going to want a return on their investment. You get a lot of turnover in this industry because these would-be entrepreneurs discover the return on their investment just isn’t satisfactory.

A competent software engineer can make at least $75K/year, even as a fresh graduate. For a 2080 hour year, your product has to bring in $36.06 per hour to cover his salary. His salary alone. If you don’t want him to work on development part-time, like I do, you have to pay others to do the marketing, technical writing, artwork, administering servers and websites, the business-administration-type stuff, etc. So, say you as the business owner make a worst-case salary of $80K, and your developer makes $75K per year. So after other operating expenses of $65K, and a 20% profit for the year, a business should bring in $264K. That is for strictly online sales without a marketing program. It excludes marketing expenses such as advertising, sales commissions, packaging, product literature, trade show exhibitions, etc.

That’s $129.513/hr in sales for a company to be comfortably profitable. (Oh, did we forget to deduct the processing fees deducted from sales by the payment processing firm? You can go out of business if you forget these details!) If we don’t make that, there isn’t a point pretending we run a business. And if you don’t have a business standing behind the software you use to manage your information, quit pretending to be surprised when it’s no longer under development, being supported, or that the features you enjoyed on the old packages will ever return in anything new.

Companies are bought and sold. So are product lines. Products with a sufficient revenue stream continue in the market, regardless of their origin. Products that aren’t worth the trouble die; regardless of how loved they were and how missed they’ll be. So if you’re not prepared to spend the money necessary to obtain a solid, powerful package now, then let time take its course. The part-time developer you’re supporting will either get the features added in there eventually, or drop the product for something more rewarding in his life.

Those who cannot learn from PIM history are doomed to re-key their data

Let me explain why there isn’t a strong third-party PIM in the Mac market. Future product development is based on past product development. Whether it’s the profits from past products, or using the codebase of previously engineered products (e.g., Cocoa and Carbon), one product is built upon others. And whenever someone gets the bright idea to write another to-do list or contact manager or agenda application, whether it’s to learn how to develop for the Mac, or because they have more time than money, they have to develop the basic functionality first. Then, they think, “This is so helpful for me, I bet other people can use it too,” so they make it available to others as freeware or shareware, presumably to others who perceive a similar lack in existing apps or possessing a similar lack of funds.

Then, his app begins to find users. Slowly, of course, because it’s new and the majority of people will let others be the early-adopters. But his app will find some users because it sufficiently meets their feature/price requirements. But! its feature set is shallow because he started from scratch. And! there are a few bugs here and there that need to be fixed. And! it doesn’t sync with Apple’s bundled PIMs. And! it lacks support for their phone or pda. He doesn’t have time to add innovative features because he’s too busy trying to catch up. Now it stops being just a hobby and starts to be real work. Then he thinks, I’ve got to get something more out of it. If he feels he can do it, he’ll start charging (more) for it.

Now there are people who don’t mind spending hours in front of a TV set, playing video games, or downloading and reading stuff off the Internet. It’s something to occupy their time. A way to unwind. Maybe someone likes to tinker with cars, spending months to strip down a junked Mustang and rebuild it into a street monster. It’s a nice way for him to while away the days. Perhaps when he’s finished he’ll just cruise the strip in it. Maybe he’ll street race. Maybe he’ll sell it off and use some of the money to buy another clunker and start over again.

Regardless of the number of times he rebuilds cars for fun, his mindset changes when he begins to treat it as more than just a hobby. His goals will be different. The decisions he makes will take on a whole new importance, and even the tools and processes he uses will have changed.

It’s the same way with software development: you can afford to waste time and money on it when it’s just for kicks. But when it competes with the rest of your life, when a child becomes ill, your spouse loses a job, or your kids are in college, those things that occupied your time are re-evaluated; and you decide whether or not it needs to be treated more seriously, and how committed you are to its success.

And businesses that were profitable in this market re-evaluate their returns due to the competition. They consider whether branching out to other product lines or other platforms will be more rewarding. Developers, large and small, let sales coast without active development. Eventually, their products are outdated, or the platform is (like Mac OS 9 or Tiger). Then some developer decides there’s no to-do list or contact manager or agenda app that matches his feature/price requirements, so he writes one from scratch…

And that is why the PIM market, indeed, the Mac software market in general, is so poor today, and only a few categories have clear market leaders.

As far as PIM goes, it’s obviously an inadequate term for the types of products that fit in that category. There are calendars, to-do lists, project planners, address books, outliners, and on and on, but Mori is specifically a digital notebook app. And while users and developers can add agenda, contact management, GTD, file management or even wordprocessing and spreadsheet functionality through the use of scripts and plug-ins, it doesn’t come with the features typical of those applications. In fact, a lot of the design work I’ve been doing over the past couple of months has been to reduce the excess behavior in Mori and recast its feature set with an eye towards note taking and organizing superiority. Any additional behaviors will have to be the result of plugins. This means the plugin API will be more sophisticated though.

The point is, I’m not going to add features to Mori to handle all PIM needs. And I’m not going to cater to the notetaking needs of every Mac owner out there. Apokalypse will be focusing on the professionals who understand the value of their time, and demand software that delivers productivity gains that make them look good. SOHO users. It isn’t that I don’t appreciate everyone else, but I can’t afford to help everyone else, and the quality of the products will suffer badly. This is one reason why I’ve continued Jesse’s practice of sending prospects to other products, you can’t be all things to all people.

So, as a user of PIM products, figure out what your needs are. If you’re just looking to keep a list of your friends and family members’ contact info, track class activities or have the occasional sticky, the iApps bundled with the Mac should be enough. If your needs are more sophisticated and your time is a resource you use to produce money, find the software that will maximize your productive use of time in managing your tasks, contacts, info, etc. and purchase it. Even at minimum wage rates, you should recoup your investment within the first week!

If you want engineers and small businesses in general, and me in particular, to improve the quality of your life, you’re going to have to improve the quality of mine. How can we maintain a continuing relationship otherwise?



A Week of Fist Shaking at BOFH and Open Source Developers

6 12 2007

The past week was one of the worst in recent computer experiences I’ve had, surpassing the Leopard install. In fact, the last time my experience has been this bad was when I last fiddled with website software. I was going to abandon the whole server transfer/upgrade plan due to the issues the upgrades were causing, but I remembered the transfer itself should be fairly trouble free. I’ll only upgrade a minor version; not a whole version, which would require adding a lot of code to custom modules Jesse wrote. Should be.

I can appreciate the time and effort invested by those who work on open source projects, but developers who complain that users aren’t migrating to their latest efforts quickly enough are both arrogant and naive. Customers prefer to be able to continue using the data they’ve stored in the current versions to losing them when they migrate to the newer ones. I’m pretty sure it’s the same for OSS users. Much as I love writing code, I have enough to write already thank you very much. And I don’t appreciate having to spelunk through your code to figure out what those data structures you’ve added are supposed to do (”ooh, shiny, new!”) just because you’re too lazy to write the docs (”the code are the docs!”) and impatient to play with your new ideas.

Although the site I inherited from Jesse used a CMS system distinct and incompatible from the one I had selected when I started my own, I didn’t want to switch it around or try doing new things with it because I felt the continuity was better than taking the time to rebuild a site from scratch. But now I can appreciate Jesse’s decision to do such a thing. If I have to spend the downtime upgrading parts that already work well just to get the features needed for other modules, I might as well fix it to my own needs and ignore the chaos that OSS developers are creating in the system. Now the whole NIH question is thrown out the window. It’s no longer a matter of, “Oh, I can do a cooler system.” Now it’s a question of the developers themselves causing users to abandon their system. A question of distrust and self-preservation.

Hopefully, any remaining misconfigurations in the website will be rectified before a second person notices it.

If you sent an email in the past 24 hours (of 2007-12-05) and you haven’t gotten a response already I apologize, but you’ll need to resend it. My site host doesn’t transfer files, emails, settings, or the like between accounts; and well, it has probably been crushed by the lumbering floes. In fact, if you’re waiting for a response from me on any matter, please jog my memory with another email.

Anyway, at least the site now has some breathing room, and I can continue improving the products.