« Post WWDC | Main | Microsoft »

Network Compatible

created 28 May 2000

Network compatible applications wanted



One of the most frustrating things as an administrator is to get a call from a user because an application, extension, or some other piece of software isn't working correctly or as advertised. What doubles this frustration is to discover that the malfunction is caused by the software not dealing well with networks.

In this day and age, I find it inexcusable for any program, especially one designed for the workplace, written in the last year to not be fully network friendly. By that I mean applications and software that work on Macs that are running other pieces of software, and performing network functions. Yet time after time, version after version, I see software that just doesn't work well on a network. Some of the problems with PowerPoint and AppleShareIP are an example. As L. Carroll once wrote, "The time has come, the Walrus said..."

It must be assumed that any Mac is multitasking, and I think that we can avoid getting bogged down in the relative quality of how it does this. If you are writing any application, assume you are sharing CPU and other resources with email programs, web browsers, instant messaging software, etc. (Even if you write one of these, don't assume the other company's stuff gets tossed. I have at least two to three versions of web browsers, and email programs around for testing purposes) That means you have to go through extra hoops during coding and testing.

It means that if you need the user to open a file, that you have to use Navigation Services from the beginning, because you cannot assume that the file will be on a local hard drive. If your application doesn't use Navigation Services, it's time for that update. It means that if you are going to create a dialog, not only must it not stop the CPU until the dialog is dismissed, but the user has to be able to move it out of the way, as it may be blocking the information that the user needs to accurately do what you are trying to get them to do. It also means that you have to create dialogs that can be ignored until the user comes back to that application, as your application may not be the most important thing they need to do.

It means no hard-coding font numbers, no assumptions about what resources a particular Mac may have when the application is launched, because in the case of a laptop, Location Manager can completely alter these things while your application is being run. Laptops bring another issue to mind, and that of power management. This means that you have to play nice when the laptop is put to sleep, or when a battery notification is sent out. So if you are blanking out the menubar, you need to let the user know somehow that they are about to run out of battery. You need to code with an eye towards the CD drive not always spinning, or even not even being a part of the computer all the time. It means setting up your installations to be remote - install aware, for folks using netOctopus or FileWave, or the Apple Network Administrator Toolkit. If you write installers, it means that you make it easier for remote installations to be set up.

It means that you don't make assumptions on the locations of files, or that the user has the rights to alter certain files. Multiple Users is a heads up for what will be happening in OS X. No longer can you assume that a single user means a single Mac. The person using your application may need to get to it from many Macs. You need to take this into account.

It means that you don't lock out resources or memory that you don't need, and that you get religious about checking for memory leaks. It means that you don't code for any fixed CPU time other than what you happen to get at that moment. It means that you make proper use of the capabilities of the Thread Manager, or the MultiProcessing libraries, using appropriate gestalt calls to determine what these are. It means that you don't use undocumented calls that may disappear, or use features that are going to go away in the near future. It means that you have a full scripting implementation, so users can use your application in ways you never dreamed of, which has the byproduct of making more people want to use your application.

It means that when the OS tells your application to go into the background, that you not only do so quickly, but also relinquish CPU time. No fair eating 80% of the CPU when you're running in the background. It also means putting realistic RAM requirements in your ads, and in the Get Info box. No dividing real world by three to get normal and by six to get minimum numbers.

It means a lot of work for developers and testers, and that's a real hard thing to justify sometimes, but here's the benefits of this work. It means that users like to use your application, because it just works. It means that regardless of the resources available, as long as your minimums are able to be met, your application will always work as advertised. It means that network admins like me don't groan and curse your name at the mention of your product. It also means that people doing reviews of products write the kinds of reviews you *want* to put on a bulletin board. In other words it means you get to have the kind of application everyone wants to use, because it's cool, and it just works.

I'm not going to pretend these things are easy, but they are correct. We live in a distributed, multitasking world, yet I still see applications written with the assumptions that we are all still using the System 6 Finder, and that multitasking and networks are only for UberGeeks. But again, if you do all these things, or at least make a better attempt to do these things, I can promise you one more thing. The kind of reward that comes from having a great application, and the respect, and sales that come along with that.

Think about it....

Categories:     Arcana, MacWeek.com
Posted by John C. Welch at 11:34 | Permalink



Comments

Warning for Notes users: The commenting system uses HTML.
I know this will be scary for some of you, especially Notes fans. However, open standards, rah-rah.
If you want to use less-than or greater-than signs, or other similar characters that HTML reserves,
you'll simply have to learn to do it the HTML way. Luckily, HTML is kind of popular, no matter what
your re-educators have told you, and you can easily find help on the intertubes.
digital.forest Where Internet solutions grow

There, a PayPal Button.

Bing
About the Author
How I do stuff on this site
Family
The Artwork of Melissa Findley
Diane Francis @ the National Post Eric Francis @ the Calgary Sun

BUY MY BOOK! BUY MY BOOK!
Non-DRM eBook PDF:
Get it direct from Peachpit!

Kindle Version:


Dead Tree Version:


Apple Amazon Links
Mac OS X Server 10.6 Snow Leopard

Mac OS X 10.6 Snow Leopard

Mac OS X 10.6 Snow Leopard Family Pack (5-User)

Amazon Book Links
Legacy of Ashes: The History of the CIA

The Donnas: Bitchin'

Wizards at War (The Young Wizards, Book 8)

The Demon's Sermon on the Martial Arts

The Collected Stories of Arthur C. Clarke

JavaScript and Ajax for the Web, Sixth Edition

Awakening Warrior: Revolution in the Ethics of Warfare

FOB Links

Mac Web Writers

Techie Links

Review Victims