<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Hi Brian.<br>
<br>
This version of the package can&acute;t be loaded into a 3.8xxx image. The
package was created using a 3.9axxx image.<br>
I don&acute;t know why it can't be loaded into a 3.8xxx image, maybe the
Monticello packages are not compatibles between 3.9axxx and 3.8xxx
images.<br>
<br>
If you want, try to load it into a 3.9axxx image.<br>
<br>
Regards<br>
<br>
Maxi.<br>
<br>
Brian Rice escribi&oacute;:
<blockquote cite="mid937CA431-6DDB-4AC0-8B5B-6DE22E3F2245@tunes.org"
 type="cite">This sounds nice. Some comments:
  <br>
  <br>
1) I can't load it. Adding the repository via Monticello and trying to
even select the version in the Monticello browser leads to the attached
error stack.
  <br>
  <br>
  <pre wrap="">
<hr size="4" width="90%">
27 March 2006 6:45:10 pm

VM: Mac OS - a SmalltalkImage
Image: Squeak3.8 [latest update: #6665]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /Users/water/Developer/Squeak
Trusted Dir /Users/water/Developer/Squeak
Untrusted Dir foobar/tooBar/forSqueak/bogus

MCClassDefinition(Object)&gt;&gt;error:
        Receiver: a MCClassDefinition(ArithmeticObject)
        Arguments and temporary variables: 
                aString:         'Instances of MCClassDefinition are not indexable'
        Receiver's instance variables: 
                name:         #ArithmeticObject
                superclassName:         #Object
                variables:         an OrderedCollection()
                category:         #'Aconcagua-ArithmeticModel'
                type:         #normal
                comment:         ''
                commentStamp:         ''

MCClassDefinition(Object)&gt;&gt;errorNotIndexable
        Receiver: a MCClassDefinition(ArithmeticObject)
        Arguments and temporary variables: 

        Receiver's instance variables: 
                name:         #ArithmeticObject
                superclassName:         #Object
                variables:         an OrderedCollection()
                category:         #'Aconcagua-ArithmeticModel'
                type:         #normal
                comment:         ''
                commentStamp:         ''

MCClassDefinition(Object)&gt;&gt;size
        Receiver: a MCClassDefinition(ArithmeticObject)
        Arguments and temporary variables: 

        Receiver's instance variables: 
                name:         #ArithmeticObject
                superclassName:         #Object
                variables:         an OrderedCollection()
                category:         #'Aconcagua-ArithmeticModel'
                type:         #normal
                comment:         ''
                commentStamp:         ''

MCClassDefinition(Object)&gt;&gt;basicAt:put:
        Receiver: a MCClassDefinition(ArithmeticObject)
        Arguments and temporary variables: 
                index:         1
                value:         '{}'
        Receiver's instance variables: 
                name:         #ArithmeticObject
                superclassName:         #Object
                variables:         an OrderedCollection()
                category:         #'Aconcagua-ArithmeticModel'
                type:         #normal
                comment:         ''
                commentStamp:         ''


--- The full stack ---
MCClassDefinition(Object)&gt;&gt;error:
MCClassDefinition(Object)&gt;&gt;errorNotIndexable
MCClassDefinition(Object)&gt;&gt;size
MCClassDefinition(Object)&gt;&gt;basicAt:put:
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MCClassDefinition(Object)&gt;&gt;instVarAt:put:
MCClassDefinition(Object)&gt;&gt;readDataFrom:size:
DataStream&gt;&gt;readInstance
DataStream&gt;&gt;next
DataStream&gt;&gt;readArray
DataStream&gt;&gt;next
OrderedCollection(Object)&gt;&gt;readDataFrom:size:
DataStream&gt;&gt;readInstance
DataStream&gt;&gt;next
MCSnapshot(Object)&gt;&gt;readDataFrom:size:
DataStream&gt;&gt;readInstance
DataStream&gt;&gt;next
[] in MCMczReader&gt;&gt;loadDefinitions {[:m | ^ definitions := (DataStream on: m contentStream) next definitions]}
ZipFileMember(Object)&gt;&gt;ifNotNilDo:
MCMczReader&gt;&gt;loadDefinitions
MCMczReader(MCVersionReader)&gt;&gt;definitions
MCMczReader(MCVersionReader)&gt;&gt;snapshot
MCMczReader(MCVersionReader)&gt;&gt;basicVersion
MCMczReader(MCVersionReader)&gt;&gt;version
[] in MCHttpRepository(MCFileBasedRepository)&gt;&gt;loadVersionFromFileNamed: {[:r | r version]}
[] in MCHttpRepository(MCFileBasedRepository)&gt;&gt;versionReaderForFileNamed:do: {[:class | aBlock   value: (class on: s)]}
MCMczReader class(Object)&gt;&gt;ifNotNilDo:
[] in MCHttpRepository(MCFileBasedRepository)&gt;&gt;versionReaderForFileNamed:do: {[:s | (MCVersionReader readerClassForFileNamed: aString)   ifNotNilDo: [:cla...]}
MCHttpRepository&gt;&gt;readStreamForFileNamed:do:
MCHttpRepository(MCFileBasedRepository)&gt;&gt;versionReaderForFileNamed:do:
MCHttpRepository(MCFileBasedRepository)&gt;&gt;loadVersionFromFileNamed:
[] in MCHttpRepository(MCFileBasedRepository)&gt;&gt;versionFromFileNamed: {[self loadVersionFromFileNamed: aString]}
[] in Dictionary&gt;&gt;at:ifAbsentPut: {[self at: key put: aBlock value]}
Dictionary&gt;&gt;at:ifAbsent:
Dictionary&gt;&gt;at:ifAbsentPut:
MCHttpRepository(MCFileBasedRepository)&gt;&gt;versionFromFileNamed:
MCFileRepositoryInspector&gt;&gt;versionSelection:
PluggableListMorph&gt;&gt;changeModelSelection:
PluggableListMorph&gt;&gt;mouseUp:
PluggableListMorph(Morph)&gt;&gt;handleMouseUp:
MouseButtonEvent&gt;&gt;sentTo:
PluggableListMorph(Morph)&gt;&gt;handleEvent:
PluggableListMorph(Morph)&gt;&gt;handleFocusEvent:
[] in HandMorph&gt;&gt;sendFocusEvent:to:clear: {[ActiveHand := self.  ActiveEvent := anEvent.  result := focusHolder     han...]}
[] in PasteUpMorph&gt;&gt;becomeActiveDuring: {[aBlock value]}
BlockContext&gt;&gt;on:do:
PasteUpMorph&gt;&gt;becomeActiveDuring:
HandMorph&gt;&gt;sendFocusEvent:to:clear:
HandMorph&gt;&gt;sendEvent:focus:clear:
HandMorph&gt;&gt;sendMouseEvent:
HandMorph&gt;&gt;handleEvent:
HandMorph&gt;&gt;processEvents
[] in WorldState&gt;&gt;doOneCycleNowFor: {[:h |  ActiveHand := h.  h processEvents.  capturingGesture := capturingGest...]}
...etc...
  </pre>
  <br>
  <hr size="4" width="90%"><br>
  <br>
  <br>
I opened the version as a Zip file and loaded snapshot/source.st from
it directly, instead, but it is inconvenient.
  <br>
  <br>
2) How does it relate to Helge Horch's Squeak port of Andrew Brault's
Dolphin package? Did you know of this package?
  <br>
  <br>
<a class="moz-txt-link-freetext" href="http://home.netsurf.de/helge.horch/squeak/units.html">http://home.netsurf.de/helge.horch/squeak/units.html</a>
  <br>
  <br>
The code looks more elaborate and complicated (350 kb of source is not
lightweight compared to 51 kb in Helge's package and 21 kb for the
equivalent Slate code) but has the same class names in several places.
However, I cannot tell if this complication is valuable or wasteful,
because there are not enough comments in the source file (actually it
looks like there are NO comments).
  <br>
  <br>
A lot of the extra work appears to be a huge unit-test suite, which is
good. There is also some kind of graph model and some
evaluation/thunking mini-library. These seem to be useful only for
portability (since you are not using other equivalent Squeak packages),
so you may want to separate them for clarity.
  <br>
  <br>
I also am not an ACM member, so I cannot read your paper until OOPSLA.
  <br>
  <br>
3) I like the MeasureBag idea. Does it work for non-Integer values and
why or why not?
  <br>
  <br>
4) "Measure" suggests measurement, which has precision and tolerance.
Do you take these into consideration? If not, why name it Measurement
instead of DimensionedUnit or something? It will be confusing if
someone makes a separate type system that /does/ handle precision and
tolerance.
  <br>
  <br>
Thanks!
  <br>
  <br>
On Mar 27, 2006, at 2:17 PM, Hernan Wilkinson wrote:
  <br>
  <br>
  <blockquote type="cite">Hi,
    <br>
&nbsp;&nbsp; we create a packaged named Aconcagua at SqueakSource.
    <br>
&nbsp;&nbsp; This model represents measures as first class objects, that is, an
object that encapsulates a number with its unit.
    <br>
&nbsp;&nbsp; We uploaded a FAQ to its SqueakSource wiki, with some examples. The
model includes almost 600 tests that can be used as examples also.
    <br>
&nbsp;&nbsp; We use this model in many of the financial applications we wrote and
it is used by the Gregorian Calendar model we are going to upload soon
(the one presented at ESUG last year).
    <br>
&nbsp;&nbsp; The package is going to be available for VisualAge, GemStone,
VisualWorks and Dolphin. (Right now only on Squeak, VisualAge and
GemStone).
    <br>
&nbsp;&nbsp; There is also a practitioner report we wrote for OOPSLA about this
model:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(<a class="moz-txt-link-freetext" href="http://portal.acm.org/citation.cfm?id=1094964&coll=ACM&dl=ACM&CFID=72196433&CFTOKEN=8952623">http://portal.acm.org/citation.cfm?id=1094964&amp;coll=ACM&amp;dl=ACM&amp;CFID=72196433&amp;CFTOKEN=8952623</a>
<a class="moz-txt-link-rfc2396E" href="http://portal.acm.org/citation.cfm?id=1094964&coll=ACM&dl=ACM&CFID=72196433&CFTOKEN=8952623">&lt;http://portal.acm.org/citation.cfm?id=1094964&amp;coll=ACM&amp;dl=ACM&amp;CFID=72196433&amp;CFTOKEN=8952623&gt;</a>)
    <br>
&nbsp;&nbsp; We hope you like it.
    <br>
&nbsp;&nbsp; Bye, Hernan.
    <br>
  </blockquote>
--
  <br>
-Brian
  <br>
<a class="moz-txt-link-freetext" href="http://tunes.org/~water/brice.vcf">http://tunes.org/~water/brice.vcf</a>
  <br>
  <br>
  <pre wrap="">
<hr size="4" width="90%">

  </pre>
</blockquote>
</body>
</html>