Live data from Hacker News

BeOS: The Alternate Universe's Mac OS X

hackaday.com

271–280 of 430 posts

Re: BeOS: The Alternate Universe's Mac OS X

#271
post #240

Earlier quoted context omitted.

I mean maybe. I was running 1600x1200 on my monitor back then.

2048x1536 was already a thing as well.

Yup, had a 22” Mitsubishi monitor that could do that resolution in ~2002. Everyone would pick on me about the text being so small, but I’d let them sit at my desk squinting and I’d stand ten feet back and read the screen with ease as they struggled. The monitor was a beast though, around 70lbs if memory serves.

Edit:

Pretty sure this is the monitor: https://www.necdisplay.com/documents/ColorBrochures/RDF225WG...

Re: BeOS: The Alternate Universe's Mac OS X

#272

Earlier quoted context omitted.

Ok, so this is the big BeOS thing I've heard. What technically enabled this on such limited hardware? Was there lack of security/containerization/sandboxing that made os call much faster and context switches better?

Bear in mind that resolutions back then were much lower than now, and not all computers had 24 bit color frame buffers. Video cards ran one monitor for the most part, with no others attached. Be had well written multi threading and preemptive multitasking implemented on a clean slate - no compatibility hacks required. That meant it worked well and was quick/responsive. There were still limits, and the OS didn't have…

1280x1024, not so far from 1920x1080.

Re: BeOS: The Alternate Universe's Mac OS X

#273
post #43

Earlier quoted context omitted.

I think BeOS was the only OS that allowed smooth playback of videos and work at the same time, something Windows was capable 5 and Linux 10 years later :D

BeOS would also let you do that while playing them backwards ; useless, but a nice demo of the multimedia capabilities of the OS.

This would be challenging with modern codecs using delta frames. The only way I can see it work is precomputing all frames from the preceeding keyframe. Doable, but decent effort for a fairly obscure feature.

But did video formats back then use delta frames?

Re: BeOS: The Alternate Universe's Mac OS X

#274
post #15
post #9

Earlier quoted context omitted.

The way I see it, the two are related- Microsoft stopped it from having much of a chance as an independent OS.. This stopped us from getting it outside of a major vendor like Apple acquiring it. Apple saw this, so didn't want to pay as much as they might have if it were selling well on it's own. So Apple ended up going with NeXT "instead of plan Be" as it were.

I love how everyone blames Microsoft for what was OEMs doing a race to the bottom. OEMs had an option, yes they would had to pay more for licenses, but no one pointed them a gun, or did visits mafia style to forbid them to sell other systems.

Only slightly off topic, but are you aware of

[1] https://www.quora.com/Why-didnt-Japan-make-their-own-brand-O...

?

Re: BeOS: The Alternate Universe's Mac OS X

#275

Earlier quoted context omitted.

BeOS did not use async, it used a "half-hearted, primitive, bug-ridden" implementation of actor model in C++.

...which is async.

It's not async by default. It's concurrent. In order to get async, you have to do a ton of wrapping, e.g. https://github.com/elixir-lang/elixir/blob/v1.9.4/lib/elixir...

Re: BeOS: The Alternate Universe's Mac OS X

#276
post #94

I ran BeOS back in the day (even have the developer book!) and I've been trying Haiku on and off over the years. It's been interesting. The browser isn't quite all there yet but might be considered serviceable, and you can sort of get a working dev environment going on it (not many modern runtimes, though, nor a way to run Linux binaries that would let me do Clojure). It's certainly worth keeping an eye on, although…

Doesn't Clojure run on the JVM? Haiku has OpenJDK, you know...

Re: BeOS: The Alternate Universe's Mac OS X

#277
post #225
post #214

Earlier quoted context omitted.

No, it was "distorted" 2D, like cardboards put in perspective. Not 3D.

You are still getting confused by polygons. It was a 3D space that you could move around in. The matter of how it was rendered is an implementation detail.

It really wasn't. Doom's gameplay almost entirely took place in a 2D maze with one-way walls. It was rendered to look 3D, and as you said, that's an implementation detail.

Re: BeOS: The Alternate Universe's Mac OS X

#278
Crazy timing, just this week I pulled my BeBox put of storage and fired it up. Still impresses me even now, loads of nice touches. Also got a bit of a shock when I played a MIDI file and perfectly serviceable sound was produced by the little built in speaker.

Re: BeOS: The Alternate Universe's Mac OS X

#279
post #225
post #214

Earlier quoted context omitted.

No, it was "distorted" 2D, like cardboards put in perspective. Not 3D.

You are still getting confused by polygons. It was a 3D space that you could move around in. The matter of how it was rendered is an implementation detail.

Doom was a 2D space that looked like a 3D space due to rendering tricks. You could never move along the Z-axis though because the engine doesn't represent, calculate, or store one. That's why you can't jump, and there are no overlapping areas of the maps.

Re: BeOS: The Alternate Universe's Mac OS X

#280

Earlier quoted context omitted.

BeOS did not use async, it used a "half-hearted, primitive, bug-ridden" implementation of actor model in C++.

Unlike Erlang which copies messages, and Pony which uses reference capabilities, BeAPI used a pragmatic approach where BMessages shared a kernel memory pool. Add the ability to filter messages and dynamically retarget messages, and you get a PRACTICAL (vs academic) Actor model. I wouldn't say it was half-hearted and primitive, on the contrary.

Erlang isn't exactly academic, or impractical. And the BMessages themselves did not share the kernel memory pool, it was the thread system (or BLooper if you will), but only some of the primitives. In fact, BeOS was kind of split brained. You could send a message to a thread either through the kernel send command (which had a limited queue length) or a one which use local shared memory (which effectively did not). That is, of course rather dangerous, since there are no protections on that memory (it being C++).

I don't miss the segfaults that I experienced time after time and strange stateful consistency errors from when I was programming in the BeOS, and I don't miss biting my knuckles when having to recast data as (void*) in order to send it to another thread, now that I'm programming in ERTS. I do however strongly appreciate the experience, because it was a hell of a lot of fun, and, importantly, I learned that you can't use a buffered matrix mult to save on memory allocations, because you don't know that your preemptive kernel won't kick you out midway through the matrix mult and start filling the bins with data from the other thread.

I would say that half of the reason why I am really adept at identifying race conditions in erlang is that I've seen them all, and worse, in BeOS.

And the BeOS runtime does not have half of the resilience and fault isolation properties that Erlang has, which is what I mean by "half hearted and primitive".

Post reply on HN