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