

This Is Not Your Daddy's OS - comatose_kid
http://www.dadhacker.com/blog/?p=1023

======
stcredzero
If you are afraid that today's crop of programmers don't understand the
basics, then there are Open Source Tools that let you do something about this:

Short summary video: <http://www.youtube.com/watch?v=JtXvUoPx4Qs>

Google Tech Talk:
<http://video.google.com/videoplay?docid=7654043762021156507>

You implement a virtual CPU starting from NAND, then an OO language and an
Operating System. This sort of comprehensive information should be an
essential part of any programmer's "mental furniture." The nice thing, is that
the only prerequisite is that you know hot to program in the first place.

~~~
tlrobinson
I love the gratuitous glasses removal at the beginning of that first video.

~~~
stcredzero
Maybe we should put James Bond theme music in back of the vid?

------
tlrobinson
People simply confuse "operating system" with "platform" because in the past
the platform has always been tied to the OS. Not any more.

When people say "the browser is the new OS" they don't really mean "OS", they
mean "platform". Emacs is also a platform (though not a very popular one)

I believe the browser is _the_ most important platform, but it still requires
a real OS to run on.

Also, his rant kind of reminded me of this: <http://xkcd.com/378/>

~~~
dfranke
I clicked that link expecting it to be <http://xkcd.com/435/>, picturing an EE
making a similar rant.

~~~
edw519
Thanks for the link, Daniel. Excellent bulletin board material - for the far
right hand limit of my bulletin board.

------
KirinDave
Personally, I think this is a very dated position to take.

All computer language save exactly what the processor reads is completely
synthetic, a fantasy that we all mutually support to make our lives easier.
We've seen machines based off of a variety of underpinnings that directly
model languages above them, so even that underlying representation is somewhat
fluid and subject to interpretation.

I agree that sometimes people forget about how much infrastructure surrounds
them, but I also think that people working in lower levels of the code
sometimes forget that their job is ultimately to make it so no one else every
has to do what they are doing. Ideally, every layer completely fades away into
the previous layer and you end up with a unified front which we call a runtime
environment.

So maybe this complaint is like a Matryoshka Doll. As he hacks on his OS-level
code in assembly and lectures people about how they shouldn't take his work
for granted or steal his names, a lower level software or hardware engineer is
saying exactly the same thing about his post.

~~~
comatose_kid
If the age of a position negatively impacts its correctness, we should re-
examine Newton's Laws :)

I guess that most anything is 'somewhat fluid and subject to interpretation',
but I still find it difficult to understand how a software engineer can
conflate the idea of an OS (which essentially manages computer resources) with
a browser.

~~~
KirinDave
"Dated" doesn't mean old, it means old-fashioned or somewhat anachronistic by
modern standards.

All he's really talking about is a "runtime environment" when he says OS. What
we consider the bare bones of a modern OS is, by standards set 30 years ago,
irreparably full of excess and waste. Even if you look back 10 years features
have been added which were once impractical. The feature creep all software
experiences means that over time, what's considered the "bottom" of the
software hierarchy is constantly reaching up to the top.

And it gets really complex when you start talking about emulation. Is an OS
suddenly not an OS when it's run in software emulation? What about
virtualization? If the resources it manages are fictions, does that change
what it is? And then you get into insular environments that certainly could be
made to run on bare metal environments if you wanted to, like Lisp and
Smalltalk. Where do they sit?

Maybe "Operating System" is a misnomer, but it's not far from the truth from
the perspective of a web programmer deploying applications to a target over
the network.

~~~
comatose_kid
You have some interesting points. But just because something runs on bare
metal doesn't make it an OS (many Amiga video games tossed the OS for
example). An OS running in s/w emulation is still an OS. It manages resources
for the apps, it doesn't matter what lies beneath - same goes for
virtualization.

------
redorb
I think his thought process relates to the same people who think you should
know everything.... I will never know exactly how a microprocessor works - but
that doesn't impede my programming skills, I might not know electricity works
(down to the electron) but I still use it everyday.

If you spent all your time trying to know everything about anything - you will
know a little about a lot, instead I think I would rather be a specialist.

~~~
ajross
"I will never know exactly how a microprocessor works - but that doesn't
impede my programming skills"

 _Yes_ _it_ _does_.

To pick just a single example: if you don't understand how your CPUs cache
architecture works, and how it interacts with hardware paging (and ultimately
swapping), you aren't qualified to do performance analysis _at_ _all_. But you
will anyway, and you will get it wrong, and you will forever be wondering why
your MySQL database doesn't scale properly. Or why adding a bunch of RAM to
the box didn't work the way you expected. Or you'll write dumb "optimized"
code with local copies of things that could be computed, and fail to
understand the benchmarks showing why it doesn't work.

As a programmer, you are a user of a tool. If you want to be an effective user
of that tool, you need to have some understanding of how it works. No, you
don't need to be a fully trained ASIC design architect, or semiconductor
process engineer, or solid state physicist. But yes: you should understand how
a circuit works, and what the parts of your computer are, and how they
interact.

And your statement that "specialists" can get by without knowing "a little
about a lot" just confuses me. Every talented "specialist" I've ever known has
an encyclopedic knowlege of all sorts of things outside their specialty. A
better word for a "specialist" that only knows their specialty is probably
just "worker", or "lackey".

~~~
eru
You can do a lot of useful performance analysis with only a profiler and
trial-and-error. Also sometimes mathematics seems to help.

~~~
gizmo
You can only really get the lowhanging fruit that way. There are so many
different methods of optimization that you have to know where to start. You
have to have a good model of the underlying system. Otherwise you won't
understand why boxed integers are inherently slow. Or why an array of tuples
can be much slower than a tuple of arrays.

Modern languages completely abstract from fundamental things like indirection.
Consequently, it becomes almost impossible to accurately estimate the
performance of algorithms in high level programming languages.

Waiting for people with experience optimizing prolog programs to disagree with
me...

~~~
eru
Optimizing Haskell seemed to require quite deep knowledge about the way the
compiler worked.

------
josefresco
Awesome rant, however the movement to have the OS 'browser based' is more
about the old <http://en.wikipedia.org/wiki/Network_PC> idea than it is about
web 2.0/ajax or xml.

It's like a movie sequel with different actors and a crappy writer.

