April, 2006

Larry Osterman's WebLog

Confessions of an Old Fogey
  • Larry Osterman's WebLog

    I could get to like this "Internet" thing.


    Last Thursday, when Daniel was at his music lesson, I got an email from a friend of ours.  We have a vacation home in the San Juan Islands (just north west of Seattle), and he was visiting his place on the island and looked in on our house.

    He had noticed that the dining room set was missing and wanted to know if we knew anything about it.

    Not surprisingly, we didn't, as soon as I saw that, I got that hideous feeling in the pit of my stomach that we'd been robbed.

    I went up to the island on Saturday morning, spent the afternoon inventorying the things that were stolen and talking to the very nice policeman who came to take the police report.

    One of his first questions was if we had pictures of the stuff that was stolen.  Of course we didn't (this is not at all surprising), but I was able to find a receipt for most of stolen items (this is actually pretty amazing if you know us).  But I still couldn't find a picture.

    Until I got back home where I filled out the remaining forms.  Since I had the receipt, I had the manufacturers name and the model number for the items stolen.  I figured that it had been 8 years since we bought the stuff, so there was no chance I'd find it, but what the heck. 

    I went to both MSN search and Google and between the two of them I somehow managed to find pictures from various furniture retailer's web sites.

    The only item I couldn't find on the web was the dining room table (and 6 chairs).  I simply couldn't find any references to them and I didn't have the model number for them.  But eBay came to my rescue.  I searched on eBay and found someone who was selling the exact same table as was stolen (different fabric on the chairs but the same table).

    Yipee!  I was able to fill the entire report complete with pictures from the web of almost all the items that were stolen.


    Now all I need to do is to deal with the insurance company (yuck).  And even better, I know people who are selling the stuff that was stolen so I can replace it.

    Man, that "internet" can really come in handy.


  • Larry Osterman's WebLog

    This one's for you John. The core OS team didn't forget you

    Way back when, back in the very early days of this blog (actually it was the 3rd post to my blog), I wrote a story about John Vert complaining about CTRL-C not working on network commands.

    Well, yesterday I got a piece of email from one of the developers in COSD.  I've sanitized it a bit, but here's the important part:

    Microsoft Windows [Version 6.0.<build>]
    (C) Copyright 1985-2005 Microsoft Corp.

     d:\>dir \\<server>\dfg
    The I/O operation has been aborted because of either a thread exit or an applica
    tion request.

    d:\>dir \\<server>\dfg
    The I/O operation has been aborted because of either a thread exit or an applica
    tion request. 

    So John,  this one's for you, even though it's been 13 years since I worked on that code, your complaint wasn't ignored, and it's finally been fixed.

    I have no idea what build will contain the fix, or even if the fix will make the final product, but it's getting there.

    As I type this, I can just imagine the /. headline: "Microsoft takes 13 years to fix a bug".  The reality is WAY more complicated than that.  To actually make this fix work required a significant amount of change to the I/O subsystem and a number of changes to the way that I/O cancellation works. The biggest piece of the picture is the new CancelSynchronousIo API that was added to Vista to handle just this situation, without that support (as mentioned in my the original article), it wouldn't have been possible to fix the problem.

  • Larry Osterman's WebLog

    The purpose of an operating system, redux

    Something changed in the stress mix last week, and I've been swamped with stress failures, that's what caused the lack of posts last week.  But I've spent a fair amount of time while driving into work thinking about my last post (on the purpose of an operating system).  I've not actually read most of the comments (I've really been busy), so if I'm echoing comments made on the other post, forgive me for poaching your ideas, it really is a coincidence.  I'm a little surprised it's taken me this long to have this idea gel in it's current form - it's blindingly obvious, but I never put the pieces together in this way before.

    I still stand by my original premise.  The purpose of an operating system is to shield the application from the hardware.

    But the thing that you purchase in the store (or buy with your new computer, or download from RedHat) ISN'T an operating system.  It's a platform.  

    And a platform does more than just isolate the user from the hardware, a platform is something on which you build applications.  This is a key distinction that it seems many people have a really hard time making.

    Let me take Linux as an example, even though I'm far from a Linux expert.  The Linux operating system exists to isolate the user from the hardware.  It hosts drivers and presents a fundamental API layer on which to build systems.  But someone who receiving a machine with just copy of Linux would be rather upset, because it's not really very useful.  What makes Linux useful is that it's a platform on which to build applications.  In the FOSS community, the "platform" is called a "distribution", it contains a set of tools (Apache, Perl, etc).  Those tools make up the platform on which you write applications.  Btw, RMS has been saying this for years now in insisting that people call the "OS" known as Linux "GNU/Linux" - he's explicitly making the differentiation between Linux the operating system and GNU/Linux the platform.


    Similarly, Windows isn't an operating system.  Windows is a platform.  Nowadays, the Windows platform runs on the NT operating system, in previous years, the Windows platform ran on the Windows VXD operating system, and before that it ran on the MS-DOS operating system.  OSX is also a platform, it runs on an operating system that is (I believe) a derivative of the Mach OS, running with a BSD personality layer (I may be wrong on this, I'm not enough of an OSX expert to know the subtleties of its implementation).

    For convenience sake, we refer to the Windows platform as an operating system, just like people refer to OSX or Linux as operating systems, it's simply easier to present it that way to users. 

    If you make the paradigm shift to considering the "operating system" as an operating system plus a development platform, it makes a heck of a lot more sense why the platform contains things like an HTML renderer, a sockets layer, a TCP/IP stack, an HTTP server, a directory service, a network filesystem, etc.  These aren't things that shield an application from the hardware, but they ARE things that provide value to applications that want to run on that platform. 

    As an easy example, consider an application like the game Neverwinter Nights.  Because the developers of Neverwinter Knights knew that there was an HTML renderer built-into the platform, it meant that they could leverage that renderer in their launcher application (or their update application, I forget which of them used the MSHTML control).  Because they knew that the platform contained a multimedia stack with WAV file rendering, they didn't have to build in a WAV renderer into the game.  Because they knew the platform had support built-in for video rendering, they didn't have to include a video renderer.  They might have had to include a video codec along with their application, because the platform didn't necessarily include that, but it's orders of magnitude easier to write (or license) a video codec than it is to write or license an entire multimedia pipeline.

    A rich platform means that applications can depend on that platform, which, in turn makes the platform more attractive to the applications.  Everything that the platform does that an application doesn't have to do is one less thing an application needs to worry about.  Of course, the challenge when enhancing the platform is to ensure that the platform provides the right level of capabilities, and the right ease of use for those capabilities, otherwise applications won't use the platform's implementation, but will chose to roll their own.

  • Larry Osterman's WebLog

    Riffing on Raymond - the purpose of an operating system


    In Raymond's post today (Adding flags to APIs to work around driver bugs doesn't scale), Raymond wrote:

    Perhaps it's just me, but I don't believe that workarounds for driver issues should become contractual. I would think that one of the goals of an operating system would be to smooth out these bumps and present a uniform programming model to applications. Applications have enough trouble dealing with their own bugs; you don't want them to have to deal with driver bugs, too.

    My personal take on this is that the entire PURPOSE of an operating system is to smooth out the bumps and present a uniform programming model to applications.  Applications don't need to know about the weird behavior of of the u765 floppy disk controller that only shows up when there are more than two floppy drives (I got a free 72 hour trip to France because of that particular issue).  They shouldn't need to know that a certain models of network adapter will sometimes hand the OS a packet that is half filled with garbage. Applications shouldn't have to know the low-level commands needed to drive a printer.  

    IMHO, the ONLY reason for an operating system to exist is to hide the details of the hardware from the application.  Everything else is sugar.

    People forget what the world was like when they would buy a word processor and it would come with a list of the two dozen or so printers that were supported by the application.  If you wanted to use the word processor but didn't own one of the listed printers, you were out-of-luck.

    For those of you that are now going to say "Aha!  Larry now thinks an OS shouldn't contain a web browser", that's not at all the case.  An HTML renderer is a very high level special case of hiding the details of the hardware from the application.  In the case of an HTML renderer, it's job is to provide a uniform interface that can be used to render HTML content to the screen, just like a printer driver provides a  uniform interface that can be used to render content to a printer.  Similarly an OS should contain a TCP/IP stack and network programming layer that allows for application authors to avoid understanding the icky details of interoperability (it's HARD to write a high quality TCP/IP stack, and application authors shouldn't have to).


    But I still stand by my original assertion: The only reason for having an operating system is to hide the details of the hardware from the applications that run on the computer.


    Btw: This is MY opinion.  I want to repeat that.  MY OPINION.  Others undoubtedly feel otherwise.


  • Larry Osterman's WebLog

    It was a dark and stormy last night

    It was a dark and stormy night...  The band of infiltrators crept into the deserted building.  After checking to make sure that the authorities weren't present, they crept up to the sixth floor.  At this point, they were committed, there was no going back.  Their leader laid out the plans.  At 2300 hours they were to launch the projectiles at their target.  Tension built as the time approached.  Their plans had been set, the shields were in place to ensure maximum coverage.  Wearing a helmet and shield, their leader fearlessly stood anticipating the onslaught.  At the appointed time, the balls were released and they cascaded down the staircase, bouncedy, bouncedy, bouncdey.



    Ok, it wasn't stormy (the stars were out), and it wasn't particularly dark (especially with the building exterior lighting), mostly we showed up in our cars and badged ourselves into the building, and the cleaning crew was wandering the halls, there was copious beer and sandwiches for everyone, and Dave had made t-shirts for everyone, but who's counting...  It also wasn't particularly a "prank", but was more of a "stunt", since we cleaned up after ourselves :)


    Last night, (as mentioned in this video) a bunch of miscreants found their way to the top of the building 41 main staircase, and proceeded to toss 20,000 bouncy balls down the stairwell.  As I mentioned, Dave decided to stand right in front of us watching as the balls were thrown off, after we started pelting him a bit, he decided that he needed some head protection, so he grabbed a spare bucket (that's where we put the bouncy balls), cut an eye hole in it, and stood there while we dumped thousands and thousands of bouncy balls down on him.

    It was awesome.

    Later on, we dumped a thousand or so balls we'd reserved directly over the side, I was near the bottom of the stairwell when that happened, it was pretty trippy watching the balls come on down.


    Being good little boys, we then spent the next hour or so cleaning up the mess we'd made, I had broom duty, so I was pushing hundreds of bouncy balls down the stair landings (there was a crew with a shopvac behind me picking up the stuff I missed).  It was great watching the balls gracefully cascade down the stairs.


    PS: Now you know why I'm not planning on leaving my day job.  I can't write prose.

    PPS: Yes, I know about the Sony Braviaa ad, and it was just like being in the middle of the ad.  But Dave had the idea long before the ad ran.


Page 1 of 1 (5 items)