My apologies for the delay -- I had to put out a version control fire. (Hate forthcoming.)

On Oct 3, 2008, at 5:32 AM, Peter da Silva wrote:

On 2008-10-03, at 02:47, Joshua Juran wrote:
I used to have what-to-do-on-close logic in the kernel, but now the window will always close when the last file descriptor referring to it is closed. So run a trivial program that does "while ( true ) pause();" to keep it open.

I don't need to do that to keep a file in the file system from being deleted, why should I have to do that when I just want to redirect the output of "ls" to a new window?

Well, piping it into a program isn't any harder, is it?

Pipes and filters and redirection is a human tool, at least as much as a scripting tool. The UNIX shell is a very humanistic API, it's something created for people to use, directly, casually, if you have to do things like writing a program to keep a file open, you might as well be using JCL.

Okay, so you're modeling the window as a file. Does that mean you'd close the window by calling unlink() on its pathname?

My concern here is how to close the window programmatically. Although /dev/console currently has a window that only the user can close, so I'd consider a distinction between 'user' and 'system' windows.

Also, rather than opening the new-window device yourself (when in the shell), it's advised to use a dedicated program that handles setting up a new session. If the window isn't the controlling terminal of its foreground process group's session, then clicking the close box does nothing (i.e. the processes holding its file descriptor don't receive a SIGHUP).

The whole "session", "process group" nonsense is irrelevant for this.

This is a little window, it's not a terminal, it's not a session, it's "ls > /dev/win/anon/default".

A 'terminal' is an endpoint in a circuit and possibly a point of contact between two circuits. In my model, a terminal is an interface between the user and the system. This is as true of a text- editing window as it is a shell window.

If you close it before the program's finished, the program gets a SIGPIPE, not a SIGHUP.

This can work for output-only scenarios.  I'll consider it.

Are people crazy for building little trains that can't carry passengers or cargo, can't go anywhere, and don't make any money?

No, but they're crazy if they think balsawood is "more solid" than steel.

Balsawood is more solid than straw (especially in man-form). I don't argue that OS 9 is robust (and I accept your 'masochist' label), but that the API is mostly well-designed, particularly in comparison to Win32.

Mac OS 8 ran faster under Sheepshaver than native.

Your complaint says that one machine is faster than a different one,

No, this was on the same computer. Same disk, same memory, same CPU, the only difference was booting from the BeOS partition or the Mac OS partition. Because BeOS didn't have to run disk I/O and the application in lockstep.

Oh, BeOS. That didn't occur to me, since I've never used it, but that makes sense now. Too bad OS X didn't do nearly as good a job performance-wise virtualizing OS 9.

This is "hates-software", not Ars Technica. I hate classic Mac OS with a burning hate, for all the time I wasted trying to make it work even vaguely reliably. For all the mollycoddling I had to do to keep it from ripping its belly open and wandering around bleating about the way its hooves were digging into its trailing intestines.

Just think of my work as an entry in an imaginary retro-programming contest.

Just running Finder and ANY program on my 7600, switching from a Finder window to another window took longer to complete than running the NeXT file manager and any program under NeXTStep.

I loved the responsiveness of NeXTstep, even on a 68030 (provided it had a beefy 16 MB of RAM instead of a measly 8 MB).

I upgraded my 7600 from 9.22 to 10.1.5 and all of a sudden I could play music while using the file system without having dropouts. Yes. Really. Just using the file system from another program, any other program, would bring the Great Multitasking Charade to a screeching halt and the music ended.

I wonder if your audio player wasn't using interrupt-driven I/O. Or maybe you were running File Sharing?

My iBook had only 320 MB of RAM, not enough to use OS X effectively without excessive paging, which could very well cause dropped audio.

Moving windows was annoying, at first. No hardware acceleration. Once I found out how to turn off the window shadows, it was even fast doing plain old window manipulations.

I never developed an interest in 'how do I hack the system in ways Apple didn't intend to disable so-called features that Apple added that I didn't ask for and don't want and which don't have a proper switch to shut off'. I always loved how booting into OS 9 made everything fast again.

I got a G3 processor and upgraded to 10.2, and it was even better. I dropped back to 9.22 on the same machine, and it STILL dropped music in iTunes when I tried to do file transfers in the background.

Sounds like iTunes/SoundJam kinda sucked.

On my Amiga, in 1989, I frequently ran a video game in the background, for background music, while I was working on the source code for that game, compiling, editing, and chatting on a dialup session with the other developer, without any worries, without even the slightest glitch in the music, without any delays I could tell in the compile process. I did benchmark that one time... running a pretty intensive MIDI app added 3% to the total time from "make" to another prompt... and the compiler didn't cause any delays in the MIDI pipeline. That's on a 7.14 MHz 68000 with 2.5 MB of RAM.

Yet a 400 MHz G3 with 768MB of RAM got dropouts in iTunes just copying files?

Well, emulating 68K interrupts doesn't help, I'm sure. I used SoundApp, and I only got dropouts using ToolServer. I don't know what was special about ToolServer/MPW Shell. It's not like the Get Info window has a panel labeled "Here's all the crazy shit we did to get this application to work (including various things we told *you* not to do but did anyway because we're special)."

Please imagine an operating system that looks and feels like classic Mac OS, but without the faults.

I can't. I literally can't. I wasted too much time trying in vain to hide the faults from myself, to work around them, to avoid triggering them without *completely* giving up every expectation I had for what a computer should be able to do. I still have occasional use for it, but I can't imagine using it for anything more than the driver for my lovely old HP scanner.

I just can't resist the challenge. Maybe I have an easier time dealing with OS 9's faults than OS X's or Linux's, where my expectations are higher.

Start over from scratch. Throw away the horrible 1982-era OS-as-a- GUI-library legacy. Yes, I could see doing that. I could see making something that looked like Mac OS, but I sure wouldn't want to make it feel like Mac OS, because so much of the feel of Mac OS, to me, is bound up in "oh no, you can't do that, because I'm just a Mac".

No, the 'feel' just means that Home and End scroll the page rather than move the insertion point, and clicking the close box once closes the window, rather than, say, bringing up a menu. What you're describing is more like the 'attitude', or maybe 'work ethic'. :-)

Eventually I'll make an exodus to Linux, but among other things I'm waiting for a good text editor. *ducks*

Josh


Reply via email to