Jeff Sutherland's Object Technology Web SiteOOPLSA'98 Business Object WorkshopSQUEAK User Group Birds of a Feather

Tuesday, 20 October 1998, Pan Pacific Hotel, Room 11, 7:30 to 10PM

Dan Ingalls, Disney—Moderator

(audience comments in italics)

Dan Ingalls: About 1/3 of the audience is new to Squeak. We will do a 10 minute overview and then some demos. First a few introductions:

• John Maloney has done a lot of the underpinnings of Squeak.

• Andreas Raab did the port to Windows.

• Tim Rowledge did the port to Acorn.

• Scott Wallace has done lots of work on the scripting system, MVC.

• Lex was a summer student. He had been doing Squeak at Georgia Tech. He dusted off a web browser and got us a mail system.

• Dave Smith has been a constant contributor who helped get Squeak numerics consistent with other Smalltalks.

• Ian is not here. He’s doing the dynamic translator for Squeak. He is working on Jitter2 which is doing great on benchmarks. He also did the first Unix port.

• Ohshima Yoshiki got Squeak on a Sharp.

• Chris Grindstaff of Applied Reasoning did the DOS port.

Squeak is simple to describe. We (Disney) wanted a software system that we could have complete control over. The group had all been into Smalltalk and had looked at implementations (of the various…). None gave the control we liked. We were all at Apple at the time. It occurred that with faster hardware, the interpreter could be written in Smalltalk and automatically translated to C for performance.

John Maloney did the C translator which does inlining. It performs below commercial Smalltalk speeds because we wanted to keep it simple. Ian is supercharging it. Lot’s of people say "I saw Squeak and it reminds me of the 1980’s." There are a couple of neat things about it. People have done Squeak ports in a couple of weeks. And also it is really nice if you are in an academic environment. Students can experiment with the internals of a pretty mature system.

Squeak has a 1980 model image. This makes it very portable and creates synergies in academia and elsewhere. It has extensions to the initial BitBlt to do color graphics on various machines. It has a warp drive on it so you can specify a non-rectangular source which you can then distort. Here is a nice color demo that has neat effects. ("Whoooowww" from the audience.)

Squeak also has a sound facility in it. There are several varieties of sound synthesis all written in Smalltalk. A bunch of them have been translated into primitives for high speed. We can synthesize over 20 voices at once.

Another extension is the morphic graphics model that began at Sun with the Self system. You see the same kinds of Windows in this system as in other Smalltalks but it is all done in Morphic. It is a completely independent windowing system. You can have text on a curve and morph it around. There are more tools that are available so you can take Squeak in the direction of desktop publishing. (Demo of text wrapped with curve that can be morphed with mouse ...). Most of the tools that you would want are there.

I should say something about networking. Squeak now has sockets, TCP/IP, a mail system, a Web browser. You can get FTP and browse servers. A really neat system was done by Ted Kaehler (he is not here because he is getting married this weekend) that does automatic updates. You can keep track of a sequence of fileIns from a specified server. You can automatically update on your Squeak system from the Disney server and be running with the latest code.

We are going to do a machine switch and demo some sound.

John Maloney: I want to say a few words about sound support. It has always been a strong interest of mine. When I was a grad. student I took a couple of semesters off and went to Carnegie Mellon to work for free. Now I am getting paid for it. I first got basic access to sound output driver, then tried to synthesize output in Squeak. Later on I wrote a midi file parser. There are tons of files on the Web and you can get all these free music. Here is a demo of a midi file with frequency modulation. (Cool demo that sounds like switched on Bach). Speed can be adjusted. Wrote a piano roll view. (Applause then demo starts to falter ...)

So what did you just do to fix that? I’m not sure. I reinitialized the sound driver. A lot has to do with the Mac OS going in and outside of sleep. I can expand the time scale and rotate the piano roll view. (That’s not a music feature. It’s a morph feature.) This piano roll is implemented as a whole bunch of morphs. Each bar is an individual morph. I am going to get a new one. Besides generating sound, it is displaying all the morphs. Updating at 20 times a second and rotating the morphs, it can’t quite do that. Maybe next month.

When Dan was talking, I thought here is a great demo of how this all works. I can go to the FM sound. You see a primitive 180 that is calling the compiled code. It was generated directly from the Smalltalk code. I’ll delete the primitive and accept the Smalltalk method. When I tell it to play this sound, it will be able to do two voices in FM from the Smalltalk. It can do 4–5 in Smalltalk. By going to the compiled C code, we can do 100 voices.

Last summer, Alan Kay got interested in sound samples that you can replay. If you have enough memory you can record all the notes of every instrument in an orchestra. Guys in Hollywood use whole racks of these synthesizers. Here’s a demo of Oboe on the top and Bassoon on the bottom (cool demo). This piece is really a piano piece so using an oboe and bassoon is a little weird. These sounds are really great but we can’t give them away with Squeak because of license restrictions. Once you have the sounds you can do neat things. Alan is interested in teaching children about classical music. He is working on an active essay about Beethoven’s 5th (cool demo of full orchestra version of 5th Symphony). You’ll see it slow down periodically. We get expressiveness in the music by pausing it.

Some of you that are musicians may notice there is something funky about this score. You have an attack on every note. This is a problem with playing music expressively by computer. A human would provide a more smooth flowing musical line, one of my next challenges. You can’t notate that (in response to a question from audience), this is midi. The midi note only knows when the note starts and end. (But you can change instrument and change the envelope, but it would be applied uniformly for every attack.) Here is an interesting thing that Dan did, an envelope editor for the sample sounds. As it is playing you can drag and drop and morph the sound to get a sharp attack or slow attack. We can also add a pitch envelope to the volume envelope.

So I wanted to show one other thing. I also implemented midi for this back in January. I have an inexpensive midi synthesizer without a keyboard attached here. Here is Moussorgsky’s Night on Golden Mountain with the built in synthesis (cool orchestral sound). The piece sounds nice with sharp attacks. I will tell it to play through the midi port (cooler orchestral sounds). This is a commercial synthesizer from Roland. Switching back to Squeak synthesizer gives less realistic effect, but sounds maybe even better. The midi box costs $700. The computer costs $6000. We are using a $1000 CD with sampling from a full orchestra.

I’ve probably gone on way too long because I love this stuff. Did anyone happen to bring a midi keyboard? On some machines you can play them with a midi keyboard. (I’m using the Windows version and the sound recording doesn’t work very well. It doesn’t work half the time.) Windows is tricky because there are so many different sound cards. Getting the buffer size right is the key thing. Come and talk with me and I will try to find the right buffer size for your machine.

Is anyone doing text to speech? There is some stuff available in C. You could do the sound in a combination of Smalltalk and C primitives and Squeak will output it.

Ohshima: I come from Japan. A student of technology. I wrote Squeak for Sharp PDA with 320x240 color display. This has a scheduler and other base functions. This has a serial port and infrared port. I can get PPP by cellular phone or telephone line. This can record sound. The other important feature is a card with a camera. (Takes picture of audience—applause, cheers). The price range is $700-$1000. (Can you shave with this?) The person at the registration desk said "Wow, you are James Bond!" This has 70% of Japanese market. I have a homepage for this. For pictures see:

http://www.is.titech.ac.jp/~ohshima/life/oopsla98/Vancouver10.20/index.html

(Can you say a few words about how long the port took you?) I started the port last OOPSLA. It took 2 weeks. (Applause, cheers.) Squeak is very portable.

John Maloney: We don’t have an easy way to show the screen on the Sharp. We will just pass it around. Please don’t steal it. This device cannot even be bought in the U.S. It is hard to write on the device. We’ll start a pen-web thing that Squeak can run. There is one special thing about this device that makes it hard to get. It just came out with a reflective LCD screen that works great in outdoor light. It has an SA3 processor made by Hitachi and a 66MHZ processor. It has 2MB of memory and the operating system takes 1.2MB. Squeak is just "squeaking" by (moan from audience). When you bring up a window with only 60K of memory left it tends to crash.

Ohshima: I figure out an expression to show you. The tiny benchmark ran around ten or twenty times slower than G3 Power Mac. The Sharp is underpowered for Squeak without Jitter2. I can write 3 on the screen like it was paper. Next is the morph that you saw on the Mac. (Applause)

Andreas: I’ve been doing a lot of things lately including finishing my PhD thesis. I have a background in graphics and have been looking at how to extend the virtual machine. I came up with pluggable primitives. They are called by name, not number. They be translated into the Squeak virtual machine or on a separate DLL. I really hope people will pick this up for doing things like native widgets. They are not ported to the Mac. yet. (Windows emulation is brought up on Mac.) It is running at about 1/8 of the speed of the Mac right now.

We have a separate subclass called the interpretive plugin. What I have been doing is providing a proxy to the virtual machine internals. Squeak passes a pointer to the DLL library on startup. Here is demo of a Flash player, a media player for graphics done by MacroMedia. It looks pretty good. I’ll be running the animation of a Suzuki motorcycle that I ripped off of their Web page. It is entirely vector graphics. I am hoping to get vector fonts in Squeak.

I can show you that this is really vector graphics by shrinking screen. It is not running as fast as I want yet (applause).

Dan: This is where that which we have prepared has been done. In terms of some things coming up, I am really excited about Andreas’ latest project because pluggable primitives allow doing a lot of things with Squeak we have wanted to do. Vector graphics give us the opportunity to put really good graphics in Squeak. Here is my latest Smalltalker (Dan holds up Charlie, his toddler).

So projects right now are sort of a shell that allow you to put bits of development in various places. I’m working on a project to keep track of a history of all changes on a project. This would enable projects to act like they have their own version of Squeak. If it turns out to be successful we will do the same undo, redo, replay for the morphic environment. So that is a direction for the infrastructure layer.

Scott is working on scripting to help make Squeak accessible to end users.

Scott: Most of our work on this has been working with young children (8–9 year olds). We want scripts to be a touchable parts of an object. We want all browser parts available using kiddy like things. If we use it for our real work, that will be a test.

Dan: What is there right now doesn’t give you everything in Squeak. We can answer questions.

I’ll start with a weird question. I’m using Squeak through a firewall and having problems. Is anyone working on this?

You can add to the FTP code and have it run in passive mode. A better approach is to put sockets on it. The FTP times out because of the firewall. Most servers will support passive mode. There is a way to tell Squeak to use a proxy server. The update mechanism only uses HTTP. There are things you can get for UNIX and maybe NT. Start up sockets on your machine and it goes through your socket server.

Are you thinking of adding Aspect features to Squeak? We want to work on the metamodel and change the language. We don’t have anything scheduled yet. Alan talked about the blue plane (small changes) and pink plane (paradigm shift). There are a lot of things that can be done while still keeping Squeak Smalltalk 80.

I’ve been thinking of ways to simulating Aspect programming in Smalltalk but you run into things that get in the way in the metamodel.

One of the things that has been on my mind is to allow scripts to refer to variables in code. We wanted metadescriptions so that the compiler can follow this. And other things that would allowing to refer to state. I haven’t done anything but it would be easy. If you sent out a message on the Squeak list you might find other people that wanted to play with you.

What about Steve Pope’s Siren work. John McIntosh, come on up and give a little demo. Steve has been doing music in Smalltalk and ported it to Squeak. He was not able to be here in person so John will help out. John is working on a big Smalltalk system for Sprint. He has helped with the more tricky parts of the Mac VM.

John Mcintosh: I know little about music so it is a little weird for me to do this. Steve Pope has a Web site with various virtual machines. I am going to manipulate using code. I will talk tomorrow in a session about Siren. One can write pitch, etc. in Smalltalk and it will execute it. Once you have the data written in Smalltalk, then you create an event for pitch and amplitude. You can download this stuff, and it took me about 5 minutes to get it to work. Siren is in Smalltalk with a generic C interface and a platform specific interface (telling code to print generates cool sounds of piano playing). It is playing on the Mac through Quicktime. I installed it with the defaults and have no idea what I am doing and it works.

I’ll do this complex one that creates visual effects with the music. There are other event generators that come with the package. Here is a more complex one (piano trilling). Here’s the wrapup (piano solo). It’s pretty good. If you want to learn more about music it is worth taking a look (applause).

Dan: Any other questions?

Can you comment on the Mitsubishi port or any other embedded port? The Mitsubishi port was done last year and shown at OOPSLA. Last we heard Mitsubishi had given up that chip.

Tim Rowledge: The Itsy was a small device about the size of our badge with a Strongarm chip that will a lot of functionality. Slightly larger than a playing card. Port was in 2 days. It got 2M bytecodes per second, about 1/3 as fast as a good Pentium machine. Runs for a week on 3 AAA batteries. Compaq wouldn’t give me one after they bought Digital.

Another strange thing is that Intel bought the Strongarm division from Dec. You might go to Intel. They are very much in favor of alternative software on their processors.

The folks in South America were picking up the work on the Windows CE port.

The last word I heard about the Palm Pilot was that it was an impossible task. Nothing is impossible. I met someone today that if someone wants to do it, he will tell you how to do it. Have him get in touch with John M. or Andreas. You really have to ask yourself whether it makes sense to port Squeak to the Pilot. People keep asking about it. Squeak could generalize to a runtime environment that would make it a platform to deliver applications for the Pilot, in contrast to Java.

Dan: I think we should declare a formal end to this. Anyone is welcome to stay around and we’ll answer questions.

Jeff Sutherland's Object Technology Web Site