

The story of Mel, a Real Programmer - donw
http://www.pbm.com/~lindahl/mel.html
One of my favorite pieces of classic computing folklore.
======
byteCoder
I guess I'm a sucker for these programmers of yore stories. Yes, Mel would be
an unsuitable candidate for most modern, team-oriented programming positions.
But, heck, to be truly one with the machine in understanding all of its
nuances is extraordinary. (Yes, the machines were smaller and simpler then,
but still...)

It's disappointing that a great majority of software developers (read:
corporate programmer drones) have little understanding of what's really going
on under the covers of the layers upon layer of abstractions.

Perhaps, if they truly did know, it might make them wonder if their code will
run at all?

~~~
greyman
Hi I am a corporate programmer drone and yes, you are right, someone like Mel
would not be very suitable. But that doesn't mean todays software building is
any easier. Yes, I don't need to know numeric codes of the machine
instructions, and I don't write code which modify itself. But the challenges
are not lesser - we need to think about how to meaningfully build those layers
of abstractions, how the pieces of software will communicate efficiently to
each other (sometimes asynchronously), how to build the modules to be both
maintanable and expandable, etc. etc...

When I was a student, I played with machine code and assembler and cracking
etc., so I have some knowledge of all the layers, but I don't think that
qualifies me to be a so-called Real Programmer. ;-)

~~~
Retric
The problem with corporate programming is not the layers of abstractions or
asynchronous communication etc. The real problem is the staggering
incompetence of _most_ people involved in the process.

~~~
daniel-cussen
Don't forget the layers of management.

------
jdavid
i college i wrote a little man computer program that calculated gpa scores.
when the assignment was given, the example would take an input, load them into
an array, and then iterate through the array, to compute the GPA. our teacher,
now a PhD, told us that there was not enough room to do more than 5 or 6
classes.

as a natural hacker i took that as a challenge.

his code was very functionally written, it was like a Java programmer witting
some thing in LMC, where my experience in programming was in getting my
mechanical engineering friends TI80s to play Tetris. To pull this off, you
needed to know how to follow directions on the Internet, build a custom serial
cable, and understand binary. The stunt involved you triggering some buffer
overflow that was never solved, and seemed to be on purpose as I look back on
it. This alt mode allowed you to execute your own assembly code.

In any case, my experiences were not based in java or c in fact the only code
i had written was an autoexec.bat and config.sys at the time, but to get my
DAMN games to work, you had to spend a lot of time hacking them and getting
drivers to load in the right order so that the memory managers would not over
allocate for one driver vs. another. In the end, my experience of hacking a
TI80, cheating in SimCity with a Hex editor, and booting my Wolfenstien 3d
prepared me better for this task than classic programing did.

I decided to go a completely different approach than my professor did, and
instead of using an array, I used an input buffer, and and a grade counter. I
then wrote two major functions, a float multiply, and a long division routine.
The only problem was, there was not enough space to make both work in the 100
memory spaces that the LMC had to load instructions, so I added a mode switch
routine, that would rewrite the code in a few key places that allowed me to
share instructions between the multiply and divide functions. In the end I had
a calculator that was able to calculate about 20 grades with 5 decimal points
of precision.

When I turned in the project, I was sure that my prof would be impressed, but
when i got it back, i received an F. An F, i was sooooooo pissed, i took my
timid self and asked him what was this score for, i thought i deserved an A,
did he mix up the grades or something. He told me that when he tested the
program the last few digits were flopping all over the place. I told him that
those were the second part of the float gpa value. He responded that I did not
document it. I asked him if he read the readme.txt that i submitted with my
code. He claimed that it was not written clear enough ( i knew he did not read
it ), so he compromised and gave me a b+, because my documentation was
insufficient.

I learned a valuable lesson,"A" students never prove a teacher wrong. It's the
same lesson I could have learned in High School, if i was paying attention.

I really miss assembly, not x86 assembly, but embedded assembly, later in
college i got to program boot loaders for my co-op, and hack some sound cards
for a speaker recognition project. Today I want to get into CUDA as a side
hobby, when I have the time.

------
thaumaturgy
I've always preferred the free prose version
(<http://www.catb.org/~esr/jargon/html/story-of-mel.html>), although at the
moment it seems to have been corrupted. Tsk, ESR!

~~~
nertzy
Yeah it needs to have its encoding specified. In Safari I set it to Unicode
(UTF-8) manually and it works like a charm.

