






Streaming Audio in Squeak
"streaming consciousness (and audio)", by Craig Latta of the NetJam project.
current submitted draft: Missing File (/squeakbook/uploads/streamingAudio2.pdf) (the current draft and author's notes are available also) UPDATED 5/19/2000
promised reviewers: (none yet)
comments:
Sorry, Craig, call me a conservative old fart, but if I want to read a novel, I'll read a novel, and if I want to learn about streaming audio in Squeak (which I do), i'll be frustrated if the chapter starts "It's been a slow day. Browsing through the day's mail over a fresh cup
of coffee, you notice your copy of 'Squeak: Applications and
Community/Taking Another Path' has arrived. You peruse the covers
lazily..."
I find that the high level of cuteness and low signal-to-noise ratio is bothersome.
Can you rewrite this as if it were for a published book, rather than a newsgroup posting or article in a trade rag?
To the self-proclaimed conservative old fart:
I (Bijan) would be interested if you think my chapter Networking Squeak (which, admittedly is only half done) is too cutesy too. I am consciously striving for a generally lighter, engaging tone, and to document community as much as the software. I find a lot of the other chapters to be more seriously "toned"....more seriously toned than Squeak! ;)
To Craig: Is there going to be more? I'm particularly interested in higher level design principles (e.g., how streaming audio emerges out of your stream/networking classes, comparisons to how one might go after in in the current set up, etc.)
A "stream of programming" tour is a cool idea, though I confess to have a touch of difficulty following you everywhere (getting the effect of jumping around in a Smalltalk image into straight prose is tricky!) I'll read it again when I'm more awake to see if I track better. –Bijan Parsia
Hi STP–
Did you intend to make your comments anonymously? :) Anyway, your reaction was precisely what I expected/feared... Please read my notes about the chapter, where I attempt a defense of the style. I found myself unable to maintain interest in a straight treatment; this project doesn't pay enough for that, even taking the exposure into account. :) In fact, I'm inclined to make my appearance here a bit splashy. And I like the contrast (I agree with Bijan– this book is far too serious so far).
But I also think this style (or "cuteness", so be it) could be more effective than a straight treatment. This draft turned out to be weaker than I'd hoped, but I don't want to give up on it yet.
Would you please elaborate a little on the "low S/N" charge? I think the chapter gets into the guts quickly enough (half a page). The chapter seems reasonably tight to me (although rather awkward). Where's the noise?
> Can you rewrite this as if it were for a published book, rather
> than a newsgroup posting or article in a trade rag?
I take it you don't think there's any place for second-person narrative in books. :) I don't accept your question's rhetoric. I don't think the style I used automatically relegates the work to the apparently lowly realms of "newsgroup posting or trade rag", or that "published book" is necessarily worthy of exaltation in comparison. Furthermore, I was well aware of the target medium; I consider the work appropriate for said. I don't think insinuations to the contrary are constructive. I could of course rewrite the chapter in straight, traditional journalese style. Currently, I'm not interested in doing that. I'm the first to agree it needs more work to succeed, however.
Hi Bijan–
Yes, I planned more material, and I'm open to suggestions as well. The notes I mentioned above are the most complete record available of my thoughts behind the scenes. There's a lot more to it than the text. Besides the figures, I intend for the events in the story to actually be possible. So there will be a song that plays from netjam.org:7777, etc. In a subsequent version of the chapter, the song's lyrics provide instructions for running another code example, a demonstration of distributed musical performance. When an actual reader runs the example, they'll be connected with other readers in a musical context.
Motivating readers to do this is my main reason for using the style, and having motivated readers is my main reason for writing the chapter in the first place (to force myself to release a working version of the NetJam software :).
Thanks for the feedback, all!
Craig Latta
Craig:
If you look at the feedback for the Networking Chapter, you'll see more of the "style" complaint :) Just FYI!
One thing that might be helpful is a bit of compromise for the techy folks: e.g., interleve distinguishable straight bits (perhaps as sidebar like things).
I haven't had a chance to go through the notes, but I'll comment when I can.
For me, the hardest thing for you to pull off are the bits that can sound like self-preening. References too the book, to the chapter, to how cool it all is (I'm having a bit of trouble with this too, apparently), and, espeically, swooning. Techies may jump up and down, but they do not swoon! :) –Bijan.
> ...swooning...
Well, I meant for Reader's behavior to be absurd. I meant it as a satiric jab at the topic and context. Most technical books are rather dull... I thought it might be amusing to imagine a reader who has a rediculously enthusiastic response. I was also trying to make fun of the way tech stuff is hyped these days. Here, Reader goes crazy at the mere mention of one of today's big buzzphrases ("streaming audio").
I suppose it could be a bit too subtle...
Craig
Yah, I got that, but I realized that one thing that tends to get me about the "second party reader" things is that I tend not to like having my reactions prescribed. It's also harder for the small-r reader to indentify with the big-R Reader, if the big-R Reader is a schmuck ;)
Now, if we were obvserving a Author, who was ridiculously excited by being including in a high-proile Squeak book with a buzzword laden title...
...well, that would still hit too close to home! ;) –Bijan.
I actually did write a version with Writer before I wrote the Reader version. In it, Writer has writer's block and tries to break through it with music streamed in from the Net. A notifier appears, etc. It seemed weaker than the Reader version to me (and it's just an opener at the moment). It's at the website, just for kicks. My ISP is experiencing outages at the moment, though.
Craig
Wow! I liked it.
Could someone re-write the Alice tutorial and make it Lewis Carroll'esque? Or how about a Gestaltic explanation of the Squeak interpreter and the superclass of Class with the Turtle, Zeno and Kurt Godel :-)
adam... (currently re-reading GEB)
Mark's Review of "Streaming Audio"
Craig, I have to admit that this WORKS! I really had my doubts – when I saw how small it all was, how it had no code listings, when it had this very informal style of writing. But as I read it, you did a good job of figuring out what I wanted to know about when I wanted to know about it. COOL!
Obviously, my biggest concern is the lack of figures. Those figures are going to be critical to how well this works, especially with newbies. When can you provide versions of those?
The other thing I was going to suggest is an addition. This idea literally came to me the day after reading your chapter, so starting it off with your protagonist waking up the next day and deciding to look at...compression! Sending raw samples obviously takes considerable bandwidth. But I imagine that compression involves a certain balancing act between bandwidth, CPU speed, sample size, etc. It seems to me that it would allow for access at slower (modem?) speeds, and it would make for an interesting addition exploring issues of performance.
Issues
- p.1: netjam.org/flow – do you want to include this on the CD as well? netjam.org as a folder, flow.html within? Or something like that?
- p.2: "usual human interface machinery in the selectors of other contexts" – I didn't quite get this. Could you explain a bit, please?
- p. 4: "It sends a pause command to the server." That bit got me wondering. What kinds of commands should a client be sending to the server? How do the mechanics of this work, e.g., how busy is the server tossing out samples vs. listening for commands? Could you expand on this a bit?
Link to this Page