Hi All,
Are you eager to work on cutting-edge business communications technology? Are you passionate about UI design? Do you have significant experience implementing innovative user interfaces in Smalltalk? Do you and your peers consider yourself a strong Smalltalk programmer? If so, Teleplace is hiring and looking for someone just like you. Please send resumes to Stephen Ceplenski steve@teleplace.com, Andreas Raab andreas.raab@teleplace.com or myself, Eliot Miranda eliot@teleplace.com.
best Eliot
Indeed, very very good news to Smalltalk community.
2010/12/6 Eliot Miranda eliot.miranda@gmail.com:
Hi All, Are you eager to work on cutting-edge business communications technology? Are you passionate about UI design? Do you have significant experience implementing innovative user interfaces in Smalltalk? Do you and your peers consider yourself a strong Smalltalk programmer? If so, Teleplace is hiring and looking for someone just like you. Please send resumes to Stephen Ceplenski steve@teleplace.com, Andreas Raab andreas.raab@teleplace.com or myself, Eliot Miranda eliot@teleplace.com. best Eliot
On Mon, Dec 6, 2010 at 2:51 PM, Eliot Miranda eliot.miranda@gmail.comwrote:
Hi All,
Are you eager to work on cutting-edge business communications technology? Are you passionate about UI design? Do you have significant experience implementing innovative user interfaces in Smalltalk? Do you and your peers consider yourself a strong Smalltalk programmer? If so, Teleplace is hiring and looking for someone just like you. Please send resumes to Stephen Ceplenski steve@teleplace.com, Andreas Raab andreas.raab@teleplace.com or myself, Eliot Miranda eliot@teleplace.com.
best Eliot
P.S. A lot of you are asking abut location and whether telecommuting would be possible. Essentially we're flexible. For an exceptional candidate we would try to work with them but ideally the person would be either in or able to relocate to the San Francisco Bay Area. Finding your feet in Teleplace's technology will be a challenge; this is not a straight-forward Smalltalk application, using tea-time, tweak, lots of server-side work and so on. So to find one's feet being in the office will really help. Best that you send in your resumes if you're interested, stating your residency requirements, and let us see where things go from there.
best Eliot
Hi eliot, are you able to be a H1, green card or something like that sponsors...?
Best
2010/12/6, Eliot Miranda eliot.miranda@gmail.com:
On Mon, Dec 6, 2010 at 2:51 PM, Eliot Miranda eliot.miranda@gmail.comwrote:
Hi All,
Are you eager to work on cutting-edge business communications technology? Are you passionate about UI design? Do you have significant experience implementing innovative user interfaces in Smalltalk? Do you and your peers consider yourself a strong Smalltalk programmer? If so, Teleplace is hiring and looking for someone just like you. Please send resumes to Stephen Ceplenski steve@teleplace.com, Andreas Raab andreas.raab@teleplace.com or myself, Eliot Miranda eliot@teleplace.com.
best Eliot
P.S. A lot of you are asking abut location and whether telecommuting would be possible. Essentially we're flexible. For an exceptional candidate we would try to work with them but ideally the person would be either in or able to relocate to the San Francisco Bay Area. Finding your feet in Teleplace's technology will be a challenge; this is not a straight-forward Smalltalk application, using tea-time, tweak, lots of server-side work and so on. So to find one's feet being in the office will really help. Best that you send in your resumes if you're interested, stating your residency requirements, and let us see where things go from there.
best Eliot
Speaking of...
On 2010-12-06 6:35 PM, Eliot Miranda wrote:
tea-time
..., has it ever been pulled out into a form where it can be used separately from the rest of Croquet? I'd love to see it easily loadable into Smalltalk. Is there a tutorial on just using TeaTime on its own available anywhere?
Regards, Tony
On 12/6/10 6:49 PM, Tony Garnock-Jones wrote:
Speaking of...
On 2010-12-06 6:35 PM, Eliot Miranda wrote:
tea-time
..., has it ever been pulled out into a form where it can be used separately from the rest of Croquet? I'd love to see it easily loadable into Smalltalk. Is there a tutorial on just using TeaTime on its own available anywhere?
Regards, Tony
Don't I wish.
Lawson
As usual, Qqueak gets there first, and then doesn't do anything interesting (for the masses), while other languages tout the "next big thing" without even knowing much about the history: http://www.python.org/dev/peps/pep-3148/#future-objects
Lawson
On 12/7/10 2:00 AM, Lawson English wrote:
On 12/6/10 6:49 PM, Tony Garnock-Jones wrote:
Speaking of...
On 2010-12-06 6:35 PM, Eliot Miranda wrote:
tea-time
..., has it ever been pulled out into a form where it can be used separately from the rest of Croquet? I'd love to see it easily loadable into Smalltalk. Is there a tutorial on just using TeaTime on its own available anywhere?
Regards, Tony
Don't I wish.
Lawson
On Dec 7, 2010, at 4:21 PM, Lawson English wrote:
As usual, Qqueak gets there first, and then doesn't do anything interesting (for the masses), while other languages tout the "next big thing" without even knowing much about the history: http://www.python.org/dev/peps/pep-3148/#future-objects
Futures/promises are definitely popular these days, but they weren't pioneered in Croquet. Barbara Liskov typically gets the credit: http://portal.acm.org/citation.cfm?id=54016
Cheers, Josh
Lawson
On 12/7/10 2:00 AM, Lawson English wrote:
On 12/6/10 6:49 PM, Tony Garnock-Jones wrote:
Speaking of...
On 2010-12-06 6:35 PM, Eliot Miranda wrote:
tea-time
..., has it ever been pulled out into a form where it can be used separately from the rest of Croquet? I'd love to see it easily loadable into Smalltalk. Is there a tutorial on just using TeaTime on its own available anywhere?
Regards, Tony
Don't I wish.
Lawson
Wikipedia says goes back even further than that: http://en.wikipedia.org/wiki/Futures_and_promises
However, what was (or is) using them as a core aspect of the framework besides Croquet/Cobalt?
Nothing gets shared in Croquet without using the future message and the ability to create things without sharing is relatively new, I thought.
Lawson
On 12/7/10 10:51 PM, Josh Gargus wrote:
On Dec 7, 2010, at 4:21 PM, Lawson English wrote:
As usual, Qqueak gets there first, and then doesn't do anything interesting (for the masses), while other languages tout the "next big thing" without even knowing much about the history: http://www.python.org/dev/peps/pep-3148/#future-objects
Futures/promises are definitely popular these days, but they weren't pioneered in Croquet. Barbara Liskov typically gets the credit: http://portal.acm.org/citation.cfm?id=54016
Cheers, Josh
Lawson
On 12/7/10 2:00 AM, Lawson English wrote:
On 12/6/10 6:49 PM, Tony Garnock-Jones wrote:
Speaking of...
On 2010-12-06 6:35 PM, Eliot Miranda wrote:
tea-time
..., has it ever been pulled out into a form where it can be used separately from the rest of Croquet? I'd love to see it easily loadable into Smalltalk. Is there a tutorial on just using TeaTime on its own available anywhere?
Regards, Tony
Don't I wish.
Lawson
On 12/7/2010 10:36 PM, Lawson English wrote:
Wikipedia says goes back even further than that: http://en.wikipedia.org/wiki/Futures_and_promises
However, what was (or is) using them as a core aspect of the framework besides Croquet/Cobalt?
E (www.erights.org). Croquet future messages are precisely modeled after E's eventual send semantics.
Nothing gets shared in Croquet without using the future message and the ability to create things without sharing is relatively new, I thought.
It's not. The idea goes back to the 70s. However, it only became practical with the internet and with promise pipelining. I believe the latter was pioneered at Electric Communities.
Cheers, - Andreas
On 12/7/10 10:51 PM, Josh Gargus wrote:
On Dec 7, 2010, at 4:21 PM, Lawson English wrote:
As usual, Qqueak gets there first, and then doesn't do anything interesting (for the masses), while other languages tout the "next big thing" without even knowing much about the history: http://www.python.org/dev/peps/pep-3148/#future-objects
Futures/promises are definitely popular these days, but they weren't pioneered in Croquet. Barbara Liskov typically gets the credit: http://portal.acm.org/citation.cfm?id=54016
Cheers, Josh
Lawson
On 12/7/10 2:00 AM, Lawson English wrote:
On 12/6/10 6:49 PM, Tony Garnock-Jones wrote:
Speaking of...
On 2010-12-06 6:35 PM, Eliot Miranda wrote:
tea-time
..., has it ever been pulled out into a form where it can be used separately from the rest of Croquet? I'd love to see it easily loadable into Smalltalk. Is there a tutorial on just using TeaTime on its own available anywhere?
Regards, Tony
Don't I wish.
Lawson
Well, that's not quite fair. See for instance Baker & Hewitt's "The Incremental Garbage Collection of Processes", from 1977, which talks about futures. (And has references to lots of other people's work.)
Squeak has futures nowadays of course, thanks to Teleplace.
Unless you mean that David Reed's thesis (1978, "Naming and Synchronization in a Decentralized Computer System") was written by someone in the Smalltalk community?
frank
On 2010/12/08 00:21, Lawson English wrote:
As usual, Qqueak gets there first, and then doesn't do anything interesting (for the masses), while other languages tout the "next big thing" without even knowing much about the history: http://www.python.org/dev/peps/pep-3148/#future-objects
Lawson
On 12/7/10 2:00 AM, Lawson English wrote:
On 12/6/10 6:49 PM, Tony Garnock-Jones wrote:
Speaking of...
On 2010-12-06 6:35 PM, Eliot Miranda wrote:
tea-time
..., has it ever been pulled out into a form where it can be used separately from the rest of Croquet? I'd love to see it easily loadable into Smalltalk. Is there a tutorial on just using TeaTime on its own available anywhere?
Regards, Tony
Don't I wish.
Lawson
On 12/7/10 7:10 PM, Tony Garnock-Jones wrote:
On 2010-12-07 4:00 AM, Lawson English wrote:
Don't I wish.
What's stopping it? Is it as simple as a lack of people familiar enough with the system to extract it and/or write it up for others?
Tony
Something like that, I think. Also, I'd say almost no-one gets the potential, which is ironic, since originally David Reed was using it as a test for new ways to distribute processing over the internet, or such is my impression, and all these new newfangled protocols that everyone is working on are merely attempts to recreate what Croquet has had for nearly 10 years.
Lawson
On 2010/12/08 05:41, Lawson English wrote:
On 12/7/10 7:10 PM, Tony Garnock-Jones wrote:
On 2010-12-07 4:00 AM, Lawson English wrote:
Don't I wish.
What's stopping it? Is it as simple as a lack of people familiar enough with the system to extract it and/or write it up for others?
Tony
Something like that, I think. Also, I'd say almost no-one gets the potential, which is ironic, since originally David Reed was using it as a test for new ways to distribute processing over the internet, or such is my impression, and all these new newfangled protocols that everyone is working on are merely attempts to recreate what Croquet has had for nearly 10 years.
Some people (do other kinds of Smalltalkers count?) do: http://www.jarober.com/blog/blogView?showComments=true&printTitle=Tea_Ti...
Summary: Mike Hales ported TeaTime to VisualWorks.
frank
On 2011-03-17 6:05 AM, Frank Shearar wrote:
Summary: Mike Hales ported TeaTime to VisualWorks.
Neat! The article you linked to didn't have much in the way of links; do you know if the code is available? Perhaps a port back to Squeak would be possible.
Tony
On Thu, Mar 17, 2011 at 10:36:25AM -0400, Tony Garnock-Jones wrote:
On 2011-03-17 6:05 AM, Frank Shearar wrote:
Summary: Mike Hales ported TeaTime to VisualWorks.
Neat! The article you linked to didn't have much in the way of links; do you know if the code is available? Perhaps a port back to Squeak would be possible.
Teatime is already in squeak though; We'll get to packaging it seperately from cobalt in a month or two
On 2011/03/17 14:52, Matthew Fulmer wrote:
On Thu, Mar 17, 2011 at 10:36:25AM -0400, Tony Garnock-Jones wrote:
On 2011-03-17 6:05 AM, Frank Shearar wrote:
Summary: Mike Hales ported TeaTime to VisualWorks.
Neat! The article you linked to didn't have much in the way of links; do you know if the code is available? Perhaps a port back to Squeak would be possible.
I had a look and came up blank, unfortunately.
Teatime is already in squeak though; We'll get to packaging it seperately from cobalt in a month or two
Yes. I've mentioned on the list before (in this thread, a while back) that I made an attempt at pulling Islands out of Croquet before running into a wall. I was going to try unpackage TeaTime after Islands, but it's tricky pulling things out of images.
I'm glad to hear that Cobalt's going to package up TeaTime!
frank
The biggest holdup for getting these things into the Squeak trunk is simply getting Cobalt itself into the Squeak trunk so it can run on VM 4.2. If anyone wants to help Matt with THAT project, I'm pretty sure he will be happy for the assist.
By the way, running Cobalt on Cog shows off the speedup from Cog better than you might imagine.
Lawson
On 3/17/11 8:23 AM, Frank Shearar wrote:
On 2011/03/17 14:52, Matthew Fulmer wrote:
On Thu, Mar 17, 2011 at 10:36:25AM -0400, Tony Garnock-Jones wrote:
On 2011-03-17 6:05 AM, Frank Shearar wrote:
Summary: Mike Hales ported TeaTime to VisualWorks.
Neat! The article you linked to didn't have much in the way of links; do you know if the code is available? Perhaps a port back to Squeak would be possible.
I had a look and came up blank, unfortunately.
Teatime is already in squeak though; We'll get to packaging it seperately from cobalt in a month or two
Yes. I've mentioned on the list before (in this thread, a while back) that I made an attempt at pulling Islands out of Croquet before running into a wall. I was going to try unpackage TeaTime after Islands, but it's tricky pulling things out of images.
I'm glad to hear that Cobalt's going to package up TeaTime!
frank
On 3/17/2011 10:59, Lawson English wrote:
The biggest holdup for getting these things into the Squeak trunk is simply getting Cobalt itself into the Squeak trunk so it can run on VM 4.2. If anyone wants to help Matt with THAT project, I'm pretty sure he will be happy for the assist.
What do you need help with?
By the way, running Cobalt on Cog shows off the speedup from Cog better than you might imagine.
I would imagine pretty good speedups. After all, Cog was written for Teleplace which is saying for Croquet :-)
Cheers, - Andreas
On 3/17/11 8:23 AM, Frank Shearar wrote:
On 2011/03/17 14:52, Matthew Fulmer wrote:
On Thu, Mar 17, 2011 at 10:36:25AM -0400, Tony Garnock-Jones wrote:
On 2011-03-17 6:05 AM, Frank Shearar wrote:
Summary: Mike Hales ported TeaTime to VisualWorks.
Neat! The article you linked to didn't have much in the way of links; do you know if the code is available? Perhaps a port back to Squeak would be possible.
I had a look and came up blank, unfortunately.
Teatime is already in squeak though; We'll get to packaging it seperately from cobalt in a month or two
Yes. I've mentioned on the list before (in this thread, a while back) that I made an attempt at pulling Islands out of Croquet before running into a wall. I was going to try unpackage TeaTime after Islands, but it's tricky pulling things out of images.
I'm glad to hear that Cobalt's going to package up TeaTime!
frank
On Thu, Mar 17, 2011 at 11:23:57AM -0700, Andreas Raab wrote:
On 3/17/2011 10:59, Lawson English wrote:
The biggest holdup for getting these things into the Squeak trunk is simply getting Cobalt itself into the Squeak trunk so it can run on VM 4.2. If anyone wants to help Matt with THAT project, I'm pretty sure he will be happy for the assist.
What do you need help with?
The holdup is the VM's actually:
- Recent Cog VM's crash on startup from OpenGL/FFI - Windows interpreter VM crashes on startup from JPEGPlugin - Unix interpreter VM has broken MPEGPlugin - Mac VM hasn't been extensively tested; John's latest may work, but Esteban's is missing plugins
Old Cog VM's (2316) almost work, but: - Windows VM is missing SoundPlugin - At least on windows, the router sockets timeout after they've been running for 30 minutes or so
There is very little that needs doing image-side; I've already done that part. Since we have a zero-regression policy for the official Cobalt releases, we can't release until we have working VM's. None of us are VM devs, and we have plenty to work on while we wait, so we're just waiting for the VM guys right now.
On Thu, 17 Mar 2011, Matthew Fulmer wrote:
On Thu, Mar 17, 2011 at 11:23:57AM -0700, Andreas Raab wrote:
On 3/17/2011 10:59, Lawson English wrote:
The biggest holdup for getting these things into the Squeak trunk is simply getting Cobalt itself into the Squeak trunk so it can run on VM 4.2. If anyone wants to help Matt with THAT project, I'm pretty sure he will be happy for the assist.
What do you need help with?
The holdup is the VM's actually:
- Recent Cog VM's crash on startup from OpenGL/FFI
- Windows interpreter VM crashes on startup from JPEGPlugin
Is it reproducible? Is there a bug report for it?
- Unix interpreter VM has broken MPEGPlugin
- Mac VM hasn't been extensively tested; John's latest may work,
but Esteban's is missing plugins
Old Cog VM's (2316) almost work, but:
- Windows VM is missing SoundPlugin
- At least on windows, the router sockets timeout after they've
been running for 30 minutes or so
What does "timeout" mean here? Do they become closed?
Levente
There is very little that needs doing image-side; I've already done that part. Since we have a zero-regression policy for the official Cobalt releases, we can't release until we have working VM's. None of us are VM devs, and we have plenty to work on while we wait, so we're just waiting for the VM guys right now.
-- Matthew Fulmer (a.k.a. Tapple)
On Mon, Mar 21, 2011 at 05:09:52AM +0100, Levente Uzonyi wrote:
On Thu, 17 Mar 2011, Matthew Fulmer wrote:
On Thu, Mar 17, 2011 at 11:23:57AM -0700, Andreas Raab wrote:
On 3/17/2011 10:59, Lawson English wrote:
The biggest holdup for getting these things into the Squeak trunk is simply getting Cobalt itself into the Squeak trunk so it can run on VM 4.2. If anyone wants to help Matt with THAT project, I'm pretty sure he will be happy for the assist.
What do you need help with?
The holdup is the VM's actually:
- Recent Cog VM's crash on startup from OpenGL/FFI
- Windows interpreter VM crashes on startup from JPEGPlugin
Is it reproducible? Is there a bug report for it?
I havn't bothered trying to find a simple reproduction since the VM is nearly a year old, and is most likely fixed in a new version. Once a new vm appears, and if it still shows, I'll post a report.
- Unix interpreter VM has broken MPEGPlugin
- Mac VM hasn't been extensively tested; John's latest may work,
but Esteban's is missing plugins
Old Cog VM's (2316) almost work, but:
- Windows VM is missing SoundPlugin
- At least on windows, the router sockets timeout after they've
been running for 30 minutes or so
What does "timeout" mean here? Do they become closed?
It means that they raise a ConnectionTimedOut error. I'm not entirely sure what happens after that. A Cog VM newer than 6 months old may fix it. Once I can reproduce the problem with a recent VM, I'll make a report. Currently, I can't even start cobalt on recent cog vm's, much less have it run for 30 minutes and manifest this issue. And yes, that bug that causes crash on startup is reported:
http://code.google.com/p/cog/issues/detail?id=3
In the Extending the System Workspace, Matthew already put the following:
"Open Cobalt: http://opencobalt.org (Best to run this from an image in an open cobalt directory)" Installer ss project: 'TweakCore'; install: 'update'. [Installer ss project: 'TweakExtras'; install: 'update'] on: (Smalltalk at: #CUnsynchronizedModification) do: [:ex | ex resume]. Installer cobalt project: 'Tweak'; answer: 'Would you like to conserve memory at all costs?' with: true; answer: 'Password for interactive VNC connections?' with: 'cobalt'; answer: 'Would you like to add the RFBServer to the World open menu?' with: true; install: 'update'
Ken
At 10:59 AM -0700 3/17/11, Lawson English apparently wrote:
The biggest holdup for getting these things into the Squeak trunk is simply getting Cobalt itself into the Squeak trunk so it can run on VM 4.2. If anyone wants to help Matt with THAT project, I'm pretty sure he will be happy for the assist.
By the way, running Cobalt on Cog shows off the speedup from Cog better than you might imagine.
Lawson
On 3/17/11 8:23 AM, Frank Shearar wrote:
On 2011/03/17 14:52, Matthew Fulmer wrote:
On Thu, Mar 17, 2011 at 10:36:25AM -0400, Tony Garnock-Jones wrote:
On 2011-03-17 6:05 AM, Frank Shearar wrote:
Summary: Mike Hales ported TeaTime to VisualWorks.
Neat! The article you linked to didn't have much in the way of links; do you know if the code is available? Perhaps a port back to Squeak would be possible.
I had a look and came up blank, unfortunately.
Teatime is already in squeak though; We'll get to packaging it seperately from cobalt in a month or two
Yes. I've mentioned on the list before (in this thread, a while back) that I made an attempt at pulling Islands out of Croquet before running into a wall. I was going to try unpackage TeaTime after Islands, but it's tricky pulling things out of images.
I'm glad to hear that Cobalt's going to package up TeaTime!
frank
On Thu, Mar 17, 2011 at 12:39:52PM -0600, Ken G. Brown wrote:
In the Extending the System Workspace, Matthew already put the following:
"Open Cobalt: http://opencobalt.org (Best to run this from an image in an open cobalt directory)" Installer ss project: 'TweakCore'; install: 'update'. [Installer ss project: 'TweakExtras'; install: 'update'] on: (Smalltalk at: #CUnsynchronizedModification) do: [:ex | ex resume]. Installer cobalt project: 'Tweak'; answer: 'Would you like to conserve memory at all costs?' with: true; answer: 'Password for interactive VNC connections?' with: 'cobalt'; answer: 'Would you like to add the RFBServer to the World open menu?' with: true; install: 'update'
That's currently broken due to a misplaced .mcm file. I'll put a working installer in SqueakMap once we are close to release again.
On 2010/12/08 02:10, Tony Garnock-Jones wrote:
On 2010-12-07 4:00 AM, Lawson English wrote:
Don't I wish.
What's stopping it? Is it as simple as a lack of people familiar enough with the system to extract it and/or write it up for others?
It's easy enough to file out the Islands packages. After that comes the hard part, trying to figure out the structure of the package etc.
The Islands class comment says one can install Islands by executing "Islands install", but it's not that simple. For starters, there is no "Islands install".
If you play around, and execute "Island default", you find that Islands depends on TMutex, defined in Croquet-Kernel-Objects.
(I have to say, it still blows me away that I can be in the debugger looking at a method referring to an undefined TMutex class, cut across to Cobalt, file out TMutex, cut back to my image, file in the class, and just hit restart, and proceed from there.)
Then, Island default quickly runs into an infinite loop, bouncing between Process(Object)>>island and ProcessorScheduler>>activeIsland. The chain of events looks like this:
Island class>>default instantiates Default (an Island), and then tries to find Processor activeProcess island. That, in Process(Object)>>island, says "^Processor activeIsland", which runs "^activeProcess island ifNil: [Island default]", which calls Process(Object)>>island, closing the circle.
IslandDeepCopier class>>test refers to CTileDefinition (from Tweak-Tiles-Definition). That looks like an easily removable dependency.
Island>>scheduleMessage:future: is an empty, uncalled method.
FarRef>>copyToCurrentIsland refers to CDeepCopier (from Tweak-Basic-Support).
IslandReader and IslandWriter refer indirectly to CCursorLibrary (Tweak-Basic-Support), CIconLibrary (Tweak-Basic-Support), MenuIcons (Morphic-Menus), ScriptingSystem (Morphic-Scripting), CIdentityTransform (Tweak-Costume-Transforms), IdentityTransform (Graphics-Transformations). These references are of the form "Smalltalk at: Foo ifPresent: []", so they don't necessarily need to be removed.
IslandTests>>testImplicitIsland refers in the #at:ifPresent: manner to CWindow (Tweak-Widgets-Basic)
SnapshotTracer>>printPath: refers to CObject (Tweak-Core-Object).
In summary then:
* I don't (yet) know how to solve the infinite loop mentioned above. It blows all the IslandTests but, thanks to TestRunner's timeouts, your image doesn't grow without bound running the tests.
* Islands has some easily-removed or ignorable dependencies on ** Graphics-Transformations (IdentityTransform) ** Morphic-Menus (MenuIcons) ** Morphic-Scripting (ScriptingSystem) ** Tweak-Tiles-Definition (CTileDefinition) ** Tweak-Basic-Suppport (CCursorLibrary, CIconLibrary) ** Tweak-Costum-Transforms (CIdentityTransform)
* Islands has some probably removable dependencies on ** Tweak-Core-Objects (CObject) ** Tweak-Basic-Support (CDeepCopier) ** Croquet-Kernel-Objects (TMutex)
* A number of methods use primitives (especially in FarRef, which looks like it duplicates a bunch of stuff from Object - #instVarAt:, #instVarAt:put:, and similar). I haven't noted the primitive numbers, nor compared them against, say, the primitives Object uses, so I haven't verified that Islands doesn't use special numbered primitives. (I presume not, although I try run Cobalt on a Cog VM, only for the VM to choke on a missing bytecode 204.)
There may be further dependencies; I read through the source, but didn't chase every message send for a lack of implementors.
frank
On Sat, Jan 8, 2011 at 9:18 AM, Frank Shearar frank.shearar@angband.za.orgwrote:
On 2010/12/08 02:10, Tony Garnock-Jones wrote:
On 2010-12-07 4:00 AM, Lawson English wrote:
Don't I wish.
What's stopping it? Is it as simple as a lack of people familiar enough with the system to extract it and/or write it up for others?
It's easy enough to file out the Islands packages. After that comes the hard part, trying to figure out the structure of the package etc.
The Islands class comment says one can install Islands by executing "Islands install", but it's not that simple. For starters, there is no "Islands install".
If you play around, and execute "Island default", you find that Islands depends on TMutex, defined in Croquet-Kernel-Objects.
(I have to say, it still blows me away that I can be in the debugger looking at a method referring to an undefined TMutex class, cut across to Cobalt, file out TMutex, cut back to my image, file in the class, and just hit restart, and proceed from there.)
Then, Island default quickly runs into an infinite loop, bouncing between Process(Object)>>island and ProcessorScheduler>>activeIsland. The chain of events looks like this:
Island class>>default instantiates Default (an Island), and then tries to find Processor activeProcess island. That, in Process(Object)>>island, says "^Processor activeIsland", which runs "^activeProcess island ifNil: [Island default]", which calls Process(Object)>>island, closing the circle.
IslandDeepCopier class>>test refers to CTileDefinition (from Tweak-Tiles-Definition). That looks like an easily removable dependency.
Island>>scheduleMessage:future: is an empty, uncalled method.
FarRef>>copyToCurrentIsland refers to CDeepCopier (from Tweak-Basic-Support).
IslandReader and IslandWriter refer indirectly to CCursorLibrary (Tweak-Basic-Support), CIconLibrary (Tweak-Basic-Support), MenuIcons (Morphic-Menus), ScriptingSystem (Morphic-Scripting), CIdentityTransform (Tweak-Costume-Transforms), IdentityTransform (Graphics-Transformations). These references are of the form "Smalltalk at: Foo ifPresent: []", so they don't necessarily need to be removed.
IslandTests>>testImplicitIsland refers in the #at:ifPresent: manner to CWindow (Tweak-Widgets-Basic)
SnapshotTracer>>printPath: refers to CObject (Tweak-Core-Object).
In summary then:
- I don't (yet) know how to solve the infinite loop mentioned above. It
blows all the IslandTests but, thanks to TestRunner's timeouts, your image doesn't grow without bound running the tests.
- Islands has some easily-removed or ignorable dependencies on
** Graphics-Transformations (IdentityTransform) ** Morphic-Menus (MenuIcons) ** Morphic-Scripting (ScriptingSystem) ** Tweak-Tiles-Definition (CTileDefinition) ** Tweak-Basic-Suppport (CCursorLibrary, CIconLibrary) ** Tweak-Costum-Transforms (CIdentityTransform)
- Islands has some probably removable dependencies on
** Tweak-Core-Objects (CObject) ** Tweak-Basic-Support (CDeepCopier) ** Croquet-Kernel-Objects (TMutex)
- A number of methods use primitives (especially in FarRef, which looks
like it duplicates a bunch of stuff from Object - #instVarAt:, #instVarAt:put:, and similar). I haven't noted the primitive numbers, nor compared them against, say, the primitives Object uses, so I haven't verified that Islands doesn't use special numbered primitives. (I presume not, although I try run Cobalt on a Cog VM, only for the VM to choke on a missing bytecode 204.)
Are you sure it chokes on 204? 204 is special selector #new and Cog of course does recognize that bytecode. 200 is blockCopy: for old blocks and Cog does not implement this primitively so it'll send #blockCopy:, create a BlockContext which won't be evaluable because the value primitives are missing.
There may be further dependencies; I read through the source, but didn't chase every message send for a lack of implementors.
frank
On 2011/01/08 17:52, Eliot Miranda wrote:
On Sat, Jan 8, 2011 at 9:18 AM, Frank Shearar <frank.shearar@angband.za.org mailto:frank.shearar@angband.za.org> wrote:
On 2010/12/08 02:10, Tony Garnock-Jones wrote: On 2010-12-07 4:00 AM, Lawson English wrote: Don't I wish. What's stopping it? Is it as simple as a lack of people familiar enough with the system to extract it and/or write it up for others? It's easy enough to file out the Islands packages. After that comes the hard part, trying to figure out the structure of the package etc. The Islands class comment says one can install Islands by executing "Islands install", but it's not that simple. For starters, there is no "Islands install". If you play around, and execute "Island default", you find that Islands depends on TMutex, defined in Croquet-Kernel-Objects. (I have to say, it still blows me away that I can be in the debugger looking at a method referring to an undefined TMutex class, cut across to Cobalt, file out TMutex, cut back to my image, file in the class, and just hit restart, and proceed from there.) Then, Island default quickly runs into an infinite loop, bouncing between Process(Object)>>island and ProcessorScheduler>>activeIsland. The chain of events looks like this: Island class>>default instantiates Default (an Island), and then tries to find Processor activeProcess island. That, in Process(Object)>>island, says "^Processor activeIsland", which runs "^activeProcess island ifNil: [Island default]", which calls Process(Object)>>island, closing the circle. IslandDeepCopier class>>test refers to CTileDefinition (from Tweak-Tiles-Definition). That looks like an easily removable dependency. Island>>scheduleMessage:future: is an empty, uncalled method. FarRef>>copyToCurrentIsland refers to CDeepCopier (from Tweak-Basic-Support). IslandReader and IslandWriter refer indirectly to CCursorLibrary (Tweak-Basic-Support), CIconLibrary (Tweak-Basic-Support), MenuIcons (Morphic-Menus), ScriptingSystem (Morphic-Scripting), CIdentityTransform (Tweak-Costume-Transforms), IdentityTransform (Graphics-Transformations). These references are of the form "Smalltalk at: Foo ifPresent: []", so they don't necessarily need to be removed. IslandTests>>testImplicitIsland refers in the #at:ifPresent: manner to CWindow (Tweak-Widgets-Basic) SnapshotTracer>>printPath: refers to CObject (Tweak-Core-Object). In summary then: * I don't (yet) know how to solve the infinite loop mentioned above. It blows all the IslandTests but, thanks to TestRunner's timeouts, your image doesn't grow without bound running the tests. * Islands has some easily-removed or ignorable dependencies on ** Graphics-Transformations (IdentityTransform) ** Morphic-Menus (MenuIcons) ** Morphic-Scripting (ScriptingSystem) ** Tweak-Tiles-Definition (CTileDefinition) ** Tweak-Basic-Suppport (CCursorLibrary, CIconLibrary) ** Tweak-Costum-Transforms (CIdentityTransform) * Islands has some probably removable dependencies on ** Tweak-Core-Objects (CObject) ** Tweak-Basic-Support (CDeepCopier) ** Croquet-Kernel-Objects (TMutex) * A number of methods use primitives (especially in FarRef, which looks like it duplicates a bunch of stuff from Object - #instVarAt:, #instVarAt:put:, and similar). I haven't noted the primitive numbers, nor compared them against, say, the primitives Object uses, so I haven't verified that Islands doesn't use special numbered primitives. (I presume not, although I try run Cobalt on a Cog VM, only for the VM to choke on a missing bytecode 204.)
Are you sure it chokes on 204? 204 is special selector #new and Cog of course does recognize that bytecode. 200 is blockCopy: for old blocks and Cog does not implement this primitively so it'll send #blockCopy:, create a BlockContext which won't be evaluable because the value primitives are missing.
I can't reproduce the problem now. I'm reasonably sure it was 204. Very strange. If I can reproduce the problem, I'll be sure to report it!
frank
There may be further dependencies; I read through the source, but didn't chase every message send for a lack of implementors. frank
squeak-dev@lists.squeakfoundation.org