Discussion:
(fwd) [Test-Runner Results] Squeak3.6beta latest update: #5411
Daniel Vainsencher
2012-01-28 11:30:18 UTC
Permalink
Well, the short of it is we've got ourselves a test server. Unless
someone objects, I'll be sending these in weekly.

A while back Markus Gaelli put up on SM a package that automates running
tests and sending a report to the list.

Since I'd like us to make the most of the Basic image tests suite that
Marcus Denker maintains, I've decided to put them both to work. The way
I'm automating running it is by using a weekly (?) cron job to run an
scsh script (below) that gets the latest image, runs it with a short
script that loads Markus' code, which does the rest. Because that
package knows to load updates before running the tests, this will
reflect the latest available.

Some caveats of this approach -
* This is a temporary solution - my machine is not a server.
* It doesn't make nice webified statistics, or any kind of web
interface, or statistics, really.
* Due to some SMTP authentication requirements, for now I'll forward the
mails manually, like this.
* I don't know how to automate getting the image from the correct
most-bleeding-edge directory. I've hard coded 3.6beta for now and will
change it manually. Can we have a currentBleedingEdge symbolic link in
the ftp servers?

However, Markus' code is pretty nicely done, so that people can actually
quite easily set this up in similar ways to automate running the test
suites of their own code.

Daniel

====forwarded====
From: ***@netvision.net.il
Subject: [Test-Runner Results] Squeak3.6beta latest update: #5411
To: ***@netvision.net.il
Message-id: <***@mxout2.netvision.net.il>
Content-transfer-encoding: 7BIT

482 run, 436 passed, 37 failed, 9 errors
Failures:
TextFontChangeTest>>#testHash
BitmapStreamTests>>#testShortPointArrayWithSmartRefStreamOnDisk
BitBltTest>>#testAlphaCompositing2
TestsForTextAndTextStreams>>#testReplacementAtStartPos2
BitmapStreamTests>>#testShortIntegerArrayWithSmartRefStreamOnDisk
TestsForTextAndTextStreams>>#testExampleText1
FlashLineStyleTest>>#testHash
TestsForTextAndTextStreams>>#testReplacement2
AtomMorphTest>>#testClassComment
PointTest>>#testUnCategorizedMethods
TextFontReferenceTest>>#testHash
WeakMessageSendTest>>#testClassComment
TextEmphasisTest>>#testHash
NumberTest>>#testUnCategorizedMethods
CRLookupItemTest>>#testHash
MorphTest>>#testIntoWorldTransferToNewGuy
TextKernTest>>#testHash
ExceptionTests>>#testSimpleOuter
TextLineTest>>#testHash
BitmapStreamTests>>#testShortRunArrayWithSmartRefStreamOnDisk
BitmapStreamTests>>#testShortRunArrayWithRefStreamOnDisk
EventManagerTest>>#testClassComment
TestsForTextAndTextStreams>>#testExampleText2
ClassRenameFixTest>>#testRenameClassUsingSystemDictionary
TextAnchorTest>>#testHash
TestsForTextAndTextStreams>>#testRangeDetection1
TextStyleTest>>#testHash
MethodReferenceTest>>#testClassComment
BitBltTest>>#testAlphaCompositing
AtomMorphTest>>#testUnCategorizedMethods
IntervalTest>>#testEquals
TestsForTextAndTextStreams>>#testRangeDetection3
TextAlignmentTest>>#testHash
BitmapStreamTests>>#testShortIntegerArrayWithRefStreamOnDisk
TestsForTextAndTextStreams>>#testRangeDetection2
BlockContextTest>>#testWording
BitmapStreamTests>>#testShortPointArrayWithRefStreamOnDisk
Errors
TestsForTextAndTextStreams>>#testExampleRunArray4
BitmapStreamTests>>#testShortIntegerArrayWithRefStream
BitmapStreamTests>>#testShortIntegerArrayWithSmartRefStream
BitmapStreamTests>>#testShortPointArrayWithRefStream
BitmapStreamTests>>#testShortPointArrayWithSmartRefStream
BitmapStreamTests>>#testShortRunArrayWithRefStream
BitmapStreamTests>>#testShortRunArrayWithSmartRefStream
IntervalTest>>#testEquals2
IntervalTest>>#testEquals4
ducasse
2012-01-28 11:30:18 UTC
Permalink
Excellent, this is the way to go. Daniel did you get your code with
tests for people to learn how to write test?
I'm really thinking that having a lecture on writing tests would be
really excellent.

Lukas asked us if he can use a machine from here to work as a server
and I do not see why this would be a problem. So you will have a server
running in the future ;)

Contact lukas but now he is in final release of SmallWiki and we
started to simplify it yesterday to use css for the layouting and we
will be working on a documentation so be patient....

Stef
Post by Daniel Vainsencher
Well, the short of it is we've got ourselves a test server. Unless
someone objects, I'll be sending these in weekly.
A while back Markus Gaelli put up on SM a package that automates
running
tests and sending a report to the list.
Since I'd like us to make the most of the Basic image tests suite that
Marcus Denker maintains, I've decided to put them both to work. The way
I'm automating running it is by using a weekly (?) cron job to run an
scsh script (below) that gets the latest image, runs it with a short
script that loads Markus' code, which does the rest. Because that
package knows to load updates before running the tests, this will
reflect the latest available.
Some caveats of this approach -
* This is a temporary solution - my machine is not a server.
* It doesn't make nice webified statistics, or any kind of web
interface, or statistics, really.
* Due to some SMTP authentication requirements, for now I'll forward
the
mails manually, like this.
* I don't know how to automate getting the image from the correct
most-bleeding-edge directory. I've hard coded 3.6beta for now and will
change it manually. Can we have a currentBleedingEdge symbolic link in
the ftp servers?
However, Markus' code is pretty nicely done, so that people can
actually
quite easily set this up in similar ways to automate running the test
suites of their own code.
Daniel
====forwarded====
Subject: [Test-Runner Results] Squeak3.6beta latest update: #5411
Content-transfer-encoding: 7BIT
482 run, 436 passed, 37 failed, 9 errors
TextFontChangeTest>>#testHash
BitmapStreamTests>>#testShortPointArrayWithSmartRefStreamOnDisk
BitBltTest>>#testAlphaCompositing2
TestsForTextAndTextStreams>>#testReplacementAtStartPos2
BitmapStreamTests>>#testShortIntegerArrayWithSmartRefStreamOnDisk
TestsForTextAndTextStreams>>#testExampleText1
FlashLineStyleTest>>#testHash
TestsForTextAndTextStreams>>#testReplacement2
AtomMorphTest>>#testClassComment
PointTest>>#testUnCategorizedMethods
TextFontReferenceTest>>#testHash
WeakMessageSendTest>>#testClassComment
TextEmphasisTest>>#testHash
NumberTest>>#testUnCategorizedMethods
CRLookupItemTest>>#testHash
MorphTest>>#testIntoWorldTransferToNewGuy
TextKernTest>>#testHash
ExceptionTests>>#testSimpleOuter
TextLineTest>>#testHash
BitmapStreamTests>>#testShortRunArrayWithSmartRefStreamOnDisk
BitmapStreamTests>>#testShortRunArrayWithRefStreamOnDisk
EventManagerTest>>#testClassComment
TestsForTextAndTextStreams>>#testExampleText2
ClassRenameFixTest>>#testRenameClassUsingSystemDictionary
TextAnchorTest>>#testHash
TestsForTextAndTextStreams>>#testRangeDetection1
TextStyleTest>>#testHash
MethodReferenceTest>>#testClassComment
BitBltTest>>#testAlphaCompositing
AtomMorphTest>>#testUnCategorizedMethods
IntervalTest>>#testEquals
TestsForTextAndTextStreams>>#testRangeDetection3
TextAlignmentTest>>#testHash
BitmapStreamTests>>#testShortIntegerArrayWithRefStreamOnDisk
TestsForTextAndTextStreams>>#testRangeDetection2
BlockContextTest>>#testWording
BitmapStreamTests>>#testShortPointArrayWithRefStreamOnDisk
Errors
TestsForTextAndTextStreams>>#testExampleRunArray4
BitmapStreamTests>>#testShortIntegerArrayWithRefStream
BitmapStreamTests>>#testShortIntegerArrayWithSmartRefStream
BitmapStreamTests>>#testShortPointArrayWithRefStream
BitmapStreamTests>>#testShortPointArrayWithSmartRefStream
BitmapStreamTests>>#testShortRunArrayWithRefStream
BitmapStreamTests>>#testShortRunArrayWithSmartRefStream
IntervalTest>>#testEquals2
IntervalTest>>#testEquals4
Daniel Vainsencher
2012-01-28 11:30:18 UTC
Permalink
Post by ducasse
Excellent, this is the way to go. Daniel did you get your code with
tests for people to learn how to write test?
Nope, Alex is on the road, he said he can send it to me on the weekend,
so I'll have it ready for an initial release sometime next week.
Post by ducasse
I'm really thinking that having a lecture on writing tests would be
really excellent.
We'll see how useful people find the tutorial in test format. It might
be good to have a few more kinds of code in the tutorial - right now it
is very basic - only a straight algorithm. For example, it doesn't
teach/require use of setUp, because there is no state.
Post by ducasse
Lukas asked us if he can use a machine from here to work as a server
and I do not see why this would be a problem. So you will have a server
running in the future ;)
Cool. If there's a problem, the squeakfoundation machine that holds
SqueakMap could also take this duty. However, I think before putting
this thing on a remote server, it would be nice to have easier
maintainance (autodetect the latest alpha directory) and some more
flexibility. For example, Markus' code can be used by a web server,
which could have a simple interface - give it a url for a load script,
press the button, and you get test results...

Unless somebody else wants to do a webserver, though, I'll settle for
resolving the last automation issues, and put it up at some server.

Daniel
Andreas Raab
2012-01-28 11:30:18 UTC
Permalink
"Change Set: MissingHashes-ar
Date: 9 September 2003
Author: Andreas Raab

Provides ten missing #hash implementations as pointed out by the base image
tests thus removing the number of failed tests by ten."
-------------- next part --------------
A non-text attachment was scrubbed...
Name: MissingHashes-ar.cs
Type: application/octet-stream
Size: 1903 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20030909/3a7b0e3c/MissingHashes-ar.obj
Mike Roberts
2012-01-28 11:30:18 UTC
Permalink
Post by Andreas Raab
"Change Set: MissingHashes-ar
Date: 9 September 2003
Author: Andreas Raab
Provides ten missing #hash implementations as pointed out by the base image
tests thus removing the number of failed tests by ten."
Hi Andreas,

Did you not see the change set that I posted (20th Aug) that contained these?

I posted two change sets, one that contained the tests and one that contained the fixes.

I was waiting for someone to review them....

... and to see how the harvesting process worked - I didn't want to be pushy. Seemingly, something hasn't quite worked. This is the third time that these have been posted to the list :-)

What did I do wrong?

Confused :-)

Cheers

Mike
Ned Konz
2012-01-28 11:30:18 UTC
Permalink
Post by Daniel Vainsencher
* I don't know how to automate getting the image from the correct
most-bleeding-edge directory. I've hard coded 3.6beta for now and
will change it manually. Can we have a currentBleedingEdge symbolic
link in the ftp servers?
"Download the latest image if necessary; extract the zip to the
default directory."

list _ (HTTPClient httpGet:
'http://update.squeakfoundation.org/external/updates/updates.list')
contents.
versions _ (list findTokens: String crlf) select: [ :line | line
beginsWith: '#' ].
bleedingEdge _ versions last copyFrom: 8 to: versions last size.
ftpDirectory _ ServerDirectory on:
('ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/', bleedingEdge).
latestImage _ (ftpDirectory getFileList contents findTokens: String
crlf) asSortedCollection last.
(FileDirectory default fileExists: latestImage) ifFalse: [ | zipStream
client |
zipStream _ FileDirectory default newFileNamed: latestImage.
client _ ftpDirectory openFTPClient.
client binary.
client getFileNamed: latestImage into: zipStream.
zipStream close.
].
zip _ ZipArchive new readFrom: latestImage.
zip members do: [ :m | zip extractMember: m ].
--
Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE
Andreas Raab
2012-01-28 11:30:18 UTC
Permalink
Hi,
Post by Mike Roberts
Did you not see the change set that I posted (20th Aug) that
contained these?
ARGH!!! I _hate_ having to manually update stuff. I looked for any "*hash*"
changes and didn't see any except your TextFontChange>>hash post. Just
realized this when I didn't see my own post. Then I updated and then it was
there.

Sigh. Can't BFAV do a quick check if there may be any pending updates and
tell us about it (maybe by adding another red border or something)? Just so
it's Really Clear (tm) that it is not up to date?
Post by Mike Roberts
What did I do wrong?
Nothing.
Post by Mike Roberts
Confused :-)
Hopefully no longer ;-)

Cheers,
- Andreas
Bert Freudenberg
2012-01-28 11:30:18 UTC
Permalink
Post by Andreas Raab
Sigh. Can't BFAV do a quick check if there may be any pending updates and
tell us about it (maybe by adding another red border or something)? Just so
it's Really Clear (tm) that it is not up to date?
That would be rather complex. BFAV would have to check this URL
http://swiki.gsug.org/sqfixes/last
and parse a number! That would take *minutes* to implement I guess.
Infortunately I'm *way* too busy now :-(
--
Bert
Daniel Vainsencher
2012-01-28 11:30:18 UTC
Permalink
Thanks, didn't know the version name was part of the updates.list. Is
that definitely linked to the ftp directory name?

My scsh script ended up looking like this -
***************
#!/usr/bin/scsh -s
!#

(define versionname
(string-drop
(last (filter (lambda (s) (string-prefix? "#" s))
(run/strings (|
(curl -s "http://update.squeakfoundation.org/external/updates/updates.list")
(tr "\r" "\n")))))
7))

(define ftpdir
(string-append
"ftp://ftp.squeakfoundation.org/official-dist/"
versionname
"/"))

(define imagename
(string-drop-right
(last (string-tokenize (last (run/strings (curl -s ,ftpdir)))))
4))

(run (wget ,(string-append ftpdir imagename ".zip")))

(run (unzip -o ,(string-append imagename ".zip")))

(run (squeak -memory 64M ,(string-append imagename ".image")
runTests.st))
******************
where runTests.st is a short script that loads and runs Markus' code.

scsh is currently my favorite shell language (which isn't hard, I hate
most of them ;-).

Daniel
Post by Ned Konz
Post by Daniel Vainsencher
* I don't know how to automate getting the image from the correct
most-bleeding-edge directory. I've hard coded 3.6beta for now and
will change it manually. Can we have a currentBleedingEdge symbolic
link in the ftp servers?
"Download the latest image if necessary; extract the zip to the
default directory."
'http://update.squeakfoundation.org/external/updates/updates.list')
contents.
versions _ (list findTokens: String crlf) select: [ :line | line
beginsWith: '#' ].
bleedingEdge _ versions last copyFrom: 8 to: versions last size.
('ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/', bleedingEdge).
latestImage _ (ftpDirectory getFileList contents findTokens: String
crlf) asSortedCollection last.
(FileDirectory default fileExists: latestImage) ifFalse: [ | zipStream
client |
zipStream _ FileDirectory default newFileNamed: latestImage.
client _ ftpDirectory openFTPClient.
client binary.
client getFileNamed: latestImage into: zipStream.
zipStream close.
].
zip _ ZipArchive new readFrom: latestImage.
zip members do: [ :m | zip extractMember: m ].
--
Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE
Ned Konz
2012-01-28 11:30:18 UTC
Permalink
Post by Daniel Vainsencher
Thanks, didn't know the version name was part of the updates.list.
Is that definitely linked to the ftp directory name?
No, but it seems as if whoever makes the directories is choosing
predictable names <g>.
--
Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE
Ned Konz
2012-01-28 11:30:18 UTC
Permalink
Post by Daniel Vainsencher
scsh is currently my favorite shell language (which isn't hard, I
hate most of them ;-).
Have you tried David Lewis' CommandShell? You can intermingle shell
commands with Squeak expressions, all inside Squeak.
--
Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE
Alan Grimes
2012-01-28 11:30:18 UTC
Permalink
Dudes, Squeak rules but currently there are the following configuration
managment problems:

1. The Sourceforge CVS repository is unsynced with the VM source that
the current Squeak immage/vmmaker creates... My suggested fix is to go
ahead and update the C-code generator to generate the foo structure
because it will be useful for a later paralellization effort and because
it delivers the previously mentioned performance boosts on some RISC
platforms...

2. The Sourceforge CVS archive is unsynched with Ian's source in that it
doesn't contain the recient addition of the /unix/vm-display-fbdev
driver (among a growing list of conflicts I would wager...) Ian doesn't
like CVS very much but, to the best of my knowlege, the CVS repository
is the official source repository???? So I suggest that someone who is
comfortable with CVS and has the appropriate authority, go in and synch
up the conflicts....
--
"Nobody wants to say how this works. Mabye nobody knows."
- The man page for XF86Config, One of the key config files
behind
the software driving the overwhealming majority of Linux desktops.

http://users.rcn.com/alangrimes/
Tim Rowledge
2012-01-28 11:30:18 UTC
Permalink
Post by Alan Grimes
1. The Sourceforge CVS repository is unsynced with the VM source that
the current Squeak immage/vmmaker creates... My suggested fix is to go
ahead and update the C-code generator to generate the foo structure
It already does. Has done for several releases. The _unix_ vms have not
been using the global struct option but Ian seems to be in the process
of changing that. See Ian's message 'Re: [BUG][VM] 3.6-beta11 compilet
problem' of 5 Sept 2003 22:30.
Post by Alan Grimes
2. The Sourceforge CVS archive is unsynched with Ian's source in that it
doesn't contain the recient addition of the /unix/vm-display-fbdev
driver (among a growing list of conflicts I would wager...)
Are you sure? Ian has been blitzing CVS like a madman over the last two
or three weeks. Mind you he hasn't sent me the VMMaker related
changeset he promised yet....

tim
--
Tim Rowledge, ***@sumeru.stanford.edu, http://sumeru.stanford.edu/tim
Useful random insult:- Has a pulse, but that's about all.
Ian Piumarta
2012-01-28 11:30:18 UTC
Permalink
On Tue, 9 Sep 2003, Alan Grimes wrote:

Dude,
Post by Alan Grimes
2. The Sourceforge CVS archive is unsynched with Ian's source in that it
doesn't contain the recient addition of the /unix/vm-display-fbdev
Err...

emilia$ pwd
/Users/piumarta/squeak/SF/platforms/unix
emilia$ ls -d vm-*
vm-display-Quartz vm-display-null vm-sound-OSS
vm-display-X11 vm-sound-MacOSX vm-sound-Sun
vm-display-fbdev vm-sound-NAS vm-sound-null
emilia$ cd vm-display-fbdev/
emilia$ cvs -nz3 update
***@cvs.sourceforge.net's password:
cvs server: Updating .
emilia$ ls -ld .
drwxr-xr-x 3 piumarta admin 1024 Aug 22 18:53 .
emilia$

On the other hand, ***@SF is completely, totally, hopelessly,
wretchedly broken. If you don't see something in there, that doesn't mean
it hasn't been in there for weeks. (It wouldn't surprise me if their cvs
pserver is broken to the same degree.)
Post by Alan Grimes
driver (among a growing list of conflicts I would wager...)
Actually the only conflict between my sources and the SF tree right now is
this:

< sqUnixX11.c: sscanf(argv[1], "%i", &browserPipes[1]);

which should say
Post by Alan Grimes
sqUnixX11.c: sscanf(argv[2], "%i", &browserPipes[1]);
(but since nobody [other than Ned] has noticed npsqueak being broken, I
was attending to several more pressing matters in the meantime, rather
than releasing a beta12.)
Post by Alan Grimes
Ian doesn't like CVS very much
He loves CVS (almost as much as he loves rsync ;). Almost every line of
code he writes is under CVS control. (But you're kind of tangentially
right, in that he doesn't like SourceForge particularly much.)
Post by Alan Grimes
but, to the best of my knowlege, the CVS repository is the official
source repository????
Can't speak for the rest of the tree, but the official repository for Unix
is the disk on our fileserver at work (to which my sources are rsynced
after ever single change, and then backed up by dorotech to optical disk
every night). I export my source into my local SF tree and commit the
changes to SF every time I make a beta -- but the files at SF (and in the
.src.* archives) are not the same as those in my working sources (amongst
other things, the boilerplate is bolted on automatically during export).
So think of SF more as a cache (incomplete -- since there's no src
subtree) for what goes into my *.src.* archives.
Post by Alan Grimes
So I suggest that someone who is comfortable with CVS and has the
appropriate authority, go in and synch up the conflicts....
There are none. Any attempt to "fix" them will CREATE SOME. If the jury
requires some kind of proof:

emilia$ pwd
/Users/piumarta/squeak/SF
emilia$ ls
CVS platforms
emilia$ cvs -qnz3 update
***@cvs.sourceforge.net's password:
emilia$

i.e., no conflicts at all between the sources in my local SF tree
(corresponding to beta11) and those in the repository.

And that concludes the case for the defense, your honour. ;)

Cheers,
Ian
Alan Grimes
2012-01-28 11:30:18 UTC
Permalink
Post by Ian Piumarta
Post by Alan Grimes
2. The Sourceforge CVS archive is unsynched with Ian's source in that
it doesn't contain the recient addition of the /unix/vm-display-fbdev
Err...
emilia$ pwd
/Users/piumarta/squeak/SF/platforms/unix
emilia$ ls -d vm-*
vm-display-Quartz vm-display-null vm-sound-OSS
vm-display-X11 vm-sound-MacOSX vm-sound-Sun
vm-display-fbdev vm-sound-NAS vm-sound-null
emilia$ cd vm-display-fbdev/
emilia$ cvs -nz3 update
cvs server: Updating .
emilia$ ls -ld .
drwxr-xr-x 3 piumarta admin 1024 Aug 22 18:53 .
emilia$
Judging from this cut-and-past, the CVS server never heard of
vm-display-fbdev .

***@AlonzoGC:/home/atg/source/squeak> cvs update
? bld
? experamental
? platforms/unix/vm-display-fbdev
? platforms/unix/config/autom4te.cache/requests
? platforms/unix/config/autom4te.cache/output.0
? platforms/unix/config/autom4te.cache/traces.0
cvspserver server: Updating .
cvspserver server: Updating platforms
cvspserver server: Updating platforms/Cross
cvspserver server: Updating platforms/Cross/plugins
cvs [update aborted]: received interrupt signal
***@AlonzoGC:/home/atg/source/squeak>

/////////////////////////////////////

And, ofcourse, when I try to build it, it does this: (Yes I know my
build environment is horribly shot but I don't think that caused
this...)

***@AlonzoGC:/home/atg/source/squeak/bld> make
gcc -g -O2 -fomit-frame-pointer -DLSB_FIRST=1 -DHAVE_CONFIG_H
-DSQUEAK_BUILTIN_PLUGIN -I/home/atg/
source/squeak/bld -I/home/atg/source/squeak/platforms/unix/vm
-I/home/atg/source/squeak/platforms/Cr
oss/vm -I/home/atg/source/squeak/platforms/Cross/vm
-I/home/atg/source/squeak/platforms/unix/vm -I/h
ome/atg/source/squeak/src/vm
-I/home/atg/source/squeak/platforms/Cross/plugins/FilePlugin -I/home/at
g/source/squeak/platforms/unix/plugins/B3DAcceleratorPlugin
-I/home/atg/source/squeak/bld -I/home/at
g/source/squeak/platforms/unix/vm
-I/home/atg/source/squeak/platforms/Cross/vm -I/usr/X11R6/include
-c -o gnu-interp.o gnu-interp.c
gnu-interp.c: In function `primitiveResponse':
gnu-interp.c:16155: error: `foo' undeclared (first use in this function)
gnu-interp.c:16155: error: (Each undeclared identifier is reported only
once
gnu-interp.c:16155: error: for each function it appears in.)
make[1]: *** [gnu-interp.o] Error 1
make: *** [vm/vm.a] Error 2
***@AlonzoGC:/home/atg/source/squeak/bld>
--
"Nobody wants to say how this works. Mabye nobody knows."
- The man page for XF86Config, One of the key config files
behind
the software driving the overwhealming majority of Linux desktops.

http://users.rcn.com/alangrimes/
Alan Grimes
2012-01-28 11:32:07 UTC
Permalink
Now that I've actually started to concentrate on Sphere somewhat with
reciently stabalized VM, I have made enough progress that I can lay out
a timetable for its development.

Because a few people expressed an interest in either Sphere or squeak
running without an OS as well as other related topics, I hope this
posting will be of some use.


1. Design -- long DONE.
2. class bones in progress/largely done, available on my website:

users.rcn.com/alangrimes/UCE/Sphere-Base.st << updated just today
(requires graph container class..)

users.rcn.com/alangrimes/UCE/Sphere-Core.st
users.rcn.com/alangrimes/UCE/Sphere-Devel.st << also updated.


3. Sphere Demo version: in work

Morphical representation of Sphere with realtime visualizations of
sphere's basic operations, abstractions, and security mechanisms.
A debugger customized for Sphere...

The goal being to demonstrate all of the essential features of Sphere
except the loading of user software.


4. The completion of a fully functional valid sphere implementation
running on the bare Squeak VM.
-- the beginning of a colossaly major refactoring of the immage which
will likley end up as a fork of the system so that it can take full
advantage of Sphere's features.

5. adding multithreading to the VM so that Squeak-Sphere can function as
a reasonably high-performance guest operating system on some host
platform.

-- hopefully I will have the means at this point to obtain some
reasonably decient RISC hardware...

6. the work necessary to make Squeak a full-fledged hardware-level
operating system capable of running spheres from either Sqeaktalk or any
binary immage.
--
Windows 3.11: Almost exactly 10 years old,
and -400% slower than windows XP. ;)

http://users.rcn.com/alangrimes/
Alan Grimes
2012-01-28 11:33:07 UTC
Permalink
Hello,

Today I'm writing as an entrepreneur trying to assemble a business plan.
I'm trying to guage how much it would cost/how much you would charge to
accomplish the following two milestones:

1. make a bootable, self-building (no more C) VM for a reasonably
well-designed machine (that is not a PC). including a filesystem and
interrupt driven IO.

2. make scamper W3C compliant and give it sufficient capabilities to be
a viable if not prefferable alternative to Internet Exploder.

All I need is a ballpark, not necessarily a specific quote.

-- thanx. =)
--
Windows 3.11: Almost exactly 10 years old,
and -400% slower than windows XP. ;)

http://users.rcn.com/alangrimes/
Tim Rowledge
2012-01-28 11:33:07 UTC
Permalink
Post by Alan Grimes
Hello,
Today I'm writing as an entrepreneur trying to assemble a business plan.
I'm trying to guage how much it would cost/how much you would charge to
1. make a bootable, self-building (no more C) VM for a reasonably
well-designed machine (that is not a PC). including a filesystem and
interrupt driven IO.
I can offer some thought on this part, having done something like it
several times.

Avoiding C might be more trouble than it is worth. Unless you really,
truly, have a setup where it cannot be used, don't just throw it out.
Building a total compiler is not impossible (I have code for one
successful example on my website) but is tricky and costs a good deal
of maintenance work to keep up to date. You have to be able to generate
the code (duh) and insert it into memory in a way that doesn't upset
the OS (does this machine have one?) and manage the cache(s).

Not having a preexisting GUI is actually a benefit in my opinion because
you can take over the machine and actually make use of hardware
interrupts to drive the IO. You get to drive the display directly as
well which is nice until you need 2/3D hardware acceleration. Had fun
writing device drivers recently? It's like banging your head against a
spiked brick wall but worse.

Theres a non-trivial amount of work for all this. More details need for
anything better than an estimate of "you must give me One Million
Dollars" (white cat not included, offer void where prohibited by lore
etc)
Post by Alan Grimes
2. make scamper W3C compliant and give it sufficient capabilities to be
a viable if not prefferable alternative to Internet Exploder.
THat's a scary spec to ponder. My guess is LOTS of work. Think how many
people work on the big browsers.


tim
--
Tim Rowledge, ***@sumeru.stanford.edu, http://sumeru.stanford.edu/tim
Useful random insult:- All booster, no payload.
Cees de Groot
2012-01-28 11:33:09 UTC
Permalink
Post by Tim Rowledge
Avoiding C might be more trouble than it is worth.
I agree. For an embedded SqueakMachine, I'd use Linux+current VM. It's a
negligible amount of overhead, and suddenly it'll run on most hardware
you care to throw at it.
Post by Tim Rowledge
THat's a scary spec to ponder. My guess is LOTS of work. Think how many
people work on the big browsers.
Well, I'd imagine that starting from scratch and doing a *clean* HTML
4.STRICT with CSS support browser (which is, as far as I'm concerned, is
the W3C spec) is a reasonable amount of work (couple of months, I'd
guess). Don't forget, Tim, that all these teams are working in C/C++ ;-)

It gets hard when you want to render all the obsolete garbage that is
out there - that would indeed bump up my estimate to "whatever you've
got in your pocket"...
--
Cees de Groot http://www.tric.nl <***@tric.nl>
tric, the new way helpdesk/ticketing software, VoIP/CTI,
web applications, custom development
Avi Bryant
2012-01-28 11:33:09 UTC
Permalink
Post by Cees de Groot
Well, I'd imagine that starting from scratch and doing a *clean* HTML
4.STRICT with CSS support browser (which is, as far as I'm concerned, is
the W3C spec) is a reasonable amount of work (couple of months, I'd
guess). Don't forget, Tim, that all these teams are working in C/C++ ;-)
I think that's roughly what with:Style is, for VisualWorks. See
http://www.softwarewithstyle.com.
John Maloney
2012-01-28 11:33:10 UTC
Permalink
Mike,

As Ned pointed out, and as you suspected yourself, the problem you're having
is one of context. You were trying to evaluate an expression with an assignment
to a variable such as "c" in a context where that varible did not exist as either
a local variable, an instance variable, or a workspace binding.

One simple thing you could do is to use a capital letter variable to indicate that
it should be a global variable. You need to first create that variable by assigning
to it in a workspace. For example, you could do:

A _ nil.

to create the global variable "A", then

Compiler evaluate:: 'A _ 17'

An alternative is to declare you variables as locals in the expression
to be evaluated like this:

Compiler evaluate: '| a b | a _ 6. b _ 7. a * b'

It's true that when you evaluate expressions in a Workspace, it maintains
a set of variable bindings local to that workspace. I looked at trying to
hand the compiler my own instance of a Workspace but it got messy.

It sounds as though you'll need to create new variables dynamically,
and you're not sure how many you might need. In that case, you
might be better off putting all your bindings into a big array and
referring to variables by index. Or use a dictionary and refer to
variables values with expressions like "dict at: 'a'". But most likely
there's a simpler way to implement your decision tree in Smalltalk
that wasn't an option in LISP because it lacks objects.

-- John
Joshua 'Schwa' Gargus
2012-01-28 11:33:07 UTC
Permalink
Post by Alan Grimes
Hello,
Today I'm writing as an entrepreneur trying to assemble a business plan.
I'm trying to guage how much it would cost/how much you would charge to
1. make a bootable, self-building (no more C) VM for a reasonably
well-designed machine (that is not a PC). including a filesystem and
interrupt driven IO.
Why would your business plan require this, rather than just use a
minimal Linux (or whatever OS will run on your hardware), especially
since people like Mike Rueger and Dan Ingalls have already been
working on this?
Post by Alan Grimes
2. make scamper W3C compliant and give it sufficient capabilities to be
a viable if not prefferable alternative to Internet Exploder.
I don't think that you could do this economically. Look at how much
work has gone into various other open source web browsers... how much
would eg: Konqueror cost to develop if it wasn't done by volunteers?
Even if you divide that cost by 5 (because Squeak is so great), you
still wouldn't want to pay it.

If I had to do this, I would figure out how to embed Gecko or some
other free html renderer into Squeak, not how to write it from
scratch.
Post by Alan Grimes
All I need is a ballpark, not necessarily a specific quote.
$250000 for the pair, if you're very lucky

(Based on USA wages. Bear in mind that I'm not the guy for this, so
my figure may not be too accurate)

I'm curious to hear others' guesses.


Joshua
Post by Alan Grimes
-- thanx. =)
--
Windows 3.11: Almost exactly 10 years old,
and -400% slower than windows XP. ;)
http://users.rcn.com/alangrimes/
Ian Piumarta
2012-01-28 11:30:18 UTC
Permalink
Hi Alan,
Post by Alan Grimes
Judging from this cut-and-past, the CVS server never heard of
vm-display-fbdev .
? platforms/unix/vm-display-fbdev
Like I said: it wouldn't surprise me if their cvs pserver is broken to the
same degree.

OTOH, if you got the vm-display-fbdev dir from the archive (not from the
repository) then there's no CVS subdir in it -- and cvs is entirely
reasonable in being confused about it.

Try moving it aside and then doing this from the root of your SF tree:

cvs -z3 co platforms/unix/vm-display-fbdev

If that works, then you might want to peruse one or both of these:

http://www.loria.fr/~molli/cvs/doc/cvs_toc.html
http://www.loria.fr/~molli/cvs-index.html
Post by Alan Grimes
And, ofcourse, when I try to build it, it does this: (Yes I know my
build environment is horribly shot but I don't think that caused
this...)
You need the changeset that I posted in the mesasge to which Tim just
referred.

Cheers,
Ian
Ian Piumarta
2012-01-28 11:30:19 UTC
Permalink
Tim,
Post by Tim Rowledge
or three weeks. Mind you he hasn't sent me the VMMaker related
changeset he promised yet....
Attached. (Along with the new sqGnu.h that makes use of the additional
info [and renders the changesets optional], in case anybody wants it right
away.)

Ian



-------------- next part --------------
'From Squeak3.6beta of ''4 July 2003'' [latest update: #5411] on 10 September 2003 at 5:58:34 am'!
"Change Set: VMMUnix-ikp
Date: 10 September 2003
Author: Ian Piumarta

Unix VMs now use the global structure."!

VMMaker subclass: #UnixVMMaker
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'VMMaker-Building'!

!UnixVMMaker methodsFor: 'initialisation' stamp: 'ikp 8/25/2003 00:00'!
createCodeGenerator

^CCodeGeneratorGlobalStructure new
initialize;
globalStructDefined: true! !


!UnixVMMaker class methodsFor: 'initialisation' stamp: 'ikp 8/25/2003 00:13'!
isActiveVMMakerClassFor: platformName

^platformName = 'unix'! !

-------------- next part --------------
'From Squeak3.6beta of ''4 July 2003'' [latest update: #5411] on 10 September 2003 at 5:58:29 am'!
"Change Set: VMMGlobals-ikp
Date: 10 September 2003
Author: Ian Piumarta

Define the preprocessor symbol SQ_USE_GLOBAL_STRUCT to 1 before including the sq.h header file in interp.c."!


!CCodeGenerator methodsFor: 'C code generator' stamp: 'ikp 9/10/2003 05:52'!
emitCHeaderOn: aStream
"Write a C file header onto the given stream."

aStream nextPutAll: '/* Automatically generated from Squeak on '.
aStream nextPutAll: Time dateAndTimeNow printString.
aStream nextPutAll: ' */'; cr; cr.
self emitGlobalStructFlagOn: aStream.
aStream nextPutAll: '#include "sq.h"'; cr.

"Additional header files"
headerFiles do:[:hdr|
aStream nextPutAll:'#include '; nextPutAll: hdr; cr].

aStream nextPutAll: '
/* memory access macros */
#define byteAt(i) (*((unsigned char *) (i)))
#define byteAtput(i, val) (*((unsigned char *) (i)) = val)
#define longAt(i) (*((int *) (i)))
#define longAtput(i, val) (*((int *) (i)) = val)

int printCallStack(void);
void error(char *s);
void error(char *s) {
/* Print an error message and exit. */
static int printingStack = false;

printf("\n%s\n\n", s);
if (!!printingStack) {
/* flag prevents recursive error when trying to print a broken stack */
printingStack = true;
printCallStack();
}
exit(-1);
}
'.
aStream cr.! !

!CCodeGenerator methodsFor: 'C code generator' stamp: 'ikp 9/10/2003 05:53'!
emitGlobalStructFlagOn: aStream
"Default: do nothing. Overridden in CCGenGlobalStruct."
! !


!CCodeGeneratorGlobalStructure methodsFor: 'C code generator' stamp: 'ikp 9/10/2003 05:55'!
emitGlobalStructFlagOn: aStream
"Define SQ_USE_GLOBAL_STRUCT before including the header."

aStream nextPutAll: '#define SQ_USE_GLOBAL_STRUCT 1'; cr; cr! !

-------------- next part --------------
/* Definitions for "gnuified" interp.c
*
* @copyright@
*/

/* Author: ***@inria.fr
*
* Last edited: 2003-09-10 06:01:29 by piumarta on emilia.inria.fr
*
* NOTES:
* this file is #included IN PLACE OF sq.h
*/

#include "sq.h"

#define CASE(N) case N: _##N:

#if defined(__powerpc__) || defined(PPC) || defined(_POWER) || defined(_IBMR2) || defined(__ppc__)
# define JUMP_TABLE_PTR ; register void **jumpTableP JP_REG; jumpTableP= &jumpTable[0]
# define BREAK goto *jumpTableP[currentBytecode]
#else
# define JUMP_TABLE_PTR
# define BREAK goto *jumpTable[currentBytecode]
#endif

#if defined(SQ_USE_GLOBAL_STRUCT)
# define PRIM_DISPATCH goto *jumpTable[foo->primitiveIndex]
#else
# define PRIM_DISPATCH goto *jumpTable[primitiveIndex]
#endif

#define JUMP_TABLE \
static void *jumpTable[256]= { \
&&_0, &&_1, &&_2, &&_3, &&_4, &&_5, &&_6, &&_7, &&_8, &&_9, \
&&_10, &&_11, &&_12, &&_13, &&_14, &&_15, &&_16, &&_17, &&_18, &&_19, \
&&_20, &&_21, &&_22, &&_23, &&_24, &&_25, &&_26, &&_27, &&_28, &&_29, \
&&_30, &&_31, &&_32, &&_33, &&_34, &&_35, &&_36, &&_37, &&_38, &&_39, \
&&_40, &&_41, &&_42, &&_43, &&_44, &&_45, &&_46, &&_47, &&_48, &&_49, \
&&_50, &&_51, &&_52, &&_53, &&_54, &&_55, &&_56, &&_57, &&_58, &&_59, \
&&_60, &&_61, &&_62, &&_63, &&_64, &&_65, &&_66, &&_67, &&_68, &&_69, \
&&_70, &&_71, &&_72, &&_73, &&_74, &&_75, &&_76, &&_77, &&_78, &&_79, \
&&_80, &&_81, &&_82, &&_83, &&_84, &&_85, &&_86, &&_87, &&_88, &&_89, \
&&_90, &&_91, &&_92, &&_93, &&_94, &&_95, &&_96, &&_97, &&_98, &&_99, \
&&_100, &&_101, &&_102, &&_103, &&_104, &&_105, &&_106, &&_107, &&_108, &&_109, \
&&_110, &&_111, &&_112, &&_113, &&_114, &&_115, &&_116, &&_117, &&_118, &&_119, \
&&_120, &&_121, &&_122, &&_123, &&_124, &&_125, &&_126, &&_127, &&_128, &&_129, \
&&_130, &&_131, &&_132, &&_133, &&_134, &&_135, &&_136, &&_137, &&_138, &&_139, \
&&_140, &&_141, &&_142, &&_143, &&_144, &&_145, &&_146, &&_147, &&_148, &&_149, \
&&_150, &&_151, &&_152, &&_153, &&_154, &&_155, &&_156, &&_157, &&_158, &&_159, \
&&_160, &&_161, &&_162, &&_163, &&_164, &&_165, &&_166, &&_167, &&_168, &&_169, \
&&_170, &&_171, &&_172, &&_173, &&_174, &&_175, &&_176, &&_177, &&_178, &&_179, \
&&_180, &&_181, &&_182, &&_183, &&_184, &&_185, &&_186, &&_187, &&_188, &&_189, \
&&_190, &&_191, &&_192, &&_193, &&_194, &&_195, &&_196, &&_197, &&_198, &&_199, \
&&_200, &&_201, &&_202, &&_203, &&_204, &&_205, &&_206, &&_207, &&_208, &&_209, \
&&_210, &&_211, &&_212, &&_213, &&_214, &&_215, &&_216, &&_217, &&_218, &&_219, \
&&_220, &&_221, &&_222, &&_223, &&_224, &&_225, &&_226, &&_227, &&_228, &&_229, \
&&_230, &&_231, &&_232, &&_233, &&_234, &&_235, &&_236, &&_237, &&_238, &&_239, \
&&_240, &&_241, &&_242, &&_243, &&_244, &&_245, &&_246, &&_247, &&_248, &&_249, \
&&_250, &&_251, &&_252, &&_253, &&_254, &&_255 \
} JUMP_TABLE_PTR

#define PRIM_TABLE \
static void *jumpTable[700]= { \
&&_0, &&_1, &&_2, &&_3, &&_4, &&_5, &&_6, &&_7, &&_8, &&_9, \
&&_10, &&_11, &&_12, &&_13, &&_14, &&_15, &&_16, &&_17, &&_18, &&_19, \
&&_20, &&_21, &&_22, &&_23, &&_24, &&_25, &&_26, &&_27, &&_28, &&_29, \
&&_30, &&_31, &&_32, &&_33, &&_34, &&_35, &&_36, &&_37, &&_38, &&_39, \
&&_40, &&_41, &&_42, &&_43, &&_44, &&_45, &&_46, &&_47, &&_48, &&_49, \
&&_50, &&_51, &&_52, &&_53, &&_54, &&_55, &&_56, &&_57, &&_58, &&_59, \
&&_60, &&_61, &&_62, &&_63, &&_64, &&_65, &&_66, &&_67, &&_68, &&_69, \
&&_70, &&_71, &&_72, &&_73, &&_74, &&_75, &&_76, &&_77, &&_78, &&_79, \
&&_80, &&_81, &&_82, &&_83, &&_84, &&_85, &&_86, &&_87, &&_88, &&_89, \
&&_90, &&_91, &&_92, &&_93, &&_94, &&_95, &&_96, &&_97, &&_98, &&_99, \
&&_100, &&_101, &&_102, &&_103, &&_104, &&_105, &&_106, &&_107, &&_108, &&_109, \
&&_110, &&_111, &&_112, &&_113, &&_114, &&_115, &&_116, &&_117, &&_118, &&_119, \
&&_120, &&_121, &&_122, &&_123, &&_124, &&_125, &&_126, &&_127, &&_128, &&_129, \
&&_130, &&_131, &&_132, &&_133, &&_134, &&_135, &&_136, &&_137, &&_138, &&_139, \
&&_140, &&_141, &&_142, &&_143, &&_144, &&_145, &&_146, &&_147, &&_148, &&_149, \
&&_150, &&_151, &&_152, &&_153, &&_154, &&_155, &&_156, &&_157, &&_158, &&_159, \
&&_160, &&_161, &&_162, &&_163, &&_164, &&_165, &&_166, &&_167, &&_168, &&_169, \
&&_170, &&_171, &&_172, &&_173, &&_174, &&_175, &&_176, &&_177, &&_178, &&_179, \
&&_180, &&_181, &&_182, &&_183, &&_184, &&_185, &&_186, &&_187, &&_188, &&_189, \
&&_190, &&_191, &&_192, &&_193, &&_194, &&_195, &&_196, &&_197, &&_198, &&_199, \
&&_200, &&_201, &&_202, &&_203, &&_204, &&_205, &&_206, &&_207, &&_208, &&_209, \
&&_210, &&_211, &&_212, &&_213, &&_214, &&_215, &&_216, &&_217, &&_218, &&_219, \
&&_220, &&_221, &&_222, &&_223, &&_224, &&_225, &&_226, &&_227, &&_228, &&_229, \
&&_230, &&_231, &&_232, &&_233, &&_234, &&_235, &&_236, &&_237, &&_238, &&_239, \
&&_240, &&_241, &&_242, &&_243, &&_244, &&_245, &&_246, &&_247, &&_248, &&_249, \
&&_250, &&_251, &&_252, &&_253, &&_254, &&_255, &&_256, &&_257, &&_258, &&_259, \
&&_260, &&_261, &&_262, &&_263, &&_264, &&_265, &&_266, &&_267, &&_268, &&_269, \
&&_270, &&_271, &&_272, &&_273, &&_274, &&_275, &&_276, &&_277, &&_278, &&_279, \
&&_280, &&_281, &&_282, &&_283, &&_284, &&_285, &&_286, &&_287, &&_288, &&_289, \
&&_290, &&_291, &&_292, &&_293, &&_294, &&_295, &&_296, &&_297, &&_298, &&_299, \
&&_300, &&_301, &&_302, &&_303, &&_304, &&_305, &&_306, &&_307, &&_308, &&_309, \
&&_310, &&_311, &&_312, &&_313, &&_314, &&_315, &&_316, &&_317, &&_318, &&_319, \
&&_320, &&_321, &&_322, &&_323, &&_324, &&_325, &&_326, &&_327, &&_328, &&_329, \
&&_330, &&_331, &&_332, &&_333, &&_334, &&_335, &&_336, &&_337, &&_338, &&_339, \
&&_340, &&_341, &&_342, &&_343, &&_344, &&_345, &&_346, &&_347, &&_348, &&_349, \
&&_350, &&_351, &&_352, &&_353, &&_354, &&_355, &&_356, &&_357, &&_358, &&_359, \
&&_360, &&_361, &&_362, &&_363, &&_364, &&_365, &&_366, &&_367, &&_368, &&_369, \
&&_370, &&_371, &&_372, &&_373, &&_374, &&_375, &&_376, &&_377, &&_378, &&_379, \
&&_380, &&_381, &&_382, &&_383, &&_384, &&_385, &&_386, &&_387, &&_388, &&_389, \
&&_390, &&_391, &&_392, &&_393, &&_394, &&_395, &&_396, &&_397, &&_398, &&_399, \
&&_400, &&_401, &&_402, &&_403, &&_404, &&_405, &&_406, &&_407, &&_408, &&_409, \
&&_410, &&_411, &&_412, &&_413, &&_414, &&_415, &&_416, &&_417, &&_418, &&_419, \
&&_420, &&_421, &&_422, &&_423, &&_424, &&_425, &&_426, &&_427, &&_428, &&_429, \
&&_430, &&_431, &&_432, &&_433, &&_434, &&_435, &&_436, &&_437, &&_438, &&_439, \
&&_440, &&_441, &&_442, &&_443, &&_444, &&_445, &&_446, &&_447, &&_448, &&_449, \
&&_450, &&_451, &&_452, &&_453, &&_454, &&_455, &&_456, &&_457, &&_458, &&_459, \
&&_460, &&_461, &&_462, &&_463, &&_464, &&_465, &&_466, &&_467, &&_468, &&_469, \
&&_470, &&_471, &&_472, &&_473, &&_474, &&_475, &&_476, &&_477, &&_478, &&_479, \
&&_480, &&_481, &&_482, &&_483, &&_484, &&_485, &&_486, &&_487, &&_488, &&_489, \
&&_490, &&_491, &&_492, &&_493, &&_494, &&_495, &&_496, &&_497, &&_498, &&_499, \
&&_500, &&_501, &&_502, &&_503, &&_504, &&_505, &&_506, &&_507, &&_508, &&_509, \
&&_510, &&_511, &&_512, &&_513, &&_514, &&_515, &&_516, &&_517, &&_518, &&_519, \
&&_520, &&_521, &&_522, &&_523, &&_524, &&_525, &&_526, &&_527, &&_528, &&_529, \
&&_530, &&_531, &&_532, &&_533, &&_534, &&_535, &&_536, &&_537, &&_538, &&_539, \
&&_540, &&_541, &&_542, &&_543, &&_544, &&_545, &&_546, &&_547, &&_548, &&_549, \
&&_550, &&_551, &&_552, &&_553, &&_554, &&_555, &&_556, &&_557, &&_558, &&_559, \
&&_560, &&_561, &&_562, &&_563, &&_564, &&_565, &&_566, &&_567, &&_568, &&_569, \
&&_570, &&_571, &&_572, &&_573, &&_574, &&_575, &&_576, &&_577, &&_578, &&_579, \
&&_580, &&_581, &&_582, &&_583, &&_584, &&_585, &&_586, &&_587, &&_588, &&_589, \
&&_590, &&_591, &&_592, &&_593, &&_594, &&_595, &&_596, &&_597, &&_598, &&_599, \
&&_600, &&_601, &&_602, &&_603, &&_604, &&_605, &&_606, &&_607, &&_608, &&_609, \
&&_610, &&_611, &&_612, &&_613, &&_614, &&_615, &&_616, &&_617, &&_618, &&_619, \
&&_620, &&_621, &&_622, &&_623, &&_624, &&_625, &&_626, &&_627, &&_628, &&_629, \
&&_630, &&_631, &&_632, &&_633, &&_634, &&_635, &&_636, &&_637, &&_638, &&_639, \
&&_640, &&_641, &&_642, &&_643, &&_644, &&_645, &&_646, &&_647, &&_648, &&_649, \
&&_650, &&_651, &&_652, &&_653, &&_654, &&_655, &&_656, &&_657, &&_658, &&_659, \
&&_660, &&_661, &&_662, &&_663, &&_664, &&_665, &&_666, &&_667, &&_668, &&_669, \
&&_670, &&_671, &&_672, &&_673, &&_674, &&_675, &&_676, &&_677, &&_678, &&_679, \
&&_680, &&_681, &&_682, &&_683, &&_684, &&_685, &&_686, &&_687, &&_688, &&_689, \
&&_690, &&_691, &&_692, &&_693, &&_694, &&_695, &&_696, &&_697, &&_698, &&_699, \
}

/*
IP_REG, SP_REG, CB_REG
the machine registers in which to place localIP, localSP and
currentBytecode. Wins big on register-deficient architectures --
especially Intel.
*/
#if defined(__mips__)
# define IP_REG asm("$16")
# define SP_REG asm("$17")
# define CB_REG asm("$18")
#endif
#if defined(__sparc__)
# define IP_REG asm("%l0")
# define SP_REG asm("%l1")
# define CB_REG asm("%l2")
#endif
#if defined(__alpha__)
# define IP_REG asm("$9")
# define SP_REG asm("$10")
# define CB_REG asm("$11")
#endif
#if defined(__i386__)
# define IP_REG asm("%esi")
# define SP_REG asm("%edi")
# if (__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 95))
# define CB_REG asm("%ebx")
# else
# define CB_REG /* avoid undue register pressure */
# endif
#endif
#if defined(__powerpc__) || defined(PPC) || defined(_POWER) || defined(_IBMR2) || defined(__ppc__)
# define GP_REG asm("24")
# define JP_REG asm("25")
# define IP_REG asm("26")
# define SP_REG asm("27")
# define CB_REG asm("28")
#endif
#if defined(__hppa__)
# define IP_REG asm("%r18")
# define SP_REG asm("%r17")
# define CB_REG asm("%r16")
#endif
#if defined(__mc68000__)
# define IP_REG asm("a5")
# define SP_REG asm("a4")
# define CB_REG asm("d7")
#endif

#ifndef JP_REG
# define JP_REG
#endif
#ifndef IP_REG
# define IP_REG
#endif
#ifndef SP_REG
# define SP_REG
#endif
#ifndef CB_REG
# define CB_REG
#endif
#ifndef GP_REG
# define GP_REG
#endif
Tim Rowledge
2012-01-28 11:30:19 UTC
Permalink
Post by Ian Piumarta
Post by Tim Rowledge
or three weeks. Mind you he hasn't sent me the VMMaker related
changeset he promised yet....
Attached.
Looks good to me and I guess it counts as crucial showstopper to make
releases match sources. I'll update the VMMaker package tomorrow.


tim
--
Tim Rowledge, ***@sumeru.stanford.edu, http://sumeru.stanford.edu/tim
Strange OpCodes: IAM: Increase Amperage Above Maximum
Tim Rowledge
2012-01-28 11:30:23 UTC
Permalink
Post by Tim Rowledge
I'll update the VMMaker package tomorrow.
Done. VMMaker3.6g.sar is now on SM.


tim
--
Tim Rowledge, ***@sumeru.stanford.edu, http://sumeru.stanford.edu/tim
Useful random insult:- Lights are on but nobody's home.
John M McIntosh
2012-01-28 11:30:19 UTC
Permalink
Mmm I think Ian dropped in my suggested change

#if defined(__powerpc__) || defined(PPC) || defined(_POWER) ||
defined(_IBMR2) || defined(__ppc__)
# define JUMP_TABLE_PTR ; register void **jumpTableP JP_REG;
jumpTableP= &jumpTable[0]
# define BREAK goto *jumpTableP[currentBytecode]
#else
# define JUMP_TABLE_PTR
# define BREAK goto *jumpTable[currentBytecode]
#endif

where for the powerpc it now uses the jumpTableP logic.

But just to obsolete things for him, I'll point out that this also
makes a difference for 68K machines
I think my #if also ORS against defined (__APPLE__)
# define JP_REG asm("a3")
that makes the jump
versus the old code which is
lea _jumpTable.325,a0
I think it is 8 clock cycles faster when we avoid the lea. I'd guess
the _jumpTable.325 resolves to register+offset
Note that is for each bytecode executed! So it does have an impact on
performance.
This changes bytecodes/sec
1,439,884. 51098 sends/sec
to
1,550,387. 55080
Removal of instructions on 68K machines DOES make things faster.
Removal of instructions on
newer machines might not make a difference. Other folks INTEL and ARM
might what to check
assembler output and see what the
goto *jumpTableP[currentBytecode]
verus
goto *jumpTable[currentBytecode]

does from an assembler and performance viewpoint.
--
========================================================================
===
John M. McIntosh <***@smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
========================================================================
===
Ian Piumarta
2012-01-28 11:30:20 UTC
Permalink
Post by John M McIntosh
Mmm I think Ian dropped in my suggested change
# define BREAK goto *jumpTableP[currentBytecode]
#else
# define BREAK goto *jumpTable[currentBytecode]
That's been in there since we talked about it in Seattle.

(Wake up, John. ;^p)
Post by John M McIntosh
But just to obsolete things for him, I'll point out that this also
makes a difference for 68K machines
Hands up anyone running Unix on a 68k machine...?

Hmm, thought not. ;)
Post by John M McIntosh
newer machines might not make a difference. Other folks INTEL and ARM
might what to check assembler output
Even better, check benchmark times. Removing instructions has been known
to make things slower. (Too many hazards in the pipeline end at the same
time.)

Ian
Daniel Vainsencher
2012-01-28 11:30:21 UTC
Permalink
Not yet. I've played with OSProcess, but that way of running programs is
a bit verbose. Either way, this is the result of the convergence of a
few itches:
- I'm learning scheme, and specifically scsh
- I want scripts I can run from a cron job without loading 10M files to
do hello world
- The language is quite concise (no claim for my code, specifically...)

I'm pretty much assuming that someone will pretty soon create a much
more complete, flexible, web-accessible solution in Squeak.

I'll try CommandShell at some point - with a somewhat shrunk image, it
might be a nice way of writing scripts.

Daniel
Post by Ned Konz
Post by Daniel Vainsencher
scsh is currently my favorite shell language (which isn't hard, I
hate most of them ;-).
Have you tried David Lewis' CommandShell? You can intermingle shell
commands with Squeak expressions, all inside Squeak.
--
Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE
Daniel Vainsencher
2012-01-28 11:30:21 UTC
Permalink
Doug, can you please be consistent in this? I think it allows nice
mechanization of this process.

Daniel
Post by Ned Konz
Post by Daniel Vainsencher
Thanks, didn't know the version name was part of the updates.list.
Is that definitely linked to the ftp directory name?
No, but it seems as if whoever makes the directories is choosing
predictable names <g>.
--
Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE
Doug Way
2012-01-28 11:30:21 UTC
Permalink
Post by Daniel Vainsencher
Doug, can you please be consistent in this? I think it allows nice
mechanization of this process.
Actually, Bruce O'Neel is mostly in charge of uploading new alpha images
to the ftp site. He has been pretty consistent about naming the
images/directories, so Ned's script would probably work.

Still, it might be better to have a "latest alpha image" file link which
always has the same name, and links to the latest alpha image. Or,
always have the latest alpha image as a single file/link in a particular
directory. Something that would be a little more foolproof for a test
server to grab from, anyway.

Bruce, would something like this be easily doable?

- Doug
Post by Daniel Vainsencher
Daniel
Post by Ned Konz
Post by Daniel Vainsencher
Thanks, didn't know the version name was part of the updates.list.
Is that definitely linked to the ftp directory name?
No, but it seems as if whoever makes the directories is choosing
predictable names <g>.
--
Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE
Bruce ONeel
2012-01-28 11:30:21 UTC
Permalink
Post by Ian Piumarta
Hands up anyone running Unix on a 68k machine...?
Hmm, thought not. ;)
Probably a set of size 1 :-)

cheers

bruce
Brent Vukmer
2012-01-28 11:30:21 UTC
Permalink
Post by Andreas Raab
Post by Andreas Raab
Sigh. Can't BFAV do a quick check if there may be any
pending updates and
Post by Andreas Raab
tell us about it (maybe by adding another red border or
something)? Just so
Post by Andreas Raab
it's Really Clear (tm) that it is not up to date?
That would be rather complex. BFAV would have to check this URL
http://swiki.gsug.org/sqfixes/last
and parse a number! That would take *minutes* to implement I guess.
Infortunately I'm *way* too busy now :-(
The BFAV already checks that URL when "load updates" is called, btw.

Andreas, how often do you want this check to happen? When you first
open the BFAV window? Every few minutes?
Andreas Raab
2012-01-28 11:30:21 UTC
Permalink
Post by Brent Vukmer
Andreas, how often do you want this check to happen? When you first
open the BFAV window? Every few minutes?
Good question. Personally, I have an extra BFAV image so just having it
check when that image gets started or BFAV is opened would be fine with me.
Can't speak for other people though ... I guess something like 15min by
default with the ability to change it would be nice.

Cheers,
- Andreas
John M McIntosh
2012-01-28 11:30:21 UTC
Permalink
Post by Ian Piumarta
Post by John M McIntosh
But just to obsolete things for him, I'll point out that this also
makes a difference for 68K machines
Hands up anyone running Unix on a 68k machine...?
Hmm, thought not. ;)
Wait wait there is hand here in the corner. I've got TWO OpenBsd 68K
boxes running. In fact
if you go to http://www.smalltalkconsulting.com/comments.html you can
see a swiki on
a Quadra 950 in action. And I know Bruce ONeel was running a 68K
NetBSD box, see that
makes three!
Post by Ian Piumarta
Post by John M McIntosh
newer machines might not make a difference. Other folks INTEL and ARM
might what to check assembler output
Even better, check benchmark times. Removing instructions has been
known
to make things slower. (Too many hazards in the pipeline end at the
same
time.)
Mm that is interesting, have you observed that on the powerpc?

--
========================================================================
===
John M. McIntosh <***@smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
========================================================================
===
Ian Piumarta
2012-01-28 11:30:21 UTC
Permalink
Post by John M McIntosh
Post by Ian Piumarta
Hands up anyone running Unix on a 68k machine...?
Wait wait there is hand here in the corner. I've got TWO OpenBsd 68K
boxes running. And I know Bruce ONeel was running a 68K NetBSD box
Ah, okay. I think 3 counts as a quorum. ;)

So what are the benchmark results with/out the jump table pointer
modification on all of the above machines?
Post by John M McIntosh
Post by Ian Piumarta
Even better, check benchmark times. Removing instructions has been
known to make things slower. (Too many hazards in the pipeline
end at the same time.)
Mm that is interesting, have you observed that on the powerpc?
Yes, but only on older (600 series) cpus -- if I remember correctly.
(There's something about this in the architecture manual too; if you
_really_ want I can try to dig up the ref.) On the 700s my experience is
that you reach a critical density above which removing instructions makes
no measurable difference in speed (which I think is what we saw when we
tried the code on my G3). I don't know how the 7000s are supposed to
behave, but I'm sure it's no worse than the 700s. (Is Tim O reading
this?? ;)


Cheers,
Ian
John M McIntosh
2012-01-28 11:30:22 UTC
Permalink
That was in my previous note, it was 68K assembler as the example.
I'll note the #if isn't correct for BSD machines, you need to trigger
on if it's 68K type of machine in GCC
also include the #def for the jump register A3?
This changes bytecodes/sec
1,439,884. 51098 sends/sec
to
1,550,387. 55080
Post by John M McIntosh
Post by Ian Piumarta
Hands up anyone running Unix on a 68k machine...?
Wait wait there is hand here in the corner. I've got TWO OpenBsd 68K
boxes running. And I know Bruce ONeel was running a 68K NetBSD box
Ah, okay. I think 3 counts as a quorum. ;)
So what are the benchmark results with/out the jump table pointer
modification on all of the above machines?
--
========================================================================
===
John M. McIntosh <***@smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
========================================================================
===
Bruce ONeel
2012-01-28 11:30:24 UTC
Permalink
Hi,

Happy to do this. I could easily do:

Smalltalk/Squeak/3.6gamma/current.zip

or I could have some directory

Smalltalk/Squeak/current_alpha/current.zip
Smalltalk/Squeak/current_beta/current.zip
Smalltalk/Squeak/current_gamma/current.zip

Or

Smalltalk/Squeak/testpilot/current_alpha.zip
Smalltalk/Squeak/testpilot/current_beta.zip
Smalltalk/Squeak/testpilot/current_gamma.zip

or whatever. I don't have a strong feeling about the names.

What's easiest (and least confusing to the person who stumbles
upon it)?

cheers

bruce
Post by Doug Way
Post by Daniel Vainsencher
Doug, can you please be consistent in this? I think it allows nice
mechanization of this process.
Actually, Bruce O'Neel is mostly in charge of uploading new alpha images
to the ftp site. He has been pretty consistent about naming the
images/directories, so Ned's script would probably work.
Still, it might be better to have a "latest alpha image" file link which
always has the same name, and links to the latest alpha image. Or,
always have the latest alpha image as a single file/link in a particular
directory. Something that would be a little more foolproof for a test
server to grab from, anyway.
Bruce, would something like this be easily doable?
- Doug
Post by Daniel Vainsencher
Daniel
Post by Ned Konz
Post by Daniel Vainsencher
Thanks, didn't know the version name was part of the updates.list.
Is that definitely linked to the ftp directory name?
No, but it seems as if whoever makes the directories is choosing
predictable names <g>.
--
Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE
Ingo Hohmann
2012-01-28 11:30:24 UTC
Permalink
Hi Bruce
Post by Bruce ONeel
Hi,
Smalltalk/Squeak/3.6gamma/current.zip
or I could have some directory
<...>
Post by Bruce ONeel
What's easiest (and least confusing to the person who stumbles
upon it)?
I'd vote for

Smalltalk/Squeak/squeak_stable.zip "being the latest 3.5 atm"
Smalltalk/Squeak/squeak_testing.zip "the latest alpha, beta, whatever"

That's the least confusing from my own perspective, and from what I hear
about the update stream on the squeak list ("why does my 3.5 image not
get updated any more" -> "because there are no updates to 3.5, only to
3.6 whatever" ...)

Of course I'm talking about someone stumbling on it with an ftp-tool,
but I don't believe that scripts would need a finer granularity, and a
human who really wants a finer granularity will be perfectly fine to dig
in the archive structure.

Of course, YMMV ;-)


Kind regards,

Ingo
Ian Piumarta
2012-01-28 11:30:25 UTC
Permalink
Post by Bruce ONeel
Smalltalk/Squeak/3.6gamma/current.zip
or I could have some directory
Smalltalk/Squeak/current_gamma/current.zip
Or
Smalltalk/Squeak/testpilot/current_gamma.zip
What's easiest (and least confusing to the person who stumbles upon it)?
My own feeling is that there are only two approaches which are not
confusing for people (which I guess really means "for me"):

- If you have each release in seperate subdir "X.Y.Z/...zip" then
create a symbolic link to the release dir called "current".
Following the link dumps you in a directory where the version
numbers are explicit in the filenames.

Foo-X.Y.Zgamma/foo-x.y.z-gamma.zip
Foo-gamma-current -> Foo-X.Y.Zgamma

- If you have multiple releases in the same [sub]dir then the only
safe thing to do is to create a file called something like

LATEST_GAMMA_IS_X.Y.Z

(which, if you like, could be a symlink to the archive itself).

The rationale behind all of the above is that one should never, ever
become confused as to which version number in the explicitly-numbered
archives corresponds to the "current" release. Making "opaque" archives
(or symlinks) that just say "current.zip" destroys exactly this kind of
essential information.

Just my HO.
Cheers,
Ian
Ingo Hohmann
2012-01-28 11:30:25 UTC
Permalink
Ian Piumarta wrote:
<...>
Post by Ian Piumarta
My own feeling is that there are only two approaches which are not
- If you have each release in seperate subdir "X.Y.Z/...zip" then
create a symbolic link to the release dir called "current".
Following the link dumps you in a directory where the version
numbers are explicit in the filenames.
Foo-X.Y.Zgamma/foo-x.y.z-gamma.zip
Foo-gamma-current -> Foo-X.Y.Zgamma
- If you have multiple releases in the same [sub]dir then the only
safe thing to do is to create a file called something like
LATEST_GAMMA_IS_X.Y.Z
(which, if you like, could be a symlink to the archive itself).
The rationale behind all of the above is that one should never, ever
become confused as to which version number in the explicitly-numbered
archives corresponds to the "current" release. Making "opaque" archives
(or symlinks) that just say "current.zip" destroys exactly this kind of
essential information.
<..>

I understand your rationale, yet the question remains: to whom will it
be confusing? And in what way?

As much as I hate downloading files called "current.tgz" (current of
what? Which version is it really?) Having too much info in the filename
isn't any better, and will lead to things like links on the squeak
download page: "download the latest Squeak3.6alpha" which points to the
latest *alpha*, as advertised, but not to the latest *version*, as
squeak already progressed to 3.6gamma. (That's why my first proposal
voted for the current.tgz scheme).

Maybe a better thought out scheme would include different directories
for different versions, and links
"current_stable" and
"current_development"
to the respective directories. If the filenaming convention ensures that
files are sorted in order of release, this should work. Though a
LATEST_STABLE_IS_... and
LATEST_DEVELOPMENT_IS... wouldn't hurt, either.


Just to add a few more cents,

Ingo
Daniel Vainsencher
2012-01-28 11:30:25 UTC
Permalink
current_stable + current_development symlinks to dirs solves the problem
I have, and probably is the right thing to do for download links, also.
Keeping the update stream version names and ftp path names consistent
seems like the ordered thing to do, even if its not needed.

As long as the release files contain the update number, it doesn't seem
to me like any ambiguity can come up about which is the latest.

Daniel
Post by Ingo Hohmann
<...>
Post by Ian Piumarta
My own feeling is that there are only two approaches which are not
- If you have each release in seperate subdir "X.Y.Z/...zip" then
create a symbolic link to the release dir called "current".
Following the link dumps you in a directory where the version
numbers are explicit in the filenames.
Foo-X.Y.Zgamma/foo-x.y.z-gamma.zip
Foo-gamma-current -> Foo-X.Y.Zgamma
- If you have multiple releases in the same [sub]dir then the only
safe thing to do is to create a file called something like
LATEST_GAMMA_IS_X.Y.Z
(which, if you like, could be a symlink to the archive itself).
The rationale behind all of the above is that one should never, ever
become confused as to which version number in the explicitly-numbered
archives corresponds to the "current" release. Making "opaque" archives
(or symlinks) that just say "current.zip" destroys exactly this kind of
essential information.
<..>
I understand your rationale, yet the question remains: to whom will it
be confusing? And in what way?
As much as I hate downloading files called "current.tgz" (current of
what? Which version is it really?) Having too much info in the filename
isn't any better, and will lead to things like links on the squeak
download page: "download the latest Squeak3.6alpha" which points to the
latest *alpha*, as advertised, but not to the latest *version*, as
squeak already progressed to 3.6gamma. (That's why my first proposal
voted for the current.tgz scheme).
Maybe a better thought out scheme would include different directories
for different versions, and links
"current_stable" and
"current_development"
to the respective directories. If the filenaming convention ensures that
files are sorted in order of release, this should work. Though a
LATEST_STABLE_IS_... and
LATEST_DEVELOPMENT_IS... wouldn't hurt, either.
Just to add a few more cents,
Ingo
Doug Way
2012-01-28 11:30:25 UTC
Permalink
Post by Daniel Vainsencher
current_stable + current_development symlinks to dirs solves the problem
I have, and probably is the right thing to do for download links, also.
Keeping the update stream version names and ftp path names consistent
seems like the ordered thing to do, even if its not needed.
As long as the release files contain the update number, it doesn't seem
to me like any ambiguity can come up about which is the latest.
That sounds like it should work.

These two symlinks should probably be in the top directory, too. E.g.:

Smalltalk/Squeak/current_stable -> Squeak3.5/
Smalltalk/Squeak/current_development -> Squeak3.7alpha/

(neither of these would point to 3.6gamma, by the way)

Dumb question since I've been away from Unix too long... is it possible
to have a symlink to a file? (which is reasonably clear when using an
ftp client?) Then we could have:

Smalltalk/Squeak/current_stable -> Squeak3.5/Squeak3.5-5180.zip
Smalltalk/Squeak/current_development -> Squeak3.7alpha/Squeak3.7a-5420.zip

which would eliminate all possible confusion. (I think.) And Daniel's
script wouldn't have to look for the file with the right update number, etc.

- Doug
Julian Fitzell
2012-01-28 11:30:26 UTC
Permalink
Doug Way wrote:
[...]
Post by Doug Way
Dumb question since I've been away from Unix too long... is it possible
to have a symlink to a file? (which is reasonably clear when using an
Smalltalk/Squeak/current_stable -> Squeak3.5/Squeak3.5-5180.zip
Smalltalk/Squeak/current_development -> Squeak3.7alpha/Squeak3.7a-5420.zip
Yes, but when you download the file with an ftp client it will be called
'current_stable', so it will be confusing on your hard drive.
Post by Doug Way
which would eliminate all possible confusion. (I think.) And Daniel's
script wouldn't have to look for the file with the right update number, etc.
Julian
--
***@beta4.com
Beta4 Productions (http://www.beta4.com)
Doug Way
2012-01-28 11:30:26 UTC
Permalink
Post by Julian Fitzell
[...]
Post by Doug Way
Dumb question since I've been away from Unix too long... is it
possible to have a symlink to a file? (which is reasonably clear when
Smalltalk/Squeak/current_stable -> Squeak3.5/Squeak3.5-5180.zip
Smalltalk/Squeak/current_development ->
Squeak3.7alpha/Squeak3.7a-5420.zip
Yes, but when you download the file with an ftp client it will be
called 'current_stable', so it will be confusing on your hard drive.
Yeah, that's not so good. Ian sent me an email saying more or less the
same thing. So the directory symlink is probably the clearest way to
handle things.

- Doug
Bruce ONeel
2012-01-28 11:30:36 UTC
Permalink
Post by Doug Way
Smalltalk/Squeak/current_stable -> Squeak3.5/
Smalltalk/Squeak/current_development -> Squeak3.7alpha/
(neither of these would point to 3.6gamma, by the way)
Hi,

This is done now. BTW, the old current link pointing to Squeak 3.5
has now been replaced by the current_stable link.

cheers

bruce
Andreas Raab
2012-01-28 11:33:07 UTC
Permalink
Hi Alan,
Post by Alan Grimes
1. make a bootable, self-building (no more C) VM for a reasonably
well-designed machine (that is not a PC). including a filesystem and
interrupt driven IO.
Don't. Unless you have some constraints you haven't told us, use a minimal
Linux-Kernel and have Squeak sit on top of it. It's small, works well, and
has been done before (see Dan's wheather station). Even if your hardware is
out of the ordinary you still got a chance of the hardware people having (or
being willing to produce) functional Linux drivers. Total cost: Very Few
Bucks (tm).
Post by Alan Grimes
2. make scamper W3C compliant and give it sufficient
capabilities to be a viable if not prefferable alternative
to Internet Exploder.
Duh. How much money are you willing to throw after that? I have no idea what
this may cost, not even in the ballpark range. Your guess is as good as
mine.

Cheers,
- Andreas
Alan Grimes
2012-01-28 11:33:07 UTC
Permalink
Post by Andreas Raab
Post by Alan Grimes
1. make a bootable, self-building (no more C) VM for a reasonably
well-designed machine (that is not a PC). including a filesystem and
interrupt driven IO.
Don't. Unless you have some constraints you haven't told us, use a
minimal Linux-Kernel and have Squeak sit on top of it.
<retch>
Post by Andreas Raab
It's small, works well, and has been done before (see Dan's wheather
station). Even if your hardware is out of the ordinary you still got a
chance of the hardware people having (or being willing to produce)
functional Linux drivers. Total cost: Very Few Bucks (tm).
Well, naturally, I would require that the linux system also be able to
build itself (I'm not going into the appliance business...) That
requires approximately 200mb of compressed source and 400mb of compiled
binaries.

If I use anything, it will be a port of Plan 9 or perhaps QNX... Just
about anything with a simple and coherant design...
--
Windows 3.11: Almost exactly 10 years old,
and -400% slower than windows XP. ;)

http://users.rcn.com/alangrimes/
Tim Rowledge
2012-01-28 11:33:08 UTC
Permalink
Post by Alan Grimes
Post by Andreas Raab
Don't. Unless you have some constraints you haven't told us, use a
minimal Linux-Kernel and have Squeak sit on top of it.
<retch>
Well I'm no great fan of the overall GNU/linux experience but the kernel
is pretty reasonable as a base to build upon. Nobody says you have to
use anything but the basics of being able to handle processes, memory
and starting up programs. Oh, and the tcp/ip stack would save a bunch of
problems.
Post by Alan Grimes
(I'm not going into the appliance business...)
OK but what business _Are_ you going in to? It makes a big difference to
the advice you might need.


tim
--
Tim Rowledge, ***@sumeru.stanford.edu, http://sumeru.stanford.edu/tim
I smell a wumpus.
Alan Grimes
2012-01-28 11:33:08 UTC
Permalink
Post by Tim Rowledge
Post by Alan Grimes
(I'm not going into the appliance business...)
OK but what business _Are_ you going in to? It makes a big difference
to the advice you might need.
I want to build the best PCs in the world. (ergo squeak.) ;)
--
Windows 3.11: Almost exactly 10 years old,
and -400% slower than windows XP. ;)

http://users.rcn.com/alangrimes/
Tim Rowledge
2012-01-28 11:33:08 UTC
Permalink
Post by Alan Grimes
Post by Tim Rowledge
Post by Alan Grimes
(I'm not going into the appliance business...)
OK but what business _Are_ you going in to? It makes a big difference
to the advice you might need.
I want to build the best PCs in the world. (ergo squeak.) ;)
Then you'll need many, many, dollars, yen or euros to even make a
serious start. There's just so many things people want to do with a
'PC' that recreating code for all of the ones they can currently buy
windows applications for is a nightmare to make the rising of Cthulu
look like a visit from the vicar.

Surely you don't really mean the above in any ordinary sense? You're
not really expecting to overthrow M$, Apple et al. on less than $10b a
year?

tim
--
Tim Rowledge, ***@sumeru.stanford.edu, http://sumeru.stanford.edu/tim
Useful random insult:- Some drink from the fountain of knowledge, but
he just gargled.
Alan Grimes
2012-01-28 11:33:08 UTC
Permalink
Post by Tim Rowledge
Surely you don't really mean the above in any ordinary sense? You're
not really expecting to overthrow M$, Apple et al. on less than $10b a
year?
=\
I suppose there is some of that impulse in me indeed!

My actual sneaky plan was to use Windows CE as the flagship OS but also
provide as many choices as economicly feasable... So technically it will
be a "wintel" machine running an Intel X-scale processor and Windows CE
but be an entirely new animule all togeather. ;)

Since it is critical that the price-point be as low as possible, I was
hoping that the critical essentials could be provided with Squeak. =)

My own experience with squeak is that it only needs a decient
web-browser and a usable word-processor as well as a few layout fixups
to be ready for prime-time...

Maybe I need to trade in my rose colored glasses.... =P
--
Windows 3.11: Almost exactly 10 years old,
and -400% slower than windows XP. ;)

http://users.rcn.com/alangrimes/
Lex Spoon
2012-01-28 11:33:10 UTC
Permalink
Post by Alan Grimes
My own experience with squeak is that it only needs a decient
web-browser and a usable word-processor as well as a few layout fixups
to be ready for prime-time...
This doesn't sound quite as crazy as people are making it out. You
would have to be very very careful, though, about what gets implemented.
It's widely suggested that the vast bulk of features in Word, Excell,
and, dare I say, Mozilla, are not necessary. If you relentlessly focus
on what is necessary to make a useful home computer, you could do it
with a dozen programmers and a year or two's effort, as an optimistic
estimate. You would certainly not want to go down the list at w3.org
and implement every TLA they have, but you could do HTML 4 and style
sheets and JavaScript.

To make a marketable product, you'd also want to focus on *new* things,
things that don't fit well into existing systems but would be fine in
Squeak. Imagine a file system where every file is a serialized object.
Imagine invoking a program by deserializing it and sending #value:.

And if you really go crazy (another few programmers), you could
implement a POSIX and C compatibility layer on top of your SqueakOS and
let people run arbitrary existing Unix programs. (Windows compatibility
is not really practical, as IBM has found.)

The business aspects are interesting as well. Smalltalk went through
something like 5 major iterations over 10 years before being released to
the public. You should plan at least 2-3 iterations, and preferably
more, before coming up with a real hit. You'll want to dump backwards
compatibility at each step. This sounds mean to the users, but it is
essential; it will give you a huge advantage over Microsoft, Apple, and
Sun, and it will give you a much better chance at the nth iteration
being the good one.


So I guess I have an estimate after all. 15-20 programmers and 2 years
for the first iteration. You need good programmers, which I guess gets
you towards the 6-figure salary range if not well into it. So that's
in the ballpark of $2million for the programming effort. That doesn't
include other business costs like offices, marketing, hardware, etc., so
call it $4million all told. That means you can buy approximately 22
next-generation operating systems for the cost of a space shuttle
launch, or 12 for the average cost of a Hollywood movie.

http://www.hq.nasa.gov/office/codea/codeae/documentc.html
http://www.didyouknow.cd/movies.htm


If you have the funding and the, ahem, tough guts, then go for it man!!


-Lex
John M McIntosh
2012-01-28 11:33:10 UTC
Permalink
Post by Lex Spoon
Post by Alan Grimes
My own experience with squeak is that it only needs a decient
web-browser and a usable word-processor as well as a few layout fixups
to be ready for prime-time...
This doesn't sound quite as crazy as people are making it out. You
would have to be very very careful, though, about what gets
implemented.
It's widely suggested that the vast bulk of features in Word, Excell,
and, dare I say, Mozilla, are not necessary. If you relentlessly focus
on what is necessary to make a useful home computer, you could do it
with a dozen programmers and a year or two's effort, as an optimistic
estimate. You would certainly not want to go down the list at w3.org
and implement every TLA they have, but you could do HTML 4 and style
sheets and JavaScript.
This does remind me of my discussions with Jecel Assumpcao Jr
<***@merlintec.com>
and his work with his FGPA computer in South America.

http://wiki.cs.uiuc.edu/CampSmalltalk/OOPSLA+2003+Trip+report+Tuesday
NeoSmalltalk

Yes he needs a browser too, but since his market is so targeted, a
certain socio-economic group, in Brazil and things like the Brazil
wanting to move away from Microsoft
http://apnews.excite.com/article/20031116/D7URSKHO0.html then doing
something like having web pages designed with a subset of HTML that the
NeoSmalltalk computer understands and implements is I think doable.
Certainly for folks who want to target that market.

However this won't fly in the usa because of microsoft browser feature
lockout...

PS didn't Exobox work in this problem space? Surely someone could share
a cost estimate from that project?
Post by Lex Spoon
--
========================================================================
===
John M. McIntosh <***@smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
========================================================================
===
Jecel Assumpcao Jr
2012-01-28 11:33:11 UTC
Permalink
[NeoSmalltalk]
Yes he needs a browser too, but since his market is so targeted,
Well, I like to claim that my market is "the next billion users" ;-)

But since we have to start out somewhere, my initial focus is schools
and students.
a
certain socio-economic group, in Brazil and things like the Brazil
wanting to move away from Microsoft
http://apnews.excite.com/article/20031116/D7URSKHO0.html then doing
something like having web pages designed with a subset of HTML that
the NeoSmalltalk computer understands and implements is I think
doable. Certainly for folks who want to target that market.
This is a good point and exactly what the Simputer people in India did.
They defined their own HTML (called IML) to handle their needs. My own
experience is that even the current internet users in Brazil rarely
access content that isn't in Portuguese, and these are the folks that
can afford to take their kids to Disneyworld every year!

But that is not the route I would like to take. Another thing I like to
say is "low cost is no excuse". Something that offers less simply won't
sell. Poor people can buy a really cheap used 486 machine today... why
don't they? They probably wouldn't even be very pleased to get one for
free, despite all those organizations asking for donations.

So I agree with the other people that have said you must offer something
new. Croquet, not Scamper. Tweak, not Celeste. But also Scamper
(improved version) and Celeste and something to write reports with and
something to do calculations with (though the Analyst and Improv are
more of an inspiration to me than Excel). Something new, but you
shouldn't have to borrow a friend's PC to do something old.

Right now I am not happy at all that you will have to borrow a PC to use
the FPGA tools, for example. Certainly it wouldn't be nice to have to
do so to regenerate the system (so I understand Alan's wish for a
self-hosting system).
However this won't fly in the usa because of microsoft browser
feature lockout...
The whole situation is a big mess. I have even come across sites that I
couldn't read properly in Internet Explorer and had to fire up
Konquerer! The opposite is much more common.

While my focus is exclusively on Brazil, I am more than happy to work
with people in other countries who would like to have such a product
(or something similar). For example, Devadas Menon is currently seeking
funding to launch the smalltalk machine in India. His presentations say
that we will have email, web browser, text editing and a spreadsheet as
part of the package. My plan is to hire students from the two local
universities next semester to help that become true. Of course I don't
expect them to produce high quality products, but at least something we
can start with.

-- Jecel
Joshua 'Schwa' Gargus
2012-01-28 11:33:11 UTC
Permalink
Hi Jecel,
Post by Jecel Assumpcao Jr
While my focus is exclusively on Brazil, I am more than happy to work
with people in other countries who would like to have such a product
(or something similar).
I'm very interested in such things for a variety of reasons, although
I don't currently have the time and energy to focus on it (in a few
years...).

One of my problems is that I'm a graphics geek... even if we can
somehow manage to replace the CPU + software VM with an FPGA VM
implementation, how would we replace the GPU? Or could we still
interact with commodity GPUs? I recall a message from you some time
ago that revealed that you have put a significant amount of thought
into graphics on your type of system. Have your thoughts changed at
all now that we have GPUs with their own assembly languages?

Best,
Joshua
Post by Jecel Assumpcao Jr
For example, Devadas Menon is currently seeking
funding to launch the smalltalk machine in India. His presentations say
that we will have email, web browser, text editing and a spreadsheet as
part of the package. My plan is to hire students from the two local
universities next semester to help that become true. Of course I don't
expect them to produce high quality products, but at least something we
can start with.
-- Jecel
Jecel Assumpcao Jr
2012-01-28 11:33:11 UTC
Permalink
Post by Joshua 'Schwa' Gargus
One of my problems is that I'm a graphics geek... even if we can
somehow manage to replace the CPU + software VM with an FPGA VM
implementation, how would we replace the GPU?
It certainly not easy, just like doing a CPU in FPGA can be complicated.
Look at how awful a Z80 turns out to be when done that way.

At the very least you have to start out with a large FPGA with nice
features. The Spartan III 400, for example, has 16 hardwired 18x18
multipliers.
Post by Joshua 'Schwa' Gargus
Or could we still interact with commodity GPUs?
That is an option, though any chip that requires a huge fan and extra
power lines (beyond those in the AGP connector) isn't something I will
be seriously considering.
Post by Joshua 'Schwa' Gargus
I recall a message from you some time
ago that revealed that you have put a significant amount of thought
into graphics on your type of system. Have your thoughts changed at
all now that we have GPUs with their own assembly languages?
I must confess that I have not kept up with Cg and other recent
developments. But I don't consider OpenGL and friends the ultimate
graphics solutions. REYES will have real time implementations in the
near future (see http://graphics.stanford.edu/papers/reyes-vs-opengl/
and
http://www.cs.virginia.edu/~gfx/Courses/2002/BigData/lectures/Stream%20Processing/Stream_Processing_6up.pdf
) but I don't think even that bag of tricks will replace ray tracing and
radiosity.

We need better graphics.

-- Jecel
Joshua 'Schwa' Gargus
2012-01-28 11:33:11 UTC
Permalink
Post by Jecel Assumpcao Jr
Post by Joshua 'Schwa' Gargus
One of my problems is that I'm a graphics geek... even if we can
somehow manage to replace the CPU + software VM with an FPGA VM
implementation, how would we replace the GPU?
It certainly not easy, just like doing a CPU in FPGA can be complicated.
Look at how awful a Z80 turns out to be when done that way.
At the very least you have to start out with a large FPGA with nice
features. The Spartan III 400, for example, has 16 hardwired 18x18
multipliers.
Post by Joshua 'Schwa' Gargus
Or could we still interact with commodity GPUs?
That is an option, though any chip that requires a huge fan and extra
power lines (beyond those in the AGP connector) isn't something I will
be seriously considering.
Agreed. However, it's usually only the top-end cards that require this.
Post by Jecel Assumpcao Jr
Post by Joshua 'Schwa' Gargus
I recall a message from you some time
ago that revealed that you have put a significant amount of thought
into graphics on your type of system. Have your thoughts changed at
all now that we have GPUs with their own assembly languages?
I must confess that I have not kept up with Cg and other recent
developments. But I don't consider OpenGL and friends the ultimate
graphics solutions. REYES will have real time implementations in the
near future (see http://graphics.stanford.edu/papers/reyes-vs-opengl/
I read this quickly a while ago... wasn't one of the conclusions that
there were inherent inefficiencies in the Reyes model in the context of
a hardware implementation?

(feel free to consider that a rhetorical question ;-)
Post by Jecel Assumpcao Jr
and
http://www.cs.virginia.edu/~gfx/Courses/2002/BigData/lectures/Stream%20Processing/Stream_Processing_6up.pdf
I haven't seen this... I'll check it out.
Post by Jecel Assumpcao Jr
) but I don't think even that bag of tricks will replace ray tracing and
radiosity.
One thing about ray-tracing is that it inherently has bad memory
locality (for each pixel, you might have to test for intersection
against each object in your scene). I don't see a way around this.

I don't know if real-time ray-tracing/radiosity are desirable from the
point of view of amount of computation required. This is especially
true in the common case of mostly static scenes where radiosity can be
precomputed and stored in textures. It's my understanding that many
current 1st person shooters use this approach.
Post by Jecel Assumpcao Jr
We need better graphics.
I'm always interested in hearing new ideas. (I'm very excited that I get to
hear a talk on the topic by Pat Hanrahan this Thursday).

Best,
Joshua
Post by Jecel Assumpcao Jr
-- Jecel
Jecel Assumpcao Jr
2012-01-28 11:33:13 UTC
Permalink
Post by Joshua 'Schwa' Gargus
[OpenGL vs REYES paper]
I read this quickly a while ago... wasn't one of the conclusions that
there were inherent inefficiencies in the Reyes model in the context
of a hardware implementation?
That is certainly one possible conclusion. But another way to looking at
it is that the vast gap of a few years ago is now only a more or less
large one. So we might extrapolate and consider that it is only a
matter of time before REYES starts invading OpenGL's turf.
Post by Joshua 'Schwa' Gargus
[and slides]
I haven't seen this... I'll check it out.
It is the same thing, but with more pictures and less words :-)
Post by Joshua 'Schwa' Gargus
One thing about ray-tracing is that it inherently has bad memory
locality (for each pixel, you might have to test for intersection
against each object in your scene). I don't see a way around this.
Since you mentioned Pat Hanrahan, you might find this paper from his
fall course's (CS448) reading list interesting:

http://graphics.cs.uni-sb.de/Publications/2002/Schmittler-AHardwareArchitectureForRayTracing.pdf
Post by Joshua 'Schwa' Gargus
I don't know if real-time ray-tracing/radiosity are desirable from
the point of view of amount of computation required.
The question is: do they make prettier pictures?
Post by Joshua 'Schwa' Gargus
This is
especially true in the common case of mostly static scenes where
radiosity can be precomputed and stored in textures. It's my
understanding that many current 1st person shooters use this
approach.
To be at least a little on topic, here, our focus should be on Croquet.
In that context precomputation conflicts with late binding.

But where such tricks can be used, then I am all for them.
Post by Joshua 'Schwa' Gargus
I'm always interested in hearing new ideas. (I'm very excited that I
get to hear a talk on the topic by Pat Hanrahan this Thursday).
Enjoy!

-- Jecel
Bert Freudenberg
2012-01-28 11:33:13 UTC
Permalink
Post by Jecel Assumpcao Jr
So we might extrapolate and consider that it is only a
matter of time before REYES starts invading OpenGL's turf.
Indeed. You might want to take a look at Ashli, if you haven't done so
yet. See http://ati.com/developer/SIGGRAPH03/AshliOverview.pdf
--
Bert
Bert Freudenberg
2012-01-28 11:33:13 UTC
Permalink
Post by Bert Freudenberg
So we might extrapolate and consider that it is only a matter of time
before REYES starts invading OpenGL's turf.
Indeed. You might want to take a look at Ashli, if you haven't done so
yet. See http://ati.com/developer/SIGGRAPH03/AshliOverview.pdf
Oops, that were only the slides. This is the text version:

http://ati.com/developer/SIGGRAPH03/AshliNotes.pdf
--
Bert
Joshua 'Schwa' Gargus
2012-01-28 11:33:13 UTC
Permalink
Post by Bert Freudenberg
Post by Bert Freudenberg
So we might extrapolate and consider that it is only a matter of time
before REYES starts invading OpenGL's turf.
Indeed. You might want to take a look at Ashli, if you haven't done so
yet. See http://ati.com/developer/SIGGRAPH03/AshliOverview.pdf
http://ati.com/developer/SIGGRAPH03/AshliNotes.pdf
So much reading to do!

Thanks for the link,
Joshua
Post by Bert Freudenberg
--
Bert
Joshua 'Schwa' Gargus
2012-01-28 11:33:20 UTC
Permalink
Hi,

I was just jotting some notes on my recollections of Pat Hanrahan's
talk today at school, and some are relevant to Squeak, so here's the
lot

- Talk was entitled "Why are GPUs so fast?"

- GPUs 2.4x faster each year; trend dates back to SGIs in mid-80s

- STREAM PROCESSING!! Put 1000s of floating-point units on chip, and
keep them fed

- GPUs would need "surprisingly few" changes to be ideal for
general-purpose scientific computation

- Although many problems are not parallelizable, many of the ones that
max out CPUs today can be re-cast as stream algorithms
- LAPACK-style matrix operations
- Dynamics (cloth, fluid simulation)
- Low-level computer vision (eg: edge detection)
- Statistical pattern recognition (Bayesian/neural nets)

- "Brook": a stream processing language that they will be making an
open-source release of. Compiles down to Cg, GLSlang, or sometimes
GPU assembly language. Hides graphic-centricity of OpenGL, Direct3D.


This last one got me the most excited. Up until now, Squeak had to
jump through hoops to write performance-critical code essentially in C
via Slang and plugins. C/C++, on the other hand, wrote performance
code in their crappy own selves.

If we write an interface to Brook (I wouldn't imagine it would be tougher
than the Cg interface I wrote), then Squeak will be on equal footing with
for using stream hardware to do the heavy computational lifting.

Good stuff!

Joshua
Post by Joshua 'Schwa' Gargus
Post by Bert Freudenberg
Post by Bert Freudenberg
So we might extrapolate and consider that it is only a matter of time
before REYES starts invading OpenGL's turf.
Indeed. You might want to take a look at Ashli, if you haven't done so
yet. See http://ati.com/developer/SIGGRAPH03/AshliOverview.pdf
http://ati.com/developer/SIGGRAPH03/AshliNotes.pdf
So much reading to do!
Thanks for the link,
Joshua
Post by Bert Freudenberg
--
Bert
Joshua 'Schwa' Gargus
2012-01-28 11:33:20 UTC
Permalink
A quick, but good read for some background on this area:

http://www.computer.org/computer/homepage/1003/entertainment

Joshua
Post by Joshua 'Schwa' Gargus
Hi,
I was just jotting some notes on my recollections of Pat Hanrahan's
talk today at school, and some are relevant to Squeak, so here's the
lot
- Talk was entitled "Why are GPUs so fast?"
- GPUs 2.4x faster each year; trend dates back to SGIs in mid-80s
- STREAM PROCESSING!! Put 1000s of floating-point units on chip, and
keep them fed
- GPUs would need "surprisingly few" changes to be ideal for
general-purpose scientific computation
- Although many problems are not parallelizable, many of the ones that
max out CPUs today can be re-cast as stream algorithms
- LAPACK-style matrix operations
- Dynamics (cloth, fluid simulation)
- Low-level computer vision (eg: edge detection)
- Statistical pattern recognition (Bayesian/neural nets)
- "Brook": a stream processing language that they will be making an
open-source release of. Compiles down to Cg, GLSlang, or sometimes
GPU assembly language. Hides graphic-centricity of OpenGL, Direct3D.
This last one got me the most excited. Up until now, Squeak had to
jump through hoops to write performance-critical code essentially in C
via Slang and plugins. C/C++, on the other hand, wrote performance
code in their crappy own selves.
If we write an interface to Brook (I wouldn't imagine it would be tougher
than the Cg interface I wrote), then Squeak will be on equal footing with
for using stream hardware to do the heavy computational lifting.
Good stuff!
Joshua
Joshua 'Schwa' Gargus
2012-01-28 11:33:13 UTC
Permalink
Post by Jecel Assumpcao Jr
Post by Joshua 'Schwa' Gargus
[OpenGL vs REYES paper]
I read this quickly a while ago... wasn't one of the conclusions that
there were inherent inefficiencies in the Reyes model in the context
of a hardware implementation?
That is certainly one possible conclusion. But another way to looking at
it is that the vast gap of a few years ago is now only a more or less
large one. So we might extrapolate and consider that it is only a
matter of time before REYES starts invading OpenGL's turf.
That is a good way to look at it. It is a starting point to ask how to
define an architecture that incorporates the best aspects of each.
Post by Jecel Assumpcao Jr
Post by Joshua 'Schwa' Gargus
[and slides]
I haven't seen this... I'll check it out.
It is the same thing, but with more pictures and less words :-)
Post by Joshua 'Schwa' Gargus
One thing about ray-tracing is that it inherently has bad memory
locality (for each pixel, you might have to test for intersection
against each object in your scene). I don't see a way around this.
Since you mentioned Pat Hanrahan, you might find this paper from his
http://graphics.cs.uni-sb.de/Publications/2002/Schmittler-AHardwareArchitectureForRayTracing.pdf
Thank you for the link.
Post by Jecel Assumpcao Jr
Post by Joshua 'Schwa' Gargus
I don't know if real-time ray-tracing/radiosity are desirable from
the point of view of amount of computation required.
The question is: do they make prettier pictures?
The answer to that is yes.

Another question is: will the extra computation required cause cards
capable of doing it to have extra power connectors?

;-)
Post by Jecel Assumpcao Jr
Post by Joshua 'Schwa' Gargus
This is
especially true in the common case of mostly static scenes where
radiosity can be precomputed and stored in textures. It's my
understanding that many current 1st person shooters use this
approach.
To be at least a little on topic, here, our focus should be on Croquet.
In that context precomputation conflicts with late binding.
That is true. However, graphics is all about precomputation. If I compute
vertices for a NURBS surface, I don't want to compute them again until the
surface is modified; even if I can write a vertex program to do it in
real-time, it is still a waste of GPU cycles. By the same token, even if
we can compute radiosity each frame, it would be better to cache and reuse
it until the scene has changed enough to require recomputation.

However, I'll grant that this isn't exactly what I said the first time...
current games precompute the radiosity before shipping the game, and don't
"flush the cache" during the game.

If we restrict our focus to Croquet, it is not clear to me that photorealism
is nessary or desirable for the majority of applications.
Post by Jecel Assumpcao Jr
But where such tricks can be used, then I am all for them.
Post by Joshua 'Schwa' Gargus
I'm always interested in hearing new ideas. (I'm very excited that I
get to hear a talk on the topic by Pat Hanrahan this Thursday).
Enjoy!
Thanks!

Joshua
Post by Jecel Assumpcao Jr
-- Jecel
Chris Burkert
2012-01-28 11:33:08 UTC
Permalink
Post by Alan Grimes
Post by Tim Rowledge
Post by Alan Grimes
(I'm not going into the appliance business...)
OK but what business _Are_ you going in to? It makes a big difference
to the advice you might need.
I want to build the best PCs in the world. (ergo squeak.) ;)
That doesn't exist and will never :) It depends on the people and
there view of point what is the best PC!

I recently talked with Prof. Dr. Baumgartl (Operating Systems),
and we came to the conclusion that people should stop reinventing
the wheel.

My advice: take a Unix from scratch (Linux, QNX, BSD, or
whatever) and build squeak on top.

Regards
Chris Burkert
--
http://www.chrisburkert.de/
Alan Grimes
2012-01-28 11:33:08 UTC
Permalink
Post by Chris Burkert
I recently talked with Prof. Dr. Baumgartl (Operating Systems),
and we came to the conclusion that people should stop reinventing
the wheel.
If he likes unix then he doesn't know anything about operating systems.
--
Windows 3.11: Almost exactly 10 years old,
and -400% slower than windows XP. ;)

http://users.rcn.com/alangrimes/
Chris Burkert
2012-01-28 11:33:09 UTC
Permalink
Post by Alan Grimes
Post by Chris Burkert
I recently talked with Prof. Dr. Baumgartl (Operating Systems),
and we came to the conclusion that people should stop reinventing
the wheel.
If he likes unix then he doesn't know anything about operating systems.
I think that it's not important if somebody likes this or that.
The problem is, that most people like different things! Why are
you so certain that most people will like your implementation?

I don't want to discourage you, but what, speaking in business
terms, is the unique selling point of your idea? I can run squeak
on my FreeBSD and surf with Mozilla. So what's really new?
Business is not only about quality, but also about segregation,
warranty, emotions and lots of other things. If you cannot stand
out against your competition, why should this success?

Sure, your idea is exciting, but you said that you want to put it
in business. I would recommend you to find a balance between
dreams and business reality.


The other thing would be to make something really new. A
completely new operating system which builds on top of research
ideas and, above all, the *needs* of the users. There are
hundrets of people who think about object oriented operating
systems. Then you could repair drawbacks of the existing systems.
And of course every system, including squeak has drawbacks!

Regards
Chris Burkert
--
http://www.chrisburkert.de/
Michael Roberts
2012-01-28 11:33:09 UTC
Permalink
Post by Alan Grimes
Post by Andreas Raab
Post by Alan Grimes
1. make a bootable, self-building (no more C) VM for a reasonably
well-designed machine (that is not a PC). including a filesystem and
interrupt driven IO.
Don't. Unless you have some constraints you haven't told us, use a
minimal Linux-Kernel and have Squeak sit on top of it.
<retch>
Post by Andreas Raab
It's small, works well, and has been done before (see Dan's wheather
station). Even if your hardware is out of the ordinary you still got a
chance of the hardware people having (or being willing to produce)
functional Linux drivers. Total cost: Very Few Bucks (tm).
Well, naturally, I would require that the linux system also be able to
build itself (I'm not going into the appliance business...) That
requires approximately 200mb of compressed source and 400mb of compiled
binaries.
I'm not sure why you would want the host system to be able to build itself (rather than supply pre-built updates) but as other people have pointed out in this thread you could use a linux distro that builds from source. From your above comment Linux doesn't seem to be in favour, but one suitable distro is www.gentoo.org which allows you to build the entire system from source. It has a bsd-style ports system so you can only select the packages that you want. I would suspect that a minimal gentoo system would come in at less than the sizes you indicate. You can rebuild the entire host system if you so desire, including the entire system boot-strap. The excellent frame buffer support that has recently gone into the unix VM means that you only need hardware support from the host OS. This means that you hardly need anything. Again this is not news in this thread.
Post by Alan Grimes
If I use anything, it will be a port of Plan 9 or perhaps QNX... Just
about anything with a simple and coherant design...
Well, I appreciate that you have your opinions on Linux but I would not worry so much about the host OS's design. Who cares! Sure QNX looks cool on paper but really, this isn't a nuclear power station. Why does the design of the OS matter?

You do not need to present any of the host OS to the user if you develop the necessary interface to it in squeak. I would go as far as to say that you shouldn't present any of the host OS to the user - if you mean what you say about developing a squeak system. Therefore, the only useful thing the host OS is doing is hardware support. If this is the case, I would pick the host OS with the most active hardware support. Linux seems a good bet for this. There seem to be more people in the Linux and/or BSD community developing hardware drivers (that you would be able to use for free) than anyone else. I am constantly amazed that I can plug some random piece of hardware into my pc and find support for it. This situation is not going to change for a while. Seems a shame not to use this support.

Cheers

Mike
mwgrant2001
2012-01-28 11:33:08 UTC
Permalink
I want to write code that will create a instance of a class and I
want to name the instance by converting a string into a symbol, e.g.,

assume class Node exists, and that I want to create
an instance of Node named velocity. (The idea is to
input 'velocity' via an interactive dialog (FillInTheBlank),
so

'velocity' ----> velocity (instance of Node)

It being logical that such a method probably has 'eval' in it, I was
able to find 'evaluate:' which looked real nice. So, a little
experimentation follow. Basically, I found that I am able to evaluate
an expression but apparently not an assignment. This doesn't surprise
me and even seems vaguely familiar. But I am stuck for the moment.

To wit, using TextMorph in lieu of Node:

==========A little arithmetic======================
"Separate 'print It' for each line: "
ans _ FillInTheBlank request:'Code?'. '4/3.1'
Compiler evaluate: ans. 1.290322580645161
4/3.1 1.290322580645161 #check


"Select all and 'print It' : "
ans _ FillInTheBlank request:'Code?'.
Compiler evaluate: ans. 1.290322580645161

===========Now try assignment of new instance,
(Again, TextMorph used in lieu of Node)
"Separate 'print It' or 'do it' for each line: "
b _ TextMorph new.
b openInWorld.
b contents. a Text for 'abc'
b contents: 'I am King of TextMorphs'.
b contents. a Text for 'I am King of TextMorphs'


" Select lines 1-4 and 'do it', then 'print It on last two :"
ans _ FillInTheBlank request:'Code?'.
ans _ FillInTheBlank request:'Code for new TextMorph'.
ans 'c _ TextMorph new.'
Compiler evaluate: ans.
ans 'c _ TextMorph new.'
c nil

* Note _ is of course :=


Any suggestions? (Still on lower part of learning curve). FYI as an
excercise I working toward a simple app. to create an influence
diagrams and subsequently evaluate decision trees.

I also hope to try an MVC version (portability? to VW and Dolphin).
Hence I will be poking about for documentation on graphics in MVC.
Any recommended starting points?

Regards,

Michael Grant
Ned Konz
2012-01-28 11:33:08 UTC
Permalink
Post by mwgrant2001
" Select lines 1-4 and 'do it', then 'print It on last two :"
? ans _ FillInTheBlank request:'Code?'. ?
? ans _ FillInTheBlank request:'Code for new TextMorph'.
? ans ?'c _ TextMorph new.'
? Compiler evaluate: ans.
? ans ?'c _ TextMorph new.'
? c nil
* Note _ is of course :=
?
Any suggestions? (Still on lower part of learning curve). FYI as an
excercise I working toward a simple app. to create an influence
diagrams and subsequently evaluate decision trees.
I don't understand why you need to do assignments.

Can't you just do something like:

myMorph _ Node named: answer asSymbol.

where the #named: message is setting state in the Node?

More generally, look at the bigger picture: as you create these things,
something's got to hold onto them or they won't continue to exist.

So the assignment of
c := TextMorph new

just doesn't make any sense here.

Going a bit further, if you look at the various flavors of #evaluate: you will
find some where you can specify a context in which to do the evaluation. For
instance, Workspaces hold variable bindings, and will provide them when and
if the Compiler needs them (see #bindingOf:).
--
Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE
mayureshkathe at softhome.net ()
2012-01-28 11:33:08 UTC
Permalink
Post by Alan Grimes
Hello,
Today I'm writing as an entrepreneur trying to assemble a business plan.
I'm trying to guage how much it would cost/how much you would charge to
1. make a bootable, self-building (no more C) VM for a reasonably
well-designed machine (that is not a PC). including a filesystem and
interrupt driven IO.
If you design a machine based on the the Mitsubishi M32R/D processor you
can run Squeak natively, there was some talk (long long ago on a list
far far away) about a demostration of Squeak running on such a hardware
(at OOPSLA, I think)...
Post by Alan Grimes
2. make scamper W3C compliant and give it sufficient capabilities to be
a viable if not prefferable alternative to Internet Exploder.
Why do you want to do that, that would be almost impossible, try to
invent new apps for such a device.
I would suggest that you research Mr. Alan Kay's DynaPad concepts and
try to implement them.
That would certainly be a lot more viable...
Post by Alan Grimes
All I need is a ballpark, not necessarily a specific quote.
I dunno, it would certainly be a very scary figure...

Warm Regards,

~Mayuresh
Michael Grant
2012-01-28 11:33:09 UTC
Permalink
Hope this is readable--I've got to get my edit window preferences straightened up :-)

Ned Konz <***@bike-nomad.com> wrote:

On Sunday 16 November 2003 8:25 pm, mwgrant2001 wrote:

Ned: I don't understand why you need to do assignments.

mwg: The quick answer is because it suits the way I think about the problem. I did this a number of years ago as a text-based app. in LISP and so it makes a nice substantive exercise in Squeak. The keys to the (OO) LISP implementation were 1.) symbolic computation--in particular the ability of have objects create objects-- 2.) recursion, 3) and of it was object-oriented. Indeed the ease of the task was in part because I was able to think of the nodes as little agents which could determine from the context of their own creation where they belonged and what they had to do--when to create more nodes and when evaluate themselves and disappear into the garbage collector.

In more detail: The goal is to generate a decision tree (ala SRI approach), or rather have a decision tree generate and evaluate itself where only 'blueprints' of the uncertainty and decision nodes are input by the user via the on-the-fly construction of the influence diagram. Once the IF is specificied a base node--typically decision--is created and told to 'bloom'. By 'bloom'ing it then creates creates a node--typically an uncertainty--for each of it branch.

Each of these nodes will then in turn 'bloom' and so on until terminal nodes are reached. Here bloom cause the node to return a probability weighted value to that node which created it. When a node has values returned from each of the nodes it created, then it takes those values and uses them to calculate a weighted value which is returned to its creator, and so on.

So the tree, specified by the user on-the-fly, is generated and evaluated.

ned:
Can't you just do something like:

myMorph _ Node named: answer asSymbol.

where the #named: message is setting state in the Node?

mwg: I don't know. That is why I asked for help in the first place. I appreciate the tip. One possible problem here is I don't know beforehand how many Morphs will be created and how many need to exist concurrently. So anything static like myMorph is not workable. I am looking for the ST equivalent of LISP's GENSYMing a string into an interned symbol in a dynamic context. (I believe this is the appropriate description--it's been years!!!).

BTW ultimately nodes would not be subclasses of a Morphic class, but each node instance would have one or more morphs as a variables. I just simplified things here.

ned:

More generally, look at the bigger picture: as you create these things,
something's got to hold onto them or they won't continue to exist.

mwg: I expected scope could be part of the issue. I looked at some of other #evaluate's in th eimage but no examples or guidance...that was the determining factor for my the original email.


Ned:
So the assignment of
c := TextMorph new

just doesn't make any sense here.

mwg:

It obviously didn't make sense to Squeak either :o).

But the need to do what I tried to do is critical to the present approach. So maybe the approach gets modified--but first I want to duplicate as much as possible. One of the reasons I started THIS EXERCISE is to see how much extra effort it is to do symbolic calculation in ST. I suspected and still suspect thatit is easier to do in LISP, but that isn't an issue. I'm PLAYING with ST.


Ned:
Going a bit further, if you look at the various flavors of #evaluate: you will
find some where you can specify a context in which to do the evaluation. For
instance, Workspaces hold variable bindings, and will provide them when and
if the Compiler needs them (see #bindingOf:).


mwg:

In truth I did. I thought scope was important and was not real surprised when the code didn't work. Obviously things like '#evaluate in:' showed up in the method finder, but no example and hence I could only that execution of 'Compiler evaluate' might take note of the 'scope' and act according. This is where even an example in the image would have been very helpful, but I can't be suprised there wasn't one. After all who would be looking at #evaluates unless the knew what they were doing, huh?

Thanks for you comments, Ned...they do give me some things to try.

Best Regards,

Mike




---------------------------------
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20031117/090ed2e7/attachment.htm
Alan Kay
2012-01-28 11:33:10 UTC
Permalink
Hi Michael --

Since the original Smalltalk was in part inspired by LISP and because
ST, like LISP, does its conversion on the fly from input strings to
runnable objects and code, this is obviously doable. Look a little
more at how a method is compiled from its editable string and bound
into a context ...

Cheers,

Alan
Post by Michael Grant
Hope this is readable--I've got to get my edit window preferences straightened up :-)
Ned: I don't understand why you need to do assignments.
mwg: The quick answer is because it suits the way I think about the
problem. I did this a number of years ago as a text-based app. in
LISP and so it makes a nice substantive exercise in Squeak. The keys
to the (OO) LISP implementation were 1.) symbolic computation--in
particular the ability of have objects create objects-- 2.)
recursion, 3) and of it was object-oriented. Indeed the ease of the
task was in part because I was able to think of the nodes as little
agents which could determine from the context of their own
creation where they belonged and what they had to do--when to create
more nodes and when evaluate themselves and disappear into the
garbage collector.
In more detail: The goal is to generate a decision tree (ala SRI
approach), or rather have a decision tree generate and evaluate
itself where only 'blueprints' of the uncertainty and decision nodes
are input by the user via the on-the-fly construction of the
influence diagram. Once the IF is specificied a base node--typically
decision--is created and told to 'bloom'. By 'bloom'ing it then
creates creates a node--typically an uncertainty--for each of it
branch.
Each of these nodes will then in turn 'bloom' and so on until
terminal nodes are reached. Here bloom cause the node to return a
probability weighted value to that node which created it. When a
node has values returned from each of the nodes it created, then it
takes those values and uses them to calculate a weighted value which
is returned to its creator, and so on.
So the tree, specified by the user on-the-fly, is generated and evaluated.
myMorph _ Node named: answer asSymbol.
where the #named: message is setting state in the Node?
mwg: I don't know. That is why I asked for help in the first place.
I appreciate the tip. One possible problem here is I don't know
beforehand how many Morphs will be created and how many need to
exist concurrently. So anything static like myMorph is not
workable. I am looking for the ST equivalent of LISP's GENSYMing a
string into an interned symbol in a dynamic context. (I believe this
is the appropriate description--it's been years!!!).
BTW ultimately nodes would not be subclasses of a Morphic class, but
each node instance would have one or more morphs as a variables. I
just simplified things here.
More generally, look at the bigger picture: as you create these things,
something's got to hold onto them or they won't continue to exist.
mwg: I expected scope could be part of the issue. I looked at some
of other #evaluate's in th eimage but no examples or
guidance...that was the determining factor for my the original email.
So the assignment of
c := TextMorph new
just doesn't make any sense here.
It obviously didn't make sense to Squeak either :o).
But the need to do what I tried to do is critical to the present
approach. So maybe the approach gets modified--but first I want to
duplicate as much as possible. One of the reasons I started
THIS EXERCISE is to see how much extra effort it is to do symbolic
calculation in ST. I suspected and still suspect thatit is easier to
do in LISP, but that isn't an issue. I'm PLAYING with ST.
Going a bit further, if you look at the various flavors of #evaluate: you will
find some where you can specify a context in which to do the evaluation. For
instance, Workspaces hold variable bindings, and will provide them when and
if the Compiler needs them (see #bindingOf:).
In truth I did. I thought scope was important and was not real
surprised when the code didn't work. Obviously things like
'#evaluate in:' showed up in the method finder, but no example and
hence I could only that execution of 'Compiler evaluate' might take
note of the 'scope' and act according. This is where even an example
in the image would have been very helpful, but I can't be suprised
there wasn't one. After all who would be looking at #evaluates
unless the knew what they were doing, huh?
Thanks for you comments, Ned...they do give me some things to try.
Best Regards,
Mike
Do you Yahoo!?
<http://antispam.yahoo.com/whatsnewfree>Protect your identity with
Yahoo! Mail AddressGuard
--
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20031117/c99308f1/attachment.htm
Michael Grant
2012-01-28 11:33:10 UTC
Permalink
Thanks, Alan. It is a lot of ground for a new guy to cover BUT now I know I can get there! :o) So I just dig in and give it a go!

Best regards,
Michael

Alan Kay <***@squeakland.org> wrote:
Hi Michael --


Since the original Smalltalk was in part inspired by LISP and because ST, like LISP, does its conversion on the fly from input strings to runnable objects and code, this is obviously doable. Look a little more at how a method is compiled from its editable string and bound into a context ...


Cheers,


Alan


At 6:16 AM -0800 11/17/03, Michael Grant wrote:
Hope this is readable--I've got to get my edit window preferences straightened up :-)
Ned Konz <***@bike-nomad.com> wrote:
On Sunday 16 November 2003 8:25 pm, mwgrant2001 wrote:

Ned: I don't understand why you need to do assignments.
mwg: The quick answer is because it suits the way I think about the problem. I did this a number of years ago as a text-based app. in LISP and so it makes a nice substantive exercise in Squeak. The keys to the (OO) LISP implementation were 1.) symbolic computation--in particular the ability of have objects create objects-- 2.) recursion, 3) and of it was object-oriented. Indeed the ease of the task was in part because I was able to think of the nodes as little agents which could determine from the context of their own creation where they belonged and what they had to do--when to create more nodes and when evaluate themselves and disappear into the garbage collector.
In more detail: The goal is to generate a decision tree (ala SRI approach), or rather have a decision tree generate and evaluate itself where only 'blueprints' of the uncertainty and decision nodes are input by the user via the on-the-fly construction of the influence diagram. Once the IF is specificied a base node--typically decision--is created and told to 'bloom'. By 'bloom'ing it then creates creates a node--typically an uncertainty--for each of it branch.
Each of these nodes will then in turn 'bloom' and so on until terminal nodes are reached. Here bloom cause the node to return a probability weighted value to that node which created it. When a node has values returned from each of the nodes it created, then it takes those values and uses them to calculate a weighted value which is returned to its creator, and so on.
So the tree, specified by the user on-the-fly, is generated and evaluated.
ned:
Can't you just do something like:

myMorph _ Node named: answer asSymbol.

where the #named: message is setting state in the Node?
mwg: I don't know. That is why I asked for help in the first place. I appreciate the tip. One possible problem here is I don't know beforehand how many Morphs will be created and how many need to exist concurrently. So anything static like myMorph is not workable. I am looking for the ST equivalent of LISP's GENSYMing a string into an interned symbol in a dynamic context. (I believe this is the appropriate description--it's been years!!!).
BTW ultimately nodes would not be subclasses of a Morphic class, but each node instance would have one or more morphs as a variables. I just simplified things here.
ned:
More generally, look at the bigger picture: as you create these things,
something's got to hold onto them or they won't continue to exist.
mwg: I expected scope could be part of the issue. I looked at some of other #evaluate's in th eimage but no examples or guidance...that was the determining factor for my the original email.
Ned:
So the assignment of
c := TextMorph new

just doesn't make any sense here.
mwg:
It obviously didn't make sense to Squeak either :o).
But the need to do what I tried to do is critical to the present approach. So maybe the approach gets modified--but first I want to duplicate as much as possible. One of the reasons I started THIS EXERCISE is to see how much extra effort it is to do symbolic calculation in ST. I suspected and still suspect thatit is easier to do in LISP, but that isn't an issue. I'm PLAYING with ST.
Ned:
Going a bit further, if you look at the various flavors of #evaluate: you willfind some where you can specify a context in which to do the evaluation. For
instance, Workspaces hold variable bindings, and will provide them when and
if the Compiler needs them (see #bindingOf:).
mwg:
In truth I did. I thought scope was important and was not real surprised when the code didn't work. Obviously things like '#evaluate in:' showed up in the method finder, but no example and hence I could only that execution of 'Compiler evaluate' might take note of the 'scope' and act according. This is where even an example in the image would have been very helpful, but I can't be suprised there wasn't one. After all who would be looking at #evaluates unless the knew what they were doing, huh?

Thanks for you comments, Ned...they do give me some things to try.
Best Regards,
Mike


---------------------------------
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
--
---------------------------------
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20031117/37041fc6/attachment.htm
Lex Spoon
2012-01-28 11:33:10 UTC
Permalink
Post by Ned Konz
Going a bit further, if you look at the various flavors of #evaluate: you will
find some where you can specify a context in which to do the evaluation. For
instance, Workspaces hold variable bindings, and will provide them when and
if the Compiler needs them (see #bindingOf:).
Right. If your "context" object has a bindingOf: method, that method
can supply Associations that variables in your text can access.

Also, if you are evaluating in the context of a particular object, you
can specify that to the compiler as well. Then the compiled code will
be able to access instance variables of that object.


One other thing to consider, by the way, is blocks, the Smalltalk
version of lambda. I notice that Lisp people like macros so much that
they use them even when blocks would work even better. Since
macro-style programming is more awkward in Smalltalk (though certainly
doable!), you might want to push harder on blocks, which are extremely
smooth. They also tend to be easier to debug than uses of evaluate:.


Good luck, and do tell how it goes! It is always nice to have fresh perspectives!


-Lex
Chris Muller
2012-01-28 11:33:10 UTC
Permalink
Post by Alan Grimes
My own experience with squeak is that it only needs a decient
web-browser and a usable word-processor as well as a few layout fixups
to be ready for prime-time...
I think the path to commercial success with Squeak on the large-scale you are
thinking is to use Squeak to lead, not follow. Attempting to imitate
"web-browsing" and "word-processing" with Squeak would be a public-relations
"death" for Squeak. How would you possibly sell it? Lower-cost alone just
wouldn't cut it, IMHO.

I'm content to let MS wallow in the costly mess that is those legacy
"applications" (wp'ing and wb'ing). Meanwhile, I'm trying to use Squeak to
build something entirely new and different in terms of what is in the
commercial mainstream. Morphic is key, but an interface to launch people into
the legacy apps as well access to the XML representations of their document
"objects" would certainly help with their transition.

I truly believe there is a huge market of less-technical people who *want* to
wield the computer without having to rely so much on tech-savvy people.. It's
just that, they don't have an accessible tool other than "Excel" that they
understand that also doesn't close them in.

I like to think of Squeak as "tool-builder" and any end-user "products" I
create with it will have entirely different names; e.g., I won't be calling
them "Squeak". A "Powered by Squeak" annotation could be helpful, though.

I could want nothing more than for you and others to have commercial success
using Squeak. Please keep us posted.

Regards,
Chris
Joshua 'Schwa' Gargus
2012-01-28 11:33:11 UTC
Permalink
Hear, hear, Chris

Joshua
Post by Chris Muller
Post by Alan Grimes
My own experience with squeak is that it only needs a decient
web-browser and a usable word-processor as well as a few layout fixups
to be ready for prime-time...
I think the path to commercial success with Squeak on the large-scale you are
thinking is to use Squeak to lead, not follow. Attempting to imitate
"web-browsing" and "word-processing" with Squeak would be a public-relations
"death" for Squeak. How would you possibly sell it? Lower-cost alone just
wouldn't cut it, IMHO.
I'm content to let MS wallow in the costly mess that is those legacy
"applications" (wp'ing and wb'ing). Meanwhile, I'm trying to use Squeak to
build something entirely new and different in terms of what is in the
commercial mainstream. Morphic is key, but an interface to launch people into
the legacy apps as well access to the XML representations of their document
"objects" would certainly help with their transition.
I truly believe there is a huge market of less-technical people who *want* to
wield the computer without having to rely so much on tech-savvy people.. It's
just that, they don't have an accessible tool other than "Excel" that they
understand that also doesn't close them in.
I like to think of Squeak as "tool-builder" and any end-user "products" I
create with it will have entirely different names; e.g., I won't be calling
them "Squeak". A "Powered by Squeak" annotation could be helpful, though.
I could want nothing more than for you and others to have commercial success
using Squeak. Please keep us posted.
Regards,
Chris
Lex Spoon
2012-01-28 11:33:14 UTC
Permalink
Post by Chris Muller
Post by Alan Grimes
My own experience with squeak is that it only needs a decient
web-browser and a usable word-processor as well as a few layout fixups
to be ready for prime-time...
I think the path to commercial success with Squeak on the large-scale you are
thinking is to use Squeak to lead, not follow. Attempting to imitate
"web-browsing" and "word-processing" with Squeak would be a public-relations
"death" for Squeak. How would you possibly sell it?
There are plenty of things. Coolness alone will sell you a bunch of
them. Squeak makes *great* demos. How cool that everything is sitting
on your desktop waiting for you to mess with it? You don't have to
double click and wait for applications to load. Your data is just
*there*, ready to be moved around, edited, viewed, or tossed across the
network.

And if you are a power user, you're even happier. If you like Visual
Basic or AppleScript then you'll go nuts with Morphic.

I don't see why everyone is so down on the thought. OS/2 and BeOS had
plenty good followings during their time, and they were relatively
imitative. As a closer example, the Lisp Machine still has rabid
followers today. To do a SqueakOS seems to only take time and a
willingness to pursue success instead of just mess around. It's a big
project, but it's not ridiculously big compared to the kind of efforts
floating around these days. Imagine 10% of Netscape in its prime.
Imagine 1% of go.com.


Dan Ingalls put it best back in the famous Byte article:

"An operating system is a collection of things that don't fit into a
language. There shouldn't be one."


I'm tired of being left to wallow around in sub-standard OS's. I put
what time I can into moving Squeak towards being an OS of its own, and I
think it will get there over some number of years, but a commercial
effort is a fine way to go and would speed things up.


Lex
Jimmie Houchin
2012-01-28 11:33:16 UTC
Permalink
Hello Lex,
Post by Lex Spoon
Post by Chris Muller
Post by Alan Grimes
My own experience with squeak is that it only needs a decient
web-browser and a usable word-processor as well as a few layout fixups
to be ready for prime-time...
I think the path to commercial success with Squeak on the large-scale you are
thinking is to use Squeak to lead, not follow. Attempting to imitate
"web-browsing" and "word-processing" with Squeak would be a public-relations
"death" for Squeak. How would you possibly sell it?
There are plenty of things. Coolness alone will sell you a bunch of
them. Squeak makes *great* demos. How cool that everything is sitting
on your desktop waiting for you to mess with it? You don't have to
double click and wait for applications to load. Your data is just
*there*, ready to be moved around, edited, viewed, or tossed across the
network.
Preach it brother Lex.

Nice thing is we don't have to go for world domination.
If we had a good enough system that enough people would buy that would
support ??? number of full-time Squeakers that would be fantastic.

How many Squeakers here on this list would love to work for such a
setup, either full time or consulting? Tim, Craig, Todd, John Mc, ...

We could have some happily employed Squeakers rather than Squeakers
seeking employment.
Post by Lex Spoon
And if you are a power user, you're even happier. If you like Visual
Basic or AppleScript then you'll go nuts with Morphic.
Woohoo!
Post by Lex Spoon
I don't see why everyone is so down on the thought. OS/2 and BeOS had
plenty good followings during their time, and they were relatively
imitative. As a closer example, the Lisp Machine still has rabid
followers today. To do a SqueakOS seems to only take time and a
willingness to pursue success instead of just mess around. It's a big
project, but it's not ridiculously big compared to the kind of efforts
floating around these days. Imagine 10% of Netscape in its prime.
Imagine 1% of go.com.
I am definitely not down on the thought. To me it is one of the most
exciting thoughts in computers. A living OS which anybody who wants to
put in a little effort can master a portion of commensurate with their
effort.

Its like all the Apple naysayers. They'll never beat Microsoft. Their
just a niche market. ...

Come on now. Wake up. I would happily take the keys to that "niche
market" and enjoy the ride. But I don't think Steve is giving them away. :)

That "niche" market is bigger than what 90% of any other individual
business?

We could happily exist in a niche. Those who don't have or share the
vision. Oh well, that won't enjoy the fruits.
Post by Lex Spoon
"An operating system is a collection of things that don't fit into a
language. There shouldn't be one."
I like that.
Post by Lex Spoon
I'm tired of being left to wallow around in sub-standard OS's. I put
what time I can into moving Squeak towards being an OS of its own, and I
think it will get there over some number of years, but a commercial
effort is a fine way to go and would speed things up.
Yup!

I agree that we can start on top of a small Linux foundation.
If we could develop a minimal Linux hardware abstraction layer
distribution upon which SqueakOS would sit, that would be a nice start.

If we started with addressing fundamentals, foundations we would do
well. We don't need or require all the extraneous and superfluous
feature of browsers or word processors.

I like Cees' suggestion regarding web browser.

OpenOffice.org will help fight the battle on the word processor segment.
If Squeak had a nice subset of features which did a high percent of what
people need and could "Save as" or "export" to OpenOffice.org's
XML/zipped format, we would have a big win for our community.

OOo could move people from Word/Office and we could move our niche to
Squeak. :)

Squeak is very enabling. If we hang in there and keep on keepin' on then
we can prosper and do very, very well. As we gain momentum and
developers then more and more is within our reach.

The world is ours, they just don't know it yet.

And that statement at the top about not going for world domination.
Forget it. I was wrong. :)
Let's do it.

Jimmie Houchin
Joshua 'Schwa' Gargus
2012-01-28 11:33:16 UTC
Permalink
Although I agree with your sentiments, I think that you misread Chris'
message... he's saying saying basically the same thing you are. "how
would you possibly sell it?" refers to a Squeak focused on web-browsing
and word processing. He then says that Squeak should lead (ie: Morphic,
etc.), not follow (ie: web-browsing).

Joshua
Post by Lex Spoon
Post by Chris Muller
Post by Alan Grimes
My own experience with squeak is that it only needs a decient
web-browser and a usable word-processor as well as a few layout fixups
to be ready for prime-time...
I think the path to commercial success with Squeak on the large-scale you are
thinking is to use Squeak to lead, not follow. Attempting to imitate
"web-browsing" and "word-processing" with Squeak would be a public-relations
"death" for Squeak. How would you possibly sell it?
There are plenty of things. Coolness alone will sell you a bunch of
them. Squeak makes *great* demos. How cool that everything is sitting
on your desktop waiting for you to mess with it? You don't have to
double click and wait for applications to load. Your data is just
*there*, ready to be moved around, edited, viewed, or tossed across the
network.
And if you are a power user, you're even happier. If you like Visual
Basic or AppleScript then you'll go nuts with Morphic.
I don't see why everyone is so down on the thought. OS/2 and BeOS had
plenty good followings during their time, and they were relatively
imitative. As a closer example, the Lisp Machine still has rabid
followers today. To do a SqueakOS seems to only take time and a
willingness to pursue success instead of just mess around. It's a big
project, but it's not ridiculously big compared to the kind of efforts
floating around these days. Imagine 10% of Netscape in its prime.
Imagine 1% of go.com.
"An operating system is a collection of things that don't fit into a
language. There shouldn't be one."
I'm tired of being left to wallow around in sub-standard OS's. I put
what time I can into moving Squeak towards being an OS of its own, and I
think it will get there over some number of years, but a commercial
effort is a fine way to go and would speed things up.
Lex
Bijan Parsia
2012-01-28 11:33:11 UTC
Permalink
Post by Lex Spoon
Post by Alan Grimes
My own experience with squeak is that it only needs a decient
web-browser and a usable word-processor as well as a few layout fixups
to be ready for prime-time...
This doesn't sound quite as crazy as people are making it out. You
would have to be very very careful, though, about what gets implemented.
It's widely suggested that the vast bulk of features in Word, Excell,
and, dare I say, Mozilla, are not necessary. If you relentlessly focus
on what is necessary to make a useful home computer, you could do it
with a dozen programmers and a year or two's effort, as an optimistic
estimate. You would certainly not want to go down the list at w3.org
and implement every TLA they have, but you could do HTML 4 and style
sheets and JavaScript.
[snip]

Or you could focus on integrating the publically available JavaScript and
HTML engines tightly with Squeak. To make them work well (well, more Gecko
than JavaScript) in a Squeakly way is an interesting challenge in itself,
and it means you do less Wheel reinventing, and I'd imagine, you have less
overall effort.

Cheers,
Bijan Parsia.
Bruce ONeel
2012-01-28 11:33:14 UTC
Permalink
Post by Lex Spoon
I don't see why everyone is so down on the thought. OS/2 and BeOS had
plenty good followings during their time, and they were relatively
imitative. As a closer example, the Lisp Machine still has rabid
followers today. To do a SqueakOS seems to only take time and a
willingness to pursue success instead of just mess around. It's a big
project, but it's not ridiculously big compared to the kind of efforts
floating around these days. Imagine 10% of Netscape in its prime.
Imagine 1% of go.com.
As one of those lisp machine fanatics I sure wouldn't mind a
SqueakOS. That said, again as someone who had to use
Lisp machines in production, there were more than a few
problems.

- The file systems sucked. Yes, that's a technical term. How we
wished for even a DOS FAT file system with extended file
names, yet alone something as nice as extfs2 or bsd's ffs.
All kinds of things were poorly debugged. Odd performance
limitations and random unrepeatable directory corruption at
2am made the lisp file system painful. More than one good lisper
decended into the file system code with the idea that "this can't
be too hard to fix" only to emerge days later with little or no
progress.

- The networking was not much better. NFS was truely stunning
to watch run, basically because getting fseek to work correctly
was difficult. Ergo we didn't run nfs as it wasn't so necessary.
TCP/IP was a bit iffy at times as well. Reboots solved that though.
Chaosnet screwed up less often, but, only the lisp machines ran
chaosnet so there were probably less out of bound conditions deal
with.

- The scheduler was always aproached with a bit of
trepidation, since screwing up process priorities was a
recipe for disaster.

- Other bits were very nice, of course. The windowing/UI was
very nice.

If someone could write a *good* file system in squeak and a
good TCP/IP stack then SqueakOS would be possible on a limited
set of hardware. It is worth remembering that existing
file systems and tcp/ip stacks have a lot of accumulated
knowledge coded in that might not be obvious from the
outside.

cheers

bruce
mayureshkathe at softhome.net ()
2012-01-28 11:33:15 UTC
Permalink
Post by Bruce ONeel
As one of those lisp machine fanatics I sure wouldn't mind a
Where on the web can I take a look at a lisp machine?
Post by Bruce ONeel
If someone could write a *good* file system in squeak and a
good TCP/IP stack then SqueakOS would be possible on a limited
set of hardware. It is worth remembering that existing
There was a Squeak Machine built, just that it was never taken into
production.
The economics never made it a feasible idea.

How many people would buy a SqueakMachine?
Lets suppose I build a SqueakMachine, how many people on this list would
be interested?

~Mayuresh
Brian T Rice
2012-01-28 11:33:15 UTC
Permalink
Post by mayureshkathe at softhome.net ()
Post by Bruce ONeel
As one of those lisp machine fanatics I sure wouldn't mind a
Where on the web can I take a look at a lisp machine?
http://www.google.com/search?q=lisp+machine&ie=UTF-8&oe=UTF-8
--
Brian T. Rice
LOGOS Research and Development
http://tunes.org/~water/
Jecel Assumpcao Jr
2012-01-28 11:33:16 UTC
Permalink
Post by mayureshkathe at softhome.net ()
Post by Bruce ONeel
As one of those lisp machine fanatics I sure wouldn't mind a
Where on the web can I take a look at a lisp machine?
Brian already gave you a good link, but I can't resist commenting that
you can't download a "machine" over the internet. You have to either
personally go somewhere where they have a working model or find a movie
of one in action. Unfortunately, doing a search in the video part of
Altavista didn't get me any results.
Post by mayureshkathe at softhome.net ()
Post by Bruce ONeel
If someone could write a *good* file system in squeak and a
good TCP/IP stack then SqueakOS would be possible on a limited
set of hardware. It is worth remembering that existing
I would prefer a good persistent object store to a file system, though
of course these would be needed for dealing with older machines. Just
like you can read and write to a FAT partition on a machine that you
booted with a Knoppix Linux CD-ROM, for example.

In fact, I would group this with the web browser, email, text editor and
spreadsheet as "necessary but not sufficient" applications. Having
these things doesn't really help, but not having them hurt very much
indeed.
Post by mayureshkathe at softhome.net ()
There was a Squeak Machine built, just that it was never taken into
production.
The economics never made it a feasible idea.
The machines I am aware of are:

- Exobox http://minnow.cc.gatech.edu/squeak/2486
- Interval Research
- Curtis Wickman's port of Squeak to a bare Mitsubishi M32 chip
- STC Hyperstone prototype http://minnow.cc.gatech.edu/squeak/1836

And these adaptations should probably count as well:

- Disney Parks PDA (present at OOPSLA 2003)
- Dan's Squeak PC http://minnow.cc.gatech.edu/squeak/3502

My impression is that economics was not the most important factor in why
we can't buy any of these.
Post by mayureshkathe at softhome.net ()
How many people would buy a SqueakMachine?
Lets suppose I build a SqueakMachine, how many people on this list
would be interested?
As I mentioned in another message in this thread, I am building a
Smalltalk Machine (running what I called "Neo Smalltalk" as the kernel
language, but the idea is to have Squeak on top of that) and would be
happy to collaborate with people interested in this.

It is a very open project - any lack of information is not due to
secrets but only my limited time to keep web pages updated.

-- Jecel
Brian T Rice
2012-01-28 11:33:16 UTC
Permalink
Post by Jecel Assumpcao Jr
Post by mayureshkathe at softhome.net ()
Post by Bruce ONeel
As one of those lisp machine fanatics I sure wouldn't mind a
Where on the web can I take a look at a lisp machine?
Brian already gave you a good link, but I can't resist commenting that
you can't download a "machine" over the internet. You have to either
personally go somewhere where they have a working model or find a movie
of one in action. Unfortunately, doing a search in the video part of
Altavista didn't get me any results.
http://lemonodor.com/archives/000441.html

This is a demo put together by someone I correspond with pretty
frequently. I own a Symbolics machine myself, and keep it running as my
"Alto" as it were: to keep me inspired about what went right and what went
wrong about this kind of idea. The lessons I learn go into (or will go
into) Slate.
Post by Jecel Assumpcao Jr
Post by mayureshkathe at softhome.net ()
How many people would buy a SqueakMachine?
Lets suppose I build a SqueakMachine, how many people on this list
would be interested?
As I mentioned in another message in this thread, I am building a
Smalltalk Machine (running what I called "Neo Smalltalk" as the kernel
language, but the idea is to have Squeak on top of that) and would be
happy to collaborate with people interested in this.
It is a very open project - any lack of information is not due to
secrets but only my limited time to keep web pages updated.
--
Brian T. Rice
LOGOS Research and Development
http://tunes.org/~water/
Lex Spoon
2012-01-28 11:33:17 UTC
Permalink
Post by Jecel Assumpcao Jr
Brian already gave you a good link, but I can't resist commenting that
you can't download a "machine" over the internet. You have to either
personally go somewhere where they have a working model or find a movie
of one in action. Unfortunately, doing a search in the video part of
Altavista didn't get me any results.
Funny you would say that. My understading is that one of the best ways
to get a "Lisp Machine" is to get an DEC Alpha plus a Lisp Machine
emulator.

But that's not the really funny part. The really funny part is that it
doesn't actually matter whether Squeak is sitting right on top of the
hardware or not. The important part (IMHO) is whether you can do OS-y
things like run programs and save objects into files, and that's the
part to concentrate on for anyone goes after it.


-Lex
Gary Fisher
2012-01-28 11:33:16 UTC
Permalink
Post by mayureshkathe at softhome.net ()
How many people would buy a SqueakMachine?
Lets suppose I build a SqueakMachine, how many people on this list would
be interested?
~Mayuresh
If such a machine offered significant advantages in speed, price and/or form
factor (compared to existing "Squeak on top of . . ." solutions) I would be
likely to buy. My preferred Squeak machine would substantially conform to
the Dynabook principles, but a desktop version would no doubt have
widespread applications as well.

Gary Fisher
Richard A. O'Keefe
2012-01-28 11:33:17 UTC
Permalink
Bruce ONeel <***@sdf.lonestar.org> wrote:
As one of those lisp machine fanatics I sure wouldn't mind a SqueakOS. That said, again as someone who had to use

I also used Lisp machines, but Xerox ones.

- The file systems sucked. Yes, that's a technical term. How we
wished for even a DOS FAT file system with extended file
names, yet alone something as nice as extfs2 or bsd's ffs.

We had problems with the Xerox Lisp machines because we were adding
Prolog support, and that meant tinkering with the microcode and at
best using primitives like \GETWORD and \PUTWORD that bypassed all the
usual Lisp checking. So rebooting from floppies because _we_ had fouled
something up was not uncommon and not pleasant. However, I must say that
we never had any trouble at all with the Interlisp-D file system. Oh,
and we hooked it up to a network of mixed Unix boxes with *no* trouble...

Perhaps coming from the same stable as Smalltalk (and running on some of
the same machines that Smalltalk ran on after the Alto) had something to
do with it.

Now I can stop feeling inferior for not using a "real" Lisp machine (:-).
Brian T Rice
2012-01-28 11:33:17 UTC
Permalink
...
Post by Richard A. O'Keefe
Now I can stop feeling inferior for not using a "real" Lisp machine (:-).
For what it's worth, the Symbolics systems really are pretty solid for all
the issues he mentioned, at least in the later systems versions (although
I never used or had a use for chaosnet, so I can't speak to that). He must
have used an inferior TI Explorer system. ;-)

And I should add, my enthusiasm for these systems extends only to the
software and interface abstractions (the main reason for focussing on
Symbolics, which had the main development and design lead). The
dedicated-hardware concept is not something I'm willing to push for in any
shape or form. Better to concentrate on improving the integration of
type-inferencing and modern compiler optimizations, as well as developing
better systems abstractions. And, oh yeah, get those old ideas that no one
has matched yet delivered to everykid (in the right way, of course).

The reason these machines are so useful is that they enabled developers in
those days to jump straight to systems design in safe languages (even C
runs on them - just with incredible debuggability), instead of messing
with low-level OS support without any real type-checking or error-handling
hooks.

The modern equivalent is to re-use the linux kernel and develop some
in-kernel module to support running safe vm's atop it, as well as hooks
for interactively modifying it. Jecel's work and Squeak-based "weather
PC's" notwithstanding, there is a real area of benefit that is being
missed by the surrounding enthusiasts, which is much more independent of
commercial funding and would have a wider audience.
--
Brian T. Rice
LOGOS Research and Development
http://tunes.org/~water/
mwgrant2001
2012-01-28 11:33:21 UTC
Permalink
This is just a quick update on getting Squeak to write (execute
Squeak.) First, I really appreciate all of the suggestions. Most lead
to some interesting side journeys with the code and I learned some
this week and made one of those 'jumps up' we have where on a
learning curve. I still want to pursue some the suggested approaches
(that I didn't get to work).

The air cleared when I had two thoughts as a result of
the 'collective' responses. First, I had the realization I should not
try to do things in a workspace, but should do them from the safe
confines of an object--an object or agent at the defined in the
workspace--that has all the relevant information I need in its
instance variables. And with one of those variables being a
dictionary holding my node names. The second thought was to use the
dictionary as an instance variable of the top-level agent. All
commands or interations are communication to the agent which the does
what ever it needs to. Yet I can use descriptive references, i.e.,
meaningful in the specific problem context.

Still far to go but below is an interaction sequence. I will include
a fileOut and documentation with rationale later. This is still in
its nascent stages. The stuff below just shows how it looks.
Eventually of course I will want to make the interaction graphical.

You got me going...thanks.

Snippet (annotated)
myAnalysis _ Analysis new.

myAnalysis initialize.
myAnalysis baseNodes. a Dictionary() ...Empty here

myAnalysis addNode. ...adding 'gwVelocity' by FillInTheBlankMorph
myAnalysis addNode. ...adding 'releaseRate' ...
myAnalysis addNode. ...adding 'sorption' ...

myAnalysis baseNodes. a Dictionary('gwVelocity'->a
DANode 'releaseRate'->a DANode 'sorption'->a DANode )

gwVelocity. nil ...'gwVelocity' doesn't exist outside of myAnalysis

myAnalysis getNode: 'gwVelocity'. a DANode

(myAnalysis getNode: 'gwVelocity') getBranches. nil ...not yet
defined...

(myAnalysis getNode: 'gwVelocity') setBranches: #
('low' 'moderate' 'high'). ...set nodes branches at node level...

(myAnalysis getNode: 'gwVelocity') getBranches. #
('low' 'moderate' 'high') ... or at Analysis level...

"Or set branches at Analysis level (using a little sugaring)"
myAnalysis setBranchesFor: 'releaseRate' to: #
('slow' 'moderate' 'fast').

(myAnalysis getNode: 'releaseRate') getBranches. #
('slow' 'moderate' 'fast')


"Or use a FillInTheBlankMorph..."
myAnalysis setBranchesFor: 'sorption' to: (((FillInTheBlankMorph
request: 'Enter branch names') findTokens: ' ') asArray).

(myAnalysis getNode: 'sorption') getBranches. #
('noSorption' 'lowKd' 'mediumKd' 'highKd')


myAnalysis selectBranchOf: 'gwVelocity'. 'moderate'
here a menu of branch names is popped, etc. 'moderate' was selected

That particular method looks like:

selectBranchOf: nodeName
"The receiver (anAnalysis) pops a menu of branch names for
node 'nodeName' and
returns the selected branch name as a string - mwg "
|aMenu|
aMenu := SelectionMenu
labelList: ((self getNode:nodeName) getBranches)
selections: ((self getNode: nodeName) getBranches).
^ aMenu startUpWithCaption: 'Choose a branch for
editing'



Regards,
Mike
smallsqueak
2012-01-28 11:33:23 UTC
Permalink
That means you can buy approximately 22 next-generation operating
systems for the cost of a space shuttle launch, or 12 for the average
cost of a Hollywood movie.
http://www.hq.nasa.gov/office/codea/codeae/documentc.html
http://www.didyouknow.cd/movies.htm
I don't know how much money was poured into
Squeak Movies, but I watched it several times
the last few weeks ;-)

Amazon.com has this to say :

"Smarter than Armageddon and equally extreme,
this is high-tech Hollywood hokum at its finest.

It's scientifically ridiculous, but ... "


It all started with many simultaneous deaths on
Green World day in Boston Massachusetts.

This was followed by flocks of thousands pigeons
smashing themselves into windows of buildings in
London downtown Trafalgar Square.

The ending was, however, happy with whales singing
to a couple, a young handsome but boring ;-)
college professor(Aaron Eckhart as Joshua) from
University of Chicago and a cute astronaut turned
terranaut (Hilary Swank as Rebecca), inside a dark,
cold capsule at 800 feet deep offshore Hawaii to be
rescued. (no, it's nothing like 007 ending ;-)

This happy ending came at a price. What doesn't.

The really ending scene was that of Mr. Finch,
the Rat (D.J. Qualls), hacking the entire planet
with his Rat Net (no, it's not Rat.Net ;-)
disclosing project Destiny and the deaths of Ivan
the commander of the ship; Serge, the scientist
from France, who joined the mission not to save
the world, but just three of them, his wife and
children; Brazzelton(Delroy Lindo), the scientist
who built Virgil in 3 months with 15 billion and
the chief scientist, Zimsky(Stanley Tucci), who
was responsible for the project Destiny which
stalled The Core of the earth and causing all
disasters leading to the end of The Planet Earth
if the jumpstart fails to make the core of the
earth spin normally again.


No, this movies was not made by Walt Disney.

No, it's not an animated movies made with that
Live Panda3D written in 'crappy' C++ and Python.

No, the title of the movies is not Squeak.
It's 'The Core', directed by Jon Amiel .

Then one may wonder, why on earth the subject
of this posting says 'Squeak Movie'.

Well, the title does not say Squeak but in the
movies a team of scientist was experimenting
with a little white mouse before forming the team
to enter the center of the earth (no, they did
not call themselves eCentral ;-).
Mr. Finch's Rat Net might be an indication
of what is possible with Croquet Live.

Maybe I am too much obsessed with the thoughts
'What will happened if the core of Squeak
stops spinning', 'Has it stopped spinning'.

When Brazzelton tricked Joshua and Zimsky so
that he could win the draw to walk into the
surrounding of 9,000 degree F, to tweak Virgil,
he had something like this to say :

"I have spent my life designing Virgil, I have
worked with the design for the last few decades.

Virgil is my baby, now, if it needs more blood,
that blood is going to be from me".


At that moment I thought I heard in the audience,
someone was shouting :

"Squeak is my baby, now, if it needs more sweat,
that sweat is going to be from me"

"Morphic is my baby, now if it needs more sweat,
that sweat is going to be from me"

"Metaclass and ProtoObject are my babies, now if
they need more sweat, that sweat is going to be
from me"

"Stuckins are my babies, now if they need more
sweat, that sweat is going to be from me"

As it turned out,
I was dreaming,
watching The Core.


Happy dreaming

smallsqueak
Alan Grimes
2012-01-28 11:33:26 UTC
Permalink
Post by smallsqueak
I don't know how much money was poured into
Squeak Movies, but I watched it several times
the last few weeks ;-)
"Smarter than Armageddon and equally extreme,
this is high-tech Hollywood hokum at its finest.
It's scientifically ridiculous, but ... "
["The Core"]
That movie seemed fairly entertaining untill that scene where the guy
was pinned down by the nuke... That one single scene ruined the entire
movie!

YOU ARE PINNED UNDER A 350 LB NUKE AT THE CORE OF THE EARTH WHAT DO YOU
DO:

A. scream in pain and act like a wimp.

B. Just pick it up.

Clearly, anyone who knows anything about gravity would answer B. =\

I'm never going to watch that movie again. =(

It snatched suckeydom from the jaws of coolness with one brilliant
stroke.
--
President Bush's *head* is _F_L_A_T_.

http://users.rcn.com/alangrimes/
Loading...