HN user

brettmjohnson

45 karma
Posts0
Comments16
View on HN
No posts found.

In 1984 I was working for a small company that made Z80-based desktop computers running CP/M. All of the software was written in Z80 assembly language. MS-DOS was gaining traction, so we built a machine that contained both a Z80 and an 8088. It could run CP/M or MS-DOS.

However converting a bunch of Z80 assembler to x86 assembler for all our system utilities etc was a daunting task. There were tools available that would translate the code, but the quality was poor and the resulting output was not really readable [maintainable]. I expressed my annoyance in a planning meeting, saying "We should have written some of this in a high level language." One of the other guys on the team had done a small amount of C programming at university and was aware of its portability advantages. He suggested I look into it.

Although I had used several high level languages in the past (Basic, Fortran, Pascal), I was completely unfamiliar with C. So I bought a early edition of K&R. I started reading it from the start; got about 4 chapters in and thought, "This looks easy enough." So I sat down and wrote a rudimentary VT100 terminal emulator (something I knew a great deal about at the time). I tried to compile it: a dozen errors on the first line, a dozen errors on the second line, etc. I thought, "Hmmm, maybe not so easy after all."

The one guy I knew who had done any C programming at all, had done so little as to be useless as a source of knowledge, and we didn't really have a great deal of C source code available to us at the time. So I sat down with K&R and started doing the examples 1 at a time. Hello World going forward.

I picked it up pretty quickly, and within months our source was about 80% C and 20% assembler. Although I wasn't a self-taught programmer, I was pretty much a self-taught C programmer. The scary thing was, I was then considered "the go-to guy" for C programming advice for the rest of the team. I probably ruined them for life.

As a developer and long time Mac user, I can only ask, "How is Adwords any different on PowerPC?"

[In other words, if your niche uses some obscure jargon or acronym, don't assume most people know what it means...]

Agreed. Using git or mercurial would get around this. I worked for nearly a decade on cross-platform code that followed a similar methodology.

Our rule was the code most compile w/o warnings on 3 dissimilar platforms before you could commit it. We were able to do this easily because we had network-mounted home directories, so when you logged into another machine, our development tree was automatically mounted. This made it easy to compile without checking in, then checking out.

It is realistic. I worked on a cross-platform product for nearly a decade that followed a methodology very similar to this. Our code worked on 16-bit, 32-bit, 64-bit, big-endian and little-endian systems. Following these rules did not slow down development noticeably. In fact it became second nature.

Hmmm, "heard/read" limits it a bit, as "self realization" is more memorable.

However, in the 7th grade (age 13-14), my math teacher explained to me that education was a "privilege, not a punishment". I don't remember how it changed my thought processes, but I remember the moment. Previously, I was what you might call a "slacker". After that, I was "nerd slacker" - at least I paid attention, even if I was still lazy.

A decade late, I graduated university with a degree in Mathematics and went into software engineering. Smart + lazy = good software.

Although not totally worthless, it is nearly so. It is ~350 slides, most with a single word. To find those commands you've never heard of, you have to wade through a deluge of meaningless, when out-of-context, crap. Most readers, like me, probably said "not worth the time" after about 20 slides.

What seems like a lifetime ago, I was taking graduate CS classes at my local University. I had been writing software professionally for more than 20 years, so I was atypical in my class.

We were given some assignment to write a mail server in Java. At the time, I had never used Java, but had decades of experience with other dialects of C, so I taught myself Java over the weekend.

I put together the server, as well as several classes that could be shared by the client and presented it to the team on the following tuesday. When I showed them java code in emacs, with a Makefile to compile it all and jar it up, they were astonished. They didn't believe that:

1) I had learned the fundamentals of a language in a couple of days and was producing professional quality code in that language (actually professional quality design).

2) That I could do it outside of some java-specific IDE, using 20 year old tools.

I learned Java over a weekend; I wasn't about to tackle ANT at the same time.

After years of using ANT, I still think it is a pain in the ass.

Why does this surprise you? Since deficit spending is generally disallowed for state and local governments, nearly all sizable projects are funded through bonds. Bonds are basically loans with a promise to pay back in the future, generally with tax revenues. So you are paying off that 99 year bond to build a TB sanatorium built in the 1930s.

We are doing the same thing today. My grandchildren will be paying for the school repair and high-speed rail bonds that passed a couple of years ago here in California. Their grandchildren will be paying off the anti-global-warming school air conditioning and hyper mag-lev rail bonds that will be put forth 25 years from now.

The problem with these types of Ballot Initiatives:

  Do you want to eliminate the state income tax?
  X Yes
  _ No

  Do you like to drive on paved roads?
  X Yes
  _ No

  Do you want fire fighters to show up if your house is on fire?
  X Yes
  _ No
As a resident of California, I can assure you that budget related initiatives should never be put to a popular vote. The voters will nearly always agree that most altruistic government expenditures are good (like roads and firemen), yet they will nearly always vote against attempts to pay for them.

In California, it only takes 50.1% of the general populace to decide to spend a bunch of money, but it requires 66.7% of the state legislator to approve a budget to pay for it.

Back in 1995 or 1996, I spent a long week-end doing extreme pair programming with Philip Nelson. We set up in his dining room and took an image from his whiteboard to a 80+% done product in 3 or 4 days. No meetings, no phone calls. With very few interruptions, we were able to maintain focus for hours.

The most notable interruption: while stretching, Phil accidently hit the rocker switch on the power strip with his foot. I'll never forget the look on his face when everything shut down. We only lost a couple minutes worth of edits, 'tho. I am a habitual save guy in emacs, whenever I switch buffers or pause to think.

  #include <stdio.h>
 
  int main (int argc, char **argv) {
    puts("Screw you guys! I'm going home.");	
  }

I'm thinking they were glad to see you go because you took an hour to do 60 seconds worth of work.

I, too was annoyed at the obtuse presentation of message passing. I've been writing software for Mach/NeXTstep/MacOSX since 1988, and even before that, message queues between threads were in common use. I can't believe it took 5 or 6 slides to realize what they were presenting. I read the whole presentation and it definitely wasn't worth it.