<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Dennis Reinhardt wrote:<br>
<blockquote cite="mid:20091030015355.0439B1940F6@noir.com" type="cite">The
half-life of technical knowledge was thought to be 5 years some 40
years ago.&nbsp; I don't think it is even that long now.&nbsp; Consider the
topics of the last year's Baypiggies.&nbsp; Are half the foundations of
those talks over 5 years old ... or more like 18 months?&nbsp; How old are
the tools, files, and technologies you deal with.&nbsp; Are half over 5
years old? ... or less?</blockquote>
Please note that python, our primary focus here, is 18 years old.<br>
<br>
While it is true that technology moves on, that statement about half
life from 40 years ago applied to a tiny body of existing computer
technology.&nbsp; While our technology improves and explodes, we also now
reuse a significantly higher portion than we did 40 years ago.<br>
<br>
Gone
are the days when every computer manufacturer designed their own CPU,
memory architecture, hardware, buses, interfaces, peripherals, and
operating systems.&nbsp; Gone are the days when every vendor had their own
pet programming language in which their proprietary operating system
was written.&nbsp; Instead, the computer world has been reduced to
essentially two operating system architectures, (each with a handful of
major variations), a small number of CPU architectures, (x86, amd64,
arm, powerpc, ...), and essentially one general purpose computer
architecture (with some major variations).<br>
<br>
Partly <i>because</i> we move so fast, and partly because we have a
much larger existing body of technology now, it is no longer possible
to design everything from scratch while remaining competitive.&nbsp;
Instead, we reuse large portions of technology from previous projects.<br>
<br>
I spoke with a mobile device company yesterday who is about to release
their first product,
(<a class="moz-txt-link-freetext" href="http://en.wikipedia.org/wiki/Barnes_%26_Noble_nook">http://en.wikipedia.org/wiki/Barnes_%26_Noble_nook</a>).&nbsp; It has been 6
months in the making.&nbsp; That's all.&nbsp; Just 6 months from design to
release of an entirely new product line.&nbsp; The device includes arm cpu,
android OS, 3G (data only) uplink, custom hardware and industrial
design, (from available parts), and custom software apps, (leveraging
existing technologies).&nbsp; This was unprecedented 40 years ago but
becoming common today.<br>
<br>
I'm currently working on a well known mobile device.&nbsp; Our primary
technologies are:<br>
<ul>
  <li>C, (~40 years old)</li>
  <li>Make (~40 yo)</li>
  <li>gcc (30 yo)</li>
  <li>GNU (~30yo)/Linux (18 yo)</li>
  <ul>
    <li>which is directly descended from Unix(tm) (~40 yo)</li>
  </ul>
  <li>debugging using gdb (30 yo)</li>
  <li>cross/embedded techniques (&gt;40 yo)</li>
  <li>continuous build and parallelism techniques (&gt;30 yo)</li>
  <li>arm architecture (26 yo)</li>
  <li>subversion (10 yo)<br>
  </li>
  <li>openembedded (&gt;5 yo)</li>
  <ul>
    <li>the openembedded build tool is bitbake, which is written in
python.</li>
    <li>bitbake "recipie"s are written in bitbake, which uses python
escapes much as C code sometimes uses assembler escapes.</li>
  </ul>
  <li>custom device drivers (&lt;2 yo)<br>
  </li>
</ul>
Although largely outside my domain and restricted to perhaps half of
the engineers on the project, we also work with:<br>
<ul>
  <li>javascript (14 yo)</li>
  <li>eclipse (&gt;8 yo?)<br>
  </li>
  <li>prototype (5 yo)</li>
  <li>proprietary frameworks (&lt;2 yo)</li>
</ul>
Of course most of these technologies are under active development or at
least active maintenance.&nbsp; So it's not entirely accurate to say that
we're using 40yo technology.<br>
<br>
My point here is that I'm working on a very modern project and yes, a
significant portion of the technology involved extends back 40 years or
more.<br>
<br>
--rich<br>
</body>
</html>