Programming

I'm a closet computer nerd!!

Hi. I'm Jens Johansson, and I'm a closet computer nerd. (Acceptance is
the first step to recovery, or so they say.) I was always interested in
mathematics and electronics as a kid, and I managed to get my hands on
computing hardware pretty early, thanks to the fact that I was lucky
enough to have an uncle that worked at a hospital. He was very
encouraging and let me experiment for hours by myself with the
then-expensive and then-sophisticated equipment. They had all sorts of
interesting machines. I learned the ropes with a large programmable HP
calculator that had a plotting device attached. It was basically a
programmable desktop version of their pocket calculator, with builtin
printer and "mass storage"  RPN arithmetic, all math/trig functions
builtin, something like 500 programmable steps. This was in 1978 or so.
A little later they invested in new equipment, I think it was called the
HP 9845B. This was a large desktop computer that ran HP's extended
version of BASIC. (It was an advanced BASIC for its time, it had things
like long variable names and multiline subroutines and functions) It had
two tape drives, a built in thermal printer, and a CRT with character
and graphic modes. So that's how I learned BASIC.

Later on in school I chose a 'technology' study program. This required
you to work 6 weeks during the summer holidays to gain work experience.
I worked the summer of 1982 at that same hospital. By then
microcomputers had started taking off, and they had purchased a few
'ABC-80' computers. This was essentially a localized version of the
TRS80. The BASIC interpreter/OS was written by Microsoft, I think. I
think the file system was based on CP/M. I worked with all sorts of
stuff, things like writing or adapting hardware drivers and statistical
analysis programs, but also tasks like carrying printers to branch
locations and installing them.

During this summer job (1982), I found out that the hospital was going to
retire some old desktop minicomputers. I bought one, I think it was for
500 swedish crowns. The 'DP1100' were 8-bit machines manufactured by
Datapoint, and relabeled with the Nokia logo. (I have not seen a Nokia
computer before, or since!)
In my spare time I managed to turn this old wreck of a machine into a
digital sequencer. I basically built a (discrete) DA converter and some
interface logic into a box with a gate and a CV output to feed into an
analog synthesizer. Coding the sequencing application for this beast is
what really taught me how to program, I think  the processor was
extremely crude by today's standards (eight 8 bit registers, two of
which doubled as a pointer), which forced me to really think in new
ways. I had to write just about everything from scratch. The
machine had one great hardware feature: a very accurate 1 msec hardware
interrupt, quite useful for a sequencing program. There was only 4
kbytes of memory available for program and data, but I still managed to
implement a home-brewn symbolic music description language, with lots of
memory to spare for sequences. The 'language' had support for labels,
jumps and subroutines, arbitrary tempos and tempo changes, arbitrary
tuplets (how else could I enter and listen to Zappa compositions?),
loops, variables, etc. It was quite a sight.

Anyway, when I returned to school we had to take some assembly classes.
The processor of choice back then was the Intel 8080. This was pretty
easy for me, as I already knew Z80 assembly, and the very neanderthal
Datapoint assembly*, like my
own pocket. Am I showing my age?

After I left school I got offered a job at the data processing
department of the hospital, which I took. I worked there for about half
a year. Then I got a call from a friend of mine called Yngwie
Malmsteen, offering to go to California and join a rock band. Eventually
I quit my job at the hospital, put by plans to attend Lund university on
hold (they've been on hold
33
years now!), and went, and really stayed
out of touch with the world of computing for quite a while. Lots of
playing, drinking, recording, and having fun in the sun, and no coding
whatsoever. And these were years when lots of things were happening in
the world of computing.

I got a little more involved with computing again in 1989, when (by
musical necessity) I bought an Atari ST (to run the then-new MIDI
sequencing program Cubase). Due to this machine, I did manage to learn
68000 assembly, which I rather enjoy compared to the Intel architecture,
and later C. In addition to running Cubase, the ST was quite a bit of a
hacker's machine, with things like gcc, and a freeware command line
shell called "gulam" which I used a lot  it essentially was a cheap
emulation of tcsh, and the experience would come in handy later. There
was also an Atari version of MicroEMACS  a program I still use, on
both the PC and on panix' Suns.

I also got a modem, and started exploring the online world. I got my
first "real" unix shell/internet account in 1994, here at panix. I
never upgraded the account so as to get slip/ppp access. After the Atari
machines (both me and my brother got one so we could both run Cubase),
we went the PC route to be able to edit audio files, do word processing,
send faxes, etc  apps that were never to be written for the Atari
because nobody was developing for it anymore. This was right when we
started Heptagon Records. So we got a cheap 486DX2-66 and had the
expected horror experience  software/hardware conflicts, bugs,
whatnot. But eventually we got it working quite OK.

I still have my Atari machine. I have a sneaking suspicion that the
overall stability and timing in Cubase is superior to the timing of
Cubase under Windows. But I don't use the Atari anymore, because it
takes too much space  I run Cubase on a PC laptop nowadays. The
timing is pretty OK.

So I've definitely fallen out of touch a bit. I keep half an eye open
to new developments, I do have a Linux partition set up for the
occasional foray into the world of academic electronic music  a lot of
wonderful software just won't compile under Win32.
I have grown to like perl quite a lot, and this of course comes in handy
when it comes to CGI programming. Although I see a lot of OOP crap
seeping in. I think I liked perl4 best, when "strict" was not part of
the vocabulary (was it?) But maybe that's because I'm a sloppy bastard.
I'm not sure I'll adapt to OOP and perl. I've dipped my toes (I have
ActiveState perl5 installed) and I sort of like what I saw, but for the
most part I just use perl to crunch the old text file, and of course for
the server-side-parsing shit that's
hidden behind this site. Perl4 was pretty cool, and it's like the
anoraks have grabbed hold of things now and are ruining everything. I
mean, do I need to be told that $* is deprecated!? What happened to
"more than one way to do something"?

I have Microsoft VC++ 4.0 installed.. I don't think I ever wrote
anything in C++, or anything that uses the GUI for that matter. Only
console-mode programs in C. I have a slight dislike for C++ that I can't
quite pinpoint.. showing my age again perhaps.

As far as operating systems, hey, I don't like Windows that much but
I'm forced to deal with it because of the word processing apps,
sequencing apps, etc. I like Macs even less, I mean it's a nice OS but I
always hated the price, and the "we know better than you what you want
to do" attitude. And of course now people stop developing for the Mac,
just like with the Atari. If forced to pick an OS I'd say I like unix
the best. But there are not so many applications available even now..
especially, there's no Cubase, which I've been using for many years
now. So for now I'm stuck.. 95% of the time I run Windows 98 at home...
sigh. I guess you could compare the OS:es to political systems: Windows
is fascist, MacOS is stalinist, and unix is somewhere between zen,
anarchism and nihilism. Linux flavor unix maybe maps to the wild-eyed
libertarian crowd. So why use the fascistoid Windows OS at all? "Hey, at
least there's law and order, nice motorways, and the trains run on
time..."