Hi folks,

The following is a response to some recent posts on the list:

Its About Choosing the Best for the Time Being
Throughout our lives, we make choices - things which are important down to trivial choices. However, I believe the toughest choccce is when the choices we make shape the rest of the community. Such choices include venues for meetings, slogan for a company and so forth.

In connection with specialized embedded system, we have to make a number of tough decisions during program development cycle (process of planning, writing, testing and releasing a program). This could include feature sets which are possible, whether to support old versus new and how to implement certain features. In this composition I'll focus on the third category from both user and developer point of view.

Once a programmer decides to implement a feature, the next job would be thinking about how and what to use to make this new feature come alive. This involves going over limits of the target system to which this feature would be integrated, as well as availible resources out there which could satisfy objectives of this feature. Then the outcome is compared to the expectations of the user in terms of feature requests and feature suggestions.

For instance, suppose if a programmer decides to work on an HTML editor and if the users requests BrailleNote's wordprocessor like interface for writing text. Then developer would think to himself, "well, since wordprocessor uses text and format commands for inserting various fonts, why dinn't I use that method?" Certaintly that route is most promising. Then he would search around to see if this kind of thing has been implemented for the OS that the system is based on. Suppose he finds two such programs - one that reads a special text file and turns into HTML page, and another one which has its own interface for writing HTML files and previewing it. Which of these two approaches would suit the customers' demands about using wordprocessor like feature to write ETML pages? In our case, the first version would be most suitable. Even though the second one has a preview feature to allow customers to view the progress of their page, the first one offers easier way of presenting HTML editor as a text editor by saving the resulting page as a special text from which our HTML page can be born. Thus the programmer works on this editor program, releases it and this becomes a huge success both for its performance and ease of use.

As the reader can see, when it comes to implementing a feature, it is not just things which are availible that'll accomplish the goals, but also finding a way to use it to meet users' expectations. However, there are situations when something prevents a feature from being worked on, such as licensing and hardware.

For instance, in connection with mp3 recording, suppose that some users found some programs which would "allow" something to be recorded as compressed audio files. The developer would say, "thanks for letting me know about those" and would begin investigating whether that program meets the specifications for the system he is working on. But we have some constraints: the system may have low memory or the unit might not respond quickly while recording in compressed form is in progress.

And then suppose that the developer has found a fast engine (program) that promises to convert recordings in wav to compressed audio while recording. He wishes to use it (and saw the code for it and found its doable), but it has some licensing scheme that prevents this program to be used unless authorized by its distributor. But then he found a slightly slower program that offers to convert the wav audio to compressed form after the recording is over, and he also found that the licensing scheme fits his objectives.

Which of these engines would he use? HE says to himself, "since users requested recording directly in mp3 format, then I should use the first program; but I dare not tamper with licenses for that one. On the other hand, the second program would fit my budget and licensing needs, but it is slower than the first program and might not be ideal for some users." Ultimately, he chose the first program, but to save cost, he had to eliminate one feature from the users' wish list to be worked on another time.

As the reader can see, even making a small decision could mean bigger consequences for others around us, and the choices that we make may not be the best for this situation (as the second example shows). Therefore, when it comes to inclusion of something, the developer needs to think about how to implement it, possibility of including external systems to make this feature come alive, and whether this feature can be implemented safely within the limits of the target system (certaintly they don't want buggy program). A good example is recent inclusion of xpdf engine to extract text from PDF files. Even though there are lots of PDF readers out there for Windows CE, the objective for choosing this particular engine could have been ease of use, possibility of editing extracted text and easy integration with other KeySoft subsystems. (the last statement is just a hypothesis)

Hope this helps.  If you have any comments, please let us know.
Cheers,
Joseph

___
Replies to this message will go directly to the sender.
If your reply would be useful to the list, please send a
copy to the list as well.

To leave the BrailleNote list, send a blank message to
[email protected]
To view the list archives or change your preferences, visit
http://list.humanware.com/mailman/listinfo/braillenote

Reply via email to