Home Contact Site Map Privacy Policy Rev Search
Volume 1 Issue 3
 

Up
Volume 1 Issue 1
Volume 1 Issue 2
Volume 1 Issue 3
Volume 1 Issue 4
Volume 1 Issue 5
Volume 1 Issue 6
Volume 1 Issue 7
Volume 1 Issue 8
Volume 1 Issue 9
Volume 1 Issue 10
Volume 2 Issue 1
Volume 2 Issue 2
Volume 2 Issue 3
Volume 2 Issue 4
Volume 2 Issue 5
Volume 2 Issue 6
Volume 2 Issue 7
Volume 3 Issue 1
Volume 3 Issue 2
Volume 3 Issue 3
Volume 4 Issue 1
Volume 4 Issue 2
Volume 4 Issue 3
Volume 4 Issue 4


 

 

 S/ENL - The Sprezzatura Electronic Newsletter

(All the RevSoft News That's Fit To Print (And bits that probably aren't as well...))

Contents

Welcome

Ramblings

SPREZZATURA TECHNICAL BULLETINS FOR OPENINSIGHT

PROSPECTUS

Tech Tip Of The Issue

INTERVIEW - Aaron Kaplan

ERIC THE EMU'S AREV TIPS

Peripheral Trivia

14th February 1997

S/ENL Volume 1 Issue 3

Welcome

Well apologies if this seems a little late - I had to spend two weeks in Holland and so that delayed the release of this! Well another newsy few weeks - although nothing quite as radical as the Java-isation of OI! I seem doomed when it comes to distribution! We mailed from Compuserve last time because of the problems with anti-spam software and everything seemed to get through, but just so as to avoid complacency, three people complained of missing message parts! TapCIS claims it was OK but I tested myself and sure enough bits were missing, so I'm trying WinCIM this time! In case anybody else was wondering the code included was complete - it was not meant to terminate mid way through then start another sentence! I don't know - some of you are so cynical - after last issue's announcements about JA/Rev I received the following from someone who shall remain anonymous "Now that RevSoft have joined the Java bandwagon, Microsoft must be quaking

in its boots!"...I was caught out big style by Greg Helland who asks "you say that you DO NOT employ any of those sales type people and yet you have me email my request to SALES@... is this an oxymoron?" - no Greg, it's just an Andrew moron. No one at Sprezz is paid to perform a sales function. Apart from Admin we are all technical. Just that the various headings determines who requests go to. SALES goes to Katherine Rhodes so she can process what is hopefully an order! But SALES is shorter than KATHERINE_RHODES so... <g> As an aside Katherine would just like to point out that she can also be reached on dogsbody@sprezzatura.com....

Prospectus (the UK's leading Rev Recruitment house) have asked us to include a plug for their Email jobs notification service. As this is bound to be of interest to some of our readers we have included a standard piece of text provided by Prospectus with no editorial intervention from Sprezz. We would not normally do this but they did help us with setting up the electronic

mailing list so consider this a one off! Congratulations to Cam (and naturally Giesi) Purdy who has recently become a father! Finally a big whoops to those who spotted that www.unloaded.com doesn't actually exist - yes, it is www.uploaded.com as amended this time!

Andrew McAuley
Publisher

[top]

Ramblings

Well the Web site people have come back - seems they thought the deadline was April.... Hmm...

OI 3.3 has actually hit the streets as parts of the Works program This marks an interesting development - it is not available separately. So the only way to get it is to subscribe to Works. Now at $600 in the UK, this makes every upgrade a $150 upgrade - assuming 4 are delivered as promised. Paying for four upgrades a year is going to come as quite a shock to the OI community who have been spoilt by free upgrades for what seems like years! RevSoft will naturally be pulling out all the stops to ensure that value for money is delivered but only time will tell as to whether they succeed. This all seems a bit raw if all you want is a patch to stop your OI GPFing on exit (scheduled for 3.4 by the way) - but RevSoft don't have the resources to administer a patch program. The only thing that gets me is it is now going to cost me more for my Works subscription than my Microsoft Developer Network subscription - at least I get more use from the former! Reaction to Works has been mixed - as one person pointed out - it seems to just consist of the web site, the popup source and 3.3. Did you wonder why RevSoft suddenly included the terms and conditions of use on their web page? <g> So they could publish your ramblings under their logo without fear of copyright breach action! Whether they can post date this is something lawyers would probably have to decide - but hey, I won't tell if you don't! At one of our most active OpenInsight sites we are infrequently experiencing corrupted repositories with char(0) mysteriously turning up in the key of several rows. Now personally I feel that the repository is a real PITA, providing more hassles than benefits, however it is there so we have to work with it. We've done the obvious, like ceasing maintaining dictionary items in the repository but we still get the problem from time to time. If we come across a reason we'll let you know!

A fond farewell to Marcus Brown who retires this month as Chairman of the Revelation User Group UK. The company he works for is now primarily Access based (you have our commiserations Marcus) so he no longer feels that it is appropriate to continue in his role. We appreciate the time you've put in Marcus. Thank you!

Last month's code for AREV was unfortunately only applicable to AREV 3.1+ due to the way the editor was changed to be more open. We're starting a new series of interviews with key Rev community personnel in this issue. This was prompted by an interesting conversation with a developer who explained that the Rev community in the 'States has pretty much fallen apart. That is to say, nobody knows anybody any more the way they used to. This was down to a number of facts including the fact that there are no longer annual conferences, and more importantly that user groups have fallen into decline. This latter phenomenon is nothing new. It is happening with most software products as more help becomes available online. We've noticed it to a lesser degree in the UK where there is still a semi-active user group, but it is definitely still there. So each issue

we'll bring you a short interview with a person actually out there in our community, and occasionally a guest celebrity! (Naturally the word "celebrity" is used in its loosest sense! <g>). We're opening this time with Aaron Kaplan who is well known for his years of AREV support at RevSoft - he is now out in the community and as he boasts on his web site provides support at a reasonable rate - RevSoft being 50% more! Interesting news from RevSoft, where one of the developers on the OpenInsight team (Boris) has recently departed. This brings the core OI team down to Cameron and Gene. This is what is known as a "mixed blessing". These two constitute my "dream team" when it comes to product development, working well together and at a pace you wouldn't believe. An amusing post from Compuserve from someone who will remain nameless unless they request otherwise!

RevSoft Sales Model:

1. Act now to get these remarkable values before the deadline!

2. Extend the deadline

3. Extend the deadline

4. Cut price

5. Return to step 1

And finally a welcome to guest writer "Eric" who has contributed a fantastic article and will be contributing more in the future. We would point out that whilst Eric tends to ramble (most amusingly I hasten to add) there is gold buried in the articles! As an aside all article contributors will get Sprezzatura Sweatshirts just as soon as we get them made up!

Until next time....

[top]

SPREZZATURA TECHNICAL BULLETINS FOR OPENINSIGHT

In the absence of REVMEDIA - The Developer's Link, Sprezzatura have decided to release occasional very detailed documents on specific OIWG topics. The first in this occasional series is "REVMEDIA Technical Briefings # 1 - OI Window Structures.". This 100+ page document details all aspects of OIWIN structures permitting the developer to add new windows programmatically. It details Window Control Structure, Control Structure and Menu Structure as well as explaining how to use REPOSITORY to add new windows. It also includes a comprehensive guide to Windows SDK Styles and Presentation Server PS Styles. We have numerous quotes on file from people who have purchased the product so far - but our favourite has to be this one from Cam Purdy on Compuserve (Copyright, Cam, RevSoft, CI$, whoever! <g>)"The best reference material for the SYSREPOSWINS structure is in . (REVMEDIA TB) . (I should know - - I edited it and now use it myself)." Below we attach the first chapter for your perusal! The price is only 50GBP or 80USD. Antipodeans can contact XLTech for prices. Order by fax or Email in the usual way! REVMEDIA - "The Developer's Link" Technical Briefings #1 OpenInsight for Workgroups Window Structures COPYRIGHT NOTICE (c)1996 Sprezzatura Ltd. All rights reserved.

Location of Windows

Uncompelled OpenInsight Windows are stored in the SYSREPOSWINS table on the REVBOOT directory. Normally they are placed there by a REPOSITORY NEW or REPOSITORY WRITE method. In this way the system ensures that it knows the rights associated with an entity. If a Window does not have an associated SYSREPOS entity, it will not be accessible from an OpenInsight application. For this reason it is not recommended that you write new window structures directly to the SYSREPOSWINS table. Rather, if the developer creates a new window structure and wants to update the system with it, they should do it via a repository call as follow

Declare Function Repository

RetVal = Repository(A,B,C,D,E,F,G,H,I,J,K,L)

where

A The method to execute, in this case "NEW"

B The name of the Window to update. Specify the full entity ID, which is the key to the SYSREPOS table. The fully qualified entity identifier is required. This takes the form AppName*OIWIN**WinName.

C The State to set the entity to. This is an incompletely specified repository flag which was intended to show the stage of the development life-cycle that had been reached by the entity. It has not yet been fully implemented. May be left null.

D The Publishable flag. Whether the entity should be deployed when the RDK is used. If you want to deploy the uncompiled version of the window, set this to 1.To suppress the employment of the uncompiled window, set it to 0.

E The Shareable flag. Whether the entity should be made available to any applications which inherit from the current application. It would be usual to set this to true although the circumstances of your application will dictate this.

F A field mark delimited list of the entities that this entity is used by. These should have the structure of valid SYSREPOS keys. Note that the REPOSITORY function will not validate these to actually exist. In fact if the rows do not exist in the SYSREPOS table it will create them complete with links to the entity being created. May be left null.

G A field mark delimited list of the entities that this entity uses. These should have the structure of valid SYSREPOS keys. Note that the REPOSITORY function will not validate these to actually exist. In fact if the rows do not exist in the SYSREPOS table it will create them complete with links to the entity being created. May be left null.

H A field mark delimited list of document entities associated with this entity. These should have the structure of valid SYSREPOS keys. Note that the REPOSITORY function will not validate these to actually exist. In fact if the rows do not exist in the SYSREPOS table it will create them complete with links to the entity being created. May be left null.

I A value mark delimited list of users with access permissions for this entity. Note that the REPOSITORY function will not validate these to actually exist, nor will it create them for you. May be left null.

J A value mark delimited list of users with update permissions for this entity. Note that the REPOSITORY function will not validate these to actually exist, nor will it create them for you. May be left null.

K The SYSREPOS title to give this entity.

L The window structure to write to the SYSREPOSWINS table. Note that subsequent updates to the window structure can be made directly by writing to the SYSREPOSWINS table. This will update the window itself but will not record the fact that updates have been performed. Alternatively the REPOSITORY WRITE method can be used. This takes the same parameters as the REPOSITORY NEW but parameter A is set to "WRITE not "NEW". This method can also be used to update any of the details given in the SYSREPOS table. Do not pass a null Window definition however or you will overwrite the existing definition with null!

[top]

PROSPECTUS

1997 is looking to be an exciting year for Prospectus. It is certainly starting that way with the launch of our new service. This email is to tell you about our new service.

*** AN AUTOMATIC EMAIL SERVICE *****

WHAT IS THIS SERVICE ? This service enables you to stay up-to-date with the current opportunities we have registered with us. As you know this is never in a static state so we will do the following:

Once a week you will be sent an email with all current jobs.

New jobs will be mailed to you even before our internal searching has been done.

Any existing job where some of the search criteria or salary changes will be sent to you as soon as it changes.

CATEGORIES Jobs will be split into 4 sections:

pickper = pick, universe, unidata permanent positions pickcon = pick, universe, unidata, contract positions

revper = RevG, Advanced Revelation and OpenInsight permanent positions revcon

= RevG, Advanced Revelation and OpenInsight contract positions.

WHO MANAGES THIS SERVICE:

This service will be managed by YOU. You can subscribe and unsubscribe at will. At our end we have automated this service so that on registering a job, each consultant will go through one extra stage to ensure that subscribers for the relevant position receive details.

AN IMPORTANT NOTE This service WILL NOT replace the work the Consultants will be doing on your behalf if you are already active and registered with us.

TO SUBSCRIBE To subscribe all you need to do is send us an email with the following in the SUBJECT Subscribe pickperor Subscribe pickcon

If you wish to subscribe to all four categories, you will need to send us 4 separate emails.

TO UNSUBSCRIBE You can unsubscribe at any time by sending us an email with Unsubscribe in the subject field. eg Unsubscribe pickper

TO SAY YES TO ANY OF THE JOBS If you see a position you are interested in, all you need to do is send us an email with the following:

Subject: YES PLEASE Message: BROWN = Yes from Mickey Mouse 26/12/68

(Brown = our job reference, Yes = please forward cv. Mickey Mouse = your name. 26/12/69 = your date of birth for id confirmation)

Please ensure we have an up-to-date CV for you and either attach to email or cut and paste within it.

If you know your applicant number and are already registered with us, you can always assist us by giving this to us instead of your date of birth !

Alternatively, if you know someone else who you feel might be interested in one of the positions (or service!), then please spread the word either to us or to them direct !

FEEDBACK FOR US We welcome feedback and constructive criticism. So please feel free to send us your comments. They will all be read and responded to.

We hope you will take this opportunity to subscribe to our New Service and will tell your friends about it.

Tech Tip Of The Issue

This one is for OI users and comes from in-house - stout work Carl fella! CARETPOS in Edit Tables As we know, the OI Edit Table is not always the most user- friendly control, and sometimes displays some very annoying characteristics. One such 'feature' manifests itself in multi-select Edit Tables; namely how do you find out the EXACT cell that currently has the caret? You can't use the SELPOS property, because the Column number returned is always set to 1 (logical really but not much help!). You can't use ACCESSDATA either because that property only seems to be set when entering data. List Box controls have the handy CARETPOS property, but there is no equivalent for an Edit Table *sigh*

However, as every control in Windows responds to certain messages, it seems reasonable to expect that there would be a message that returns the position of the caret. A couple of hours intense hacking and numerous GPF's revealed the fact that there are two: One to return the column position, and the other (surprisingly enough) to return the row position. The function below shows how they may be combined to return the caret in the same manner as the TOPPOS and SELPOS properties Compile Function Get_ET_Caret(CharStr CtrlEntID)

/* Author Mr C

Date 19/09/95

Purpose Function to return the position of the caret for

the Edit Table passed in the CtrlEntID parameter.

CtrlEntID must take the format WindowName.ControlName

Returns the Caret position in the format Column : @Fm : Row

*/

Declare Function SendMessage, Get_Property

Equ WM_USER$ To 1024 ; * The Windows SDK

; * stipulates that

; * custom control

; * messages must be

; * above this value,

; * hence the next

; * two statements

Equ GET_ET_ROW$ To WM_USER$ + 36

Equ GET_ET_COL$ To WM_USER$ + 37

Row = ""

Col = ""

CaretPos = ""

hctrlEditTable = Get_Property(CtrlEntId,"HANDLE")

Row = SendMessage(hctrlEditTable,(GET_ET_ROW$),0,0)

Col = SendMessage(hctrlEditTable,(GET_ET_COL$),0,0)

If Len(Row) And Len(Col) Then

/* As with most Windows controls, indexes are 0-based so

add 1 to each to find the true position of the Caret

*/

Row += 1

Col += 1

CaretPos = Col : @Fm : Row

End

Return CaretPos

[top]

INTERVIEW - Aaron Kaplan

>>Who are you?<<

I'm Aaron Kaplan. I'm a 30 year old white Jewish male from Philadelphia, PA. I'm 5'4", blue-grey eyes, brown curly hair, and ladies, I'm available. I've travelled about the world a bit, living in Washington DC, Stamford CT, Boston MA and London UK for various periods. I have 2 younger brothers, an 11 year old German Shepherd Collie mix (Aiko) and a 7 year old grey tabby (Augusta, but we call him Scraggie). My hobbies are long walks on the beach on rainy days, reading by the fire place. My turn offs are mean people, Microsoft employees and adulteresses. My favorite books were Atlas Shrugged, A Brief History of Time and The House at Pooh Corner.

>> Who do you work for? <<

I'm currently self-employed at APpliKations, Inc.

>> What is your role in the RevSoft community?<<

Unauthorized everything, really. General all around ARev guru and networking expert, plus I'm not too shabby with OI, either.

>> How long have you been involved with RevSoft? <<

I started with working with RevG back in 1986 as user and happily hacked my way into development and have been there ever since. In 1993 I joined Revelation's employee as a Tech Rep and moved my way into development shipping ARev 3.12.

>> Which products do you use? <<

All of them, but I try and stay away from G as much as possible these days. It's been so long and I've forgotten so much.

>> What do you most like about RevSoft products? <<

General ease of use, familiarity and MVA

>> What do you most dislike about RevSoft products? <<

"Non-standard" and lack of alternative access to LH data.

>> If you HAD to use another database what would it be and why? <<

Perhaps Delphi or maybe VB. There's supposed to be a new Windows MVA database out there, so I'd take a look at that one.

>> What are your favourite 3 books and why? <<

My favorite books are Atlas Shrugged, because I love it's message of self-responsibility. I also liked A Brief History of Time because space, relativity and quantum physics are just really cool stuff. And of course, the complete works of Winnie the Pooh, since it's just so much fun to read. I'd have to add in Alice and Wonderland (read it as an adult, it's a marvellous story), High Fidelity (can't find my copy to get the author), a book every man, or someone who loves a man, should read and Gone to Soldiers by Marge Peircy, a very moving story about World War II.

>> What are your favourite 3 CDs/Albums and why? <<

In no particular order, The Allman Bro's Eat a Peach, with the single side Mountain Jam. While not exactly a favorite album or one I listen to often, it's great when the juke box had a copy there. Mountain Jam runs almost 40 minutes, so it's a great value for the juke box dollar.

Other favourites are The Beatles Abbey Road, side 2 being one of the greatest album sides in music and Genesis "Foxtrot" again with one of the greatest side 2's of all time. I loved going to a Genesis concert back in 83 and listening to some folks behind me thinking it was a cover song when they played "Supper's Ready". Though, I have to admit, for purposes of accuracy, I much prefer artists and styles to particular bands. Contrary to the album choices listed, I'm heavy into the blues.

>> What are your three favourite films and why? <<

Casablanca just might be number 1 and could be the best thing ever put on celluloid. A portrayal of life and love and war and what happens. Plus, Ingrid Bergman is fantastic in it, and Time Goes By is one of my favorite songs.

Other favourites are The Wizard of Oz, The Princess Bride and The Muppet Movie, generally because they are just so much fun.

>> What event in history would you most like to have been present at? <<

Creation. Genesis. In the beginning.

>> Who is the best president/prime minister we never had and why? <<

We never had? In recent memory, I'd have to say Paul Tsongas, since I think he was honest and forthright enough to make the tough decisions and the right sacrifices to get America back on track. He also so the value of people and of corporations and did not have such a good verses evil view of politics that so many others seem to. But if we need to go historical, then perhaps Solomon. Seeing as he was alleged to be the wisest man who ever lived, he's probably be able to solve many things and get the citizens to ask the right questions.

>> Your motto/witty aphorism <<

Nothing is impossible to one who won't listen to reason.

Never try to teach a pig to sing; it wastes your time and annoys the pig.

Bye bye, and buy bonds. And so, I stand before you today and proclaim, I am a jelly donought.

[top]

ERIC THE EMU'S AREV TIPS

INTRODUCTION

For those of you who don't know Eric, he wrote the first REV decompiler, three years before REV.EXE came along. Owing to what can only be described as dismal marketing it never took off, and he spent the mid 1980's porting REVG to CPM, not believing for a minute that DOS would last. In 1989 Eric devised the 4GL called CRUMPETS (Commercial Realmode User-Maintained Program Entry Terminal System) which, owing to a minor oversight, ran on the 6502 platform, abandoned several years beforehand.

Eric is now writing this Tips column for the SENL, and will divulge the darkest and most hard-sought AREV secrets from the corridors of power, and the oxide encrusted platters of his 10 MB hard disk.

OPTIMISATION TIPS by Eric the Emu... The need for speed is critical, which is why, after several years sitting in front of debug.com and using edlin as my word processor, I decided to reverse engineer AREV.EXE. Getting it out of the box without opening the license agreement was tough, but fortunately emus can't read, and pretty soon, I had over three thousand pages of x86 assembler staring me in the face.

Some guy in product support called Everest gave me timely (if sometimes inaccurate) advice, and pretty soon, I'd worked out that if both DOS and AREV.EXE were re-written in protected mode, the product would run much faster.

While starting the re-write, I realised that the first thing AREV.EXE does, once fired up, is work out what chip is in the PC. All the guts of AREV.EXE are written around this central core routine, which occupies about 45 Kb of the executable. Further, I discovered that timing loops were imbedded in the product so that its unfair advantage over DBase III in terms of speed would not jaundice Ashton-Tate's fine working relationship with the programmers at Cosmos (then working on the DBase import routines). It turns out that if the CPU is a 8086, then there are 86 wait cycles between AREV interpreter calls. On a 80286, there are 286 such cycles. On a 386, there are 386 wait cycles imbedded in the AREV.EXE for every line of RBASIC executed.

For those of you who have had gangrene, and are therefore find hexadecimal easy, the wait cycles are represented in the AREV.EXE by bytes of the value 90 hex - the infamous NOP (or do nothing) Intel opcode. It turns out that the repetitions of these wait cycles are all tied to the @CPU.TYPE variable. That is why @CPU.TYPE was never updated in early versions of AREV, and why the 486 chip doesn't appear as such, but instead is misreported as a 386. The Cosmos guys were obviously into optimisation where expedient.

I then devised the following hypothesis upon which to base further research. If @CPU.TYPE was set artificially, the sales department could preset demand for product, making AREV only as popular as production output would permit. After all, orders for AREV bricks could only be filled as fast as the support staff could copy from the master floppies on the old XT provided for the purpose. If my hunch was correct, @CPU.TYPE was therefore the key to the entire AREV platform's performance. REVG runs faster - why? - no @CPU.TYPE!

I got to thinking. If you could set @CPU.TYPE to a lower value, say from an RBASIC program, then the speed of AREV would benefit accordingly. The wait cycles could be eradicated all together, leaving AREV to fly through benchmark tests. In fact, a special version of AREV was appraised in PC Magazine back in the DATABASES issue in late '89, where @CPU.TYPE was

accidentally set to 786, making the product perform dismally in the ASCII import/export benchmark.

But I digress. @CPU.TYPE was at some stage banished from string space and from the descriptor table. Instead it was relegated to the bowels of the EXE, never to be manipulated at a set address again, a lowly read-only variable before its time. Assignment to @CPU.TYPE isn't supported in RBASIC.

@CPU.TYPE was moved between versions of AREV to different addresses, in attempt to make its true whereabouts unknown. It is a reluctant system constant, global yet confined, overt yet protected, unwriteable from its solitary 16-bit repository. Its accessibility is something that Ashton Tate will probably never want to divulge.

However, scrawled on the dust on top of the fridge in Ashton Tate's HQ kitchen, in handwriting remarkably unlike that of Ashton Tate personnel, I once caught a glimpse of the following, about the time AREV 2.12 came out, which I am sure means it would work on that version only:

SUBROUTINE SETCPUTYPE(CHIP)

\02000000000000000000B80013BA01002EFF1E0A0036890ED007CB\

It sure as hell ain't DBase....

Eric the Emu, April 1st 1997

Peripheral Trivia

As this issue of S/ENL was put to bed we fed the inner man with:

TV :The Simpsons

Book:"My Favourite War" - Christopher John Farley.

VERY surprised Pearl Jam didn't sue!

CD: "Asylum Years" - Tom Waits

WEB: www.uploaded.com

[top]

Join us :Send Mail to Admin@Sprezzatura.com with subject SUBSCRIBE SENL
Leave Us:Send Mail to Admin@Sprezzatura.com with subject UNSUBSCRIBE SENL
Change of Address: Leave at the old address & join at the new one
Web Info:http://www.sprezzatura.com/
Tell us what you'd like to see in S/ENL:Ask_Sprezz@sprezzatura.com

S/ENL - (c) Copyright 1998, Sprezzatura Ltd. All rights reserved. REDISTRIBUTION is allowed only with permission. You may circulate copies of S/ENL by manually forwarding it, providing (1) you forward the issue in its entirety, (2) no fee is involved, and (3) you forward no more than three issues to any one individual. After that, please encourage your correspondents to send e-mail to admin@sprezzatura.com with SUBSCRIBE SENL in the subject line to get their own free subscription. Everyone is welcome! Tell your friends about S/ENL.

[top]

Copyright © 2005 The Sprezzatura Group. All rights reserved.