473,396 Members | 2,098 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

The spinoza papers: towards a theory of progress reporting

I want the GUI of the spinoza system to not piss me off with the usual
type of progress reporting one sees: the flashy, colorful, and utterly
uninformative gizmos that go back and forth and round and round until
who knows when.

Therefore, the following C Sharp .Net code constitutes a theory of
progress reporting.

I claim that any fixed-count (limit available at run time before the
start) for loop can be monitored by considering it as the attempt to
accomplish a TASK, the accomplishment of which involves only the
processing of zero, one or more ENTITIES with an ENTITY COUNT. The
actual user (the person running the program) needs to see at what rate
processing runs.

Each time through the loop, we are at a specific ENTITY NUMBER.

Progress and velocity can then be modeled visually by means of a
histogram such that:

histogramDimension/maxHistogramDimension = entityNumber/
entityCount

Solving for histogramDimension each time the "progress" handler runs:

histogramDimension = entityNumber/EntityCount *
maxHistogramDimension

The visual histogram can be anything from a widening, lengthening
"progress bar" to a bunny running down a field.

This can be done syncronously with the caveat that if it's done in the
same thread (or even if not on a single processor "multiprocessing"
system) as actual work, it slows work down. In doing progress
reporting, one is trying to compensate for the expense in physical
time with some sort of magic show that speeds up the psychological
time experienced by the user.

Think of it as the airline video you get in front of your seat even
back in steerage. Watching the wastes of Central Asia pass beneath one
actually speeds up a Hong Kong to Paris flight because you can
actually see the Caspian come beneath you.

Of course, not all loops are fixed in number. For example, a program
such as Google's Picasa, which seems to want to search my hard drives
for images, is presumably walking a tree. A histogram model needs to
know the number of nodes in the tree at startup, and for large trees,
this might mean walking the tree to count before walking the tree to
do work. That's ridiculous. Here, you'd want to see a tree "grow" even
though this would not show you how far you were to the end.

But even in cases of while and unknown-count for, it's user abuse to
show spinners and flashers that don't let the user know when the
process is done.

The following C Sharp delegates define my model. Comments welcome:
flamers may flame and be damned to you. Quertyuiop, you do not belong
in this discussion.


public delegate void progressStartEventDelegate
(object objTaskDoer,
thread objThread,
string strTaskName,
string strTask,
string strEntity,
int intEntityCount)

The progressStartEvent occurs just before a loop.

The objTaskDoer is the object performing the task.

The objThread is the thread in which the task is being performed.

The strTaskName is used by all progress delegates to identify a
specific task.

The strTask is a task description used only in this delegate.

The strEntity names the entity being processed.

intEntityCount will contain the total number of entities to be
processed.

The GUI is here responsible for keeping some information, probably in
a Lifo stack.
public delegate void progressEventDelegate
(object objTaskDoer,
string strTaskName,
int intEntityNumber)

The progressEventDelegate is called just after or just before one
entity is processed.

The objTaskDoer will be the object performing the task.

strTaskName should be the task name: it will be the same as the
strTaskName sent by the progressStartEventDelegate.

intEntityNumber will be the sequence number (from 1) of the current
entity.
public delegate void progressEndEventDelegate
(object objTaskDoer,
string strTaskName)

The progressEndEventDelegate is called at the normal end of a task.

The objTaskDoer will be the object performing the task.

strTaskName will be the task name as in the progressStartEvent.
public delegate void progressFailEventDelegate
(object objTaskDoer,
string strTaskName,
string strFailMessage)

The progressFailEventDelegate will be called when the task fails.

The objTaskDoer will be the object performing the task.

strTaskName will be the task name.

strFailMessage should be the reason for failure.
Of course, this could be much more elaborate. A "progress" object
could be defined. The problem is that it then seems nice to weight
this object down with all sorts of crap, such as a Tag of type object
for communicating more status information.

Now, I claim that this model is sufficiently simple and general based
on Kant: Kant believed that all experience of necessity is time-
ordered on one dimension such that for any two points in the time as
experienced by one or more knowers, the "less than" or "greater than"
operators can be meaningfully used. Multiple concurrent processes can
be an array of histograms (and multiple users watching the process can
lay bets on the winner if they be sporting gentlemen).

When the entityCount is not known, an estimate can be made, perhaps
saving persistent state so that previous runs of the software give the
following runs an idea of the count.
Jun 27 '08 #1
1 1670
Ico
spinoza1111 <sp*********@yahoo.comwrote:
Therefore, the following C Sharp .Net code constitutes a theory of
progress reporting.
This comp.lang.c, go away

[snipped non C-code]
Now, I claim that this model is sufficiently simple and general based
on Kant: Kant believed that all experience of necessity is time-
ordered on one dimension such that for any two points in the time as
experienced by one or more knowers, the "less than" or "greater than"
operators can be meaningfully used. Multiple concurrent processes can
be an array of histograms (and multiple users watching the process can
lay bets on the winner if they be sporting gentlemen).
Blah blah, rambling and off-topic
Jun 27 '08 #2

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: avinash | last post by:
We apologize if this is a duplicate email. International Conference on Computational Intelligence and Multimedia Applications, (ICCIMA) August 16-18, 2005 University of Nevada, Las Vegas, USA...
0
by: MPOOL'03 Organizers | last post by:
We apologize if you receive this CfP multiple times * Please distribute ! -------------------------------------------------------------------------- CALL FOR PAPERS Workshop on ...
0
by: MPOOL'03 Organizers | last post by:
We apologize if you receive this CfP multiple times * Please distribute ! -------------------------------------------------------------------------- CALL FOR PAPERS Workshop on ...
0
by: icmla | last post by:
CALL FOR PAPERS The Sixth International Conference on Machine Learning and Applications ICMLA 2007 December 13-15, 2007 Cincinnati, OH, USA http://www.cs.csubak.edu/~icmla/icmla07/...
0
by: icmla | last post by:
ICMLA 2007: CALL FOR PAPERS The Sixth International Conference on Machine Learning and Applications ICMLA 2007 December 13-15, 2007 Cincinnati, OH, USA ...
0
by: Fortis Florin | last post by:
CALL FOR PAPERS: Workshop on Workflow and Process Management (WfPM'08), September 2008, Timisoara, Romania ...
0
by: spinoza1111 | last post by:
I want the GUI of the spinoza system to not piss me off with the usual type of progress reporting one sees: the flashy, colorful, and utterly uninformative gizmos that go back and forth and round...
0
by: Fortis Florin | last post by:
2nd CFP: Workshop on Workflow and Process Management (WfPM'08), September 2008, Timisoara, Romania EXTENDED DEADLINES...
1
by: mauriceling | last post by:
Hi everyone After a long wait of nearly 5 month, we are back in business to bring the latest edition of The Python Papers - Volume 3 Issue 2 (http://...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.