Re: Bypass Dirty Save

2006-06-21 Thread David Vaughan


On 21/06/2006, at 17:44, Scott Rossi wrote:


Is there an incantation I can use to bypass/remove/kill the Do you  
want to
save... dialog that the IDE throws up even when nothing has  
changed on a

stack?


Even more fabulous, is there something which deals with the deeply  
stupid Really the remove the stack file ... from memory? Any changes  
made since saving will be lost... when _zero_ changes have been made  
since the last save?


David


Thanks  Regards,

Scott Rossi

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: First record status inconsistent using SQLite

2006-05-28 Thread David Vaughan


On 28/05/2006, at 1:24, Devin Asay wrote:


OTOH, documentation errors are easy to fix. I recently stumbled  
across a minor doco error in one of the revDB functions and  
submitted it to BZ. Lo and behold it showed up as fixed in the next  
2.7.x release. You should submit it for sure. I would even vote for  
it because I've run into this before and was puzzled until I  
figured out what was going on.


#3647

regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Directory Walker Conundrum

2006-05-28 Thread David Vaughan

On 29/05/2006, at 9:52, Alex Tweedly wrote:


change
  delete line 1 of tDirList
to something like
  filter tDirList without ..


This one works anyway, and also does not suffer from a couple of  
other bugs which exist in Ken's older version, to do with permissions  
and infinite recursion in OS X and possibly other 'nixes.


-- This recursive function expects a folder path.
-- It returns a file list for that folder and for each
--  sub-folder it contains (pre-order search)
-- Invisible files are excluded.
function walkDir dirPath
  if dirPath contains //Network then
return empty
  end if
  put empty into tList
  set defaultFolder to dirPath
  -- Dar's discovery. Check permissions were ok
  get the Result
  if it is not empty then
return empty
  end if
  put the long files into fList
  repeat for each line fLine in fList
if char 1 of fLine  . then
-- Change this line to determine what components are returned
  put dirPath  /  item 1 of fLine  comma  item -2 to -1 of  
fLine  return after tList

end if
  end repeat
  get the folders
  repeat for each line x in it
if char 1 of x  . then
  put walkDir(dirPath  /  x) after tList
end if
  end repeat
  return tList
end walkDir

regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


First record status inconsistent using SQLite

2006-05-26 Thread David Vaughan
Using Rev 2.7.1 with AltSqlite/SQLite 3, I found inconsistent  
behaviour (as I see it) with the function revdb_isbof alias  
RevCurrentRecordIsFirst.


Let us assume you find a record set comprising one record.
-- revdb_isbof will be true (expected)
-- revdb_iseof will be false (not expected)
This is inconsistent.

Let us now assume you find a record set comprising two records
-- revdb_isbof will be true (tick)
-- revdb_iseof will be false (tick)
Now go to the Next (last) record
-- revdb_isbof will be false (tick)
-- revdb_iseof will be false (unexpected)
Now, go back to the first record
-- revdb_isbof will be false (unexpected, and inconsistent with our  
starting state)

-- revdb_iseof will be false (tick)

So, the functions purporting to state whether you are at the first or  
last record in a cursor will become true only when you attempt to go  
_past_ the first or last record, rather than when you are at it.  
However, the First Record function inconsistently returns true when  
you first obtain the record set but not thereafter for the same  
record position.


Is this a Rev bug, a SQLite bug or an AltSQLite bug, or expected  
(unexpectedly)?


regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: First record status inconsistent using SQLite

2006-05-26 Thread David Vaughan


On 26/05/2006, at 19:02, Jan Schenkel wrote:


I remember an old discussion about when exactly you
were at the end of a cursor: on the last record, or
after you call revdb_movenext on the last record?
FoxPro seemed to think that the EOF() was _after_ the
last record, not on it.


I do not particularly mind which standard is adopted; rather, I am  
bothered by the fact that _isbof acts inconsistently and the RR  
function names CurrentRecordIsFirst and CurrentRecordIsLast appear to  
take one position on the above question in their names but to behave  
otherwise.


Posting here was a bit of a scattergun in that I expect that it will  
be read by all who might have an answer or be in a position to deny  
that the problem lies with them. If I can get that resolved, then I  
can post the bug in the right place :-)


regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: First record status inconsistent using SQLite

2006-05-26 Thread David Vaughan


On 27/05/2006, at 12:30, Kay C Lan wrote:
...

...BUT once you move
away from these, moving back to them using 'previous' or 'next'  
will not

result in them be recognised, you need to try an move past them, then
they'll be recognised.


I recognise it but it leaves me thinking that the old names  
revdb_isbof and revdb_iseof were more accurate descriptors than  
the new synonymsrevCurrentRecordIsFirst or  
revCurrentRecordIsLast. They could be changed to  
revNoPreviousRecord and revNoNextRecord when they would fit their  
dictionary descriptions. I will BugZilla it but somehow I do not see  
this piece of documentation semantics hitting a high on their ToDo  
list. It will just have to be rediscovered by new users as they reach  
it.


cheers
David


HTH.
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Delete item won't work in Repeat for each loop

2006-05-24 Thread David Vaughan


On 25/05/2006, at 7:52, Ian McKnight wrote:


I think I see whats happening. I'm not altering the original data in
theImportedData variable rarther the copy of the data thats in the
loop variable. So unless I store this -- I lose it.


In fact, if you do alter importedData itself rather then theRecord in  
your Repeat For Each loop then the loop will either crash or corrupt  
importedData because the loop pointers will be out of sync with the  
data through which it is stepping. RFE is a very different beast from  
a standard i = j to k loop.


regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: [OT] Routerless Network?

2006-05-09 Thread David Vaughan


On 10/05/2006, at 9:15, Mark Schonewille wrote:



FYI, it is not necessary to use VPC for that. On the PC side, I  
have Client for MS Networks installed, together with the correct  
ethernet drivers. I have also a TCP/IP protocol defined for that  
Ethernet driver, with the correct IP number and subnet mask. Then I  
turned on file sharing and set the properties of an entire hard  
disk partition such as to share it with the local network.


On the Mac, I configured TCP/IP manually and turned on Windows  
sharing.



Indeed, either should work, and Scott's O'Reilly reference shows the  
flexibility. Personally i would define the IP addresses (like Mark)   
rather than using self-assigned addresses, and would share the PC and  
connect from the Mac end. You do not have to share both. However,  
Scott's last post on his lack of success on something which should  
work readily leaves me at a bit of a loss to troubleshoot it remotely  
and without information on machines, versions, settings and so on.  
Probably quicker to use iPodNet or thumbDriveNet or connect the PC to  
the airport.


I was optimistic earlier when I said Macs three to five years old  
should do the auto-crossover trick. I think it might only have come  
in with the PB17 three years ago and then spread to later models.


regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: How to manage large SQL data sets - reply 2

2006-05-05 Thread David Vaughan

On 06/05/2006, at 4:22, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:


Ruslan wrote:
RevDataFromQuery -- is not good choice in your case.
it load everything into string of result

You need to use RevQueryDatabase
==
The successful use of this command returns an integer, not the data.
How do I get the data into a table list on the card?



The integer is your cursor reference which you then use while moving  
back and forth through the record list. The list itself is not held  
in memory so you can handle any size of data set.


Read about it in the documentation, Mark. Look up revQueryDatabase in  
the Dictionary, and also revMoveToNextRecord to get a good set of  
links. Look up the User Guide in Section 8 on database use to  
understand use of cursors. In general, just type database into the  
Dictionary search field or into the search function in your PDF reader.


Ruslan is the progenitor of a fast database product, Valentina, which  
competes with MySQL and others, so he is being courteous in helping  
you with basic SQL. Some self-help might also be appropriate when the  
documentation is there, integrated with the product :-)


regards
David



Thanx,
Mark
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: test.gz problem

2006-04-21 Thread David Vaughan

On 21/04/2006, at 21:50, Chipp Walters wrote:


I don't see any test.gz file on my system anywhere. altSQLite in  
the demo does create some sample databases, but they aren't named  
'test.gz'


??

This file is created either by altSQLite directly or by the demo stack.
In zipped form its contents are:
1f 8b 08 00 00 00 00 00  00 03 03 00 00 00 00 00 00 00 00 00
and unzipped it is empty. I assumed it was part of your licencing.

Nothing else created it.

David



As you know, test.gz refers to a gzipped file. Are you gzipping  
anything?


best,
Chipp

Alex Shaw wrote:

hi
Experiencing a small problem with a project I've installed on a  
client's system. The network is just basic shared access thru a  
standard windows network. The app was developed with rev 2.6.1  
storing info using the great altsqlite2 plugin (saving sl3 for the  
next version :)
Users have a shortcut to the network drive where my application  
sits, it apppears admins can run the app fine but not general users..

 From their system administrator:


I have just finished investigating the problems that CAAPS are   
having and I think I have narrowed the problem down to a file   
called C:\test.gz.


Basically when I logged into the PC as a standard user, it fails  
to  create the file. After I modified the users permission level  
to  Power User, the application worked fine.


The filemon logs that I have show the failure of the standard  
user  to create and then access the file, and the success of the  
power  user to create and access the file.


Let me know if you would like the logs emailed.
I know my code isn't creating this file so i'm wondering if this  
file (test.gz) is related to altsqlite?

What is it for  Is it needed?
If so, can you control where it's created?
I noticed on the mac this file is created (called c/\test.gz) in  
the same folder as the main exe, can this behaviour be replicated  
on windows?
I also noticed running my app from a read-only medium (DVD) worked  
on windows but would not work on mac (ie. only mac  windows  
standalones tested not linux).

Any suggestions?
regards
alex
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: PIM

2006-04-20 Thread David Vaughan

Mikey

I have one in HyperCard and need to convert it to Rev before I can  
buy an Intel Mac. I have the core design for the Rev version but not  
a line of code. The old one was first developed in 1989 and  
successively refined over the years, now being in V8.30 of 2003. It  
is one of three files I _must_ back up to survive fire or theft,  
because its journalling functions mean that much of my private and  
business life is retained there. So, I do not have what you want but  
if you are thinking of building one then I am happy to discuss needs  
and implementations off list.


regards
David

On 20/04/2006, at 23:57, Mikey wrote:


WAAAY back in the day I used to use
Connections, which was a PIM product that ran in HC.  I'm incredibly
unhappy with all the PIM's I've used since, so I'm thinking of killing
myself cranking one out.  Do we have an RR based PIM somewhere?

--
On the first day, God created the heavens and the Earth
On the second day, God created the oceans.
On the third day, God put the animals on hold for a few hours,
   and did a little diving.
And God said, This is good.
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Unexpected problem with Forum

2006-04-14 Thread David Vaughan

When I wrote in favour of a Forum late last year:
 Subject:   Re: Recent Development on the Use-LIst
 Date:  16 December 2005 10:52:27 GMT+11:00

among my arguments were that:
 Secondly, a single button brings up in tree format every post made  
since you yourself last checked, and no others.


Alas, this forum does not. Sure, it brings up the topics on which  
posts were most recently made, but it does not bring up a tree list  
of recent posts made so you can click on one to go directly to that  
comment. Further, when you click on a thread on which there have been  
posts since you last looked, it puts you at the top of the thread  
rather than on the first new post, so you have to rely on memory to  
find whereabouts you should start reading.


These two lacks are clumsy, wasteful of my time and disappointing.

Is there some preference I can set which will make the Forum behave  
in a reasonable manner? If not, then the Forum software needs  
reconfiguration or else, if the behaviour I describe is beyond its  
capabilities, then it needs a platform shift.


Having argued in favour of a Forum based on experience with other  
systems, I can not use it in its present form :-(


regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Custom Properties

2006-04-12 Thread David Vaughan
Thanks for the idea, Devin. I had looked at custom props previously,  
sufficiently to know what they do but without keeping them in mind  
for real applications.


You have just simplified a database system I am writing, where I  
employ what appears to the user to be modeless operation, tracking  
the state internally to decide whether create/update/delete/undo are  
logical continuations and setting button states accordingly. Now I  
will write this logic in one place rather than scattered about the  
buttons which are repeated across many data screens.


Consider happy thoughts to be floating in your general direction and  
enjoy your day :-)


cheers
David

On 13/04/2006, at 7:26, Devin Asay wrote:



On Apr 12, 2006, at 11:44 AM, Thomas McGrath III wrote:

Does anyone have any examples on the get/setProps in real usage? I  
have been using custom props but not the setProp etc. I would love  
some more insightful ideas on it's usage.


The way I use it is much more pedestrian than the Marks'. For me  
it's a really easy way to make sure my interface objects get set to  
the proper states. For example, let's say I want to toggle between  
an 'editable' and 'noneditable' mode for a text editor:


setProp editMode pMode
  if pMode then
enable button Save
enable button TextColor
set the lockText of fld myfld to true
set the traversalOn of fld myFld to true
  else
disable button Save
disable button TextColor
set the lockText of fld myfld to false
set the traversalOn of fld myFld to false
  end if
  pass editMode -- the docs say you have to explicitly pass it to  
have it set the prop

end editMode

Anyway, this is a crude example, but illustrates how it's been most  
useful to me. There may be several events in my program that could  
trigger a change in edit mode for this field, but in each case all  
I'd have to do would be to


  set the editMode of cd editor to true ## or false

Devin

Devin Asay
Humanities Technology and Research Support Center
Brigham Young University

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Custom Properties

2006-04-12 Thread David Vaughan

On 13/04/2006, at 7:55, David Vaughan wrote:


...I had looked at custom props previously ...


I meant to say GetProp/SetProp not custom props. One always uses  
the latter.

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Custom Properties

2006-04-12 Thread David Vaughan

On 13/04/2006, at 8:11, J. Landman Gay wrote:


Now I'm curious what's the advantage, if any, of using a setProp  
handler over a standard command handler? This isn't just to you,  
Devin, but to anyone who uses these regularly.


In my instance I am already setting a property or two so using  
setProp fits in. Generally, I use commands and functions to do  
things whereas properties are about states. I have never felt very  
comfortable about using a command to change a state (or collection  
thereof) rather than to process information, if you go along with the  
distinction.


The fact that we also use custom properties for data can distract  
from their state-nature.


regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Deselecting a line

2006-04-12 Thread David Vaughan


On 13/04/2006, at 8:47, Graham Samuel wrote:

Thanks to Klaus, Devin and Ken for their replies: both Klaus and  
Ken pointed out that I need to set the hilitedLines of the field to  
zero or empty. I hadn't realised that I was necessarily using a  
list field, but in fact I am, since I see that it means that a  
single click hilites a whole line, which is what I need for file  
selections. I simply wanted to deny the user the chance to make a  
selection in one particular instance (when they hadn't signed up to  
fully use the program). I guess I was expecting there to be an  
'unselect' command.


Anyway thanks again

Graham


Graham

Am I right to read into the tone of your reply that you feel as  
though the problem is unsolved, or is it just grievous disappointment  
that there is no unSelect command? :-)


If the former, a mouseDown handler which zeroes the hilitedLines  
property will leave only the slightest flicker while visible  
selection does not happen.


regards
David





-- 
-

Graham Samuel / The Living Fossil Co. / UK and France

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: bugs

2006-04-09 Thread David Vaughan


On 09/04/2006, at 17:44, Geoff Canyon wrote:
I think you and I are agreed: the software itself is bug free.  
There seems to be debate over whether a bug in the code's context  
-- requirements, the engine, the OS, etc. -- qualifies as a bug in  
the software. I think it doesn't, but I can understand the point of  
people who think that's a useless distinction. In fact I'm likely  
to agree, but I still maintain that the code itself is bug free ;-)


It's funny that this all started as a joke, but I'm actually  
experiencing this as we speak: the windowshade control I released.  
I think the code is clean, but some people are having troubles with  
it. I can't replicate their errors, and there are others using it  
without troubles as well. Is there a context issue? Am I wrong that  
the code is clean? I'm stuck trying to figure that out. sigh


As for my posts referring to your code, Geoff, I hoped I had made it  
sufficiently clear already that I was using it as a jumping off point  
to elaborate on the issues of what is a bug and differences in user  
experiences, and nothing at all to do with your code which I  
understood and accepted in the context in which you presented it.


cheers
David


As far as my programming prowess is concerned, I hope it takes more  
than one line of code to judge that!


You are too modest g
LOL


regards,

Geoff

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: bugs

2006-04-09 Thread David Vaughan

On 10/04/2006, at 1:56, David Burgun wrote:


The real problem here is if the marketing department get ahold of  
it, they will make it into a feature ! e.g. this Application is  
supposed to tell you the time in the USA, it's so cool you don't  
have to figure it out for yourself, thereby cutting out the rest of  
the world from the product. Eventually when the US market slows  
down, they add a preference to allow the time to be shown in local  
time, call it an upgrade and charge everyone for the privilege of  
fixing the bug!


How many times you seen that happen???


:-)



All the Best
Dave

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: bugs

2006-04-09 Thread David Vaughan


On 10/04/2006, at 2:37, Geoff Canyon wrote:

The question is this: what do you think is the upper limit for  
_completely_ bug-free code?


Was your code bug-free the first time you wrote it, no typographic  
errors or any other changes? Do not answer that because it is only a  
lead-in to the next comment, that the upper limit is for code which  
can be made bug free with reasonable economic effort, and that is in  
my view controlled by the number of people involved.


Your script worked well because you (I presume) conceived the  
requirement, the design and the implementation and it was self- 
documenting in that the descriptive text carries import to you which  
it may not for other people. I take it for the moment that you are  
also the user.


To the extent that you introduce new actors at any one of those five  
roles, you will increase the probability of bugs both arising and  
persisting.


I have some small to complex stacks which to the best of my knowledge  
are bug free, but no-one else uses them, they are substantially  
undocumented, and the design and usage pattern are perfectly matched,  
both being through me. I have little doubt that use by other people  
might expose real bugs and absolutely no doubt whatsoever that those  
other users would raise as bugs points which I considered to be  
obvious design choices or usages.


I have also a fairly complex stack with at least one obvious bug but  
I know about it and work around it because that costs me less effort,  
even on a regular basis, than investing in fixing that stack compared  
with my other development priorities which are themselves way below  
my other life priorities (reiterating for those who have not read it  
before that I do not develop software to order nor for product).  
Eventually, it will irritate me enough and I will have the spare time  
so I will fix it.


The last part was a bit of a digression. The main answer is that bugs  
arise less from code size than from the count of actors in the five  
steps from concept to use. A sufficiently complex project conceived,  
developed and used by a single person will merely not be finished  
while the development bugs are being ironed out. :-)


cheers
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: bugs

2006-04-09 Thread David Vaughan
I forgot to mention the sixth actor, although alluding to it in my  
very first line below: inverse time.


David

On 10/04/2006, at 10:21, David Vaughan wrote:



On 10/04/2006, at 2:37, Geoff Canyon wrote:

The question is this: what do you think is the upper limit for  
_completely_ bug-free code?


Was your code bug-free the first time you wrote it, no typographic  
errors or any other changes? Do not answer that because it is only  
a lead-in to the next comment, that the upper limit is for code  
which can be made bug free with reasonable economic effort, and  
that is in my view controlled by the number of people involved.


Your script worked well because you (I presume) conceived the  
requirement, the design and the implementation and it was self- 
documenting in that the descriptive text carries import to you  
which it may not for other people. I take it for the moment that  
you are also the user.


To the extent that you introduce new actors at any one of those  
five roles, you will increase the probability of bugs both arising  
and persisting.


I have some small to complex stacks which to the best of my  
knowledge are bug free, but no-one else uses them, they are  
substantially undocumented, and the design and usage pattern are  
perfectly matched, both being through me. I have little doubt that  
use by other people might expose real bugs and absolutely no doubt  
whatsoever that those other users would raise as bugs points which  
I considered to be obvious design choices or usages.


I have also a fairly complex stack with at least one obvious bug  
but I know about it and work around it because that costs me less  
effort, even on a regular basis, than investing in fixing that  
stack compared with my other development priorities which are  
themselves way below my other life priorities (reiterating for  
those who have not read it before that I do not develop software to  
order nor for product). Eventually, it will irritate me enough and  
I will have the spare time so I will fix it.


The last part was a bit of a digression. The main answer is that  
bugs arise less from code size than from the count of actors in the  
five steps from concept to use. A sufficiently complex project  
conceived, developed and used by a single person will merely not be  
finished while the development bugs are being ironed out. :-)


cheers
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: bugs

2006-04-08 Thread David Vaughan

On 08/04/2006, at 16:36, Geoff Canyon [EMAIL PROTECTED] wrote:


So tell me what could go wrong? ;-)


You are limiting yourself to the code, where bugs can have the forms  
of user requirements, specification and documentation as well as  
coding. In this case, the user may have wanted to know the date in  
long form ;-)


However, your code snippet as written does indeed have a bug. If I  
run it here, I see the answer 4/8/06 which I consider an absurd  
answer and very clearly a bug. In Australia, it is not yet August.


cheers
David


regards,

Geoff

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: bugs

2006-04-08 Thread David Vaughan

So tell me what could go wrong? ;-)


I realised while cooking the salmon this evening (crocodile being off  
the menu) that Geoff had inadvertently provided a wonderful case  
study on bugs. Any link to Geoff in the following is purely  
coincidental and nothing to do with him at all :-)


Once upon a time, an aspiring programmer wrote:

on mouseUp -- display the date
  answer the date with OK
end mouseUp

and released it as shareware.

His American audience loved it. He received five star ratings on  
Versiontracker and plaudits on download.com, so impressed were users  
at being able to load an application, click a single button and see  
the date. Most impressive of all, it looked bug free.


Then, some old bloke from Australia gave a negative review, declaring  
the code contained a bug in that the information 4/8/06 for 8 April  
was simply wrong. A Frenchman wrote to say that the format should be  
060408. Both complained that this was a clear-cut bug about which  
the developer should have known before releasing the software with  
the documentation Displays the date.


Relying on precedents in  Gutnick v. Dow Jones, they observed that  
even though the software was uploaded in America to an American  
server, it was published in Australia and France where it was read,  
and therefore subject to those foreign laws of fitness for purpose,  
with which any judge in those jurisdictions would agree ;-)  
Therefore, we have an indisputable bug in even this simple application.


Now that we know that no code is bug-free, two issues arise, one of  
morality and one of money.


Has the programmer committed an Immoral Act by publishing this  
software with a bug about which those foreign users believe he should  
surely have known?


What commercial decision should the programmer make? Add 33% more  
lines to the code (set the useSystemDate to true) just to cater for  
foreign system dates, or add one word to the documentation so that it  
says Displays the U.S. date? One action will cost more than the  
other, and either will cost more than doing nothing and restricting  
his target market. Perhaps he should focus his development energies  
on his upcoming product Displays the time which he expects to sell  
at twice the price?


So, it appears that
- bugs happen, even when they are sincerely believed not to exist and  
with the best will in the world, and testing which seemed  
comprehensive at the time;
- money matters in commercial decisions without greed per se being a  
factor;

- the morality of the developer is not questioned by the discovered bug.

Perhaps RunRev has more bugs than it should have. That is something I  
do not know, but Lynn may on industry benchmarks. Regardless,  
bugginess is a relative question.


regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: bugs

2006-04-08 Thread David Vaughan


On 09/04/2006, at 6:23, Garrett Hylltun wrote:


The thing is, that is not a bug.  The programmer did not make any  
error in his code at all.  The code works as it was intended.


You could also claim that if a user in Japan downloaded the program  
and could not read it because it was in English and not Japanese,  
that he could say that the program has a bug.


Or a Linux user downloaded the Windows version, it would not run,  
so it must be a bug.


Your scenario is lacking completely, and rather a petty attempt to  
push your belief.


Garrett

Thank you for the ad hominem attack in your last line. Mark has  
already disposed of your prior argument that there is no bug  
(programmer's intention) so I will not elaborate on his concise  
statement. For your further enlightenment here is a set categories of  
bugs:

- Requirements defects
- Design defects
- Source code defects
- User documentation defects
- Bad fixes, or secondary defects found in repairs to prior defects
[source: Capers-Jones, Applied Software Measurement]

Your attempt to dismiss the basis of the single coding example I used  
seems rather an attempt to avoid the three conclusions I drew.
- bugs happen, even when they are sincerely believed not to exist  
and with the best will in the world, and testing which seemed  
comprehensive at the time;
- money matters in commercial decisions without greed per se being  
a factor;
- the morality of the developer is not questioned by the discovered  
bug.


I will not discuss these further here with you because I see no point  
to it. I expect that great majority of developers would take these  
points as self-evident. If you wish to evangelise your position of  
bug-free heaven where commerce does not exist, write to me privately.  
Better still, write to someone else.


Where you have an actual bug of any category, post it to support or  
with Revzilla


David


-Garrett

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: bugs

2006-04-08 Thread David Vaughan


On 09/04/2006, at 9:26, Garrett Hylltun wrote:


  The intent of the code is far too obvious for you or anyone else  
here to say any different.

Ah, the sweetness of certainty; the certainty of not knowing.


You're just upset because your belief that bug free is impossible  
was shown to be wrong.
Mark did not put that position so far as I recall. Neither did I. You  
may recall I have consistently referred to questions of scale.   
Either attack the correct person, or stop putting up straw men and go  
back to your contributions to this list.


David


-Garrett


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: [Ticket#: 2006040510000641] Re: [OT] Articles to read

2006-04-07 Thread David Vaughan


On 07/04/2006, at 15:46, Garrett Hylltun [EMAIL PROTECTED]  
wrote:


about what


David Vaughan wrote:


and I have replied off-list because this list is about software and,  
as Garrett himself says, he has made himself and his assumptions, not  
RunRev, the subject of this particular rant.


regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: [OT] why eating your own haggis is not too bad for a companybased in Scotland

2006-04-07 Thread David Vaughan


On 08/04/2006, at 0:50, Scott Kane [EMAIL PROTECTED] wrote:


I wonder if it beats roo meat or crocodile?  I've had both
and they were excellent.


Crocodile is excellent, better than kangaroo and emu although there  
is nothing wrong with kangaroo. I think emu can be a bit tough. The  
kangaroo and the emu are on Australia's coat of arms, so we can at  
least claim the distinction that we eat out own national emblems.


cheers
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: [Ticket#: 2006040510000641] Re: [OT] Articles to read

2006-04-07 Thread David Vaughan


On 08/04/2006, at 8:48, Ken Ray [EMAIL PROTECTED]wrote:



Oh, Yeah? Well WE had to walk 35 miles through a raging snowstorm  
with only
flipflops and snorkles while juggling crazed rabid wombats and  
breathing

sulphur just to LOOK at a cardboard computer!

;-)

Ken Ray


Now, now Ken, you know that is hard to believe. We do not have rabies  
here in wombat's own country.


David
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: [Ticket#: 2006040510000641] Re: [OT] Articles to read

2006-04-07 Thread David Vaughan


On 08/04/2006, at 0:50, David Burgun [EMAIL PROTECTED] wrote:


One way of
putting it is that the boundaries of capability have been pushed
over the years while the rise in bugs has been disproportionately  
low.


Over what years are you talking about? I really can't see this, for
instance:

When I first started in programming we used assembler on Mini-
Computers.. Back then, programmers used to get paid a
bonus for shipping bug free code, that bonus would decrease as the
bug count increased. It was even possible to go into negative bonus
which would be subtracted from bonus of the next project.


Sounds a fine idea but alas you are off my point. I understand QA  
processes very well. Your mini-computer/assembler example is  
inevitably of a simpler system compared with those one can readily  
create today in languages such as Rev. Yes, assembler programming is  
complex (been there, done that) but the delivered functionality of a  
3GL or later language is light years beyond what you and I were doing  
with kerosene-powered computers and rice-paper Hollerith cards.  
Complexity and errors per function point rise with the measurable  
size of the software whereas small, simple applications are simple to  
make relatively bug free. Despite that, the rate of errors per  
function point declines with more powerful languages, and those  
languages enable the delivery of applications of a complexity which  
could not reasonably be done thirty years ago. Hence my point that  
capabilities have extended at a disproportionately low error rate.   
Simple, and well established from industry benchmarks in at least the  
last twenty five years.


When I first started of the Mac, the software was must more robust
and bug free.

Not in my experience :-)
As Richard said elsewhere, perhaps my usage and environment exposed  
bugs you did not see, and now our positions are reversed.


Which brings me to Bob Warren's comment about ignoring bugs. I  
promise faithfully I do not ignore them, I just do not encounter  
significant bugs in my use of the IDE on OS X 10.4.5 with a zillion  
other applications running. I can not comment on Linux. When I find  
what I think is a bug I start by searching my own actions, maybe ask  
this list for help, see if someone else has it on Bugzilla and if not  
then I will raise it thanks to Ken's Revzilla interface. I have no  
current bugs in Bugzilla.


All the Best
Dave

and David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: [Ticket#: 2006040510000641] Re: [OT] Articles to read

2006-04-06 Thread David Vaughan


On 07/04/2006, at 10:25, Garrett Hylltun [EMAIL PROTECTED]  
wrote:


What it comes down to is money.

Yes, the cost and benefit analysis of which Richard spoke.

I'm sorry, but my expectations of software is higher.  I get so  
tired of
hearing B.S. and excuses as to why software isn't or can't be bug  
free.
Software is a creative product of staggering complexity, one whose  
reliability has increased enormously over the years. One way of  
putting it is that the boundaries of capability have been pushed over  
the years while the rise in bugs has been disproportionately low.



I can accept bugs that slip by undetected
Look at the work being put in by others on the list right now,  
illustrating how hard it can be to define a bug. As I have said to  
you before, without a causal definition, the bug can not be fixed.  
Would you like to contribute to the effort, perhaps, rather than  
lambasting the work of others? Consider it a question of ethical  
behaviour :-)



How can someone sleep at night knowing they've release software with
bugs in it?  Don't you feel guilty about it?

My morals and virtues are not for sale.  If I can't do the job right,
then I'm not doing the job at all!
Why do you develop software, Garrett, since you have just said you  
will never do it? Or is it that you have no commercial software  
product and thus avoid the discovery of many bugs?


David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: OT: Apple at 30 - My Piece of the Big Fruit

2006-03-30 Thread David Vaughan


On 31/03/2006, at 8:28, Robert Brenstein [EMAIL PROTECTED] wrote:


We had Apple III (yes, the ill-fated 3 not 2) in the p-chem lab and
nobody knew what to do with it, so I got a free rein in using it.
That was a few years before Lisa and Macs.


The Mac did not appear in Australia until 1985. We opened our first  
company in 1984 and were handed the Lisa, so after playing with that  
I was pretty disappointed with the Mac. I avoided it until  
Multifinder arrived, then, being the technical arm of our company, I  
grabbed an SE/30 while the others were using SE II and started on  
HyperCard.


One of our clients, a partner at a medium accounting firm, for years  
drafted all his documents on a Mac Plus using MacPaint (yes, Paint,  
not Write) before handing them to his PA to type up. He just loved  
the ease of use :-)


When in the mid-90s the huge mining company by which I was then  
employed decided to standardise on Windows PCs, I had such a wealth  
of software which was now vital to the analysis and modelling work I  
did that I alone was allowed to hang on to my Mac and just connect  
into their network with SoftPC and later VirtualPC. Despite the  
gloomy prognostications of my good friends at the time, Apple revived  
and since 2000 my very small business has been supported very well by  
our all-Apple computing power (portables, XServe, wireless and that  
most important hard disk backup tool, iPod :-) ) regardless of what  
our clients use.


If they can just keep going another thirty years then I should be  
sufficiently dead not to worry about their third term ;-)


cheers
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Bugs bunnies

2006-03-09 Thread David Vaughan
I would much rather have 75% of the functionality with 5% bugs, than  
100% of the functionality with 25% bugs!


Good thought, I thought, but what if RunRev could not target quite  
that well? What if there were 77% of the functionality with, alas, 6%  
bugs, or 55% functionality with 1% bugs? Would either of those be  
acceptable? Fortunately, I have a solution to this conundrum and  
expect soon to become very rich :-)


I propose that all interested parties complete the following simple  
exercise and send the results  to me. For every percentage of  
functionality between 50 and 100 and every bug percentage from 25 to  
0, rate each of the 1326 combinations on a desirability scale from 0  
(min) to 9 (max). From this I will be able to derive a mathematical  
function, probably polynomial, which will describe to RunRev the  
average risk profile of their user base. Oh, it is also essential  
that you define accurately for me what constitutes a percentage of  
functionality, or what is a percentage of bugs. Also, what punishment  
should we inflict if a fug or bunction is accidentally missed?


If your point is that, generally speaking, you prefer reliability to  
features then welcome to a diverse community, You may or may not find  
yourself in the tail of a Bell curve at the far end of which is a set  
of users devoted to cutting edge functionality at the cost of several  
work-arounds and in the middle of which is a large group of people  
who use the product with varying levels of delight or discomfort.  
Uncomfortable people exist at both ends of the scale, not only on the  
side you personally inhabit. This seething mass of desires and groans  
is what RunRev happily call a market.


The weekend will be here soon; then they might like to have a  
Scotch  :-D


cheers
David

Post Script: I stripped the name of the person who originated the  
quotation above because they are undoubtedly frustrated by a problem  
which they currently are unable to get around. I am commenting on the  
problems involved in simple expressions of needs.

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Transcript and Dot Notation

2006-02-26 Thread David Vaughan


People, this is not cool. Sleep time.

cheers
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: On the Democratic Operation of Bugzilla

2006-02-25 Thread David Vaughan


On 26/02/2006, at 0:50, Sarah Reichelt [EMAIL PROTECTED]  
wrote:

snip

To digress slightly, I think the reason Rev appears to have so many
bugs is because it is so versatile. We all use Rev in different ways
to do widely different projects. I ignore some bugs because I never do
the things they refer to. Others find the same bugs to be project
blockers. Then again, some people use Rev in a way that the
development team never imagined. That's great, but it means they will
be the first to strike bugs in those areas. By comparison, testing a
single-use application like a word-processor should be simple, but
they still crash :-)


Very true. Rev is a complex application. The productive efficiency of  
writing it in itself, as it were, should not fool anyone into  
believing otherwise.


I wonder is the Rev team doing itself a disservice by letting all Rev
users access the bug reports? While most people seem to value the
chance to point out problems and influence future versions, some
people regard a public bug list as an admission of failure. Maybe it
would be better to restrict bugzilla to members of the improve-rev
list or make it by invitation only.
Perhaps rather than restricting it by fiat, RR could make access to  
the bug list voluntary, just as it allows switching on access to this  
list or doing so in digest or e-mail form. If you sign up then you  
also receive notifications of changes to the bug list [optionally  
Selected or All], the intention being to keep you actively involved  
while you continue your interest but shutting the list off from  
casual access. Sign-up would also be a moderated event. Thus, engage  
those who are interested (and allow them more votes) with full  
information available, still open in principle to anyone.


Meanwhile, Rev could also provide a Problem report option under the  
Help menu where you did not have access directly to the bug list but  
had the opportunity to enter a problem, rate it on its own (with  
reasons), and have some lookup of related problems (based on selected  
category or on key terms) so that the user could also say their  
problem is the same as or like or unlike others which from their  
terms appear to be related. Thus, serious simplification with  
information concealment while still allowing free report.


My general idea is to retain for all the ability to report to the  
real list even if that list remains behind the scenes, allow the  
simplest and easiest access for anyone to do so, and to engage more  
effectively by interaction the users motivated to provide comparative  
voting rather than one-off voting. Give me some critique and I will  
try making an enhancement proposal.


These are speculative thoughts on my part.


Just a few random thoughts,
Sarah


regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: On the Democratic Operation of Bugzilla

2006-02-24 Thread David Vaughan


On 25/02/2006, Garrett Hylltun [EMAIL PROTECTED] and  
Gregory Lypny [EMAIL PROTECTED] wrote stuff.


Sorry to others for some repetitious elements in here but I see a  
couple of basic themes in the offerings from Garrett and Gregory  
(principally the former) which I wish to answer.


My credentials for so doing include not only the usual geological  
ages in and around software but particularly more than ten years  
spent observing or intervening in large scale projects which were off  
the rails and subject to commercial dispute, always involving  
millions to tens of millions of dollars. Problem management is, more  
or less, how I make my living. I also designed quality assurance  
facilities for a couple of government departments, one carrying a  
2000-strong IT workforce and another doing highly critical defence  
work. The relevance of that is a high level of familiarity with what  
constitutes a faulty product to different people and how users'  
requirements are obtained, interpreted and implemented.


I understand Garrett to be saying that all bugs should be fixed and  
that the order of their repair is immaterial given the first  
assumption. His dissatisfaction with the failure of this desirable  
outcome is exacerbated by the perceived high price of the product.


However, Garrett fails to define a bug and there immediately is a  
massive problem. One person's bug is another person's feature  
request, a third person's could not care less and as often than not  
is unrelated to the software in question anyway (false report). This  
is unavoidable and and automatically renders any fix all bugs  
request as, well, just plain silly. I apologise for any personal  
offence anyone might take from that because I mean none, but there is  
really no other description for it. There will always be a range of  
items where their bug status is legitimately moot, so where do you  
draw the line? That is a matter of commercial dispute, of priority  
against demand and resources, of adequate bug definition and  
ultimately of agreement about where effort is most productively  
invested so that *both* parties are commercially successful.


The inexhaustible and infallible Alpha and Beta testing teams you  
seek do not exist outside the halls of Valhalla [or insert preferred  
paradise] and even there they are driven to drinking and argument.  
Incidentally, Gregory, the same bug will not, alas, appear in  
headers without human intervention and interpretation of the myriad  
descriptions, many of them fairly incompetent, of the potential bug.


For decades we have been grabbing developers and banging their heads  
against brick walls and steel pillars screaming What about the  
customer's business needs! So, how is it that RR will make all  
decisions on criticality of those bugs of which they are aware and  
which they choose to define as bugs? Their problem is not that they  
are too customer-driven with BZ, it is contrarily that it is damned  
hard to get some decent customer input. Even Dan, who is as  
experienced as anyone, confesses that he does not get motivated to  
use Bugzilla. Criticality, or priority, does matter. In a bank, if  
there were a bug which even in rare circumstances created an  
incorrect transaction then there would be a fix and release before  
virtually any other bug were managed in that software. Far from  
denigrating RR for exposing their bug data to entry and voting, we  
should be applauding their sound system and devising ways of making  
it more acceptable to users (as attempted by RZ).


One of the most reliable pieces of large scale software I know is OS/ 
390 or z/OS in its current incarnation. It hosts a myriad of the most  
critical commercial and defence systems around the world. How much  
money would you like to lay down, Garrett, that its bug list has zero  
length? Or that every one on the list is always fixed by the next  
release, or that customers pay no licence fee to obtain fixes? It is  
a waste of time even to imagine it, or to borrow words from your own  
blog, it is not science, it is nothing but pure religion.


Finally, the cost issue is not worth debating too much except for a  
couple of observations. My daughter is currently in Edinburgh and  
reports no stream of Ferrari Enzos racing about the Scottish hills  
while the RR office lies silent but for the flickering stream of bug  
reports. Bill Gates and Steve Jobs, however, have no problem  
affording such fripperies should they wish it, for they charge  
hundreds of dollars for software sold to millions or tens of  
millions, not to thousands.


Yet, every now and then, I see a window appear on my machine. It  
says: Would you like to report this problem to Apple?


regards
David
Director
DVK Consult Pty Ltd
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 

Re: File sharing, locking, etc... between multiple users...

2006-02-22 Thread David Vaughan


On 23/02/2006, at 5:00, Jonathan Lynch [EMAIL PROTECTED]  
wrote:


any other tips?


Rob's comment about supporting 15-30 users is valid although it  
depends also on the transaction rates they can achieve.


Jim's discussion of pre-emptive rights for certain actions or user  
types will add complexity to the locking and checking process. My own  
view is that I would adopt a real client-server database if I were  
going to that level. Given we are talking about a small system and  
user base, pre-emption should not be critical. We are relying on a  
process to give up a lock anyway, which is something else you should  
consider (removing stale locks where a process has died or improperly  
quit). Jim's general strategy of reserving line 1 for metadata is  
very nice. I would stick to flags for locking, though, simply for the  
small speed gain.


To create a flag, generate a random number and create a file of that  
name .flag. To see if you can go ahead, first count the number of  
flag files and, if one, check that it is yours. Remember to remove  
the flag under all exit conditions and consider the tradeoffs of a  
cleanup daemon which arbitrarily removes flags older than X, where X  
is entirely your problem in your context :-). At the least you should  
be able to post a warning message.


Finally, you may need to time your flag setting/checking loop under  
various conditions so you can set a safe minimum wait time to avoid  
races while the maximum does not delay processing too much. We should  
be talking a range of milliseconds.


HTH

regards
David

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: File sharing, locking, etc... between multiple users...

2006-02-21 Thread David Vaughan


On 22/02/2006, at 5:00, Jonathan Lynch [EMAIL PROTECTED]  
wrote:


1) User A reads the file, and determines it is not owned
2) In the few milliseconds between when User A reads the file, and  
resaves

it, user B reads the file and also reads that it is not owned.
3) User A makes changes and saves the data
4) User B, who should have been locked out but was not, makes  
changes and

saves his data, overwriting the changes made by User A.

My plan is to minimize the possibility of this type of collision by  
having

the minimum possible time between reading a file and resaving it with
ownership. Secondly, I will include some collision detection code


That sort of thing can work quite well in scripted apps. I had to do  
a similar thing where the rate of access was very low but it was  
nonetheless important that there be no conflict. It worked like this:
1. User A reads directory and if the file is already owned, sleeps a  
randomly short time and tries again.
2. On finding the path clear, User A writes a flag asserting  
ownership and sleeps a randomly short(er) time.
3a. On waking again, User A reads the flags and if it is still the  
sole owner, sets about its business.
3b. If, on this second awakening, User A finds another owner  
contesting (i.e. a race condition slipped through the first check  
above) then User A removes their own ownership claim and goes back to  
the beginning.


Like I said, this is for low volume stuff but it is perfectly  
effective in preventing conflicts arising from race conditions while  
the random components avoid continuous synchronised failure. Setting  
a flag file in the directory should be faster than reading, changing  
and writing the content of the main file.


regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Re: File sharing, locking, etc... between multiple users...

2006-02-18 Thread David Vaughan


On 19/02/2006, at 9:21, Jim Ault [EMAIL PROTECTED] wrote:


From: 
Subject: Re: File sharing, locking, etc... between multiple users...
To: How to use Revolution use-revolution@lists.runrev.com
Message-ID: [EMAIL PROTECTED]
Content-Type: text/plain;   charset=US-ASCII

On 2/18/06 6:39 AM, Kurt Kaufman [EMAIL PROTECTED] wrote:



On further thought on the record locking..
It might be possible for you to take the approach that the real
field is
never edited real time, but only a temp field that is later
processed in the
time sequence (the seconds) 'submitted' in an orderly event loop.
This way,
4 users could be editing the same field while seeing that other
users are
doing likewise (chat room style).


Many years ago there was a database which operated in a manner  
similar to Kurt's description; Dataflex. The theory was that a record  
was not locked until you actually tried to commit your edit. At this  
point, it would be locked and re-read from the database, and if it  
did not match the previously cached read then the write did not occur  
and it was up to the programmer (and user) to resolve the situation.   
The advantages were allowing multiple readers and sheer speed given  
it used a file locking rather than record locking method -- the file  
was locked for only a fraction of a second.


Taking Jim's examples:
Thus, only one edit at a time.  Imagine two ticketing agents for an  
airline
selling the last first class seat for a flight in few weeks to  
different
people, one agent in New York, another in Paris.  Record locking  
prevents

this.
The Dataflex approach meant that both clients would be told the  
flight was available until one of them actually laid their money  
down. Otherwise, one client may be told the flight had gone when in  
fact the other then changed their mind and left it available. If you  
paid too late and lost the flight, too bad; that's commerce.


Another dilemma would be if a third person asked the database for  
the value
of a field that was in the process of being edited... What value do  
you

report to that third person?
The value currently in the database because no-one has committed a  
change, and edits might yet be cancelled.


Then add to that, a field that was allowed to be edited by two  
different
users, neither of which was done with the edit.  Which version is  
correct?

Which version replaces the other two?
This was Dataflex's biggest problem in this method, where two users  
read, one writes and the second attempts to write, meaning that the  
second user's edit was on false data. Programmer hell or user  
frustration.


I am not advocating the Dataflex approach at all. Rather, it was a  
way of getting around the limitation that it (and dBase of the era)  
used file rather than record locking but in our experience it was a  
rather effective method with considerable speed advantages (never  
being told your record is unavailable) for small business  
applications where conflicts were unlikely anyway. Not every multi- 
user solution has to be good for a thousand users, so long as it  
keeps its own integrity.


regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Mac stacks look like Windows

2006-02-17 Thread David Vaughan


On 18/02/2006, at 15:19, [EMAIL PROTECTED] wrote:



So far my experience with Rev 2.7 has left much to be desired.
The latest:

When I open a stack that has been automatically converted to the new
file format by Rev 2.7, with a new standalone (created with Rev 2.7) I
get the Windows appearance (blue hilights on buttons, raised scroll
bars, etc.). None of these stacks has ever been on a Windows computer.
I have no Windows standalones. I don't run Windows. This has never
happened before.

Before I add this to Bugzilla, I'd like to know if anyone else has
observed this. (OS X 10.4.3, Al PB, 1 gig., Rev 2.7)


Not seen on a few stacks here, Paul
OSX 10.4.5 PB17 1GB Rev 2.7

No other repeatable problems with 2.7 either, so far. On one occasion  
Rev crashed not long after Constellation closed the object inspector  
next to the script pane but left the slide-out window frame behind.


regards
David


Paul Looney

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Pointlessness [was Revolution RUMORS!]

2006-02-15 Thread David Vaughan


On 16/02/2006, at 5:00, David Burgun [EMAIL PROTECTED] wrote:
snip

Yes, in order to stop other people getting into the same position.
Once the cat was out of the bag there was no need for anyone to go to
the site again. It could be argued that he should be praised for his
selfless actions and RunRev chastised for their unsafe site!


David, I have full regard for the value of your posts on other topics  
but what you have above is about the most specious argument for  
anything that I have ever seen on this site.


Your later paragraphs, about the list to which the material might  
have been posted and possible consequences thereof, are pure  
sophistry.  Runtime owns this particular list and may include or  
exclude any person on their own cognizance and in their own  
commercial interests. Over many years, I have found them to walk a  
pretty good line, with tolerance, humour and only the occasional fit  
of pique :-).


Should we infer from your last line that you like to have the last  
word? I promise not to write on the topic again, so here you go:

Would have been ended!

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Serial communication

2006-01-12 Thread David Vaughan


On 13/01/2006, at 9:37, Camm29 [EMAIL PROTECTED] wrote:


David thanks , that's seems to do the trick.
Any ideas how to break out of repeat loops in say 10 seconds as a  
timeout ?


Glad it worked for you.

I take it you want a loop to execute but stop after an amount of time  
apart from any other condition.
Leaving aside mechanisms which will simply kill the handler,  you  
will probably need to check the time before the loop, add ten seconds  
to it and then inside the loop check the current time to see if you  
have reached that the nominated expiry time yet.

e.g.
put the seconds + 10 into expiry
put false into timedOut
repeat on some other condition
  do something useful
  if the seconds  expiry then
put true into timedOut
exit repeat
  end if
end repeat
-- Now checking timedOut will tell you under what condition you did  
exited, normally or by time.


Does anyone have a more elegant solution for this?

regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Serial communication

2006-01-10 Thread David Vaughan


On 10/01/2006, at 21:48, Camm29 [EMAIL PROTECTED] wrote:


I have some custom made Hardware that i communicate to in Serial.

This Hardware returns the Character  when ready and able to Receive
and/or finished replying.

so before any write to file COM:1  or  read from file COM:1 (I  
must have

received the Char )

i have tried many combinations in trying to get this to work !!

somehow if i loop like below i still manage to send before  is  
received

it would seem which causes errors ???

repeat 100
write ---
wait for 
read ---
end
if you must wait for  before any write or ... read then firstly  
your code needs another wait statement. The above code will write  
after reading and without waiting for a ready character, which is the  
problem you report.


The following will work _provided_ you are happy that you will always  
receive the requisite characters )and that the device is ready the  
first time) or else it will wait forever.

repeat N
  write something
  wait for 
  read something
  wait for 
end repeat

In the basic form of the loop above you will need an outside send  
statement to make sure things are still alive and get you out of  
problems, which would require a construct along the lines of 'wait  
for  with messages'


This might be done better with wait for messages then test whether  
the message was one which allows you to read/write or if you must  
exit the loop.


HTH
David


It's a mystery or i lost the plot.
Nothing wrong with comm settings or hardware for sure.

Regards Camm

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Sorting array

2005-12-19 Thread David Vaughan


On 20/12/2005, at 12:27, Brad Borch [EMAIL PROTECTED] wrote:



snip

 Flash will be reading what is
essentially a tab-delimited database.

First, am I better off dropping text into an array in Rev to edit  
it, or

simply sorting and managing the text as a big hunk of text?

Second, if the array is better, how do I sort the array? (I've already
built the Rev tool to split the text into the array). I've tried sort
gMyEvents numeric by item 1 of each (after defining the itemDelimiter
as tab). Is there a simple way to sort an array? Am I missing  
something?


You could manage a tab-delimited list as suggested but if it is  
otherwise useful to have array access then you need an answer to that  
question, sorting an array.

Answer: You don't; you just access it in sorted order.
Explanation: Take an array flashData
  put the keys of flashData into fKeys
  sort fKeys
  repeat for each line fk in fKeys
doSomething flashData[fk]
etc

This way you still have your array with direct key access and also  
can iterate through it in sorted order as desired.


HTH

regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Cross-Platform Memory Inconsistencies

2005-12-17 Thread David Vaughan

On 17/12/2005, at 22:58, Mathewson [EMAIL PROTECTED]wrote:



Why does a stack on a CD run really quite well on a Pentium
2, 300MHz, 128 MB RAM (Win 98), a Pentium 3, 700 MHz, 128
MB RAM (Ubuntu 5.10) and grind to a shuddering halt on an
iMac G3, 333MHz, 320 MB RAM (Mac 10.4)?

This is a 'bother' as one has to plan for eventualities
with machines and operating systems one might not own
and/or have access to.


I would expect a 333MHz iMac G3 running OS X 10.4 to grind  
exceedingly slow all by itself.


I have an old 300MHz Powerbook G3 256MB running OS X 10.2 and it goes  
quite respectably and runs Rev perfectly well within its own  
limitations. I suggest that Rev is not the problem. The rational  
comparison with Win 9x on old platforms is Mac OS9, not the latest  
and greatest in OS X. Alternatively, have you tried Linux on the iMac?


regards
David

post script: The G3 is not the machine I use, thankfully. We do have  
current Powerbooks on which to work while the G3 waits on the shelf  
still hoping for a role in life :-)

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: revdb error using record set (AltSQLite) -- Fixed

2005-12-15 Thread David Vaughan

My apologies to all.

The line get revdb_query(gConn,SELECT * FROM taxl) was the  
default in a SWITCH statement. I discovered eventually that a cutely  
simple error on my part meant that one of the earlier CASE statements  
was being executed where I had expected them all to be bypassed.  
However, the search in that CASE returned no data, something for  
which I was not testing because I was trying to get the DEFAULT code  
working first! The rest of the errors flowed from there.


sorry
David

On 15/12/2005, at 13:35, David Vaughan wrote:

Using a licenced AltSQLite as the database, I created a record set  
and endeavoured to extract data using the following code (some  
error checking and other irrelevant pieces omitted from both  
fragments):


handler 1
  get revdb_query(gConn,SELECT * FROM taxl)
  put it into p
  set the cursors of this stack to p
  get revdb_moveFirst(p)
  newRecDisplay

on newRecDisplay
  put the cursors of this stack into p
  put revdb_columncount(p) into k
  repeat with i = 1 to k
put revdb_columnByNumber(p,i) into field i
  end repeat

The code executes but at first put something like revdberr,  
invalid column  number into each field but now pretty consistently  
just crashes Rev.


The database is open and a few rows of data exist in it with three  
columns, fully populated, in each row. I can see that data using  
revdb_queryList() so one option is to switch away from using the  
cursor structure and just manage the returned data in variables  
myself. Before making that move, I would like to know if I have  
made a mistake in this code or have encountered a bug in the RR  
wrappers or in AltSQLite.


I added revdb_moveFirst() in the first handler, as a trial fix  
although I expect that the cursor would automatically be pointing  
to the first record.


thanks
David


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Recent Development on the Use-LIst

2005-12-15 Thread David Vaughan


On or before 16/12/2005, at 7:58, various people wrote in relation to  
the old question of forum vs mailing list.


After a few years on the RunRev Use and Improve lists I switched to  
digest mode which cleaned my mailbox a bit but took away the ability  
to see messages in a timely manner. A few months ago I observed that  
there were so many new users asking and answering questions that I  
had no great need (or perhaps ability) to contribute and nothing to  
ask for myself at the time. I considered this a triumph for Rev,  
evidence of both a growing user base and increasing sophistication  
rather than it formerly being a mix of the deeply knowledgeable and  
the deeply inexperienced.


This week, tackling an SQL database for the first time, I had need of  
assistance (although the problem naturally proved to be my own) and  
was impressed to see Chris Bohnert and Mark Wieder both take the  
trouble to test my code and respond very helpfully. I have no fears  
for the constructive quality of the readership and contributions. It  
was also a bit of a homecoming, to see (for example) Klaus and  
Richmond being their very different selves.


So, to the actual topic here which is the medium for the discussions.  
On one of the occasions this debate ran a few years ago, I found the  
mailing list format easy to manage and use and agreed that it was  
preferable to forum software. The content was not very voluminous  
then. In the past 6-12 months I have spent much of my time on another  
list, on a wholly unrelated topic, using forum software. It employs  
Discus which is reputed by some to be not the greatest piece of forum  
software. Despite that supposed disadvantage, I find it to be vastly  
superior to the mailing list in every significant respect with key  
gains in responsiveness, coherence and time management.


The notion, recently expressed by one highly respected member here,  
that a forum obliges trolling material or does not allow casual  
integration of list review with other work, is probably born of a  
lack of knowledge of the alternative. These are precisely the  
problems I find in a mailing list whereas a forum simplifies and  
expedites working with the list.


Firstly, topics are broadly categorised based on input from the  
users. Secondly, a single button brings up in tree format every post  
made since you yourself last checked, and no others. Additional to  
the topic/thread categorisation, the hierarchy gives you crucial  
information on author and the first line of content. Using a tabbed  
browser you quickly pick out the items of interest and review or  
respond to them. Timeliness is superior because you manage the  
material in bulk when you wish to without waiting for a digest to  
turn up or alternatively being bombarded with irrelevant messages. If  
you wish to trace material there is a powerful built-in search  
facility. You can also immerse yourself in a topic or thread from the  
start for learning purposes, and having learned will most probably  
use the Posts [since I last checked] feature. You can use basic web  
text styling for clarification without tripping over mail reader  
limitations and easily add diagrams or pictures (size and density  
restricted) where relevant. It also facilitates creation of  
informative user profiles, although in the forums I use I do prefer  
the one which excludes signature lines within the post (additional to  
author identification in the left column) as completely useless clutter.


I guess these advantages have all been discussed before, but I wish  
to emphasise their superiority in my practical experience. No-one  
expects everyone to favour a change but from what I am reading at  
least some of the pro-mail-list group are going to be pleasantly  
surprised when the inevitable change occurs. Whether RunRev manages a  
forum of its own, blesses an existing forum, or abandons the whole  
thing to the market is something on which I choose not to have an  
opinion at the moment but I agree that one of the alternatives they  
are doubtlessly considering needs to be taken up.


Sorry about the length of post. Perhaps I have indulged myself in  
compensation for having been away for a while.


cheers
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


revdb error using record set (AltSQLite)

2005-12-14 Thread David Vaughan
Using a licenced AltSQLite as the database, I created a record set  
and endeavoured to extract data using the following code (some error  
checking and other irrelevant pieces omitted from both fragments):


handler 1
  get revdb_query(gConn,SELECT * FROM taxl)
  put it into p
  set the cursors of this stack to p
  get revdb_moveFirst(p)
  newRecDisplay

on newRecDisplay
  put the cursors of this stack into p
  put revdb_columncount(p) into k
  repeat with i = 1 to k
put revdb_columnByNumber(p,i) into field i
  end repeat

The code executes but at first put something like revdberr, invalid  
column  number into each field but now pretty consistently just  
crashes Rev.


The database is open and a few rows of data exist in it with three  
columns, fully populated, in each row. I can see that data using  
revdb_queryList() so one option is to switch away from using the  
cursor structure and just manage the returned data in variables  
myself. Before making that move, I would like to know if I have made  
a mistake in this code or have encountered a bug in the RR wrappers  
or in AltSQLite.


I added revdb_moveFirst() in the first handler, as a trial fix  
although I expect that the cursor would automatically be pointing to  
the first record.


thanks
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: recursion limits

2005-08-04 Thread David Vaughan


On 04/08/2005, at 12:47, Chris Sheffield [EMAIL PROTECTED] wrote:

  I'm talking about recursion as in calling the same handler/ 
function from within itself.  I'm guessing there could be issues  
with this if the folder to back up has a large directory structure,  
as in many sub folders and files.


Chris, several people have proposed you avoid recursion just in case.  
It was also advised that you read the thread on directory walker from  
early last year. I suggest you do the latter. I wrote (as did others)  
and use a recursive directory walker and have found no problems on  
whole disks of applications and data numbering at least a hundred  
thousand files. However, there is a gotcha in OS X and also with  
permissions on any platform, either of which can relegate you to an  
infinite loop. This may account for some of the bad experiences  
implied by other people. Alex's suggestion that you gather the entire  
file list first is a good safety measure but I suggest there are no  
other reasons to avoid the comparative speed and elegance of a  
recursive approach. We have not found limits for it.


regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: MatchText and PCRE

2005-07-19 Thread David Vaughan


On 20/07/2005, at 10:15, Mark Greenberg [EMAIL PROTECTED] wrote:



David,
I am by no means an advanced programmer in Rev, but I have been  
using Regex a lot lately.  This is what I have discovered in my use  
of Regex in Rev:


snip


I highly recommend the book Mastering Regular Expressions by  
Jeffrey E. F. Friedl.  There are a bunch more obscure codes that  
work in the Rev flavor of Regex.


thanks Mark. I have the book on order. I have also been contemplating  
buying RegExplorer, which is written in RealBasic and includes four  
checkboxes related to my four questions. Apparently, these are  
parameters you set in the RealBasic Class so I was wondering about  
the corresponding behaviours and options in Rev. Now I know how to  
set these switches for Rev defaults and will change behaviours when  
needed by using the RegEx codes rather than the checkboxes in the  
program.


regards
David


Mark Greenberg



___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


MatchText and PCRE

2005-07-18 Thread David Vaughan
The documentation says to see the PCRE manual for regular expression  
syntax. The PCRE manual refers to certain properties set as part of a  
C program. Consequently, I am unsure of the answers to the following  
four questions. True, I can experiment to see how these currently  
work but that will not answer the question of whether those  
behaviours are modifiable, so I am seeking answers before I dive in  
to using matchText.


Is it greedy? If so, is that reversible and how?

Does the dot match newline? If not, can it be made to do so?

Does a pattern like .* match empty? If not, can it be changed?

Is case-sensitivity in matchText affected by Rev's caseSensitive  
property? It appears not. Is case sensitivity settable?


thanks
David

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Getting started with Rev Databases

2005-05-14 Thread David Vaughan
On 15/05/2005, at 7:17, Dave Cragg [EMAIL PROTECTED] wro
Getting off topic.. :)
When I hear the word cursor I still think of the transparent sliding 
thingy on a slide rule. So when doing selects on two database tables, 
I conjure up this notion of the tables somehow sliding over each 
other, and the cursor reading off the intersection. That probably 
explains why I haven't progressed much  with SQL syntax.
:-) :-)
Forget the mathematical line and consider the slide rule cursor frame 
as a window. No further problems :-)
Dave
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Calculator help

2005-05-05 Thread David Vaughan
On 06/05/2005, at 13:25, Paul Salyers [EMAIL PROTECTED] wrote:
Dear Rev Programmer,
Had a basic calculator been made in Rev, If so can I have help. on 
getting it to add when you type in numbers say, (12 + 12)  before 
pressing the [=] key in the read out which is a label field I'm 
getting 1212
Yes, I wrote one, essentially an extensible field in which every 
exposed line is a unique processor with common memory stores, but it is 
RPN :-)

Can some1 help me on this?
A sample of your code related to the above will help us understand your 
problem.

David

Paul Salyers
PS1 - Senior Rep.
[EMAIL PROTECTED]
Http://ps1.SoftSeven.org 
 
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Ann: Greenhouse effect on Venus

2005-04-06 Thread David Vaughan
On 07/04/2005, at 2:00, Jim Hurley [EMAIL PROTECTED] wrote:
It is worthwhile to examine what effect greenhouse gases have on the 
temperature of other planets besides Earth. It turns out that Venus is 
very hot, about 832 degrees Fahrenheit. But how much of this due to 
greenhouse gases and how much to the fact that it is closer to the 
Sun?

To neutralize the proximity effect I have introduced a comparison 
standard, a Blackbody planet. In the stack below it is possible to 
place this imaginary planet anywhere in the (near) solar system and 
observe its temperature, the steady state temperature when the 
incident solar radiation absorbed by the black body is balanced by 
thermal radiation from the black body, something that is easy to 
compute.

snip
Jim,
So why is Mars colder than a blackbody planet in its orbit position? 
Just curious.

thanks
David
Jim
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: How to get the difference between two lists?

2005-04-04 Thread David Vaughan
On 04/04/2005, at 16:34, Ken Ray [EMAIL PROTECTED] wrote:
I've got two lists - one with is the comprehensive list that is
return-delimited, like:
3
5
6
snip
And another list which is the list I would like to *remove* from the
comprehensive list:
5
6
snip
Which should give me:
3
snip
Any ideas?
Ken (and all the other ingenious people), you have something against 
the intersect command?

Convert both lists to arrays and intersect them leaving only the 
non-common elements.

cheers
David
Ken Ray
Sons of Thunder Software
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: How to get the difference between two lists?

2005-04-04 Thread David Vaughan
On 05/04/2005, at 0:38, Ken Ray [EMAIL PROTECTED] wrote:
On 4/4/05 1:39 AM, Monte Goulding [EMAIL PROTECTED] 
wrote:

Ken (and all the other ingenious people), you have something against 
the
intersect command?

Convert both lists to arrays and intersect them leaving only the
non-common elements.
My understanding is the intersect command creates an array with only 
common
keys. If there was an inverse of the command it would be perfect as 
you say.
I added this as an enhancement request to Bugzilla (Bug #2763 if anyone
wants to vote on it).
I'll vote for it Ken. While I am at it I might vote that I do not 
reverse-read documentation as well ;-)

cheers
David
Ken Ray
Sons of Thunder Software
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Problem solving methods in software development

2005-04-01 Thread David Vaughan
On 01/04/2005, at 19:05, Alejandro Tejada [EMAIL PROTECTED] 
wrote:
Hi Developers,
Long time ago, surfing the net i found a forum,
where the administrator supervised the threads
and when a question was responded correctly or a
problem was solved, he (or she) closed the
message thread and added a message after the
thread that identified the problem solving
approach used to solve the problem or
respond the question...
Did anyone remember which forums use this
approach?
No, but while I can see its attraction I think it inappropriate for Rev 
or indeed for any other language of creative expression. Sure, we see 
the same question asked again (and again) but that is often helpful to 
newbies. More importantly, I see different answers touching on nuances 
of the original problem, or simply stylistically different ways of 
doing the same thing (and everyone has style preferences). So, when is 
a thread to be closed?

regards
David
Thanks in advance.
al
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Poll: the sum(7,9)

2005-03-15 Thread David Vaughan
On 16/03/2005, at 5:57, various people wrote on:
Subject: Re: Poll: the sum(7,9)
Reply-To: How to use Revolution use-revolution@lists.runrev.com

It's this:  How do you mentally process simple addition/subtraction
facts?  What actually happens in your brain to elicit 16 when you hear
7+9? (for example)
It depends a bit on how complex the question. My response to 7 9 + 
was initially the second of those originally suggested by Mark - 
pattern recognition, probably a direct consequence of his third option, 
rote learning at school. The same certainly happens instantly for 
numbers where the sum is less than 13 and very fast for others. When 
the numbers get larger, I use accumulated pattern-bits to break down 
the problem and derive an answer, which actually seems to involve an 
approximation on most parts of the number then fixing the details in 
any unconsidered digits. If it is difficult or I am tired then 
concrete methods start to move in to deal with it, involving 
visualising changing numbers.

However, the later question, 17 9 - (seriously folks, over 30 years 
my thinking really has shifted to the point where RPN is as easy as and 
more sensible than infix) caught my attention.  The answer came 
straight away but I managed to rerun the question immediately in my 
head and think I got some glimpse of what happened, insofar as one can 
believe introspection. It went something like  9 is one less than 10 
and I see 17 so the answer is 8. Bang. Nothing more I noticed (I 
barely caught the and I see 17 but it had to be there) and in 
retrospect I am not quite sure I would think of it quite that way, but 
it seems to work.

cheers
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: use-revolution Digest, Vol 18, Issue 53

2005-03-14 Thread David Vaughan
Richard
It is many years since I played much in Terminal and then not with 
tcsh, so let me tell you how I worked my way through this and see if it 
helps you. Watch for the dots I have in here, e.g. in sudo mv 
./airport /usr/local/bin there is one at the beginning of the first 
path.

I downloaded the file from macstumbler and decompressed it to the 
desktop, producing a folder airport.
In Terminal, I typed cd  and then dragged the airport folder into 
terminal which put in the proper path for me.
I typed make which ran and created the executable in the folder. If 
it does not run for you, check your default path or try /usr/bin/make
Assuming that works, enter sudo mv ./airport /usr/local/bin and your 
password when requested. If you are within the airport folder this 
should copy just the executable, not the whole folder. If you 
accidentally move the whole folder, cd to /usr/local/bin and rename the 
folder (sudo mv airport airportf) and then move the file up a level 
(sudo mv ./airportf/airport .).
The command /usr/local/bin/airport should now run for you. The signal 
data is word 1 of line 2 of the output.

regards
David
On 15/03/2005, at 7:15, [EMAIL PROTECTED] wrote:
From: Richard Miller [EMAIL PROTECTED]
Date: 15 March 2005 6:44:05 GMT+11:00
To: How to use Revolution use-revolution@lists.runrev.com
Subject: Re: Airport status
Reply-To: How to use Revolution use-revolution@lists.runrev.com
Alex,
While I'm not at all familiar with Terminal, I believe I get into the 
correct folder. Typed MAKE. Received back error COMMAND NOT FOUND.

Richard
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: OT: Help with motivation

2005-02-22 Thread David Vaughan
On 23/02/2005, at 12:07, Thomas McGrath III [EMAIL PROTECTED] 
wrote:

Hello listers,
I hope this is not too far off topic.
Well, I suppose it is not about Rev but in every other respect it seems 
a pertinent topic ;-)
I have been having problems getting myself motivated.
snip
Any helpful ideas on how to jump start a project?
I was going to put my ideas down but recognised their common threads 
with other people's, so rather than the detail, my general approach is:
1. Remove the distractions, while doing something useful
2. Do **something** however trivial, just to get you rolling.

On the first, I often do a desk cleanup because it tends to clutter as 
my ideas accumulate and I clear it as a metaphor for re-ordering my 
thoughts. Like Richard, I go for a walk to get some physical energy you 
can never acquire sitting there. I elaborately prepare for work by 
making sure I am physically comfortable, have the right music, relax 
over a coffee or something. Read the paper. Do all the minor things 
until you run out of them and am confronted with the fact you have to 
start somewhere.
On the second, Jacque and others had it pretty right. The first part of 
getting yourself moving and doing trivial tasks (or taking an active 
break) should enable you to start on a minor or non-crucial part of the 
job. Alternatively, sketch the crucial part to prove to yourself you 
have an overview of it. Communicate with someone else what it is you 
are up to and what small part you will be doing next. Take another 
break. Soon, you will not be able to resist going back to the task.

In fact, this discussion makes me wonder whether writers' block is not 
a mild form of depression, before the manic creative phase perhaps. At 
a client site (a rehabilitation service) last Friday I was idly reading 
(i.e. bored with discussion) on their conference room wall a poster on 
depression. I just checked my recollection with my contact there. It 
said:
Breathe
Prioritise
Exercise
Communicate
Take a break
Do one thing at a time
Stay positive

Sounds a bit similar, doesn't it?
regards
David
Thanks
Tom
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Introducing our new Evangelist

2005-02-17 Thread David Vaughan
On 18/02/2005, at 7:27, Marian Petrides [EMAIL PROTECTED] wrote:
Unless I miss my guess, he is Heather (aka List Mom)'s spousal unit.
Her spousal unit? :-D :-D :-D
At last, I really know my place.
cheers
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Split, combine ok but where's extract?

2005-02-13 Thread David Vaughan
On 14/02/2005, at 4:00, Alex Tweedly [EMAIL PROTECTED] wrote:
snip
If you take the case of
  put 1,2 into myArray[a,b]
  put 1,3 into myarray[c,d]
snip
Nope. It will actually give
v1 = a,c
v2 = b,d
v3 = 1
v4 = 3  the other value got lost in the split immediately 
before the assignment to v3; I don't know if it's theoretically 
guaranteed which of the values it will give, but in practice, with few 
entries, it will give the latter one.

Alex
Perhaps I have misunderstood the depth of the problem. I do not appear 
to have the described difficulty with the example data.
Here is code (assume a couple of testing fields, f1 and f2) and the 
results using your actual example data.

  put 1,2 into myArray[a,b]
  put 1,3 into myarray[c,d]
  put the keys of myArray into field f1
  combine myArray with return
  put myArray into field f2
splits the keys from the data, preserving all components, while (using 
data from the fields as created above)

  put field f1 into tData -- the a,b \r c,d data
  put field f2 into tKeys -- the 1,2 \r 1,3 data
  split tData with return
  put 1 into i
  repeat for each line x in tKeys
put tData[i] into myArray[x]
add 1 to i
  end repeat
-- and to prove it happened
  combine myArray with return and #
  put myArray into field f2
puts them back in an array. The only relevant possibility of 
duplication appears to be with the keys of the original array, which by 
definition were not duplicated anyway.

I receive the digest so discussions may be slow.
regards
David
--
Alex Tweedly   http://www.tweedly.net
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Split, combine ok but where's extract?

2005-02-13 Thread David Vaughan
Xavier, Alex and all.
The principal difficulty with the split/combine code I have suggested 
for extract/merge is that key order is not preserved in relation to the 
data when you get the keys. If you wish to re-merge after an extract 
then you must know what is the correct key order (e.g. a simple sort).

Oh, and I also reversed the data and keys in the second code block 
(first two lines) compared with the extract. Mechanical error.

regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Split, combine ok but where's extract?

2005-02-12 Thread David Vaughan
On 13/02/2005, at 4:00, MisterX [EMAIL PROTECTED] wrote:
Xavier
I have not searched back to your original request, but if I understand 
it correctly then you wish to be able to de-merge columns from an 
array, and that these columns may be of the data or of the keys. Let us 
assume you have an array where an element is defined by:
put n1,n2 into myArray[a,b]

Here, you can extract anything from the keys or the element using split 
and combine. For example, this code places all four columns in separate 
variables  v1-v4 (untested)

put the keys of myArray into tKeys
split tKeys with return and comma
put the keys of tKeys into v1
combine tKeys   -- discards the keys
put tKeys into v2
combine myArray  -- discards the keys
split myArray with return and comma
put the keys of myArray into v3
combine myArray
put myArray into v4
Now, v1=a, v2=b, v3=n1, v4=n2
(or close enough if I made a coding error)
I have a column merge function somewhere. I will look it up to see if 
it is any improvement over what you have.

regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Split, combine ok but where's extract?

2005-02-12 Thread David Vaughan
Moron me! Doing some edits from my test script I omitted the line add 
1 to i just before  end repeat

On 13/02/2005, at 10:43, David Vaughan wrote:
Xavier
This is the merge part
Assume you have the following two variables:
v1 contains a
v2 contains b
  split v2 with return
  put 1 into i
  repeat for each line x in v1
put v2[i] into myArray[x]
  end repeat
  combine myArray with return and comma
myArray is now a list whose first line is a,b
This code avoids any repeat with i = 1 to n loops and is thus fairly 
linear in time taken with longer lists.

Incidentally, I left with return off a couple of lines in the 
previous extract code.

I have not done any speed tests.
Hope this is relevant.
regards
David
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Success with Sending email without a SMTP Server!!!!

2005-01-30 Thread David Vaughan
On 31/01/2005, at 9:13, Andre Garzia [EMAIL PROTECTED] wrote:
snip
Well folks the stack is available under my username soapdog at 
revOnline or thru http://www.soapdog.org/rev/smtpraw.rev   sorry I put 
a space in the file name
Andre,
I tested sending to a .mac address and got this error in the log:
Server was offended by our HELO message
I am behind a corporate firewall at the moment and suspecting it might 
have interfered. Does this seem likely?

regards
David
Cheers
andre


--
Andre Alves Garzia  2004  BRAZIL
http://studio.soapdog.org
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: What do most Rev developers do?

2005-01-26 Thread David Vaughan
I do not do professional development but use it in a couple of main 
areas. I have applications written to support my life. Examples include 
manage my Super Fund, look after contacts, do backups, provide a small 
multi-entry RPN calculator, calculate optimal gearing for model racing 
cars, calculate any parameter for allocated pensions under Australian 
rules, value stock market options, make decisions when there are many 
possibilities, generate bridge hands against a variety of parameters, 
calculate wheel/tyre combinations for given rollouts and other things 
of even lesser moment. My second use is as an ad hoc scripting package 
(having a general purpose stack for this) to massage data for input to 
a couple of stats packages or for other apps.

David
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: RAD contest...;-)

2005-01-21 Thread David Vaughan
On 22/01/2005, at 4:00, [EMAIL PROTECTED] wrote:

It seems to me a more significant contest between the two systems 
would
be to assign the same project to two very experienced developers with
each development environment, and see who gets it finished quicker.
-- I think after 20yrs...I should be able to make at least in FULL:
 1. MacWrite 1.0 -- word processing
 2. MacPaint 1.0 -- bitmap editing
 3. MacDraw 1.0 -- vector editing
 4. Excel 1.0 -- number processing
Richard's comment on productivity was intended to focus on tasks 
typically facing professional developers rather than on artificial 
contests. It is indeed important that you can process words, bitmaps, 
vectors and numbers but a contest involving creating new, complete 
applications in each of these fields is hardly relevant to the daily 
needs of most people on this list or of the customers they serve. I can 
see next that this discussion would descend into a feature contest in 
each of the specific areas; again, not what Richard intended. Let's 
drop it.

As for Mr Grogono, a man who on my reading can deny and then admit the 
same thing in a single paragraph, he might recall that a predecessor in 
his company when writing to this list had the courage to sign his 
messages in full rather than restrict the information to his e-mail 
address.

I doubt that either Mr Rivers or Mr Grogono actually achieved anything 
by their writing other than a change of employment for the first 
gentleman. Perhaps Mr Grogono is looking for a job ;-)

regards
David
In either RB or RR...so show me which RAD tool is up to the challage! 
:)

Andrew
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: RunRev vs RealBasic (nothing to do with it really)

2005-01-18 Thread David Vaughan
On 19/01/2005, at 4:00, Thomas Gutzmann 
[EMAIL PROTECTED] wrote:

snip
I'm glad that most English people I know are very tolerant and polite.
Probably less so than those people who have managed my 
Australian-accented French and German with only the ripple of a 
suppressed smile. :-)
It has always been a pleasure to visit your countries.

I now realise a tactful need to add that I have also enjoyed visiting 
America, and Italy and Japan and Vanuatu ... oh forget it.

David
Thomas G.
___
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: arrow keys in a text field?

2004-09-13 Thread David Vaughan
On 13/09/2004, at 22:12, Geoff Canyon [EMAIL PROTECTED] wrote:
I'm using 2.5 and I have a palette where the arrow keys aren't working 
in a field. I've already checked that the appropriate properties are 
set, and the arrow keys work if I move the field out of the group it's 
in.

I remember there being an issue if some portion of a field is covered 
by something else, but that doesn't seem to be the case here. I've 
tried setting the group to the highest layer, and the field to the 
highest layer in the group, with no luck.

I've looked at the rawKeyUp data, and that message is being triggered. 
But the arrow keys still don't move the cursor.

Any ideas before I go prematurely gray?
Geoff
I have had a similar problem for ages with my Stocks stack, where 
attempting to navigate within a field actually moves you to the next 
field. Your problem inspired me to check the problem again. I found a 
group, which I do not recall creating but which may be giving 
background behaviour to the objects on the cards (it is a 
reimplementation of a HyperCard stack). In its properties, I unchecked 
Arrow keys navigate contents and my problem was resolved. Hope it 
might work for you.

regards
David
regards,
Geoff Canyon
[EMAIL PROTECTED]
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: next repeat problem

2004-08-17 Thread David Vaughan
On 18/08/2004, at 7:17, Rich Lague [EMAIL PROTECTED] wrote:
Thanks Klaus (and Jan!),
Yes, adding the complete descriptor for i did allow my 'next repeat' 
to run. However, I'm still having problems getting rid of the extra 
lines in my global variable.
I have also been trying your suggestion of using 'repeat for each'.

I get an error when I try to 'apply' this script--
---
set the itemdel to tab
repeat for each line i in fld daTable
if i = empty then
delete line i of fld daTable
else
put item 1 of field daTable   return after theList
end if
end repeat
--
The error I get is Chunk: error in chunk expression and it 
highlights the line put item 1 of field daTable   return after 
theList -- this is a line of the script that worked before...
Rich
Please go back to the sample code sent to you by Klaus. Repeat for 
each does not allow you to manipulate the lines of data in your source 
file. By trying to delete something to which it thinks it is pointing, 
you are confusing it, hence the error. When changing data using Repeat 
for each always move the lines you want, modified as you please, to a 
new container. As Klaus shows, this simply involves copying non-empty 
lines and is damn fast.

regards
David
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: How to extract characters from the middle of a string?

2004-07-07 Thread David Vaughan
On 08/07/2004, at 8:47,  J. Landman Gay [EMAIL PROTECTED] 
wrote:

If I have a string containing 25 characters, how do I extract the 
eight characters starting at position 5 in the string?
[In BASIC this would be left$(5,8)  or some such.]
This should be a simple thing to do but I can't figure it out and 
can't figure out which dictionary item applies.
get char 5 to 12 of myString
Nice to see that the fourth answer to the question finally got the 
arithmetic part of the syntax right ;-)

David
--
Jacqueline Landman Gay | [EMAIL PROTECTED]
HyperActive Software   | http://www.hyperactivesw.com
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: OS X screen saver - somewhat off topic

2004-04-27 Thread David Vaughan
On 27/04/2004, at 16:40, Sarah Reichelt [EMAIL PROTECTED] 
wrote:

Like the AppleScript, it works fine so long as the screen saver time 
limit hasn't been reached, now to test if it has.

For anyone who is interested, the script is slightly different to the 
one Andre suggested:
  get shell(ps -auxc | grep   quote  ScreenSaverE  quote)
  if it is empty then exit to top
  put word 2 of it into pID
  get shell (kill   pID)
Sarah

If it works, then Transcript now supports the kill command for OS X, 
including nominating the signal type (including 9). You are sending sig 
1 or 15 (I forget which) in the above.

regards
David
Many thanks,
Sarah
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: OS X screen saver - somewhat off topic

2004-04-27 Thread David Vaughan
On 27/04/2004, at 19:20, Sarah Reichelt [EMAIL PROTECTED] 
wrote:
Sorry, it doesn't work if the screen saver has come on after it's time 
setting. In fact it is exactly the same as the AppleScript. You can 
see it happening as the screens saver goes off for about half a 
second, then comes straight back on again :-( Most frustrating as it 
seems that it is ALMOST working.

Thanks for all your help anyway,
Sarah

To be precise, did your tests include kill -9, the real killer?

regards
David
Sarah
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: OS X screen saver - somewhat off topic

2004-04-27 Thread David Vaughan
On 28/04/2004, at 10:19, Sarah Reichelt [EMAIL PROTECTED] 
wrote:
Thanks to everyone for their suggestions, however none of them will do 
what I need. Using either AppleScript's quit of the shell's kill (with 
or without -9) works fine if you have started the screen saver by 
pushing the mouse into the specified corner. If the screen saver has 
come on after it's set time, both these methods stop the current 
screen saver process but another one is immediately started.

Sarah

What is the parent process ID of the new process that starts (try ps 
-ajx)? Is it something else you can reasonably kill, so it will not 
spawn further savers?

As an aside, I am wondering if these behaviours are related to a 
problem I have where my Powerbook will occasionally refuse to wake 
properly - the disk sounds are all as usual but the screen never clears 
and the only resort is the reset button.

regards
David
Cheers,
Sarah
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Erratic drawers - OS X

2004-04-26 Thread David Vaughan
I am seeing erratic behaviour with drawers.

First one:
Create a stack with a menubar. Create a substack of it. Add a button to 
the main stack to show the substack as a drawer (at bottom, if it 
matters).

When you press the button to show the drawer (a problem in itself as 
discussed below) then the menubar switches to the stack menus. The Rev 
IDE menus can be restored by selecting the Pointer tool, but the 
behaviour seems strange in any event. Anyone seen this or have an 
explanation?

Second one:
Using the drawer command and hide or close to close the drawer 
does not seem to work as advertised. To slide out the drawer for the 
first time requires additional code to show the stack and to maintain 
normal open/close after that requires some other code as indicated by 
the script from a test stack below. Without the elaboration of the 
property, the position can arise (without a precise recipe yet) where 
the drawer simply will not appear.

on mouseUp
  get the propLocOn of stack Locations -- set to 0 on openStack
  switch it
  case 0
drawer stack Locations at bottom
show stack Locations
set the propLocOn of stack Locations to 2
break
  case 1
show stack locations
if the visible of stack Locations then
  set the propLocOn of stack Locations to 2
else
  set the propLocOn of stack Locations to 0
end if
break
  case 2
hide stack locations
set the propLocOn of stack Locations to 1
break
  end switch
end mouseUp
I have already buzilla'd the first problem but will delete if someone 
has a good explanation.

thanks
David
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Something about speed

2004-04-25 Thread David Vaughan
I have been engaged in an off-list conversation with Dar Scott, mostly 
around his solution to the Yavelow test. In the course of it we found 
out or re-confirmed a few things about Rev characteristics and I pass 
them on here for anyone who is interested. The information comprises a 
somewhat random collection.

On a file of decent size it is faster to strip all non-alphanumerics 
(the set .,!#$%'()*+-/:;=[EMAIL PROTECTED]|}~]  quote) and use -replace- 
than it is to use a single -matchText- on every word in a -repeat for 
each- loop. The code would be something like:

constant unwanted=.,!#$%'()*+-/:;=[EMAIL PROTECTED]|}~]
put quote  unwanted into stripThisLot
repeat for each char i in stripThisLot
  replace i with space in whatever
end repeat
 If you can limit to a subset (most text uses less than half that 
punctuation) then of course you save some more time. Stripping 
non-alphanumeric characters saves a lot of trouble with word handling 
as otherwise constructions like elsewhere!--Oh! might confuse matters 
by appearing as one word.

Handling items is about 20% faster than handling words. This advantage 
may be lost where you have to account for empty items, whereas words 
are never empty. For example, elsewhere,,,Oh, vs elsewhere   Oh  
have five items and two words respectively. Three of the items are 
empty.

The -replace- command (replace x with y in z) slows down with larger 
data sets in a highly predictable way, defined as:
log(time) is a linear function of log(length(data))
To make the point, the log formula fits a regression of the 
experimental data to a level of 99.96% on data of length 1000 to 
300,000 characters. Note that in this instance the log formula is not 
the same statement as time is a linear function of length(data).

Array insertion time is almost constant with array size, in arrays from 
ten to a million unique keys. Therefore, it is clearly faster to work 
on one large array than on multiple smaller arrays and then use union 
at the end. Sometimes, breaking a job into smaller pieces slows it 
down.

Stripping alphanumerics gives different answers. This may or may not be 
what you want. For example, below is Dar's code with minor 
modifications by me and some changes for consistency with Brian 
Yennie's code. It runs about 20% slower than Brian's solution and 
produces 15% more matches ;-). Not setting caseSensitive true would add 
another match. It all depends on what you want.

regards
David
constant nonWords=.,!#$%'()*+-/:;=[EMAIL PROTECTED]|}~] --Just so I 
remember the full set

on mouseUp
  local sTicks, sMS, tt, stList, unwanted, i, wordNumber, prevWord, w, 
stL
  local match, currentPos, numberMatches

  put empty into field TheResults
  set cursor to watch
  put the milliseconds into sMS
  lock screen
  -- Using direct data as we already know the data load takes 18mS
  put field TargetText into tt
  put field SearchTextList into stList
  set caseSensitive to true
  -- Stripping this sub-set takes 6% of run time.
  put quote  .,!'()*-:;? into unwanted
  repeat for each char i in unwanted
replace i with space in tt
replace i with space in stList
  end repeat
  -- Create set of single words and set of position sets for double 
words
  -- Following repeat loop takes just over 80% of run time
  put 1 into wordNumber
  put $$$ into prevWord
  repeat for each word w in tt
put true into boolA[w]
put wordNumber  space after ttA[prevWord,w]
add 1 to wordNumber
put w into prevWord
  end repeat

  -- Search
  -- Just over 13% of run time
  repeat for each line stLine in stList
put empty into stL
repeat for each word w in stLine
  put w  space after stL
end repeat
if the number of words in stL = 1 then
  put boolA[word 1 of stL] into match
else
  repeat with i = 2 to the number of words in stL
put (word (i-1) of stL),(word i of stL) into w
if i=2 then
  put ttA[w] into currentPos
else
  -- This function absorbs 11 points of the 13%
  put intersectPosSet(currentPos, ttA[w]) into currentPos
end if
put the number of words in currentPos into numberMatches
if numberMatches is 0 then exit repeat
  end repeat
  put numberMatches is not zero into match
end if
if match then
  put stLine  cr after MatchList
end if
  end repeat
  put matchList into field TheResults
  put timeit(sMS, Check Matches) into sMS
  -- Sort lines and counting them is outside the timing
  sort lines of field TheResults ascending text
  put (the number of lines of field TheResults)  lf before field 
TheResults
end mouseUp

-- modified intersection function that adds one to elements of the first
function intersectPosSet cPos ttPos
  local newPos, p1, p2
  put empty into newPos
  put (word 1 of cPos)+1 into p1
  put word 1 of ttPos into p2
  repeat forever -- until (cPos is empty) or (ttPos is empty)
if p1  p2 then
  delete word 1 of cPos
  if cPos is empty 

Re: RB unclear couldyetbewinner in speedwhatfor microtest :-)

2004-04-21 Thread David Vaughan
On 22/04/2004, at 10:12, Brian Yennie [EMAIL PROTECTED] wrote:
Monte,

Looks ok here. I ran the old vanilla offset() function and it got the 
same number of matches.

Is anyone seeing differently?

On guard! Another Rev entry!
That's fast Brian (64 tickes here) but not meaning to offend I 
noticed that
it only produces 18 matches. Is this correct as a post the other day
indicated there should be nearly 250 matches?

Cheers

Monte
Brian, Monte

The 250 referred to the old triple-word search. In the new search 
concentrating on 4-7-word phrases 18 is, as I see it, the right answer. 
It is still unknown what you are supposed to do with duplicate matches 
or, as Monte so nicely put it on reading the book, why we are doing 
this anyway.

regards
David
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: RE: But what's the question?

2004-04-21 Thread David Vaughan
On 22/04/2004, at 1:57, Frank Leahy [EMAIL PROTECTED] wrote:
On Wednesday, April 21, 2004, at 06:55  AM, Monte Goulding 
[EMAIL PROTECTED] wrote:
We can't change the fact that RB has a faster substring
searcher than Rev but we can make that fact irrelevant.
Cheers

Monte

Monte,

I don't think this is true.
Frank, undoubtedly, if you assume Monte works for RunRev on the core 
engine. He has his own business and spoke, I believe, as a user.

regards
David
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: REV, RB, SC speed test, Latest results

2004-04-20 Thread David Vaughan
On 21/04/2004, at 1:02, Norman Winn [EMAIL PROTECTED] wrote:

Norman

I am aware of responses already from Ken Ray and James Richards to your 
comments below but, as author of the key programming step I find excuse 
to add my own perspective.

I am a user assessing Revolution as a replacement++ for Filemaker. I 
am also assessing other tools so am following this discussion with 
interest. Here are my observations:
There has been a recent thread on Filemaker and RR. If you missed it 
you should look it up as well.
1)  Can any of you consider this to be a fair comparison?
Yes. Perfectly. It was up there on the web site for the same time for 
everyone and, so far as I know, posted to all the lists. I assume that 
the RB players paid it no attention as the game appeared already won. 
In any case it took me very little time after I got hold of real data 
to work out a solution and another day before I had time to publish. As 
I have written previously I think winning it, the simple speed 
comparison, does not matter.
You, the 'you' being probably the best RR programmers on the planet, 
have had a couple of weeks [sic] to optimise RR's algorithm.
Sorry, because there is no reason you would know, but this is 
hilarious; at least for me, not for my brilliant colleagues. I have not 
programmed anything for sale or direct profit since selling my small 
business at the end of the eighties. For me, RR is a handy scripting 
tool replacing awk for one-off manipulations of patterned data and 
HyperCard for small applications which help me either in my business or 
my hobbies. I know practically nothing of its multimedia or visual 
design capabilities, for example, and never read those posts.
 Has the sense of justice in anyone pushed them to pass the challenge 
to the RB list?
You know now that Ken said as much. You might also look up my response 
to his post to see that in my view all of this is fairly unimportant 
anyway. See also Richard Gaskin's posts on the topic.
2) One of the suggested strengths of Revolution is the simplicity of 
getting things done. Why should such a common task take such a lot of 
optimisation to produce the best results? Are not the 'out of the box' 
solutions i.e. those that will be produced by the average user, a 
fairer comparison?
As Ken pointed out, the challenge was not What does it do? but This 
is what it does; make it go faster. The actual text from Chris' first 
post is ...try to tweak them to run faster. The object is ... to 
create the fastest code...
3) On a more positive note, the possibilities of optimisation have 
revealed to me a rich programming environment underlying the IDE,
Now we come to the important point, at least to me. The original 
problem set by Chris used artificial data. Ken Ray promptly blew that 
away by exploiting the enormous redundancy using a keys comparison. I 
wrote to Chris asking for some real test data and at about the same 
time he put some up on his site. Seeing data patterns, I exploited this 
and an alternate Rev command to more or less settle the issue. Chris 
tried some tests on real real data and before and after this Monte 
Goulding and Brian Yennie published what I call production 
optimisations, which exploited possible repetitions in serial analyses.

Note the thread in this: optimisation is a function of the data you 
face, more than the tools at hand. Richness of the tool set makes more 
optimisation opportunities available. Here, we optimised speed. 
Remember those other two in the impossible triangle, cost and 
quality?**  They too can be optimised with Rev, which is partly why I 
enjoy using it.

Hope you make a sound product choice which satisfies your application 
needs, is enjoyable _for you_ to work with and is well supported on its 
user list.

regards
David
**(Old programming/engineering saying: You want it fast, high quality 
and cheap; any one is easy, you can get two, but you can never have all 
three)


Norman Winn
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: But what's the question? (was: RB clear winner in speed test)

2004-04-20 Thread David Vaughan
On 21/04/2004, at 10:45, Chris Yavelow [EMAIL PROTECTED] wrote:

Now there has been considerable activity on the RB list, and the total 
speed is down to 77 ticks for RB, 70 for Revolution. But, looking at 
the Revolution code, I see that the hacks are optimized for 3-word 
searches, and that's not the intention. Also, RB counts all the 
duplicate matches (for a total of 248) while Rev doesn't count the 
dupes and comes to 192 matches.
and later

Thanks for the help in working this out. The people from the 
Revolution list had gradually optimized the code for 3-word strings. I 
have generated new search data consisting of random lengths from 3 to 
7 words and the effect on the Revolution speed is staggering, while 
there is no effect on the RB speed.
Chris, what are you doing?
Several points come immediately to mind:
- There are no hacks
- The Rev code was not gradually optimised for 3-word strings. It was 
directly optimised for each successive data set you published; nothing 
gradual about it.
- Why are you staggered by the effect on the Rev speed? If you read any 
of the previous posts (e.g. from Dar Scott) then you and we already 
knew instrb() was much faster than is in, and we have changed none of 
that.
- Do you want dupes counted twice or not?
- How many words do you wish to search for (you published 1-27 with a 
mode of 3 then said 4-7 but published 1-7 with a mode of 7)
- Are searches repeated for either source or target text?
- Your web site has for a couple of days published as the Rev code a 
mix of lines from RB and Rev i.e. rubbish.
- Your data is wrong or else a tick lasts 42mS under RB but the usual 
~17mS under Rev
- Your web site promised to credit improvers (but please do not 
associate my name with it) but you have not fulfilled that promise for 
anyone at any time.

Incidentally, I immediately cut your published Rev time to 2 seconds 
but I decline to publish for three reasons:
- It should be obvious to you anyway, if you think in concepts or 
strategies and not hacks
- I do not trust you have stated the problem completely - i.e. your 
real-world application
- I no longer trust that you are comparing products in any broad sense 
(see my previously published comments in response to Ken Ray and to 
Norman Winn for consistency of my position).

regards
David
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: SC, Rev,and RB speed test K1,K2?? and data set

2004-04-18 Thread David Vaughan
On 19/04/2004, at 2:00, [EMAIL PROTECTED] wrote:

  repeat for each word inWord in tMatchList
    put k2 into k1
    put k3 into k2
    put inWord into k3
    put true into sMatch[k1  k2  k3]
  end repeat
-- I have been sorta reading along, but what and where is k2 and k1 
coming 
from? and where is the link to the data set. Thanks.
Go to http://www.yav.com/speed.html and link to the the SAMPLE DATA 
download.

tMatchLIst in the above contains the text to be searched.

The loop then puts each word into k3 and hence into k2 and then k1 in 
successive iterations, so within the loop you always have the last 
three words (It actually starts with a one and two word index from the 
first and second iterations but these disappear in the intersection 
anyway and are not worth worrying about). The array index is 
concatenated from these three words to capture every successive 
three-word group in the file.

regards
David
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: SC, Rev,and RB speed test

2004-04-17 Thread David Vaughan
On 17/04/2004, at 5:36, Chris Yavelow [EMAIL PROTECTED] wrote:
... In the meantime, I did put some realistic data up on my speedtest 
page:
http://www.yav.com/speed.html

I took Chris data and examined it. My solution below exploits that 
knowledge of the data but if it is genuinely a typical search set (most 
search material being three words or so) then the following does the 
trick.

Using the algorithm on Chris' web page I process the material in 530 
ticks on my machine (Chris does it in 494). With the code below this is 
cut to 51 ticks so it should run in 50 ticks on Chris' machine, an 
all-time record.

The trick is to exploit intersect (look it up) which is amazingly 
fast at, er, intersecting. The intersection itself executes in around 
50 milliSeconds or about 3 ticks. It is all the preparatory work which 
takes the other 48 ticks.

on mouseUp
  -- local tFind,tSearch,tLine,tMatchList, sMS, sTicks
  set cursor to watch
  put empty into field TheResults
  put the milliseconds into sMS
  put ticks() into sTicks
  put field SearchTextList into stList
  put field targetText into tMatchList
  -- stripping quotes from both sets saves problems with single quotes
  --  or with quoted strings being treated as a word
  replace quote with empty in stList
  replace quote with empty in tMatchList
  -- Prepare the target text in all consecutive  triplet groups
  put empty into k1
  put empty into k2
  repeat for each word inWord in tMatchList
put k2 into k1
put k3 into k2
put inWord into k3
put true into tMatch[k1  k2  k3]
  end repeat
  repeat for each line inLine in stList
if the number of words of inLine = 3 then
  put true into tSearch[inLine]
else
  -- Do a simple search for groups other than three words
  if inLine is in tMatchList then
put inLine  return after MatchList
  end if
end if
  end repeat
  -- Now for the Revolution!
  intersect tSearch with tMatch
  put keys(tSearch)  cr  MatchList into field TheResults
  put the milliseconds - sMS  ms  return  (  ticks()-sticks 
 ticks)  return before  field SpeedRecords
end mouseUp

Hope this is interesting, not to mention helpful.

regards
David
Thanks for the comments,
Chris
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: SC, Rev,and RB speed test

2004-04-17 Thread David Vaughan
On 17/04/2004, at 21:46, Brian Yennie [EMAIL PROTECTED] wrote:

It's amazing how many different optimizations we can find based on the 
type of data. There's the baseline brute force, there's mine which 
takes a constant factor out (by shrinking the text), but would fail if 
you had many different words throughout with the same suffixes (as odd 
as that may seem). There were a couple of methods that fly through 
redundant text. And there's your latest which really whoops it up on 
large texts with certain length search strings.

I wonder on yours, could there be some advantage to be gleaned from 
the fact that longer searches can be broken down into shorter 
sub-searches (i.e. 6 words = 3 words + 3 words)? Could be interesting 
if there's a slick way to utilize that.

From what I can tell, the algorithms roughly look like:

Brute force: ~500 ticks Dual-G4 baseline, runs faster when there are 
more matches
Redundancy array methods: As little as a few ticks, but slower on 
pseudo-random data
Suffix indexing method: about 60-80% faster at eliminating matches and 
20-40% slower at finding matches than brute force
3-word indexing method: About 10% overhead with 99% speedup on 3 word 
queries, same speed on others
and also
One interesting thing to note here... many of the algorithms using 
array indexing schemes give different results than the brute force. 
They tend to miss compound words, such as I like to use 
dashes--like this. Search for I like to use dashes and you may find 
that dashes--like was thought of as a word. Same problem with 
quotes.
Brian

Liked your token method, an approach I had not considered. I have not 
tackled the question of re-grouping the search text because at this 
stage I would need yet more information about Chris' intended 
application. I have assumed he is finding characteristic triplets in 
text to use in author-identification or to compare classes or styles of 
literature or some such. In these circumstances I doubt that 
punctuation matters. The only reason I stripped quotes in my version is 
that I noticed unbalanced quotes in the search text but in a presumed 
real application I would probably do it more comprehensively with 
something like:
repeat with i = 33 to 47
  replace NumToChar(i) in whateverText with space
end repeat -- and so on

Given that Chris' original SuperCard app takes over 15 seconds on the 
sample text while we now have it under a second, I suspect we can 
afford a few more bits of work to get the right technical result. I 
would like to see all of the prime strategies we have devised published 
on Chris Yavelow's web site, to prove the richness and versatility of 
RunRev as well as its speed. As Richard Gaskin said early on, there is 
more to an app than one speed test.

regards
David
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: SC, Rev,and RB speed test

2004-04-17 Thread David Vaughan
On 18/04/2004, at 9:42, Ken Ray [EMAIL PROTECTED] wrote:
If you haven't brought this up on the RealBasic list, you probably 
should to
be fair... we've had a lot of chances to provide optimized routines; 
I'm
assuming the RealBasic routine you use is one you developed... someone 
on
the RB list may have a faster algorithm.

Just looking for fairness in the comparison...
Ken

True enough and I welcome someone else having some fun with it but I 
think the point now is that it does not matter if our solutions are 
beaten. The perspective of the original problem was 15 seconds in the 
current application reducing to 8 (RR) or 1 (RB). Had we achieved, say, 
three seconds or better then I would have regarded the speed question 
as no longer material to the product decision and I suspect RG would 
take a stronger position than that. If 800 milliseconds (~ 20x faster 
than SC) is beaten to a pulp at, say, 200mS in an optimised RB strategy 
then who cares? Remember that writing a C++ external was explicitly 
excluded from the options in the speed test, so speed is not in fact 
the be- and end-all.

regards
David
Ken Ray
Sons of Thunder Software
Email: [EMAIL PROTECTED]
Web Site: http://www.sonsothunder.com/
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: SC, Rev,and RB speed test

2004-04-15 Thread David Vaughan
On 15/04/2004, at 17:51, Chris Yavelow [EMAIL PROTECTED] wrote:


I'm conducting an informal speed test comparing identical projects in 
SuperCard (4.1.2), Revolution (2.2), and RealBasic (5.5.1). The 
projects match 3,000 short phrases against an 81,920 word text. There 
has already been some feedback and these simple projects are now 
running even faster. Each one is only a dozen lines of code.

Here are the current statistics:

RealBasic -- 234 ticks
Revolution -- 1120 ticks - [1548 ticks or nearly 26 seconds on my 1GHz 
G4 Powerbook - DV]
SuperCard -- 1889 ticks

I've set up a page for downloading the sample projects, if you'd like 
to try to tweak them to run faster. The object is not the fewest lines 
of code, it is to create the fastest code (without xfcns or xcmds, 
etc.). You can inspect the latest version of the code there as well, 
and see the latest speed results (in ticks).
I had another look at the test stack from Chris. His text to be 
searched (target text) comprises 8192 identical 42-character lines and 
his search text comprises 2900 identical 15-character lines and another 
100 identical 10-character lines which match the target text. So, the 
array method put forward by Ken Ray and improved by Geoff Canyon 
resolves to searching a one line variable for either of two other 
lines. I am not surprised it is fast (37 mS on my machine).

I created a string containing the sets 0-9, a-z and space and then 
generated text of 8192 lines each of 42 characters selected by randomly 
accessing that string 42 times. The search text was similarly created 
with 3000 lines of fifteen random characters each. There were no 
matches, and the array approach was of course slower than the original 
method, although not by a lot so it remains very relevant wherever a 
bit of replication is expected.

I think Richard Gaskin's query is pertinent. The question is very close 
to find the intersection of two large sets. Is that the crux of the 
real life problem? Are there any other considerations? With more 
information about the real data I believe that we could improve the Rev 
performance in other ways so that it suffered no user-recognisable 
performance handicap in the real world.

regards
David
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: News: Retrolution 4 Released

2004-04-01 Thread David Vaughan
On 02/04/2004, at 6:38, [EMAIL PROTECTED] wrote:

NOW THAT I HAVE RETROLUTION ON MY OLD C64, I AM SIMPLY AMAZED AT HOW 
MUCH
FASTER IT IS THAN TODAYS BLOATED SYSTEMS. WITH ONLY 61832 BYTES OF 
XTALK,
I HAVE CREATED A NEURAL NETWORK THAT FAR EXCEEDS THE INTELLIGENCE 
LEVEL OF
A MICROSOFT CEO. AFTER I OPTIMIZE THE CODE, I BELIEVE IT WILL FIT ON A
320K FLOPPY DISKETTE.  ;-D

...and while we are on old com.uters, I am de.ressed at the lack of 
su..ort for my Ohio Scientific C1-4P, with 40KB flo..y disk drive and 
nice wooden side .anels on the case. Unfortunately, having only 32KB of 
RAM means that when I run Roger's .rogram it emulates a CEO with only 
half a brain.

David

___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Database Experience

2004-03-15 Thread David Vaughan
On 16/03/2004, at 8:47, John Dixon [EMAIL PROTECTED] wrote:
I am interested to know what database people are using with Revolution.

What seems to be the favourite and for what reason... Are you using  
MySQL,
Postgres or Valentina, for example...
Valentina
What prompted your choice ?
Speed (execution)
 Are
you using databases in a personal or commercial capacity ?
Internal to own business
Any information on this would be appreciated for an article on 
database use
that I am working on.
Sorry, I haven't much more to add really.
Rather  than posting your replies to the list, if you would reply to me
offlist... That'll keep a lot of people happy.
Well, for my part I am curious to see summary responses.

cheers
David
Kind regards,

John Dixon
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Upgrade version and pricing [was] Re: Fix it before moving ahead [OT]

2004-03-14 Thread David Vaughan
On 15/03/2004, at 8:55, someone whom I am not attacking personally 
wrote:
Ayup.  It happens but that isn't necessarily the right way to do 
things.  For example, contractors fail to fix warranty items on new 
homes all the time, claiming they are not defects and knowing that 
most people will not take the time to pursue them.  It's a fact of 
life, but that doesn't make it right AND it doesn't confer immunity if 
someone gets REALLY ticked off and decides to approach the issue with 
the class action sledge hammer.

Just look at Apple's approach to the iPod battery thing.  They are 
entirely correct in saying, if a battery drops dead after a year that 
is not a manufacturing defect. Doesn't stop them from bad Apple's 
dirty little secret publicity nor does it prevent the same ticked off 
customers from availing themselves of the only recourse they really 
have--which is to get together a class actionl.  Does it t matter that 
Compaq's iPaq is far, far worse with respect to battery life--also not 
user serviceable.  Nope.  That's no protection at all.

My point in all this is that manufacturers CAN and do cram terms they 
want down the throats of customers all the time.  And most of the time 
get away with it.  But that doesn't make it right and it DOES make for 
very annoyed customers who are looking for a way to strike back.  Is 
this any way to do business?  I think not.  What happened to the 
Golden Rule?

BTW, the comments above are NOT to be construed as applying to RunRev 
and not even to Apple (although they ARE worse about some of this).  
By and large, both DO care about customers far more than those guys in 
Redmond.  The comments are simply addressed at the question which was 
posed by Dar which I read to be:  what should a manufacturer's 
obligation be when defects surface in a product they no longer sell.

consumer warning  strong statements /consumer warning
rant
There is little sense being spoken in this thread. The above set of non 
sequiturs is an example.

The industry practice and RunRev policy of three-part changes 
(bug/minor/major) and associated pricing policies (none/small/large) is 
well established and of minor interest unless someone has a unique and 
commercially viable proposal which they should then put straight to 
Kevin Miller anyway. If a major upgrade emerges then new bug-fix work 
will cease on all previous versions, although you can continue to use 
the prior version at its last fix level as you please. What else do you 
reasonably expect from a software vendor?

Using the expected changes to the Distribution Builder as an example:
There were some bugs in the old Distribution Builder. There were also a 
lot of things which people thought could work better, and extensive 
discussion of it on the list of enterprise licence holders. Consequent 
on this a fine developer worked with RunRev on an upgraded version 
which is being tested. Yes, it contains bug fixes but better, it is a 
serious improvement in the product. If my licence says I should pay an 
upgrade fee then I will. Bandying words on the exact divider on the 
continuum between bug and feature is otiose if the product was not 
previously unusable (it was not) and there is actual product 
improvement (there is).

Vehicle analogies are pointless. They are fixed term, quite specific 
and their like does not exist in the software industry today. Also, 
they exclude wear-and-tear on consumable parts, which is what an iPod 
battery is and always was. My own iPod battery is fading. My current 
Powerbook battery is down to 2.5 hrs max after nine months. I replaced 
that in the older TiBook after 18 months. So what? The fact that the 
supinely ignorant can extort money from Apple via the publicity of a 
class action is simply free lunching. YMMV.

A while ago, I considered direct investment in RunRev, the company. I 
chose not to do so because, after consideration, the nature of a 
software company such as this exceeded my risk appetite at the time. 
Others have taken greater risk and I continue to benefit from their 
efforts. I support the company while limiting my risks to licence costs 
and to my reputation when I evangelise the product. If they appear to 
be dudding me I will protest, as I have before. If they are threatened 
by ludicrously self-serving licence misinterpretations or by people 
seeking a free lunch I will stand in their defence.
/rant

calm stuff
This thread started, not even on this list, when Ken Norris merely 
(albeit in his somewhat absolutist fashion) asked that priority be 
shifted from new features to bug fixes. The balance between these is a 
difficult one for a company to judge and to keep. They can not afford 
either extreme, either financially or in reputation (i.e. their long 
term financial position). I look forward to the next version.
/calm stuff

David

___
use-revolution mailing list
[EMAIL PROTECTED]

Re: Parentheses

2004-02-22 Thread David Vaughan
On 23/02/2004, at 9:00, [EMAIL PROTECTED] wrote:

From: [EMAIL PROTECTED]
Date: 23 February 2004 5:20:08 GMT+11:00
To: [EMAIL PROTECTED]
Subject: Re: PARENTHESES
Reply-To: How to use Revolution [EMAIL PROTECTED]
Your right about the ^ being a caret/carrot.
But what then are the left and right angle brackets called besides left
and right brackets or less than/greater than???
any ideas???
The nearest to a formal name for left and right angle brackets is 
guillemet. Normally, these appear as   and are used in European 
languages but the single form, a single guillement, is also used in 
typography. However, the guillemet is actually quite a bit smaller than 
the angle bracket used in most computer character sets while 
typographers also use a taller, less-angled version called well 
actually I don't know what that one is called (Tall Guillemet? Slim 
Guille?), so someone still has room to enlighten me. It seems perfectly 
good to me to keep calling them left and right angle brackets, or else 
you will sound like you are navigating in a rally for a manic in a 
Citroen.

cheers
David
T
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: mission critical apps

2004-02-09 Thread David Vaughan
On  and before 10/02/2004, at 7:19, several people wrote many things on 
this topic:


Fundamentally, Alex is right but it does not matter a lot. So is Rob 
but in a different sphere. Meanwhile, I think Frank is wrong.

Without going back to the original, I recall Alex's basic points as 
being:
- Rev lacks the inherent or external tools to support large team 
development.
- A Smalltalk-like message passing structure makes assurance of formal 
correctness difficult.

I am not certain that the second point (as I have interpreted him) is 
true in the sense that it can not be dealt with in tool design or code 
management but the first alone is sufficient to wipe Rev out of large 
scale application development anyway. So, does this matter?

While some of the commentary drifted between xTalk as a viable language 
and the actual topic of message model and team development, the nub 
appears to be: in what market is Rev playing, and is the tool you are 
using viable? In fact, I think this thread originally grew from Alex or 
someone's difficulty in getting Rev accepted as a development tool by a 
client.

There was an article a year or so ago (there will be a ref in the 
archives somewhere) on xTalks. Essentially, it placed them as very high 
level RAD tools ideally adapted to glue functions. Recall that Alex 
never gainsaid Rev's productivity advantages, only its fitness for 
large scale development. I think his reference to mission critical is 
a little off topic in that mission critical is quite often a discovery 
after the software has been in use for a while. I would simply stick 
with a measure of size, which of course is highly correlated with 
mission-critical.

Rob's defence of Rev's productivity and reliability is fair but again 
is off the core point. Rev is perfectly suited to those millions of 
small-scale niche (in the best sense) applications for business, on 
which the computing world actually thrives. It is also excellently 
suited to systems integration tasks of glueing unlike apps together, or 
post-processing standardised output to give interactive and enhanced 
access or multimedia presentation. In either of those roles, it can and 
will be used in the enterprise and is a powerful platform for a small 
firm marketing to those enterprises. It is just that it will not be 
used to re-write SAP or Sabre or ComputerShare or the like. It may help 
glue, say, the accounting system with a proprietary case management 
system and provide joint reporting from them or to enable common web 
access to a (Rev) engine reprocessing corporate data. These are things 
MIS generally does not want to do and present golden opportunities for 
small integration firms.

Then, there are endless apps already made by people on this list. Core 
tools like Rob's SDB, Sarah's POP library and Shao Sean's LibSMTP. Apps 
like Oenolog and Tom's instructive CD or Alex' ARC (excuse me for not 
going on). They are providing reliable and effective service because 
they are based on a solid platform.

Hence, I think Alex's positioning of Rev is fair but in my view not in 
any respect damaging. Let me put this another way. You could be a 
programmer in a huge enterprise or in a small business, possibly your 
own. Where have you chosen to work? Then choose the right tool for what 
you are doing and don't fret over what you are not doing.

While I'm here, I may as well add my free trade comment on Frank's 
request for C-like syntax:
- It will remove zero bugs from Rev
- It is more likely to add programmer coding and reading bugs than to 
reduce them
- It will make some people more comfortable with the language and 
others less.
- Transcript is a perfectly good (in the vernacular sense) formal 
language as it stands.

Those interested in it can always write the requisite pre-processor 
themselves and insert it into the editor, then release and maintain it 
for a price. The market will answer for their opinion.

regards
David
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Rev Review

2004-02-04 Thread David Vaughan
Rev 2.1 has now been reviewed in Australian MacWorld (Feb p68)

Andy Ihnatko's review is generally positive in a post-Hypercard way 
although I personally disagree with his closing comment: Just don't 
imagine that you'll be able to build the ambitious programs you can 
turn out in RealBasic and Xcode.

regards
David
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Directory Walker question

2004-02-04 Thread David Vaughan
/Applications/Revolution 2.1.2/Revolution.app
Creator:
Type:
On 05/02/2004, at 15:36, Barry Levine [EMAIL PROTECTED] wrote:
In a number of earlier digests, there was discussion about the  
directory walker. I've copied that code into my script and, sure  
enough, it works exactly as advertised. However, in OSX, it also walks  
down through app bundles. I'd like to stop before diving into the  
bundle. However, I need to get the total size of the bundle (both data  
and resource) for later purposes. I've played with the detailed  
files function and it looks like I may have to use it to add up  
everything inside the bundle. I don't mind doing that (as Rev is  
really quite fast).

Near as I can tell, I'd have to use the detailed files function  
after using the directory walker in order to add up the bytes of both  
forks of all the files, and then run a modified version of the  
directory walker routine which would permit me to recognize app  
bundles and end up with a list that's similar to what the user sees in  
the Finder. (Alternatively, once I have the detailed files of the  
entire tree, could I parse through it and eliminate what I don't  
need?)

Here's what the directory walker sees (I've removed the enclosing  
folders to make it readable in this eMail):

Adobe ImageReady 7.0/Adobe ImageReady 7.0,0,949
Adobe ImageReady 7.0/Contents/Info.plist,14148,0
Adobe ImageReady 7.0/Contents/MacOS/ACECarbonLib,526041,518
Adobe ImageReady 7.0/Contents/MacOS/ADM-PNG,46781,2989
Adobe ImageReady 7.0/Contents/MacOS/ADMCarbon Plugin,882650,71737
(and lots more lines listing the stuff inside the ImageReady app)
So the big question is: How do I get the directory walker to recognize  
that it's encountered an OSX app bundle (ImageReady 7.0, in this case)  
and have it -not- examine what's inside. In the above example, it's  
already dropped inside the ImageReady bundle. Using the above example,  
what I'd like to end up with is simply Adobe ImageReady 7.0 as the  
only line.
Barry

I notice that in the detailed folders listing, an app bundle appears  
as follows (for example):
Revolution.app,136,1535180800,1035608180,1068205493,1075788371,0,501,80, 
777,

Note it is in the folder list, not the file list, has question marks  
for creator/type and a .app suffix on the name. I am assuming this  
will provide reliable identification.

When you encounter a folder of this nature, initiate directory walker  
for that folder alone (this is within your normal walk process - you  
will need to add this code), add up the components, and list it under  
the app bundle name with .app stripped. OK?

Well, I think it should work :-)

cheers
David
Thanks for any suggestions,
Barry
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Comunication COM1: and a CNC milling machine (timeout?)

2003-09-18 Thread David Vaughan
On Friday, Sep 19, 2003, at 01:29 Australia/Brisbane, 
[EMAIL PROTECTED] (Malte Brill) wrote:

snip

Quoting Sarah:
You might want to try out my Serial test stack - available from my web
page at
http://www.troz.net/Rev/
I have just updated it so that it allows you to select termination
characters i.e. whether sends should end with CR (ASCII 13), LF (ASCII
10) or CRLF and the same for receives.
I think it will solve your reading problem, because it doesn't do a
single read, but reads continuously as long as the port is open,
reporting whenever it gets any data.
That´s an interesting approach.
I had a look at your stack, but couldn´t test it with the mill yet, as 
I
disturb the production process every time I try testing the stack and 
they
are really busy today.
When I would use the method of testing if there is data sent, how 
would I
know that the transmission is done?
Could I try listening to the port until data is sent and then read 
until
EOF? Or would I need to write a stop handler to terminate reading when 
no
more data is sent?
Malte

While reading earlier bits in this thread I had forgotten that I wrote 
a similar stack a couple of years ago. These points are probably 
covered in Sarah's stacks but the following is the strategy I used.

The device was an intelligent battery charger which simply pumped out 
data when it was working. No commands, no handshakes.

I used three buttons, Clear, Prepare and Stop, with fields to show 
time, data and state (clear, waiting, running, stopped).

Prepare started a listener which cycled looking for the first instance 
of data. If you have no input buffer then skip this step or roll it 
into the second. When it found data it started the Reader, Writer and 
Monitor routines (all running in cycles rather than continuously)

Reader kept up with reading data, taking it in small chunks and using 
send in to run again at a short interval. With 300 baud input you 
should have no problem cycling yet still capture unbuffered characters.
Writer logged the data to disk every half minute. (Skippable)
Monitor ran at five minute intervals. If no new data had appeared in 
the last five minutes it cancelled the other handlers and closed the 
port. You can also press Stop to do the same. Since this device 
normally ran for over half an hour I did not hang around to watch the 
excitement :-).

All of these intervals should be tailored to the machine with which you 
are communicating.

For platform reasons (i.e. lack of successful USB access under OS X at 
the time) the draft in RR was transferred to HyperCard on an old Mac so 
I was using idle, but send in time should accomplish all the same 
today.

regards
David
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Deep Space

2003-09-10 Thread David Vaughan
On Wednesday, Sep 10, 2003, at 15:06 Australia/Brisbane, Wouter 
[EMAIL PROTECTED] wrote:

Hi,
If this post is redundant don't read it.
My workaround OS X only:
snip
   change to eliminate the aliases
  get shell(ls -F)
  filter it with *[/]
Redundant perhaps. More importantly, just wrong. Please read my 
previous posts on this, lest newbies be misled. The code and advice in 
my posts stands. It may be less confusing if you do not reply :-)

cheers
David
Greetings
WA
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Deep Space (was: The Directory Walker revisited)

2003-09-09 Thread David Vaughan
On Monday, Sep 8, 2003, at 23:18 Australia/Brisbane, David Vaughan 
[EMAIL PROTECTED] wrote:
Hmm. I have now encountered the same problem. As I wrote before, I had 
no difficulty with 100,000 files and directories 17 deep, but the same 
folders examined from their parent (the volume name) lead to a far 
higher depth count (should have been only 18)
snip
The alternative might be some trigger into circularity, which is what 
happened with permissions.
Found it folks!

On OS X systems the folder //Network contains a reference to the local 
computer, which is where you started, so round you go again.

I made a specific adjustment at the beginning of the handler, thus:

   function walkDir dirPath
 if dirPath contains //Network then
   return empty
 end if
 -- etc as before
Running this worked across the entire root volume, returning over 
230,000 files in a 24MB list (maxDepth 18 as expected), no problems.

The same circularity will equally affect an iterative routine, not only 
a recursive approach, so whatever you do you need to protect against 
the specific problem or simply not allow a user to walk from root. The 
point of this exercise was to confirm that stack size did not limit a 
recursive approach.

Note also WA's apparent problem with an X11 sub-folder, although 
aliases did not appear to have added any circularity in my testing. Any 
routine should also be tested specifically on a Linux or Windows 
platform if it will be deployed there. The testing code comprises 
displaying the current path every time you hit a new maxDepth.

regards
David
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Deep Space

2003-09-09 Thread David Vaughan
On Tuesday, Sep 9, 2003, at 21:33 Australia/Brisbane, Robert Brenstein 
[EMAIL PROTECTED] wrote:

snip
Hmm, actually, when one walks directories, shouldn't one walk only the 
true directories and treat aliases as files (which they are)?
Yes. As I intimated in my previous post, and have now verified again by 
experiment, the walker is *not* fooled by an alias.
I created this structure on a separate volume called sliver:
tmp
   a real file, called CRS BC Report.mell
   a real directory, called parent of fake
  an alias to tmp

On being asked to walk this, the handler returned two files as follows:
   /Volumes/sliver/tmp/CRS+BC+Report.mell
   /Volumes/sliver/tmp/parent of fake/tmp
with maxDepth of 2, and did not loop. This is correct behaviour.
The problem I described in my previous post does not arise from an 
alias, but from a reference in //Networks to [your computer 
name].local. which kicks off the cycling.

regards
David
Robert
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Deep Space

2003-09-09 Thread David Vaughan
On Tuesday, Sep 9, 2003, at 21:33 Australia/Brisbane, Wouter 
[EMAIL PROTECTED] wrote:

WA
But thank to this I discovered a difference in the alias folders.
Try for yourself:
Type in the msg box :
set the directory to /etc;put the directories
You get the directories in which you see etc as a directory.
After this use open in the file menu and you will see that
the etc folder is in fact an aliased folder.
Make an aliased folder yourself and do:
set the directory to /wherever_your_aliased_folder_is;put the 
detailed files
 you see the aliased folder is actually a file with a creator and type 
code of MACSfdrp.
If you do:
 set the directory to /wherever_your_aliased_folder_is;put the 
folders
you won't see a directory called as your aliased folder name.
if you do:
set the directory to /;put the detailed directories
the etc aliased folder's creator an file type is 
This means that if if the directory walker stumbles on
an aliased folder from the first kind pointing to its parentdirectory
you get the loop which makes the recursinglevel go to its limit.
No you don't. You are being fooled by doing this in the message box.
I have no alias to /etc within /etc but if I did then it would not 
matter. What is happening to you is as follows:
You set the directory to /etc -- success
You set the directory to /etc/etc -- fails, and the directory remains 
set to /etc, but you do not see this in the message box
You list the files and lo! you appear to have circularity because you 
have listed /etc again.

If you run my most recent actual code (including Dar's permissions fix) 
on your /etc you will see that it works correctly, listing the alias as 
a file and not cycling. No additional special cases need to be checked 
for aliases. See also my response to Robert Brenstein, who recognised 
that this error should not occur.

hope this clarifies it.

regards
David
The problem is to recognize the special aliases.
I made an incomplete solution to circumvent this problem and
stumbled into yet another problem, but I have to investigate
this a bit further before releasing it on the list.
Excuse me for this appletalk but may be something
similar can be found on the other platforms.
Greetings,
WA
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Deep Space

2003-09-09 Thread David Vaughan

On Wednesday, Sep 10, 2003, at 12:29 Australia/Brisbane, Wouter [EMAIL PROTECTED]> wrote:

snip

This means that languages which use diacriticals
can't use this version of the directory walker until 
the conversion is solved.

It works as is. There is no problem because...

   change to eliminate the aliases
get shell(ls -F)
filter it with *[/]
 shell() returns  for  used in some cases to
 designate a folder

is not necessary to deal with aliases, as explained in the digest in which your above note appeared and which I trust you will receive shortly.

Character encoding problems do not arise on reading the directory alone.

Hoping this is clear now.

regards
David

Greetings,
WA

Re: Deep Space (was: The Directory Walker revisited)

2003-09-08 Thread David Vaughan
On Monday, Sep 8, 2003, at 18:12 Australia/Brisbane, Wouter 
[EMAIL PROTECTED] wrote:
Thank you very much for answering for I see my confusion now.
But the excellent recursive function from David Vaughn has encountered
an other limit. It crashes Metacard/Revolution at about 20303 to 20335 
iterations
on my computer (tested on the complete Mac OS X volume which seems to
have  10 folders, didn't go further by lack of time). Makes you 
think about
what is more preferable, though this is an extreme condition.
But it's probably something for the Metacard-engine coders to solve.
Hmm. I have now encountered the same problem. As I wrote before, I had 
no difficulty with 100,000 files and directories 17 deep, but the same 
folders examined from their parent (the volume name) lead to a far 
higher depth count (should have been only 18) and did not finish after 
30 minutes. There was no crash, per se, just endless processing. The 
amount of work being done makes this a bad one to try to trace.

I am wondering if this is a problem arising from the amount of data 
(roughly estimated at 10MB considering a full path for every file) 
being returned on the stack as the function nears the top.

The alternative might be some trigger into circularity, which is what 
happened with permissions.

Perhaps it is OSX-specific. Is the same issue encountered on Windows or 
Linux please?

Seems worth some work given the code should work for virtually any 
situation.

regards
David (Vaughan)
Greetings,
WA
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Deep Space

2003-09-08 Thread David Vaughan
On Tuesday, Sep 9, 2003, at 07:20 Australia/Brisbane, Wouter 
[EMAIL PROTECTED] wrote:
Correction:
In this case it is the compiled_alias_folder at  
//etc/X11/xkb/compiled/
And you still have the honor.
No, I have no such folder,  not having compiled X11.

I'll keep looking.

regards
David
ReGreetings,
WA
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: The Directory Walker revisited

2003-09-05 Thread David Vaughan
On Friday, Sep 5, 2003, at 16:48 Australia/Brisbane, Dar Scott 
[EMAIL PROTECTED] wrote:
Permissions!
Good work Dar. Thanks. I'll add the path test for future safety.

regards
David
___
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


  1   2   3   4   >