[rescue] Small servers (was Re: WTT: 1.5G of PC2700 for 1G of PC100)

Jonathan C. Patschke jp at celestrion.net
Mon May 5 15:40:51 CDT 2008


On Mon, 5 May 2008, Joshua Boyd wrote:

> You say it is important, but all the cool kids are moving on to things
> like function programming, flow programming, logic programming, or
> aspect oriented programming.  ;)
>
> The smart student would prefer a nice versitile language that offers
> all of the above, plus OO and procedural, while also making it easy to
> write new language extensions and your own compilers.

And this is the perfect example of why computer science folks and
computer engineering folks are not alike.  Tools like that are fun and
expressive, and they tend to be quite excellent for -modeling- the
problem to be solved.  However, applying that sort of thinking to
deliverable software is what gives us what should be small applications
(web browsers, mail clients, IM clients), but end up taking hundreds of
megabytes of memory in their efforts to implement specific needs as
special cases of far more generic problems.  It's also the reason why
software tends to get slower[0] than faster.

Sometimes you just don't have the luxury.  Sometimes you just have to
get something done with some truly atrocious tools that meet some
reasonable intersection of usable and fast (leaning more towards the
latter).  And sometimes[1], programmer time is not more valuable than
run-time.

Take, for example, one of my current projects, which is a pile of code
that gets run against every part that $ork[2] ships out.  It's already
written in lean C, but I've reimplemented part of it in a special-case
scripting language (and written a compiler that generates PA-RISC
assembly code) because the ancient[3] version of HP's compiler we're using
generates such awful code.  Shaving a second off the runtime means being
able to run thousands more parts through the test facility in a day.
Sacrificing memory to generate full-gamut lookup tables for certain hash
functions (to save the hash computation at each dispatch) gave us a few
seconds of improvement.

Something like Python or Perl or Ruby[4] would cost us hundreds of
thousands of dollars a day (if not more) in tester execution time, and
would either require us to lower our production projections or purchase
more testers and hire more technicians to run them and buy more
buildings to put them in and etc.

Now, you're surely thinking this is a special case, right?

I look at it this way:  If I'm all about more money, I can get it.  I
might have to break laws or hurt people, but I can get it.  If I'm all
about getting more tail, the same thing applies.  If I'm all about any
material thing or experience, the same thing applies.  There's one
exception though:  I can't get more time.  Once my time on this planet
is up, that's it, as far as science can prove.

And every time my computer wastes my time because some retard programmer
got into a "look who's the cleverest" contest with some other retard
programmer, I take personal offense.  I did not buy the tools on my desk
for the amusement of others.  I bought it to make large piles of work
turn into large piles of deliverables.


[0] Try using a Mac SE/30 with software from the period when it was
     released.  Then switch to a modern Mac (or modern PC) and use
     today's software.  Nearly everything takes longer to launch, and
     isn't quite as snappy.  Why not?  The computer on my desk has over
     ONE THOUSAND times as much memory, four times as many CPUs, each of
     which is clocked just under TWO HUNDRED times as fast, nevermind the
     improvements in memory access times.
[1] In this case, I mean "usually".
[2] $ork builds integrated circuits.
[3] Unfortunately, upgrading is not reasonable.  Nor is switching to
     gcc.  We're using what is certified with the IC tester, and as
     broken as the compiler is, it's entirely possible that the tester
     interface software expects some of that brokenness.
[4] Not to say that they haven't their place.  Another project I'm
     working on actually uses ECMAscript as its embedded scripting
     language, specifically because it has closures and prototype-style
     OO.  However, in that project, the scripting engine does not run
     synchronously with the test payload.
-- 
Jonathan Patschke | "There is more to life than increasing its speed."
Elgin, TX         |                                   --Mahatma Gandhi
USA               |



More information about the rescue mailing list