[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Date Index][Thread Index][Author Index]

Re: the electrix repeater

>My question is: Has anyone at Electrix read _The Mythical Man-Month_?

Now we're getting VERY OT, but I doubt the problems with the Repeater
have to do with the phenomena described in "The Mythical Man-Month,"
which mainly deals with the problem of scale and larger projects.

I doubt that there are THAT many programmers working on the Repeater.
It's not that large a program.  There are parts that are very *difficult*,
like the pitch/time shifting for example, but there just aren't that
many parts you could divide the problem up into!

I'd be surprised if there were more then half a dozen programmers
involved in the Repeater.  I wouldn't be surprised if the number
was four and the technical lead (which is the correct number for
that project -- one person doing the operating system, one person
doing the pitch and time-shifting, one person doing the playback,
and one person doing the time sequencing and synchronizing).

No, I'm sure the problem is that they have built a complex
system and there emergent phenomena of an undesirable nature
(what we call "bugs").

Emergent phenomena are things that a whole system does that
are not obvious from looking at the separate parts.

They can be good or bad.

Real instruments have both good and "bad" emergent phenomena.
Things like "wolf tones" on a guitar or "throat notes" on a
clarinet are "bad".  Things like harmonics or overtones
are good.

Computer programs beyond a certain size have emergent phenomena
that are almost always "bad" and even just bad like hang-ups,
crashes or corruption.

The reason is that the program world just doesn't force
you to completely specify things in the same way
the real world does.  The programmers make mistakes
which aren't immediately caught because there is no
specification that completely proves the program correct.

Real-time programming is worse.

The programmers have a rough, informal model of
what possible real-time events can occur and when.
But it's kept in the back of their heads and
not completely put on paper.

Since the model is never formalized, you can't
examine it to see if there are any assumptions
about the state of the system that can't be justified.

The solution is painful.  Each section must be
taken apart and completely specified.  Any section
that doesn't have a clear and unambiguous specification
should be taken apart and refactored until it is.

And the entire timeline of possible real-time events
needs to be completely specified so you KNOW
what events can occur, when.

I know whereof I speak, because I have done just
this to a real-time Java animation program over the last
eight weeks.

BUT I've been programming for a living since 1979 and it's
only very recently I got completely rigorous.

So I know very very well what it's like to have a completely
mysterious bug that you are *never* able to fix...


<http://ax.to/fortune>.........a new fortune every minute.
<http://FortNY.com>..................Forteans of New York.