Thursday, May 12, 2005

CroqueTweak: Connecting fields

Bert explains the proper tweak way to wire up two fields. Very useful.

CroqueTweak: Connecting fields

Thursday, May 05, 2005

Tweak gotcha..

This one took hour or two to down. I wonder if I am abusing an idiom.

I wanted to create a dialog with custom behaviors so I did the following.

d := CFileSaveDialog new.
d costume: CCFileSaveDialogCostumeCITRIS new.
d openLabel: 'Test Custom Dialog'.

then in CCFileSaveDialogCostumeCITRIS>>initialize I added changed around parameters:

directoryList costume: CTreeWidgetCostumeCitris new. "works"
player sorter primarySort: #compareType:with:. "does NOT work"

The problem is the timing. initialize gets called at the end of the new, and before the costume: call, so player in initialize has not been set to d. Instead CPlayer has silently stuck in a default CFileDialog that gets modified and then immediately discarded.

If I move the player modifying line into onPlayerChanged, it is all good.

Friday, April 29, 2005

Tweak values & players

Ok, I think I am getting a hang of the tweak way of thinking.
Lets say I have a CColorPicker & I want to use it in a dialog & do something with it. There are a couple of ways of doing this.
The color selected by the user updates the colorPicker's value. So I can:
  1. In the dialog's initialize, call self startScript: #doSomething when: { colorPicker. #valueChanged}
  2. in the doSomething method (which should prob be called onColorChanged), put . I think that just tells tweak to magically add the line above to the init for me.
  3. I can call colorPicker player: ( self fieldNamed: #someField ) which puts a CFieldReference into the colorPicker as it's value. So the field in the dialog is updated in sync with the colorPicker's value. This has something to do with Tweak's virtual field mechanism, which I don't fully understand, but it seems very cool.

Tuesday, April 26, 2005

Tweak - good first impressions

I have been converting our morphic popup menu's over to Tweak. Our needs have all been simple so far, so not a deep test, but so far so good. The code has been pretty clean and does what I would expect it to do. And I have been enjoying the "do something wrong, get an error message, fix it and keep going" experience that I have been told is the really excitement about squeak, but has never really worked for me in Croquet, where it has been more like "do something wrong, restart the image, search the recent changes log to recover your code, make a small change & repeat". But I am now seeing the fun.

We are working with Tweak 1.0, in the Jasmine image, which, I think, puts us two versions behind. The mailing list says they are now working on 1.2 for Squeak 3.8. Hopefully we will see grand unification sometime this summer, with a 3.8 version of Croquet bringing us into the Tweak mainstream.

Other big news around the office here is that I set up the Mantis bug tracker on our server for the digital gallery project. It's much easier to use that the wiki arrangement we were using before. And best of all, it makes Orion happy.

Tuesday, April 19, 2005

Citris Gallery Builder in the News

(If only they were not using a screen shot from the obsolete Torque based version)

Friday, April 15, 2005

Tweak to the rescue?

Our basic problem is that our target user base is people who are not excited about computers. So we need an interface that is not just usable, but is actively seductive. And Morphic is not it. So what about Tweak?
Andreas says he thinks they are close to being stable enough for "outside consumption". And pointed me at their brand new documentation project. Honestly, I am probably getting to old to be a programmer, as the thought of a bleeding edge UI toolkit just fills me with dread. But, DAS says it is the future, so effort put into trying to get nice Morphic behaviors would just be wasted. And I just had a good talk with Howard Stearns (in Julian's group at U of Wisc) about their interface work. (Note to self: keep up with his blog. Too bad I can't get a clean RSS stream for it). Seems they have been having pretty good luck getting tweak to do what they want, although only by attaching it to the Morph. They haven't gotten it into the world yet. Fortunately, that is all we need.
Unfortunately, Andreas does not have Windows look & feel on the todo list. So if we want if, we'll have to do it ourselves...At least for the moment.
Well, enough gathering external information, nothing for it but to jump into the whirring blades of death & see what I find.

Update: the tweak tutorial does not work with the version in Croquet. Drat.

Thursday, April 14, 2005

Meeting with Croqueteer

Orion & I had a great meeting with David A Smith this afternoon. Croquet always seems so much more real when David is in the room.

Big Stuff Coming
  1. David Reed has extracted TeaTime from Croquet core. He will continue to work on TeaTime and David Smith will be responsible for integrating it in to Croquet as a discrete module. Supposedly TeaTime is working inside it's test environment. I cannot wait for this! It is so painful learning about meta & all its subtleties knowing that it is soon to be replaced.
  2. New Interface approach. DAS is moving all the nutty pointer & event code out of the camera & render loop and putting it into special interface portals, called Filters. This could make the UI work much simpler. He gave us his prototype to poke around in. Very exciting. Especially nice is the idea that the filters can be in the world, or attached to your screen. There is something really sexy about UI's & custom views that you can tear off and drop into the world. And David demo'd ghosts, objects that appear to be in the world but really belong to the filter & can only be seen through it. Could be great for annotations.
  3. Tweak - don't know that much more about tweek than before David came, but it is definitely going to replace Morphic as Croquet's 2D UI & scripting language. We are not so interested in scripting, but we desperately need a 2D UI toolkit that can impersonate windows. Our target users don't want a double click to be exactly what they expect it to be, or they are prepared to walk away. Unfortunately Tweak is not stable yet & David cannot recommend us jumping on it yet. Much pain here. He recommend talking to Andreas about Tweak in general (good luck to us) and Julian & Marc b/c they also have users who need to not be surprised. David thinks a Window's mimicking toolkit is fine, as long as he doesn't have to use it (which is to say, Croquet must be flexable enough to work with other toolkits). This is going to continue to cause us trouble, I think. A clean UI toolkit is an entire project in itself. I wonder if this is something we could through a couple of undergraduates at?
  4. Farther out & very interesting is moving Croquet to a JIT backend. Squeak becomes just one of the platforms that Croquet speaks, including C & Python and maybe more. Huge potential speed increases, which we would love, especially loading big/complex 3D objects.
  5. Nearer term - Croquet will move to Squeak 3.8 (or just possibly 3.7). So it looks like David is going to wrap #1, #2 & #5 up into a new release - Croquet 0.2? Ah but when, that is the question!
Smaller stuff
  1. Probably the best thing we found out in the conversation is that DAS is using feedback from us to help guide Croquet's evolution. Sometimes we feel like we are shouting into the void here. It is very good for morale to know that the void is listening.
  2. Avatar switching - it has worked at some point. FOLLOW UP
  3. WorldBase & file streaming - he has no idea where this is, but thinks we could probably weld on the file streaming without too much trouble if we need it sooner that the whole WorldBase package.
  4. High Res Object - we are having trouble with 10K vertex objects. DAS said to up the depth of the bounding spheres & check out the buffer limit in openGL.
  5. Level of Detail on high-res meshes - DAS has great C++ code to do this, based on paper by Hughes & Hoppe - and would be just tickled if we wanted to take it on.
  6. Lot's o' Text - ditto for dynamic texture management. Maybe once the JIT is in place, he will just be able to use all his old C code?
Lots of info for a short meeting. The really fun thing with DAS - Orion & I are constantly saying to each other "why in the world does it do that?" and then just shrugging. David knows.

Also, David will not be at the May 18th Croquet Consortium, but thinks we should be, if only to get to know the other players.