David Sinclair's blog

I'm the MacTech Spotlight for October 2007

MacTech magazine has a monthly feature at the back of each recent issue called "MacTech Spotlight", where they devote a page to Q&As with a developer or other personality in the Mac community. They've talked with Paul Kafasis of Rogue Amoeba, Wolf Rentszch of Red Shed, and several others.

This month was my turn.

I haven't seen how the article turned out yet (my copy's in the mail), but hopefully it'll be okay. :) I talked about how I originally got into computers and programming, how Dejal got started, what I like about Apple and Mac OS X, how I come up with product ideas, and more.

For those interested, MacTech offers discounts on subscriptions - 60% off the cover price, or a limited-time offer of a six-month sub for only $9.95.

Simon tip: automatic offline support

One "hidden" feature of Simon is how it handles the situation when your computer loses its internet connection.

People sometimes ask me what Simon does in this situation, concerned that it would count as a failure for tests. Simon is smarter than that, though. Every time it starts a check, it first checks if the computer has a current internet connection, and only then performs the check.

If it determines that your internet connection has been disrupted, it places the test in an "offline" state, where it shows a blinking "lightning bolt" for the status icon until the connection is restored. This offline state doesn't count as a failure (or success).

Simon works out if you have a connection by seeing if it can resolve one of two popular domain names; if either work, your connection is probably fine, but if both fail, it is likely disconnected. Using two domains avoids a temporary outage of either one.

From version 2.3 onwards, you can disable this internet connection check on a per-test basis via the new Can check when offline checkbox in the Edit Test Checking Options. This is useful if you want to create a test to notify you when your connection goes down, or for tests that don't require an internet connection (e.g. using the Application or Script service plug-ins).

Test Options

Caboodle tip: alias a file instead of copy it

A quick tip for Caboodle, from the FAQ:

Normally when you drag a file into a Caboodle entry it copies it, allowing you to delete the original. But often you want to keep the original in place too, and want to avoid bloating Caboodle's data with large files (or folders).

The solution is to hold down the Control () key when dragging the file or folder to the Caboodle entry: the mouse pointer will change to include an alias symbol instead of the green plus. It will then make an alias (link) to the original. Then when you double-click on the file (or view it inline for images and PDFs), the original will open. Of course, in this case you shouldn't move or delete the original file.

Piwhacket: 1994 - 2007

Piwhacket, our beloved cat of about 13 years, passed away early this morning, following a week of veterinary treatment, due to kidney and heart troubles.

My wife and I got Pi as a kitten, shortly before we got married. She was named after a cat in the movie "Bell Book & Candle".

Pi was a great kitty, who enjoyed sitting on my lap while I work, despite bad eyesight making it harder for her to jump up. She had a cute "quack" sound she'd make when she wanted attention. When we were sick, she was always there to comfort us. She was our pretty princess. She is greatly missed.


Piwhacket's opal eyes

Internet people commenting on the universe

A clip show! Here are three fun videos I saw in the last week or two. You may have already seen them, but they're enjoyable to watch again if so.

Firstly, Internet People, a fun song featuring lots of popular names in the blogosphere. I think I recognize most of these, though there are a few I don't. (Via WebbAlert - see that link for a list of everyone mentioned in the video.)

Next, a hilarious video on what a business meeting would be like in the style of web commenters... less well behaved ones than on Dejal, anyway! Warning: not suitable for work (NSFW):

Don't miss the followup from the same people, which is perhaps even funnier (and also NSFW).

Finally, an impressive video that starts out with an aerial view of a picnicking couple, then slowly zooms all the way out to 100 million light years from them... then back in again down to a microscopic level. Along the way, it includes an indication of the scale in powers of ten. Very impressive. (Via Dark Roasted Blend, a great site of interesting images and videos.)

And here's a similar scale-of-things site, as a clickable animation.


Simon tip: shortcut for entering test URLs

The Web (HTTP) service is the most popular one for tests. So I thought I'd share a helpful tip with adding them.

When entering the URL, you can use very minimal text, and Simon will fill in the remainder when you click OK. It automatically adds the default protocol ("http://") and the "www." and ".com" if necessary.

For example, if you type "apple" (without the quotes), it will be saved as "http://www.apple.com/". Similarly, entering "dejal/simon" will end up as "http://www.dejal.com/simon/".

Web (HTTP) test

Happy anniversary, Dejal

Dejal anniversary

Today is the 16th anniversary of founding my company. 16 years ago today, on September 20, 1991, I started Dejal, with an aim to produce high quality Mac software. Actually, the exact date could be argued: I had used the Dejal name informally for years before that, as a kind of nickname for myself, and the company grew organically over time, with things like getting a commercial bank account and registering the name at different times during the growth. But September 20th was when historic evidence points to me having started treating my programming hobby as a business.

I had produced a bunch of freeware products beforehand, but my first shareware product was called SndPlayer, a Classic Mac app to play a bunch of sounds easily. It was started on October 24, 1991, and first released on February 24, 1992. It's still available on my site (now freeware), too.

Thanks to everyone who's purchased products or offered congratulations this week. You've still got a couple of days to take advantage of the anniversary specials:

Buy now with the anniversary discounts!

Be quick — these specials expire on Sunday, September 23, 2007.

Dejal's sweet 16!

Dejal anniversary

I first started selling Mac software under the Dejal name in September 1991... which makes this Thursday the 16th anniversary of the founding of the company. Wow... it's certainly been a while!

As a celebration of this event, I'm offering discounts on all of my products from today till the end of the week. No special codes or coupons required, but you need to use the online store, not the in-app purchasing tool, to take advantage of these low prices.

Buy now with the anniversary discounts!

Be quick — these specials expire on Sunday, September 23, 2007.

Choosing big cats

LeopardWhenever a developer does a major new release, one of the many issues that they need to consider is which OS versions to support. It's always a tradeoff: having the apps continue to work with older versions allows more people to use the product, whereas the more it is restricted, the more new OS features can be leveraged.

Let's explore the second point first. Each time Apple does an OS upgrade, they make some cosmetic UI changes, add new bundled apps, and so forth, but they also introduce new or improved development frameworks, APIs, and tools. For example, in Tiger (10.4) Apple introduced Core Data, a sophisticated database-driven data modeling and storage API, among others. While it is possible to use some new functionality by checking for its availability, some are more fundamental, so just have to be done without to maintain support for older OS versions.

Apple's Non-Disclosure Agreement forbids me to talk about the new features in their upcoming OS, Leopard (10.5), other than what has been publicly announced. But it should be clear from the available information that Leopard is one of their most significant OS updates, with numerous UI changes, and for developers, Objective-C 2.0, which includes fundamentally different memory management and other improvements.

Being able to leverage the new technologies in Leopard will offer a huge advantage in terms of the features that can be added, and the efficiency of the underlying code. To maintain compatibility with Tiger, a developer would either have to forgo these features, or write lots of code to emulate them. Certainly doable... but is it worth it?

That brings us to the other side of the equation: how many people would benefit from a release that supports an older OS? Thankfully, history provides some guidance. Of course, it should be pointed out that every market is different, and people find software in lots of ways. Lots of people, probably the majority, just pick up a few boxed software products when they buy their Mac at a local Apple store or other retailer, and never explore beyond that. They only need a few core apps, many of which come bundled with the Mac, and that's all they want.

While I'd love to bring my products to the attention of these people, the ones that most interest me are those who actively seek out third-party indie apps to enhance their Macs. This subset tend to be early adopters, often upgrading their computers every few years, and thus getting the new OS then, or they go out and buy the OS as soon as it is released, or perhaps after an update or two, to ensure it is stable. In fact, one could hypothesize that there is a strong correlation between the speed of upgrading the OS and that of upgrading third-party apps. Or put another way, if someone isn't interested in keeping the OS up-to-date, they are probably less interested in keeping third-party apps up-to-date, or even trying third-party apps.

I have tracked OS versions of people using my products, as many other developers do, and these numbers support this hypothesis. For fascinating interactive charts showing the OS versions and other attributes of the Omni Group's customers, see their update charts.

So, there seems to be little benefit in maintaining support for older OS versions, and several benefits from being able to leverage the new technologies.

As for my own products, I do plan to require Leopard when I next do major upgrades of each product, but they will be phased in over time. I will continue doing updates that support 10.3.9 and later in the meantime. Even after the major upgrades, the older releases will continue to be available for customers who aren't ready to upgrade their OS. Hopefully that will keep most people happy, while allowing me to move forward.

New Zealand and the US: a comparison

As some of you may know (if you've read the About Dejal page), I was born in New Zealand, and moved to the US in 2001. I'm a citizen of both countries, and both have special places in my heart.

As a fun distraction yesterday, and to satisfy something I've been curious about, I superimposed a map of New Zealand (and a portion of nearby Australia) on one of the US, using the same scale for each. I lined up New Zealand's east coast with the US's east coast, being a similar angle.

The result is quite fascinating. It shows that New Zealand is about the same size as the small east coast states of the US, and where I am in Portland, Oregon is an equivalent distance from New York (say) as between Auckland, NZ and two-thirds of the way across Australia.

USA with NZ and Oz superimposed

Some interesting statistics (numbers from Wikipedia): New Zealand has a land area of 103,738 square miles and a population of 4,228,000. Compare that to the US's area of 3,718,695 square miles and population of 302,394,000... bit of a difference! Interestingly, the state of Oregon has an area of 98,466 square miles and population of 3,421,399 - both only a little smaller than the entire NZ.

I also did another comparison image, this time with Greater Auckland (NZ's largest city, actually a metro area made up of four cities) superimposed on Greater Portland (a medium-sized US metro area, Oregon's largest city). The size difference wasn't all that great this time, unsurprisingly; both Auckland and Portland have similar population sizes. In numbers, Auckland has a size of 419 square miles and population of 1,329,900, while Portland covers about 600 square miles with about 2 million people. Both have constraints on growth, too: Auckland has two harbors limiting growth, and Portland has very firm urban growth boundaries.

Portland with Auckland superimposed

What does all this mean? Nothing profound. The US is big. NZ is small. NZ is about the same size as Oregon. Auckland is about the same size as Portland. Whatever the sizes, they are both great places to live.

Oh, and I'm entirely too fascinated with maps. :)

Simon 2.3.2 released

I just found a bug that was inadvertently added in the previous release of SImon, where the License or Setup Assistant windows might not display. This was an unintended side effect of the change in 2.3.1 to avoid reusing the editor windows - as they and the license windows share some common code, but work in very different ways.

This was previously reported in the forums, but I couldn't recreate it till today, when I was testing something else in Simon. There were workarounds, but I felt that it was important enough to warrant a special bug-fix release. Particularly as the Simon Enterprise license will be featured on MacZOT tomorrow! (There's a tip for anyone wanting a cheap license.)

If your copy of Simon is already licensed, you could skip this update if you wish... but there's no harm in updating. For anyone who has experienced this issue, I apologize for the inconvenience.

Download Simon 2.3.2 now!

Simon tip: notify via email

I recently received a question from a potential customer, asking whether Simon has the ability to send a notification via email.

Although I do mention it in a number of places, this wasn't an unreasonable question, particularly if you just download Simon and start playing with it, as no email options appear in the list of available notifiers in the Edit Test window by default.

Why is this? Because unlike the Speech and Sound notifier plug-ins, the Email one requires some configuration before it can be used, so it can't be offered by default.

The way notifiers work is (I hope) pretty intuitive, but a little indirect. Simon provides a number of notifier plug-ins that do the work of notifications, and you configure notifiers to use those plug-ins, then choose notifiers for each test.

These levels of abstraction allow easy re-use of notifiers: a single plug-in can be used by multiple notifiers, and a single notifier can be used by multiple tests, without having to set up the same things over and over again.

For example, you can add an email notifier to yourself for some failures, another email notifier to your clients for other failures, another one for recoveries, and so on, and use whichever ones of those are desired in tens or hundreds of tests, as required, as simply as choosing them from a pop-up menu.

Test Notifiers

So, as I said, there is no email notifier set up by default, since it needs configuration, but you can easily add one. If you're editing a test and realize that you want to receive an email or SMS when this test changes, fails, and/or recovers, you can click the New Notifier... button in the Notifiers section of the Edit Test window, which will open the New Notifier window. You can then choose E-mail from the Notifier Kind pop-up menu, and the controls below will change to those for the email plug-in:

Email Notifier plug-in

You can then configure the email, and save the notifier, which will be available for that test and any others you want to use it in. Easy!

Simon 2.3.1 released

Simon version 2.3.1 is now available. This release is a bug-fix version, with just a few changes:

  • Rewrote the Port service plug-in to use a helper app to do the work, to avoid instability caused by multithreading and resource usage issues.
  • Added support for the Preview function for the Port service plug-in. It displays the session script at the top, and the actual transcript of the check at the bottom.
  • Changed editor windows to not reuse the window instances, to avoid issues with windows appears incorrectly in some circumstances.
  • Added German localization, thanks to Manfred Brandstater.
  • Updated French localization, thanks as always to Philippe Bonnaure.

I'd like to give special thanks to Manfred for his hard work in getting the German localization done, and also to the couple of German Simon customers who provided feedback on pre-release builds. If you have any feedback on the localization (issues, suggestions for improvements, compliments for Manfred, general comments), please let me know.

Also of note in this version is the rewrite of the Port service plug-in. I've had several reports of crashes and other issues with SImon, which on investigation all traced back to the Port services. There was definitely something NQR there. It's a complex plug-in, though not the most complex. I've tried patching it a couple of times in the past, without complete success, so the time had come to refactor it more significantly. I moved the checking work out into a separate helper app (aka an "agent"). The plug-in launches the background-only helper when starting the check, which does the work, then quits itself when done. This allows avoiding multithreading, which I believe was a factor in the problems, along with some other optimizations that will make it more reliable. And worst case, if it does crash, it won't take out Simon in the process. The crashes do seem to be a thing of the past, though, which is great. Thanks also to the customers who tested pre-release builds with this change.

Another benefit of this refactoring is that it has allowed adding Preview functionality. The Port plug-in did allow previewing in an older version, but I had to disable it when I changed the way the plug-ins worked (from keeping an instance around for the life of the app, to using a separate one for each check). But now I've re-enabled this functionality, and improved it. The Preview window for Port-based services now displays the session script at the top of the window, and the resulting transcript of the check at the bottom (much like for Scripts). This is very handy for ensuring that the test is doing the right thing, or seeing more detail about why it is failing - e.g. whether the session script is incorrect, or the server is misbehaving.

Download Simon now!

Be your own customer

A comment by Chris Smolinski of Black Cat Systems on the Mac Small/Software Business mailing list (there doesn't seem to be any consensus if it's "Small" or "Software") inspired me to share my views on this: "Be your own customer."

This was in response to a question on how to get good ideas for software, with the popular opinion being that scratching your own itch can lead to great product opportunities. Find something that irritates you about existing products, or something you want to do that isn't covered by an app already, and create a solution.

I can vouch for this approach. Although my products started out in various ways, most of them started because there weren't any satisfactory solutions at the time. For example, Simon began as a way for me to watch for website updates, and became more sophisticated as it became popular. There weren't any easy-to-use Mac products for site monitoring at the time - and the ones that did exist don't anymore. Similarly, I created Time Out to improve my health, since I can suffer from eyestrain when staring at a computer for hours on end. BlogAssist was written specifically for my wife, who was really into LiveJournal blogging at the time... but I find I use it a lot, too. All of the products have grown and evolved over the years based on customer feedback, but also my own ideas, since I use them myself on a daily basis (e.g. I used BlogAssist's Services window four times to create the links in this post).

When you are your own customer, or "eat your own dog food", to use that colorful and somewhat unpleasant phrase, you notice little irritations in your initial implementation, and can do something about it. Chances are, your paying and potential customers are also noticing such issues. They can can also be a great source of ideas for better ways to do things that you may not have thought of, perhaps because you're so used to a certain way of doing things.

So if you're a developer looking for the next big hit, or just something to get you started, look inside yourself for your inspiration. Sure, an idea has to have some market appeal to be a success, but even seemingly niche products can be successful if you do a good job. Put your heart into it, and people will respect that. Keep working on it, and using it yourself, and word will spread.

Pan-Mass Challenge update

Two of the eBay auctions for Seth Dillingham's Pan-Mass Challenge fundraising have concluded, with fairly healthy final prices - still major discounts on the retail values, too.

A Household license for Dejal Caboodle is also available as part of the latest auction, a "kitchen sink" of 37 great utilities. Check it out!

Software bundle to support cancer research

Seth Dillingham has put in a lot of work collecting Mac apps to bundle together, and they're now available. Unlike typical software bundles, where hundreds of people might get a collection of apps at a discount, this one is a bit different: the bundles are being auctioned on eBay, and distributed (fully licensed) on CDs.

His bundles are fundraising for the Pan-Mass Challenge, which supports cancer research and treatment. A very worthy cause.

I am happy to participate in this effort. A Standard license for Dejal Simon is available in what he describes as the ultimate bundle for creative types, and a Household license for Dejal Caboodle is included in his bundle of games and useful utilities. Each of the bundles include lots of great apps, and in support of an excellent cause. Check out the auctions quickly; they end in a couple of days time.

More recent documents, please

When I moved to a new computer not long ago, I did it the hard way: rather than using the handy Migration Assistant, I copied over my files manually. I did that not to cause myself undue pain and suffering (though there certainly was some of that), but to help clean out several years worth of detritus that had accumulated in my preferences folder and elsewhere.

A result of that, though, was that I needed to reset all of my preferences. For the most complex ones I just copied the pref files over, but others I reset manually, again to clear out old prefs lingering in the files. That was fine, not too difficult.

One of the many preferences I reset was a tip I read on the Mac OS X Hints site. It controls the number of recent documents listed in the Open Recent sub-menu in many applications. I like this feature in document-based apps that use it, but I like to have more than the default 10 documents listed. I prefer 30, which fits on my screen nicely.

So, I fired up my trusty Terminal and entered:

defaults write NSGlobalDomain NSRecentDocumentsLimit 30

And that was that! This command changes the default number of recent documents for all applications to 30 - you can change the number to whatever you prefer. It will take effect when apps are next launched.

I hope this is helpful for others, too.

Tweet tweet tweet

You may have heard of this little thing called Twitter on the intertubes. It's a site where people can post short (140 characters or less) updates on what they're doing, which can be viewed on the web, cellphones, etc. People can "follow" others they're interested in, and others can follow what you're up to. You know, one of those social networking thingies.

I've resisted the siren song of Twitter for quite a while, since I've been somewhat dubious about the value of such short updates, but it does seem quite popular, so I've finally given in. I've enjoyed reading about events in the lives of other Mac developers and Mac bloggers, and it's been useful to get a feel for the C4[1] conference last weekend, which I wasn't able to attend, unfortunately.

You can now see what I'm up to via my Twitter page. We'll see how it goes.

I'm sick of users

There have been a few interesting posts in the blogosphere discussing the word "users", notably one by Josh Bernoff. He argues against using this word, suggesting that the word "users" should be replaced with "customers", "owners", "members", etc:

Users put up with computers. People just do stuff.

I completely agree. I have long disliked the word "users", and try to avoid it. I don't think of the people using my software as "users", but rather as "customers". I write software designed to solve problems, help people achieve tasks, maintain health, monitor sites, and more. They are written by people, for people, for real-world situations.

As I say in my About page, my customers are my friends. I really believe that; it's not just a catchy phrase, but a basic philosophy. When someone writes to me with a question, a problem, or a suggestion, I read it and reply personally, trying to put myself in their shoes and figure out how best to help them. I want them to be happy, not as a user of a product, but as a customer of my company, an existing or potential friend of myself. But my thoughts on customer service is a subject for a future blog post.

Unfortunately, a long history in the computer industry inflicts itself on me when I'm not looking, so the Dejal site does use the word "user" in a few places. For example, I have "User Guides" for my software, and I may use the term in other places. I'm not sure what would be a better term for that, though... "Customer Guide" doesn't sound right. Maybe I should just call it "Simon Guide", "Time Out Guide", etc?

So developers, please consider what words best describe your relationship with your customers. Are they anonymous automatons struggling to use your software, or are they genuine people who find your products useful to help them in their daily activities?

Future and current customers: please remember that I'm a person too, not an faceless corporate entity. I invite you to tell me what you like and dislike about my work, how I can change things to help you better, or simply what you do with my products. I care, I really do! Let's be friends!

Commenting now requires login

I've resisted this move as long as possible, but commenting on Dejal blog entries, forums, etc now requires logging in. I tried using a captcha, and back-end spam detection software, and an approval queue, but while each of those helped keep the spam off the site, I've still had to wade through hundreds of spam comments.

I've noticed that most people seem happy to create an account on the site anyway, so this step shouldn't affect too many people. Creating an account is free and easy, and allows much easier access for subsequent comments, allows posting new forum topics, and allows tracking posts so you're notified when there's a reply, if you so desire.

If you don't want to create an account, you can always contact me privately instead.

Syndicate content