Does this page look familiar?


[home] [environment] [contact] [for sale] [code] [cars] [links] (essays)


andrew warren's home page

essays
This is a collection of stuff I've written over the last couple of years; most of these essays were originally posted to various internet mailing lists. 

I haven't made any real effort to choose the best examples of my writing, or the most informative or useful...  These are just the ones that happened to catch my eye as I was browsing through my "Copies to Self" e-mail folder.

Some messages have been slightly edited.

Where I've included messages (or portions of messages) written by other people, their text appears in blue.
 

Automotive: 

Brent 
Brent - One Week Later 
Dynos, Torque, and Horsepower 
Daytime Running Lights 
Gun Control:  Canada vs. USA 
Auto-Racing Helmets 
Stainless-Steel Brake Lines
Speeding Tickets
Automotive Fire Extinguishers

Math/Programming: 

Two's Complement and Binary Math
"Say it in Code" vs. "Say it in Comments"

Other: 

India's Recent Nuclear Tests

 


Brent 

This is from the NSX mailing list... It's way too long and not very funny, but it's important because it sets up the next exchange.

From:        Brent
Subject:     PLEASE PLEASE PLEASE READ!!!!

Ok, man have I got a story for you, if you want some laughs, some crys and some all out BULLSH*T from Acura and my car, then read on...

Saturday, April 27th, I head down to CONCORD ACURA, to look at this Black/Black 92' NSX that is there on consignment from a lawyer, after looking at the car, anaylizing it hood to trunk, I decided, yes, I DO want to buy this car, so I put a $500 dollar deposit on the car to make sure I had first rights to it, they told me come back on Monday, by that time the "owner" should have all the consignment paperwork finished and the NSX will be ready for you to take home.

2 days of hell pass, and Monday rolls around.  I get a page on my pager at 10AM with the message "Brent, this is Don at Concord Acura, your NSX will be ready at 2PM for pickup, see you soon".  I smiled happily and continued to eat my breakfast.  Well 1PM rolls around and I call a friend up to drive me to CONCORD ACURA to pick up my new NSX.

Keep in mind that NO OFFICIAL deal had been done beforehand, but my deposit meant I had first dibs on the car and that we'd to "paperwork" when I got there at 2PM Monday.

I pull into CONCORD ACURA at 2:13PM Monday afternoon, to find my future 92' NSX not on the showroom.  I quickly asked where it was, and found out it was in the back being washed, I walked back there to check it out and saw it sitting there, all pretty with soap suds all over it.  I noticed condensation in the left taillight, I quickly grabbed the manager, and made him aware of the condensation.  A NSX tech came out, ripped the whole trunk liner out of the car and noticed a very very minor crack in the lens from the inside, that was leaking water into it.  They "patched" it and ordered a NEW taillight lens UNDER WARRANTY! *note, warranty expired 1 year ago*.

Well, it's now 3:30pm, the car STILL is not ready to leave and the OWNER still has NOT signed the car off to be sold, the car had NOT been smogged, and they were still doing the "saftey inspection".  The General Manager continued to call the owner to get him to take care of the issue.  Needless to say I was getting agitated.  To make a long story short, 6:30pm rolls around and the car STILL hasn't been solved, granted it's ready to drive home, but the paperwork from the owner still hasn't been settled.  I finally said "fu*k" it and left.  Not more than 10 minutes after I leave I get another page... "Brent, the deal has been done, come back and pick up your car.".  My friend turns the car around and we head back to CONCORD ACURA.  We pull in, I shake the guys hand and get the "paperwork" started.  20 minutes later, its done I give the man $2000 in cash *all 50's* and grab my keys, and begin to head out the door.

 NOW NOTE: I already had my credit union APPROVE the loan for my car, so I had 5 days to bring them a check, or they were going to finance me with a 20% interest rate.  I agreed, and said I'd have the check to them no later than Saturday, simply because I have to work and it's hard to get to Concord from Los Gatos, it was noted ON THE TEMPORARY contract that I had till May 3rd to get them the check.

I drive the car to my moms, getting tired on my way home I decided to stay there for the night, and head to the credit union in the morning.

April 28th, Tuesday:

I wake up at the crack of dawn to run outside and stare at my baby parked in my parents driveway.  Shiny as hell, sun gleaming off the hood.  6AM I couldn't sleep, what do you expect I waited 3 years for the damn thing and it was FINALLY mine!   WAIT THERES MORE! This is where it gets good... read on...

8AM, I head to my credit union to pick up the check for my car, I arrive go inside and take care of it.  9:30AM rolls around, the paperwork/check are in my hand and Im off to work for the day.  1:30PM in the afternoon my mother pages me, I ignore the page and continue on with my day of work. 2PM rolls around, and I have to go to my "old" job to pick up my final paycheck and drop off my pager *it belonged to them*.  I drop off my pager, pick up my check and head back to work at 3PM.  5:30pm creeps up on me and I remember out of no where that I had forgot to call my mom, so I grab the phone and call her.  She answers the phone "Brent!  Im so glad you called you would not believe how many times CONCORD ACURA has called me, they are FREAKING out, and are demanding a check from you today!"  I replied "What the hell are you talking about?  The checks in my glovebox mom, Ill take it there as soon as I can, Im at work."  She then says "Just call them, they are upset with you.".  I promptly hung up the phone and dialed CONCORD ACURA.

I get the nice receptionist, and request to speak with Lloyd.  Lloyd comes on the phone, and I greet him with "What the hell is this I hear your calling my mom about MY car, asking about the check that I need to bring to you".  Lloyd replied "We called your credit union, to make sure you had the funds for this car, we know that you picked it up and are waiting for you to bring it in." I then said "What difference does it make, Ive got the damned check, you had no right to call my mother, OR my credit union, but you know what Lloyd, since your open for another 2 hours, Im going to drive this god damned check out to you right now, will that make you happy??"  He replied "Your a prince, thank you so much.".

1 hour later, I pull into CONCORD ACURA, to find that ALL of the managers, and the sales guy that I dealt with on my whole care deal "left" for the day, about 5 minutes before I arrived, *How nice, they got out before I got there*.  I feel bad for the poor GM who got an ear full from me.  I came in, litterally THREW the general managers doors open, and chucked the check onto the desk, and said "Here's your $45,000 dollar check, give me a receipt right now, so I can leave." He jumped up, saying he was sorry and what not, and he'd be right back with my receipt.  He came back about a minute later, with a receipt in his hand and again he said he was sorry about what had happened.  I replied "I don't give a shit how sorry you are, what you did by calling my house 4 times *which they did, I checked my messages*, and calling my MOTHER who had nothing to do with my car purchase, and again CALLING MY DAMNED CREDIT union to see if I had picked up the check, and then calling my WORK OFFICE to get a hold of me, was 100% unacceptable.  My contract said I had 5 days to bring you this check, it has not been 24 hours and you guys are breating down my neck.", I continued on with... "Now I understand that it's not every day you see a 19 year old guy buying an NSX, but you should have known by my credit, by my job, and by meeting and talking to me that I meant business when I bought this car, and that for all means I would not have dicked you over.  If I were going to dick you over for a car, it wouldn't be a used NSX, it woulda been a god damned NEW one, you have pissed me off beyond belief, tell Lloyd that Honda of America WILL be hearing about this WHOLE deal, and that my taillight, titanium key, and tire certificates had better be ready by Saturday or the shits gonna hit the fan." I turned away, heading for the door, when the GM on duty came up to ask me if there was ANYTHING he could do to make up for it, I replied "Im affraid not, this whole deal from the start was nothing but trouble, you should have had the paperwork from the owner DONE before you even set the car on the showroom to be sold, that's your fault.  I let it slide yesterday, but this has pushed me over the edge." I pushed the door open to the outside, got in my car, and began to back up.  He AGAIN asked me if there was ANYTHING he could do, I shook my head, and told him it was too late.

I backed up, pulled out of the driveway and drove home very very upset.

I want to know guys, what do you think?  Do you think I over reacted? Do you think that they didn't service me well enough?  What do you think I should do? I want to write a letter to Honda/Acura, I think they were jerking me around all day Monday to begin with, I don't think they thought I was serious. I really could use your opinions, I think Honda/Acura should hear about this.

 OH YAH!  One other thing, the GM after seeing what I did for a living *Im a PC tech*, asked me if I knew anything about Windows 95, I told him yes, and what not, next thing I know I was in his office fixing his stupid laptop computer, 5 minutes and I had all his problems fixed.  This was saturday, you would think that after doing that, that he would have treated me better, I mean com'n I fixed the damn guys computer too.

Anyways tell me what you think guys... private email or public to the whole group is fine, I just need to know what I should do.

-Brent

Brent:

Ok, you asked for it.

Let's see... Your message describes:
An NSX technician going to great lengths to fix a tiny crack in your taillight (for free),

A General Manager who's continuously calling the previous owner to get your paperwork done,

A nice receptionist,

A guy named Lloyd who called you and your credit union to verify that your financing was taken care of, and who later called you a prince,

A General Manager who apologized profusely to you, rushed around the office to get you a receipt, and twice offered to do ANYTHING [your emphasis] to make you happy, and...

A 19-year old kid acting like a complete dick.

Uhh... That last one would be you.

As I see it, you have two options:
1.  Follow through on your threat and TELL Honda of America that their dealer in Concord calls more than once when initial telephone calls go unreturned.  You can probably get the previous owner to sign an affadavit to this effect, since the dealer called HIM repeatedly, too.

(Of course, the dealer's persistence didn't bother you THEN, did it?  Hmm...)

I'd REALLY like to see you manage to make this look like an unpardonable sin, worthy of the excessively bad manners you displayed.  Send me a copy of the letter.

2.  Do the right thing.  Go back to the dealership (no, doing it on the phone is NOT good enough) and personally apologize to each person whom you treated badly.  If you did any yelling in public (I couldn't tell from your message), go home and write a letter to the owner of the dealership, apologizing for making his employees look bad in front of their co-workers and other customers.

Here's a tip that'll probably help you in life:  The measure of a man's worth has little to do with whether he can make a salesman beg, a waitress cry, or small animals run in fear.

Grow up, Brent.

-Andy


Brent - One Week Later 

It's great how things work out sometimes...

 

From:        Brent
Subject:     SO SCREWED!!!

Well folks, I just breached my first week of NSX ownership and I got a FUCKING speeding ticket tonight.  *Sorry for the profanity, but after reading this you'll understand why*.  It's friday night, 2AM and Im heading home at a mere 70MPH in a 65.  I have a friend in the car with me, and he's like "How fast you taken this car"  I told him Id taken it to 140mph before, which I have.  So I decided what the hell there's NO CARS on the road at all for the next 3 miles that I can CLEARLY see so I jumped on the gas and speed up to about 110mph, as soon as my needle hit the 110 mark I let of the gas and let the air/gear slow me down without breaking.  Low and behold OUT OF NOWHERE lights appear behind me, wouldn't you know it, a god damned CHP.  I pull over, he immediatly asks for my license, and told me to turn the vehicle off. I explained to him that I had just bought the car, his reply was "You bought this car?  Or your parents bought it for you?"  I replied "I bought this car, with my own money."  He replied "Where do you work?" as if it really matters?  I told him where I worked, he proceeded to the back of the vehicle and came back about 15 minutes later with the ticket filled out.  He told me that I was written up for some BS penal code that I had exceeded the CA stat law of excessive speed in a freeway ie: 90+ in a 65.  I noticed he left the make/model of the car blank, I questioned it, he replied "Oh yes, what the hell kind of a car is this anyways?" his exact words!  I told him it was an Acura NSX, he said "Acura NSS?" I said no, NSX, he again said "NSS?" I then gave up and just pointed to the silver word next to the door handle, it was easier than explaining it to this cop.  He handed me the ticket and said "If I were you Id reconsider your driving habits" and turned around to walk away.  Didn't give me the have a nice evening or nothing, just turned and left.

Needless to say, Im sad, 3 years of hard work to get this "Dream" car of mine and to own it one week and get my first excessive speeding ticket.  I just want to know one thing.... WHERE IN THE HELL DID HE COME FROM!?  Its like he fell out of the sky, I mean I am a VERY VERY cautious driver, and I was looking CONSTANTLY behind me and around me, and saw nothing until BAM red/white lights were on.  I couldn't believe it, it was almost like he followed me with his lights off until he got close.  What a night... It's now just barely 3:44am and Im going to bed.  Take care guys...

-Brent

Brent:

This is hilarious.  Will you be posting messages like this EVERY week?  Maybe you can archive them on a web page or something.  I can see it now...

Week #1: Brent Buys a Car
.... so I walk in, and one of the salesmen makes eye contact.

"What are YOU looking at," I yell, "Haven't you ever seen a 19-year-old with his own money, you stupid son of a bitch?"

Week #2:  Brent Burns Rubber
.... the cop asks, "Do you have any idea how fast you were going, Son?"

Thinking quickly, I reply, "I bought it with my own money."

Week #3:  Brent Buys a Clutch
.... the Service Manager comes out, shaking his head.  "Yep, it's the clutch all right.  Looks heavily abused."

"This is the last straw!" I scream, stamping my little foot, "I did less than a hundred burnouts and the clutch is gone ALREADY? Your cars are junk!"

"It's going to cost $1,500 to replace."

"What!  $1,500!  It's because I'm 19, isn't it?  Answer me, Buttwipe!"

He starts to blubber something like, "No, sir.  The usual price is $2,000, but we gave you a discount because you're a good customer," but before he can finish, I knee him in the groin, shove him out of the way, kick open the door to the General Manager's office, and tell him I'm gonna execute every motherfucking last one of his employees.

Do you guys think I overreacted?  Please, please, please let me know....

Week #4:  Brent Bags a Babe
.... so one of those dumb cops finally arrives at the scene of the accident and asks what happened.  I just point to the dead girl on the hood of my car; it was easier than explaining it to this cop.

He wants details, so I tell him, "Ok, look... We were driving through a school zone, just speeding a LITTLE -- maybe 60 in a 25 -- and my friend says, 'Bet you can't drive a mile with your eyes closed.'

"Now, I know from experience that I can drive ALL DAY with my eyes closed, so I say, 'You're on!' and he blindfolds me.

"I've gone about half a mile, and I'm thinking, 'Yeah... NOW my friend will know how truly cool I am,' when, all of a sudden, BAM!  This girl splatters herself all over the front of my car.

"Yeah, you heard me right... MY car.  Bought it with my own money.  I'm 19, you know.

"Best I can figure, Officer,  is that she must have dropped out of the sky.  That's the only way to explain it... I am a VERY VERY cautious driver."

Etc...

Ain't karma wonderful?

-Andy


Dynos, Torque, and Horsepower "Dyno" is short for "dynamometer"; it's a machine that measures the  torque of an engine.

There are a couple of ways to build a dyno... Some keep the engine running at a constant speed and put a gradually-increasing load on it; others put a constant load on the engine and see how rapidly it can accelerate under that load.

There are dynos that measure the torque right at the flywheel ("engine dynos") and dynos that measure the torque at the rear wheels ("chassis dynos").  Chassis dynos are more convenient for those of us whose engines are already in our cars, but since their measurements are affected by losses through the drivetrain (which are usually only estimated), their absolute accuracy is lower than that of engine dynos.

You'll notice that I've talked about measuring TORQUE, not horsepower... That's because dynamometers can't directly measure horsepower; horsepower is CALCULATED from the measured torque. 

Here's how it all works:

    Torque is the product of a force and its moment arm.  That is,
     
      Torque = FR, where F is the force in pounds and R is the length of the moment arm in feet.
    Work is, for our purposes, the product of a force and the magnitude of its displacement.  That is,
     
      Work = FS, where F is the force in pounds and S is the  displacement in feet.
    Power is the rate at which work is performed:
     
      Power = Work/Time.  We'll measure time in minutes.
As I mentioned, dynamometers only measure torque, in foot-pounds. To calculate horsepower, we have to combine that torque measurement with a time measurement.  Here's how:

A long time ago, James Watt performed some experiments and determined that a horse could lift 550 pounds at a rate of 1 foot per second.  This unit of power, 550 foot-pounds per second, became known as the "Horsepower".

Since I already said that we'd be dealing with time in MINUTES, not seconds, we can multiply by 60 seconds/minute to get:

    1 Horsepower = 33000 foot-pounds/minute,
which implies that a horse can lift 33000 pounds a distance of one foot in a minute, or launch a one-pound weight to the dizzying height of 33000 feet in the same time... No mean feat.

But I digress.

To calculate an engine's horsepower at some given speed, you do the following:

    Rev the engine to the desired speed.

    Measure the torque at that speed.

    Multiply the torque by 2 * PI * the engine speed in revolutions per minute.  This gives you:
     

      X foot-pounds * 2 * PI * REVOLUTIONS
      ------------------------------------
                     MINUTE
           
    where "X" is the measured torque. 
If you look closely, you'll see that this is a FORCE (in pounds) times a DISTANCE ("one foot * 2 * PI * revolutions" is the distance the tip of our one-foot moment arm travels, in feet) divided by TIME (in minutes).

From the definitions I gave earlier, FORCE times DISTANCE divided by TIME equals POWER, so the above equation gives us power   (expressed in foot-pounds per minute).

To convert from foot-pounds per minute to horsepower (one horsepower = 33000 foot-pounds per minute, remember), we simply divide by 33000.

So...
 

                 Torque * 2 * PI * RPM
    Horsepower = ---------------------
                         33000
     

                   Torque * RPM
               = ----------------
                 33000 / (2 * PI)
     

                 Torque * RPM
               = ------------
                     5252

which, incidentally, implies that every engine's torque and horsepower curves always cross at 5,252 RPM.

-Andy


Daytime Running Lights 

Canadians:  This doesn't apply to you, since your government requires the stupid things.

This piece provoked a rather heated debate between Americans and Canadians... The discussion veered rather quickly into the more-general subject of personal liberty and the legislative restriction thereof, which -- of course -- meant that we ended up talking about gun control.

See the next essay.
 

While it's appropriate for funeral processions, schoolbus drivers, motorcyclists, and mommies in minivans to drive in daylight with their headlights on, DRLs make all other drivers look meek and terrified... As though they're the sort of people who wouldn't venture out into the world without wearing a bright safety-orange nylon vest.

I turn on my headlights (or driving lights, depending on what car I'm driving) when I'm driving on very twisty rural roads.  I also tap the horn before exiting a narrow alley and crossing a sidewalk.

Unless it were stupidly mandated by U.S. law, however, I wouldn't be caught dead driving on open roads in sunny weather with my headlights on, just as I don't really feel the need to warn other motorists of my presence by sounding the horn continuously from the moment I leave my driveway until I reach my destination.

Just my opinion; I could be wrong.

-Andy


Gun Control:  Canada vs. USA 

The gun-control discussion culminated with this message... I kinda like the way we came full circle.

The blue text, of course, was written by a Canadian.
 

[There is a] basic difference in belief [between the USA and Canada, and] I would not want to be a citizen of your country.

Of course you wouldn't... As a Canadian citizen, you enjoy the protection of the United States against foreign aggression (be it military or economic), but you neither have to pay for that protection nor deal with the difficult problems associated with ensuring it.

Hell, _I_ wouldn't mind being a Canadian citizen, except that I don't think I could handle the weather, the multicolored money, the way you people speak, or the high price of cigarettes.

Do you think that in this day in age when the weaponry available to the government by virtue of its armoury (ie tanks, planes etc etc) is vastly superior to anything the citizenry could even begin to muster, that the right to bear arms as a means of deterring a bad government is valid?

You're right; the argument for private gun-ownership as a means of discouraging government tyranny is a little outdated... But we NEED guns, so we can shoot out those damn daytime running lights.

-Andy


Two's Complement and Binary Math 

Everything you always wanted to know about the subject, painstakingly explained in excruciating detail.

What is the difference between 2s complement, logical complement and complement (NOT) and any others?

Let's do the easy one first.

LOGICAL COMPLEMENT:

Glossary note:  In this message, "==" should be read as "is equal to", and "!=" should be read as "is not equal to".

Ok...

Logical expressions ("p == q", "1 == 0", "x > 3", etc.) are either TRUE or FALSE. 

The logical complement (NOT) of an expression simply inverts its true/false state.  For example:

    "1 == 0" is FALSE.
    "NOT (1 == 0)" is TRUE.
Often, logical expressions of the form "x != 0" are expressed in a shorthand form:  They're simply written "x"; the "!= 0" is implied.  For example:
    "123" is TRUE.
    "NOT (123)" is FALSE.

    "0" is FALSE.
    "NOT (0)" is TRUE.

    If x != 0, "x" is TRUE and NOT (x) is FALSE.

Ok... Now the harder ones: "One's Complement" and "Two's Complement".

Before you can understand much about this, you need to have some idea of how things work inside the PIC, so we'll digress a bit into the realm of microprocessor ALU design.

BUILDING AN ADDER:

Let's say that you're designing a microprocessor.  Your employer, like most VLSI semiconductor vendors, values efficient design over all else... All of your circuitry must be built with the fewest possible number of logic gates.

You're assigned the task of designing the ALU (Arithmetic Logic Unit) and today you're designing the portion of the circuit that adds two binary numbers together.  For simplicity, let's say that each input is only one bit wide, and that you want only a single-bit output (we'll evolve it to a full 8-bit adder with carry-in and carry-out shortly).

You have a whole handful of logic gates (we'll cheat a bit and say that you have AND, XOR, OR, and NOT gates, even though XOR and OR can be built from AND and NOT)... How do you build this single-bit adder with the smallest number of parts?

The first thing to do is draw the Truth Tables for the gates you  have.  Here's the one for NOT:

     A | NOT (A)
    ___|________
     0 |   1
     1 |   0
What this truth table says is that if you input a "0" to a NOT gate, it outputs a "1", and if you input a "1", it outputs a "0".

The truth table for AND gates is similarly constructed, but the "AND" function takes TWO inputs (which we'll call "A' and "B"), so there are four possible input combinations rather than two:

     A | B | A AND B
    ___|___|_________
     0 | 0 |    0
     0 | 1 |    0
     1 | 0 |    0
     1 | 1 |    1
The AND function works the way you'd expect it to:  If A and B are BOTH true (that is, if they're both equal to 1), the result is also true (1); otherwise, the result is false (0).

The OR and XOR gates each take two inputs, as well:

     A | B | A OR B         A | B | A XOR B
    ___|___|________        __|___|_________
     0 | 0 |   0            0 | 0 |    0
     0 | 1 |   1            0 | 1 |    1
     1 | 0 |   1            1 | 0 |    1
     1 | 1 |   1            1 | 1 |    0
"OR" is pretty straightforward:  If either A or B (or both) is true, the output is true.

"XOR" ("exclusive-OR") is only slightly more complicated:  If A or B (but not both) is true, the output is true.

Where were we?  Oh, yeah... We were building a single-bit, no-carry adder.

Ok.  Draw the truth table for the "add two single-bit numbers A and B and output a single-bit result" operation:

     A | B | A + B
    ___|___|_______
     0 | 0 |   0
     0 | 1 |   1
     1 | 0 |   1
     1 | 1 |   0
Check it out... THIS truth table looks just like the "XOR" truth  table.

To perform this simple addition, therefore, you just need one XOR gate; your two single-bit inputs go in, and the result comes out.   We'll write this as:

    Sum = A XOR B.
Now, look at the addition table again.  The first three results seem ok, but everyone knows that 1 + 1 does NOT equal 0; it equals 2.

"2" is represented in binary by "10", a two-digit number.  Just as in decimal addition when we're asked to add 5 + 5, we need to output "0" and "carry the one".

Since we were specifically told to build an adder with just a single-bit result, we can be forgiven for only outputting the rightmost bit, but in the real world, we're going to need some way of carrying a "1" bit out of our sum whenever the result is too large to fit in 1 bit.

So... Draw another, expanded, truth table, showing both the single-bit result and the carry out (which we'll call Cout) of the sum:

     A | B | A + B | Cout
    ___|___|_______|_____
     0 | 0 |   0   |  0
     0 | 1 |   1   |  0
     1 | 0 |   1   |  0
     1 | 1 |   0   |  1
At this point, if you've been paying attention, you should immediately notice that the "Cout" column looks exactly like the "AND" truth table above.  Go back and check it... See? 0, 0, 0, 1.

What does this mean?  It's simple:  To add two one-bit numbers and  get a single-bit result and a carry, you need to feed your two inputs into an XOR gate to get the sum, and simultaneously feed the two inputs into an AND gate to get the carry-out:

    Sum  = A XOR B. Cout = A AND B.
If we examine our output now that we've added the Carry-Out, we see that it's correct:
    0 + 0 = 0
    0 + 1 = 1
    1 + 0 = 1
    1 + 1 = 0, carry the 1.
This is all well and good for a single-bit adder, but we usually deal with numbers that are 8 bits wide.  Can we just string eight of these two-gate adders together and have each one operate on one pair of bits?

Well, yes, but we need to do something with that carry-out bit.   Specifically, we need to add each one-bit-adder stage's carry-out bit to the next stage's output.  While we're at it, we'll want to add a carry-IN bit to the first stage, to make it easy for the guy who's eventually going to buy our microprocessor to perform additions on numbers that are larger than 8 bits.

Of course, carrying a "1" into our addition will change our result,  and the state of our carry-out bit will now be dependent not only on the A and B inputs, but also on the carry-in bit, which was similarly dependent on the PREVIOUS stage's inputs and carry-in bit, which was dependent on the stage before IT, which was...

It's all starting to get complicated now, so let's break the problem into two smaller pieces:

    1) Properly handling the sum of A, B, and the carry-in bit, and

    2) Properly setting the carry-out bit.

Let's do the carry-in ("Cin") first.  Think about what we're trying to do: We're going to add A and B together, then add the result to Cin.

As we discovered earlier, addition (if you ignore the carry-out, which we're doing for now) is equivalent to XOR:  A + B = A XOR B.

It doesn't take much of a stretch to see that A + B + Cin, therefore, equals (A XOR B) XOR Cin.

We can test this with yet another truth table; this one has eight combinations of three inputs (Cin, A, and B), and shows the results  of three oerations on those inputs:

    Cin | A | B | A XOR B | (A XOR B) XOR Cin | A + B + Cin ____|___|___|_________|___________________|____________
     0  | 0 | 0 |    0    |         0         |     0
     0  | 0 | 1 |    1    |         1         |     1
     0  | 1 | 0 |    1    |         1         |     1
     0  | 1 | 1 |    0    |         0         |     0
     1  | 0 | 0 |    0    |         1         |     1
     1  | 0 | 1 |    1    |         0         |     0
     1  | 1 | 0 |    1    |         0         |     0
     1  | 1 | 1 |    0    |         1         |     1
Yep... Acording to the truth table, "(A XOR B) XOR Cin" produces  exactly the same results as "A + B + Cin".

Cool.

Now we deal with the carry-out.  This is going to take a little more thought.

Remember that, back in simpler times when we were just adding A and B without a carry-in, the carry-out was just equal to A AND B.  Let's start by assuming that our final carry-out bit will be equal to that simple carry-out, then figure out what circumstances can change it.

Ok... Truth-table time again.  In this case, we're going to draw a  table that tells us whether we need to change the "simple carry-out" (A AND B) to get our final carry-out.

This truth table shows two inputs ("A + B" and "Cin") and one output (whether or not to change the simple carry-out bit):

    A + B | Cin | Change?
    ______|_____|________
      0   |  0  |   No
      0   |  1  |   No
      1   |  0  |   No
      1   |  1  |   Yes
You might want to take some time working out simple examples to verify that the above truth-table is actually correct.

If you replace the "No" and "Yes" entries with "0" and "1", this  table looks just like the "AND" truth-table, so we can start to  express our carry-out logic as:

    Step #1: Calculate a simple carry-out by ANDing the two inputs.

    Step #2: AND A + B with the carry-in.  If the result is 1, invert the simple carry-out bit; otherwise, leave it unchanged.

Hang on... We're almost done; all we need to do now is figure out how to express Step #2 in terms of logic gates.

If you go way back and look at the "XOR" truth table, you'll see that it seems to do just what we want:  If input A is 1, the output is the inverse of input B; if input A is 0, the output is equal to B.

If we make the XOR gate's "A" input equal to "(A + B) AND Cin" (which we know is equal to "(A XOR B) AND Cin"), and we make the XOR gate's "B" input equal to the simple carry-out ("A AND B"), we can put this all together and get:

    Carry-out ("Cout") = [(A XOR B) AND Cin] XOR [A AND B].
So... The total description of our "single-bit adder with carry-in and carry-out" circuit is:
    Inputs:
      A, B, Cin.
    Outputs:
      Sum  = (A XOR B) XOR Cin.
      Cout = [(A XOR B) AND Cin] XOR [A AND B].
The "A XOR B" term that appears in both equations is just a single XOR gate whose output is split, so this circuit requires only two AND gates and three XOR gates.

You can cascade as many of these 5-gate single-bit adder stages as you want; building a complete 8-bit adder requires only 40 gates (or 41 if you want to provide an "overflow" flag).

Whew.

SUBTRACTION: ADDITION'S EVIL TWIN

We've already built an 8-bit adder; it takes two 8-bit numbers and a carry-in bit, adds them all together, and produces an 8-bit result plus a carry-out.

Unfortunately, this won't fully satisfy the people who'll be buying our microprocessor; the ungrateful buggers will want SUBTRACTION, too.

Our first thought is that we'll just build a separate binary "subtractor".  After all, addition didn't require too many gates; maybe subtraction won't take many, either.

If we build that subtractor, however, we introduce a new problem:  Subtracting a large number from a smaller one gives a NEGATIVE result.  So far, we've been treating 8-bit numbers as positive
values in the range [0-255]; building a subtractor will require us to decide on some way to represent negative numbers, as well.

A moment's thought shows how we can turn this requirement to our advantage:  If we can come up with a way to represent negative  numbers, we can perform subtraction by simply negating the subtrahend and ADDING it to the minuend.  That is:

    "A - B" is equal to "A + (-B)".
This is an Exceedingly Good Thing; it means that we can use our existing 8-bit-adder circuit to perform both addition AND subtraction.

All we have to do is find a way to represent negative numbers...

SIGN/MAGNITUDE

Obviously, we won't be able to represent the full range of integers  from -255 to 255 in only 8 bits; 8 bits is sufficient for only 256 discrete values.

We can live with this, though... So we'll first try using only the low (rightmost) 7 bits of each number to represent the magnitude, and the leftmost bit of each number (the "Most Significant Bit", or "MSB") to represent the number's sign (0 = positive, 1 = negative).

This means that an 8-bit number will be able to represent values in the range [-127 - +127]:

    Decimal:   Sign/Magnitude:
    --------   ---------------
        1    = 00000001
       -1    = 10000001
        2    = 00000010
       -2    = 10000010
      127    = 01111111
     -127    = 11111111
        0    = 00000000
       -0    = 10000000
Uh-oh.  "Negative zero"?  What's THAT?

Let's gloss over it for now and see whether our math works:
 

    Decimal:              Sign/Magnitude:
    --------              ---------------

    3 - 1 = 3 + (-1)       00000011
          = 2             +10000001
                          ---------
                          10000100 (-4) NOT CORRECT!

    1 - 3 = 1 + (-3)       00000001
          = -2            +10000011
                          _________
                           10000100 (-4) NOT CORRECT!

    -3 - 1 = -3 + (-1)     10000011
           = -4           +10000001
                          ---------
                    Cout + 00000100  (4) NOT CORRECT!
                                        (but sorta close)

    -3 - (-1) = -3 + 1     10000011
              = -2        +00000001
                          ---------
                           10000100 (-4) NOT CORRECT!

That's enough... I think we can give up on the "sign/magnitude" 
representation now.

ONE'S COMPLEMENT

Ok... Let's try something else.  Rather than simply setting the MSB to 1 to represent negative numbers, let's try inverting the entire byte.  This is the "one's complement" representation of signed binary values.

Like the "sign/magnitude" representation, "one's-complement" will allow an 8-bit number to represent values in the range [-127 - +127}.

It looks like this:

    Decimal:   1's complement:
    --------   --------------
        1    = 00000001
       -1    = 11111110
        2    = 00000010
       -2    = 11111101
      127    = 01111111
     -127    = 10000000
        0    = 00000000
       -0    = 11111111
We still have the same 0/-0 problem, but again, we can gloss over it temporarily.  Let's try some math:
    Decimal:              One's complement:
    --------              -----------------

    3 - 1 = 3 + (-1)       00000011
          = 2             +11111110
                          ---------
                    Cout + 00000001 (1) NOT CORRECT!

    1 - 3 = 1 + (-3)       00000001
          = -2            +11111100
                          _________
                          11111101 (-2) CORRECT!

    -3 - 1 = -3 + (-1)     11111100
           = -4           +11111110
                          ---------
                    Cout + 11111010 (-5) NOT CORRECT!

    -3 - (-1) = -3 + 1     11111100
              = -2        +00000001
                          ---------
                          11111101 (-2) CORRECT!

This is more promising than the "sign/magnitude" representation we first tried... If you look closely, you'll see that the results that DON'T set the Cout bit are correct, while the results that DO set the Cout bit are only off by one.

Maybe we can add a little circuitry to add the Cout bit to the sum?

Well, we COULD... But we'd still be stuck with that annoying "negative zero".  Let's see if we can get rid of that thing.

TWO'S COMPLEMENT

To generate the 2's-complement of a number, you first find the 1's-complement (by inverting the entire byte), then you add 1.

Zero is still represented by "00000000", but something interesting happens when you calculate its two's complement:  Inverting the byte gives "11111111", and adding 1 to that gives "00000000" again.

Voila!  No "negative zero"!

Now, since an 8-bit number can represent 256 unique values and "zero" takes only one of those values, this means that we can represent numbers in the range [-128 - +127] in our two's-complement number system:

    Decimal:   2's complement:
    --------   --------------
        1    = 00000001
       -1    = 11111111
        2    = 00000010
       -2    = 11111110
      127    = 01111111
     -127    = 10000001
        0    = 00000000
       -0    = 00000000 (the same as 0)
     -128    = 10000000
Just for kicks, let's try some math:
    Decimal:              Two's complement:
    --------              -----------------

    3 - 1 = 3 + (-1)       00000011
          = 2             +11111111
                          ---------
                    Cout + 00000010  (2) CORRECT!

    1 - 3 = 1 + (-3)       00000001
          = -2            +11111101
                          _________
                          11111110 (-2) CORRECT!

    -3 - 1 = -3 + (-1)     11111101
           = -4           +11111111
                          ---------
                    Cout + 11111100 (-4) CORRECT!

    -3 - (-1) = -3 + 1     11111101
              = -2        +00000001
                          ---------
                          11111110 (-2) CORRECT!

    3 - 3 = 3 + (-3)       00000011
          = 0             +11111101
                          ---------
                    Cout + 00000000  (0) CORRECT!

    -3 - 2 = -3 + (-2)     11111101
           = -5           +11111110
                          _________
                    Cout + 11111011 (-5) CORRECT!

Wow.

It looks as though the two's complement representation is the way to go... There's only one representation for "zero", all the positive numbers look the way they used to, the math seems to work (if we ignore the carryout), and we even get an extra negative number (-128) to play with.

Unfortunately, this is all for naught if we can't build the  appropriate circuitry with only a small number of gates.

Let's see what it takes.

BULDING A CHEAP TWO'S-COMPLEMENTOR

Remember that the two's complement is obtained by inverting the original number and adding 1 to it.

The inversion part is easy; a NOT gate for each of the eight bits accomplishes it.

Adding 1, however, is more difficult.  As we saw earlier, addition requires 40 gates... We don't want to practically double our gate-count just to do this one simple operation.

So what can we do?

Well, let's see... We're trying to calculate A - B, and this is equivalent to A + (-B).  In our two's-complement notation, -B is  equal to (NOT B) + 1, so we need to calculate A + ((NOT B) + 1).

Since addition is associative, this is the same as (A + (NOT B)) + 1.

Hmm... What if we use our existing "A + B + Cin" 40-gate adder, but  we explicitly set the Cin bit to 1 and run the B input through an  inverter?  We'll end up calculating A + (NOT B) + 1, exactly what we want!

So...

By adding only eight NOT gates and requiring the user to set the carry-in before performing a subtraction (a la the 6502 and other microprocessors) or just setting the carry-in internally (a la the PIC), we've made our adder do double-duty as a subtractor.

Ok... At this point, I KNOW you're thinking, "So we saved a few gates... Big deal," but for an ALU designer, saving 30-odd gates is cause for a major celebration.

Sad but true.

Anyway...

MULTI-BYTE ARITHMETIC

Ok, so let's say that the guy who buys our microprocessor will want  to add numbers larger than 8 bits.  Specifically, let's say that he  wants to add two 16-bit numbers.  How does that work?

It's easy... He clears the carry-in, adds the two low-order (rightmost, or "least-significant") bytes, then adds the two high-order (leftmost, or "most-significant") bytes; any carry-out that's generated by the first addition will become the second addition's carry-in.

For example:

    Decimal:              Binary:
    ------------------    ----------------- 
    1000 + 1000 = 2000    00000011 11101000 (1000)
                         +00000011 11101000 (1000)
                          -----------------
                                 1 11010000 (adding the two low
                                             bytes gives 11010000,
                                             plus a "1" Cout)

                          00000111          (The low-byte's Cout is 
                                             used as the high-byte's
                                             Cin; adding it to the
                                             two high bytes gives
                                             00000111, with no Cout)
                          -----------------
                          00000111 11010000 (2000) CORRECT!

What about multi-byte SUBTRACTION?  Will the two's-complement  representation still work there?  What about that "set the Cin to 1" trick?  Will it affect the results?

Let's try it and see...

    Decimal:              Binary:
    ------------------    -----------------

    2000 - 1000           00000111 11010000 (2000)
    = 2000 + (-1000)     +11111100 00010111 (NOT 1000)
    = 2000+(NOT 1000)+1  +         00000001 (Cin = 1)
    = 1000               ------------------
                                 0 11101000 (adding the two low 
                                             bytes, plus the "1" 
                                             Cin, gives 11101000,
                                             with a "0" Cout)

                       1 00000111          (The low-byte's Cout (0) 
                                             is used as the high-
                                             byte's Cin; adding it to
                                             the two high bytes gives
                                             00000011, with Cout = 1)
                          -----------------
                   Cout + 00000011 11101000 (1000) CORRECT!

It works.

Note that we always ignore the final carry-out when we're performing two's-complement math.

OVERFLOW, UNDERFLOW, AND OTHER ESOTERICA

Ok... Two's complement DOES have some problems.  I've avoided them here so far, but you can get an idea by adding 64 to 65:

    Decimal:                Two's complement:
    ----------------------  -----------------

    64 + 65 = 129            01000000 (64)
                            +01000001 (65)
                            ---------
                             10000001 (-127) NOT CORRECT!

A similar thing happens when you subtract, say, 65 from -64:
    Decimal:                Two's complement:
    ----------------------  -----------------

    -64 - 65 = -64 + (-65)   11000000 (-64)
             = -129         +10111111 (-65)
                            _________
                      Cout + 01111111 (127) NOT CORRECT!

Damn... And just when things were going so well, too.

In both cases, the correct result is too large to fit in 8 bits, so our 8-bit result appears incorrect.

Fortunately, most microprocessors include an "overflow" bit that can alert you to this situation... It signals one of the following two conditions, either of which indicates that the result is too large to fit in eight bits:

    Overflow Condition #1:
    There was an internal carry generated between bit 6 (second from the left) and bit 7 (leftmost) of the result, but NO carry was generated out of bit 7 of the result.

    Overflow Condition #2:
    There was NO internal carry generated between bit 6 and bit 7 of the result, but there WAS a carry generated out of bit 7.

If neither of those conditions is true, the overfow flag is not set and the carry-out of the result may be safely ignored.  If one or the other is true, your software needs to recognize the overflow (or "underflow" if the too-large result is a negative number), and compensate somehow.

Note, by the way, that the overflow flag is simply an XOR of bit 6's Cout and bit 7's Cout... That's the extra gate that I mentioned earlier -- the one that turns our 40-gate adder into a 41-gate adder.

I'm tired now.  Hope this helped.

-Andy


Auto-Racing Helmets What is the difference, if any, between motorcycle helmets and car racing helmets?

You mean, aside from cost?

Motorcycle helmets carry Snell "Mxx" ratings, where "xx" is the year of the Snell Foundation specs to which they conform; auto racing helmets carry "SAxx" ratings ("SA" stands for "Special Applications").

The Snell specs are updated every 5 years, so the newest helmets carry "SA95" or "M95" ratings.

SA helmets must have a Nomex liner and are, therefore, more fire-resistant than M helmets.

In order to get the Snell rating, both types of helmets must pass a series of identical impact tests.  In addition, the SA helmets must pass a test designed to simulate impact with a rollbar.

Also, the "SA" standard allows a minimum eyeport size that's smaller than the minimum allowed by the "M" standard.

Some manufacturers include aerodynamic features on their SA helmets that wouldn't make sense to put on an M helmet, and many SA helmets are available with provisions for forced-air cooling or emergency air supplies that are inappropriate or unnecessary for M helmets.

Manufacturing costs being what they are, most manufacturers build their SA and M helmets identically (with the exception of the inner liner), so it's possible that a particular M helmet might meet the SA impact tests.  You can't RELY on this being true, however, and if your sanctioning body requires an SA helmet, you'll need to have one.

Where is a good place to buy a car helmet?

Pegasus Racing and Racer Wholesale are two mail-order companies that stock a large selection of helmets, but you really need to try a bunch of them on to find one that fits your particular head.  Here in Southern California, there are a whole BUNCH of race-supply shops, but since I don't know where you live, I can't recommend one in your area.

I can, however, give you some tips on choosing a helmet.

First, you don't need to spend more than three or four hundred dollars or so.  A lot of helmets are more expensive than that, but in general, their features are unnecessary.  For example, you don't need to buy the $850 Bell Feuling SS; it's expensive only because its aerodynamic design is specific to Indy-Car cockpits. Similarly, you don't need to buy a megabucks Stand 21 helmet; they're extraordinarily light, but you're not going to be pulling 3Gs in your car, so you don't need to spend those outrageous prices for every last ounce of weight savings. 

Light weight, within reason, IS sorta nice, though... So if you can afford it, pay a few extra dollars for a kevlar helmet rather than a fiberglass one.  My helmet's a kevlar Bell AFX-1 Pro; it cost about a hundred dollars more than a more-or-less equivalent fiberglass helmet.

Personally, I wouldn't even consider buying a helmet made by anyone other than Bell or Simpson.  I'm sure many people would disagree; this is just my personal opinion.

Ok... Properly sizing a helmet:

The salespeople at the shops should be able to give you some advice, but the important thing to remember is that there should be ABSOLUTELY NO WAY that you can remove a buckled helmet by reaching behind your head and pulling the thing forward.  If you can remove the helmet this way, it's too big and NOT SAFE.

POC members, of course, don't need to worry about buying helmets too big for their heads... It's a physical impossibility.

Anyway, when in doubt, go with the smaller helmet size.

Sizes vary from manufacturer to manufacturer (and model to model), so make sure that you find your size by trying on the specific model that you want.  After you put the helmet on, buckle it and make sure you can't pull it off your head.  Then grab it and rotate it left and right; if it rotates freely without deforming your face, it's too loose.

Next, let go of the helmet and just shake your head back and forth.  If, after a few shakes, the helmet doesn't return to its original position (that is, if you have to reach up and re-center it in order to see out the eyeport again), it's too loose.  You should also try nodding your head forward and back.

Finally, leave the helmet on (with the visor up, if you like) for about half an hour and see if it gives you a headache.  If it does, it may be too tight.

Also, if you wear glasses under your helmet, make sure that you can put them on through the visor... Some helmets (like my Bell AFX-1) have pretty small eyeports, so this can be difficult. You may want to check this even if you have perfect vision, in case  you ever want to wear sunglasses under the helmet.

One more thing... Once you find a helmet that you think you like, get in your car while wearing it and make sure that the eyeport's positioned/sized appropriately so that you can see your instruments.  You do NOT want to have to crane your neck downward to see your tach or your oil-pressure light.

More stuff:

1.  If you buy an extra visor (maybe a dark tinted one), spend an extra ten bucks and get the Bell pivot-screw hex wrench and "pivot kit" (two pivot screws, two washers, and a lock-down button)... The Bell wrench (actually just a little "key") won't let you accidentally strip out the threads, and you'll want the extra screws and washers in case you lose or break one changing visors.

2.  Helmet bags are nice, but a little expensive for what they are... See if the shop will throw one in with a helmet purchase.

3.  Even with built-in vents, etc., most helmets will fog up. I've always just used the Rain-X anti-fog products (or a little soapy water in a pinch), but a few months ago, I discovered something called the Fog City Fog Shield.  It's just a clear film that you stick on the inside of the visor, and it's absolute MAGIC... It keeps the visor fog-free, with no re-application or special maintenance required.

4.  Even though they're hot and a bit uncomfortable, think about buying a balaclava (those Nomex "head socks" or "hoods").  Aside from the extra fire-protection it gives you (about which you may or may not care), it'll keep the inside of your helmet from smelling like a locker-room, and from soaking up whatever greasy kid stuff you put in your hair. Depending upon the series in which you plan to be competing, you may be required to wear a hood anyway.

Who can do a good custom paint job for not too much money on a helmet?

Herm Johnson, at Just Herm Designs (715 835-6026) charges a flat $275 to do a helmet, no matter how complex the design is.

Troy Lee Designs' prices start at around $300 and go WAY up from there, but he also sells decal kits that you can install and clearcoat yourself.  Decal kits are around $30; you can reach Troy Lee at 909 371-5219.

Larry Ferguson, at The Art of Racing here in the San Diego area (619 744-8623), will do a basic design for around $300. 

You can also paint your helmet yourself; if you buy a decal kit from Troy Lee, you can paint one or two basic colors, then apply the decals, then clearcoat the thing and end up with a real nice-looking helmet for very little money. 

If you paint the helmet yourself, make sure that you do two things:

    1.  Before painting, clean the helmet with one of the commercial wax/grease removers (available at your local automotive-paint supply store), then sand the helmet's surface (and, of course, clean it again after sanding).

    2.  Use acrylic enamels, NOT lacquers; lacquers can damage the helmet shell. 

-Andy

Stainless-Steel Brake Lines There are three reasons to install stainless-steel brake lines on your street car:
    1.  They look racy.

    2.  They don't swell like rubber lines, so they can potentially firm up your brake pedal.

    3.  If you're doing a lot of off-road driving, the stainless-steel braid may protect your lines from being punctured by rocks or whatever.

Here's the thing, though:  Since stainless-steel lines don't bulge as they age, and since the inner Teflon lining is hidden behind the braid, there's no easy way to inspect the lines for warning signs of imminent failure.

This is no big deal on a race car, since the lines are  (or should be) replaced at least once a season.  On a street car, where most people are likely to let YEARS go by without even looking at their lines, it can be an  issue.

Many people, therefore, warn that you should use rubber lines instead of stainless steel... They'll be  happy to give you anecdotal evidence of steel lines simply bursting (or, more commonly, separating from their hose-ends) catastrophically and with no warning.

 I haven't seen any references to this sort of failure that mentioned whether the lines were:

    REAL Aeroquip or Earl's hose,
    attached properly to the CORRECT hose-ends, and
    installed properly on the car.
I define "correct hose-ends" as Earl's Speed-Seal (which used to be called Fluor-O-Seal) or Aeroquip Super Gem, and  "real hose" as Earl's Speed-Flex (which used to be called Fluor-O-Flex) or Aeroquip TFE Racing Hose (which used to be called Teflon Racing Hose).

Anyway, Speed-Seal hose-ends work just like Earl's Swivel- Seal ends; the hose-end can swivel after assembly.  The  nipple/cutter assembly on these ends (and on Aeroquip  Super Gem ends) was specifically developed to prevent  blowoff of the hose-end... I'm still waiting to hear from  anyone who has firsthand knowledge of one of these hose  assemblies coming apart, and until I hear from that  person, I run "real" stainless-steel lines on my car and  replace them regularly.

THIS IS IMPORTANT:  The lines that your performance-parts distributor will sell you are made with no-name hose from God-knows-where (probably Taiwan), and the hose-ends are just swaged-on fittings that are an invitation for  disaster.  I won't put these on my car, and I don't recommend that you put them on yours, either.

People keep asking me whether the above-stated caution applies to the new "DOT-approved" stainless-steel hoses... Here's what I have to say on THAT subject:

First, a quick explanation of what stainless-steel brake lines ARE:

    The brake lines we're talking about are the flexible ones that connect between the hard lines (i.e., the inflexible tubing) in the car and the brake calipers on the wheels.

    They've traditionally been made from rubber tubing, with steel or aluminum connectors crimped onto their ends. Nearly all passenger cars are shipped with rubber brake lines, and they hardly ever fail.

    "Stainless-steel" lines are made of Teflon tubing, not rubber.  Teflon has a number of advantages over rubber; the chief ones are that it doesn't expand under pressure and it doesn't deteriorate with age.  It also resists high temperatures and is chemically inert, so it's compatible with all brake fluids.

    However, Teflon is pretty fragile, so it has to be protected from physical damage (chafing, flying rocks, etc.).  Although some manufacturers armor their Teflon hoses with Kevlar, most protect the Teflon with an external sheath of braided stainless-steel wire... So that's why armored Teflon hose is usually called "stainless-steel hose".

    The ends of the hoses have to be securely attached to the brake calipers and the hard lines, so each hose is terminated by threaded hose-ends.

    Those hose-end fittings can be attached to the hoses a couple of ways.

    The cheap way is to crimp or swage them onto the hoses, like the fittings on rubber hoses.  The more-expensive way is to use a two-piece replaceable hose end that captures a portion of the hose between an inner nipple and a concentric outer socket.  These hose-ends (often referred to generically as "Aeroquip fittings" because they were invented by the Aeroquip Corporation) are used EVERYWHERE on aircraft and race cars.

Ok... So what's required for a stainless-steel brake line to be DOT-approved?

First, I should point out that there may be lines available that meet all the DOT specs, but are non-approved only because they haven't been submitted to the DOT for approval.

Manufacturers can't legally say that their lines are approved - - even if they KNOW that the lines meet all the DOT specifications -- without actually submittimg them to the DOT.

For that reason, stainless-steel brake lines can fall into three categories:

    "DOT approved" - These lines have been submitted to and approved by the US Department of Transportation.

    "non-approved" - These lines don't have a DOT approval, either because they don't meet the specs or simply because they haven't been submitted for testing.

    "non-conforming" - These lines are non-approved (and non- approvable) because they fail to meet the DOT specs.

Ok...

The safety standard that brake hoses must meet is called Federal Motor Vehicle Safety Standard 106; if you have a copy of the Code of Federal Regulations handy, it's in Title 49, Volume 5, Subpart B, Section 571.106.

The section that applies to hydraulic hoses is about six pages long, and it covers everything from labeling requirements to pressure and temperature testing.

One important thing to note -- this'll come up later when I explain why the "best" hose assemblies can't be DOT approved -- is that each of the requirements in the Standard carries the same weight; if a hose fails to meet ANY requirement, it won't be approved.

Hypothetically, therefore, a hose which met all the performance specs but was labeled in lowercase letters (the Standard requires block capitals) would fail to be approved.

Also, some of the features required by the Standard provide a certain amount of "idiot-proofing", but at the expense of absolute maximum strength or safety... It's the same sort of mandated mediocrity that forced Ferrari to replace the stock 5- point safety harnesses in US-spec F40s with those ridiculous motorized-mouse single shoulder belts.

Anyway...

Most of the "performance" specs in the Standard (i.e., burst strength, compatibility with brake fluids, tensile strength, expansion under pressure, etc.) are easily met by all halfway- decent hydraulic brake hoses, but there are a couple of tests and requirements that are particularly difficult for stainless- steel hoses to meet.

Those requirements are:

    1.  The manner in which the fittings must be attached to the hose.

    FMVSS 106 specifies that "Each hydraulic brake hose assembly shall have PERMANENTLY ATTACHED brake hose end fittings which are attached by deformation of the fitting about the hose BY CRIMPING OR SWAGING." [Emphasis added]

    The idea is that, since crimped-on fittings can't be loosened, a stupid end-user won't be able to screw with and weaken them.

    This is a good thing from a product-liability point of view, I guess... But it means that any hose assembly which uses the very best fittings available - - like the nipple-and-cutter Aeroquip Super Gem or Earl's Speed Seal -- is non-conforming and CAN'T be DOT-approved.

       
    2.  The "whip-resistance" test.

    This test involves mounting the hose on a flexing machine, pressurizing it to 235 psi, then running it at 800 RPM for 35 hours.

    When steel-armored hoses were run through that test, it was found that the hoses tended to bend right at the junction between the hose and the hose-ends. After a while, the stainless-steel braid would start to tear, and the broken wires would cut into the inner Teflon liner, causing it to fail.

One brake-hose manufacturer fought to modify the whip test, claiming that their stainless-steel hose could easily comply with the test if only a supplemental support were used during testing to move the flexing-point away from the hose-ends.

The NHTSA ruled on the issue in August, 1996, deciding to allow manufacturers to use the supplemental support... But only on the condition that the same support was used when the hoses were installed on a real car.

FMVSS 106 was modified to include the use of the support, and the new rules went into effect in October, 1996.

"DOT-approved" stainless-steel brake hoses went on sale immediately thereafter.

So... Now that you know the whole story, you can make an informed decision as to whether you want to put these things on your street-driven car.

If you decide to install them, you need to be aware of a few things:

    1.  When you install them, you must make SURE that they can't kink, twist, or stretch under any combination of wheel droop, bump, or (for the front wheels) steer.

    2.  The stainless-steel outer braid will cut through anything against which it rubs, so you have to make sure that the lines don't rub back and forth over anything important.

    3.  Stainless steel lines have been known to fail when dirt gets between the outer braid and the Teflon lining... As the braid moves back and forth, the dirt abrades the Teflon and can make it rupture. If you look at stainless-steel lines on motorcycles, you'll see that many of them are encased in plastic tubing, apparently in an effort to eliminate this problem.  The tubing also helps considerably with the "outer braid cuts through everything" issue mentioned above.

-Andy

Speeding Tickets A number of people have asked me to post my method for getting out of tickets, so here it is.

First, I should make it clear that none of this is guaranteed to work for everyone; while I'd enjoy discussing this message with anyone who has questions or comments, I'll happily ignore (or, more likely, mercilessly flame) anyone who writes something like "My buddy did that last month and got a ticket anyway, so you're full of shit."

Second, I should pre-qualify this advice:  I'm relatively young (30 years old), had hair halfway down my back until about two years ago, and (until I bought the NSX this year) I drove a succession of sports cars including, for a number of years, a barely-muffled, no-front-plate, bright-red slantnose Porsche with a roll cage and 5-point harnesses.

In short, I was a traffic cop's wet dream.

I've been stopped about three dozen times in the 14 years I've been driving; for a couple of years, I was being stopped about once every two months (not including the bi-weekly detainments at the border-patrol checkpoint between my home and work).

My cars have been searched about a half-dozen times (on two occasions, the searches took over an hour), and I've spent more than my share of time standing with feet apart and hands flat on a police car.  Those of you who get stopped once a year for driving an expensive car in the wrong part of town have NOTHING on me.

Nevertheless, my insurance company has ALWAYS rated me as a "Good Driver" (no more than one traffic conviction in the last three years).

How do I do it?  Easy... I PLAY THE GAME.

You can argue about discriminatory enforcement until you're blue in the face, you can rant incessantly about traffic tickets being only a thinly-disguised "tax", you can bad-mouth the police all you want... But none of that is going to prevent you from getting tickets or help you avoid convictions.

Here's the thing:  Cops are human.  Like all other humans, they make many of their decisions based on their instincts.  This will NEVER change, so if you're going to drive where there are cops around, you need to respect this basic fact and do what you can to keep them from making the wrong (or "right", depending upon your point of view) instinctive assumptions.

To that end, do the following:

    Keep your car clean, inside and out.

    If you keep your registration and insurance information in the glovebox, make sure that it's on top of all the other crap in there. There are two reasons for this:  One, your glovebox should present the same organized, law-and-order appearance as the rest of your clean car, and, two, you don't want to be rummaging around where the cop can't easily see what you're doing.  It's especially important that you not keep your handgun on top of your registration.

    Make sure you HAVE a current registration in the car (and insurance information if your state requires it), and NEVER drive without your license in your possession.

    When you get your registration renewal each year, don't forget to put the new year-of-expiration stickers on your plates.
     

      Here's a tip, by the way... After you apply the stickers to your plates, take a razor-blade or X-Acto knife and make a dozen-or-so cuts across the stickers.  This'll keep lowlife scumbags from stealing your stickers.
    Don't EVER put a bumper-sticker on your car, and get rid of all window stickers that aren't absolutely required by law or your parking garage.  Sorry, but this means that you can't proudly display the "Legalize Marijuana" bumper sticker, and the "THGIR PEEK CIFFART REWOLS" windshield visor has to go.

    Don't get a personalized license plate that says something asinine like "NO55MPH" or "2FAST4U".  In fact, don't get a personalized plate at all.

    Put a front plate on your car if it's required by law.

    Throw away the "Sit down, shut up, and HANG ON!" license-plate frame.

    Peel off the window tinting.

    Aim your headlights properly and stop driving with the foglights on all the time.

    Replace the Supertrapps with a real muffler.

    Cut your hair.

    Make an effort to dress in the manner that a police officer will associate with someone who belongs in that expensive car that you're driving.

    Buy the best radar detector you can afford, and use it.  If anyone cares, I rate the Valentine One head and shoulders above all others.

    DO NOT advertise the fact that you have a radar detector and are therefore a compulsive speeder (even if detector use is legal in your state):
     

      DO NOT mount your detector high on the windshield with the cord dangling down to the cigarette lighter.

      If your detector has a "dark" mode that blanks the LED display (or, better, an "auto-dark" mode that lights the display once, then blanks it until the radar source goes away), use it.  You don't need your interior to light up bright-red whenever a cop triggers his radar gun.

      DO NOT mount a non-concealed radar detector anywhere that makes it impossible to remove surreptitiously.  As soon as you see a cop, you'll want to pull the detector off the dash or windshield and hide it.  DON'T let the cop see you do this (i.e., don't wait until he's right on your rear bumper -- or worse, until after you're stopped -- to hide the thing)... If he sees you reaching under your seat, the last thing he's going to assume is that you're just hiding a radar detector.

      Finally, if your detector was windshield-mounted, it's going to leave suction-cup marks after you've removed it.  This is a problem, which is why I recommend mounting it somewhere else.

When pulled over, do everything you can to put the cop at ease. Remember, he has no idea who you are and will assume the worst. The less time you force him to stay in his full-combat mode, the better. To this end, do the following:
    When signaled to pull over, do so slowly and carefully.  If you're going 75 when the guy clocks you from the roadside, he has to drive significantly faster than that to catch up to you. After a minute or two of full-adrenaline 100-mph pursuit, the last thing he wants is for you to pull over so quickly that he has to lock up the brakes trying to stop behind you.  Acknowledge his presence with a wave or something, signal, then pull over to the right shoulder when it's safe to do so.

    Once stopped, turn off the engine and DON'T MOVE (except to turn on your car's interior light if it's nighttime).  Leave your hands in plain sight on the wheel; DO NOT start reaching into the glovebox for your registration.

    When the cop asks for your license and registration, tell him that the reg is in the glovebox, let him or his partner shine his flashlight over there, and ONLY THEN reach for it, slowly.

    If, for whatever reason, you have a legal reason for keeping a handgun in the glovebox, please try to remember that the weapon's there BEFORE you reach over, and let the cop know.

    After handing over the paperwork, put your hands back on the wheel. If you're going to try to talk your way out of the ticket, you'll know when the cop's relaxed enough that you can safely remove your hands and start gesturing, etc.  Until that time, leave them on the wheel.

If you're in the military, consider mentioning it.

If you're a firefighter, paramedic, etc., DEFINITELY let the cop know.  In fact, you can break the "no bumper-stickers" rule if the sticker proclaims your emergency-services vocation.

DON'T tell the cop, "One more ticket, and I'll lose my [license/insurance/car/self-respect]."  As I mentioned above, he doesn't need to know that you're a habitual speeder.

DON'T tell him that you weren't speeding when you both know perfectly well that you were.  Opening the conversation with a lie is unlikely to lead to anything good.

DON'T tell him that your speedo's broken (especially if it is). In some jurisdictions, evidence that your speedometer was miscalibrated will get the ticket dismissed, but not if you already knew about it and should have been compensating.

NEVER EVER say, "See you in court."  Reasons for this will be given below.

Smile.

Ok...

Everything so far has been pretty basic, but now it gets a little more involved.  Following all the directions above will reduce the likelihood of your getting stopped in the first place, but if you regularly speed, you should still expect to be periodically stopped.

Let's say you're stopped for driving 75 MPH in a 55-MPH zone.  There are four possible outcomes; you get to decide which one you want to achieve:

    1.  You get the full 75-in-a-55 ticket, have no chance of successfully fighting it, possibly get ticketed for numerous equipment violations, and piss the cop off enough that he'll remember you the next time he sees you driving through his neighborhood. 

    2.  You get the full 75-in-a-55 ticket, but have a good chance of fighting it in court. 

    3.  You get a "reduced" 65-in-a-55 ticket, with no chance of beating it in court. 

    4.  You get no ticket at all.

Ok... Let's do the easy ones first.

OUTCOME #1 (The Full Catastrophe):

    This is the simplest of all.  All you have to do is curse at the cop, ask why he's not out catching criminals, tell him that you're going to fight the ticket all the way to the Supreme Court if necessary, demand that he hurry up because you have someplace IMPORTANT to go, or make smartass comments about his inability to afford a car like yours.

    If you really want to do this with STYLE, I recommend the following responses to the question, "Do you know how fast you were going, son?":
     

      1.  No... But I bet you're going to tell me, pig. 
      2.  Hell, no... I'm too drunk to see the speedometer. 
      3.  Maybe.  Have you stopped beating your wife? 
      4.  Not fast enough, I guess, since you caught me.
      or my favorite all-purpose response to ANY question from a cop:
      5.  You'll be dead before your weapon clears leather.
    But I digress.
OUTCOME #2 (The Big Ticket, with a chance of beating it in court):
    This is also trivially easy, but ONLY if you can keep your mouth shut.  To get the ticket without jeopardizing your chances in court, simply say nothing. 

    The cop's done this about a zillion times, and he can handle the details without any input from you.  He'll ask for your license and registration, take them and walk away, come back with the ticket, give you the obligatory "By signing, you're not admitting guilt" speech, hand you your paperwork, and wish you a nice day.

    If you're aiming for Outcome #2 and he asks the "Do you know how fast" question, the only correct answer is "Hmm."  When he follows up with "Why are you in such a hurry", you have two choices:  Either re-use the "Hmm" answer or simply state "I was in no hurry."  It's CRITICALLY important that you not make any admission of guilt.

OUTCOME #3 (The "Reduced" Ticket, with no chance of fighting it):
    This one isn't much harder than #1 or #2:  Smile, admit to speeding, but claim that you were going only 65, not 75.  Since the cop now has an admission of guilt, and so knows that you won't take a 65-mph ticket to court (you'd be a fool to fight after this admission), he'll "do you a favor" by writing the ticket for 65 instead of 75. This works nearly all the time.
Which brings us to...

OUTCOME #4 (No Ticket At All)

Outcome #4 is, obviously, the most desirable, but is hard to achieve.

In order to get out of the ticket entirely, you need to give the peace officer a reason NOT to write the ticket.  THIS IS A CRUCIAL POINT; the reason my technique for Outcome #2 works so well is that, in the absence of any good reason to do otherwise, the cop WILL write the ticket.

To talk your way out of the ticket, you need to "short-circuit" the cop's usual routine and snap him out of his ticket-writing "program".

Little things count for a lot.  For instance, something as simple as noticing the insignia on his uniform and calling him "Sarge" (if appropriate) instead of "Officer" or "Sir" may help enormously.  There's a little name-plate on his chest; read it and address him like a human being. Hardly anyone does this, so he'll appreciate it if you do.

The key thing to remember is that you have to TALK to the guy... Remember, most people that he stops just sit in their cars and stare blankly ahead, or make a big show about the fact that he's wasting their time, or just make lame attempts at lying about their speed.

You need to do something different.

I'm not going to give a long laundry-list of excuses (e.g., "I really need to pee, so I was driving fast to get to a restroom", "My wife's having a baby and I need to get to the hospital fast", etc.). Those excuses rarely work, and besides, I'm writing about strategic techniques rather than simple tactics.

Here are some things you can try.  Again, realize that I'm listing these only to explain what I mean by "short-circuiting the cop's usual routine"... None of these is guaranteed, in itself, to get you out of a ticket, and I'm sure you can think of other strategies:

    A.  Get out of the car.

    This is DEFINITELY the wrong thing to do here in California (especially on the freeway; try it and you'll get a VERY sharp "Sir!  Get BACK in your car!" over the PA, followed by a long lecture on pedestrian safety), but it might be ok in smaller, quieter communities.

    By nullifying the psychological advantage the cop has when he looks down at you through the window of your car, you've already changed some of the ground rules.

    B.  If you're a woman, cry.

    There's a caveat, though... If all you can manage is a couple of tears and a sniffle, don't bother.  You're not trying for sympathy here (the cop has heard it all before and isn't likely to feel sorry for you), but for SURPRISE.  What you want is to startle him out of his routine, so you need to get close to all-out bawling.

    Come to think of it, if you're a man, crying will surprise him, too... Try it and let me know what happens.

    C.  Start babbling about anything EXCEPT the fact that you know he's about to write you a ticket.

    Ask for directions, start explaining how you're on the way to the airport to pick up your mother-in-law but got lost at the last freeway interchange, you think you should've stayed on the I-5 instead of getting on I-805, etc.

    If you have the balls to preface this with, "Oh, Officer, I'm SO glad you're here... Look, here's my problem....," so much the better.

    What you're striving for is for the cop to finally say, "Stop! Enough!"  If he then gives you the directions you asked for, you're home free.  When he mentions that you should drive a little more slowly in the future, be sure to thank him and wave as you drive off.

That last one, by the way, worked PERFECTLY when some friends and I were doing impromptu skidpad testing at 2 a.m. on the tarmac at Jeffco Airport, just outside Denver.  There we were, hootin' and hollerin' and driving around in big tire-screeching circles next to the runway, when a cop drives up and wants to know what the hell we think we're doing.

I babbled for what seemed like hours... Explained, circuitously, that we'd gotten lost while looking for the back road to Boulder, we didn't know where we were, couldn't figure out how to get out of the airport, it was dark and our girlfriends were starting to get scared, etc.  He finally just sighed and escorted us back to the road.

Here's the best example I've ever seen of short-circuiting a cop's routine:

    It's lunchtime, and Mario (not his real name), a Porsche salesman, invites a customer (I'm not saying it was me) to lunch. Mario takes a new 928 with dealer plates off the lot and is driving down the Coast Highway like a fucking bat out of hell. 90 in a 45, easy.

    Lights.  Siren.

    Mario pulls over and tells his passenger, "You're the salesman and I'm the customer, ok?  I'll do all the talking."

    He then leaps out of the car and runs back to the black-and-white.  Grinning like the fool that he is, he says, "Did you SEE how fast I was going?!!  Man, that car's quick!  I bet your radar gun doesn't even GO that high!  That guy [gesturing wildly at the alleged salesman in the car, who's convinced that they're BOTH going to jail] thinks he's gonna sell me this car, but there's NO WAY!  If I had a car like this, I'd be getting speeding tickets every DAY!"

    No ticket.

Kids, don't try this at home.  "Mario" is a guy who's capable of convincing otherwise-rational people to spend $100,000 on a car; he's not LIKE the rest of us.  Still, it's a good story.

Ok... Enough about avoiding tickets.  Now let's talk about what to do once you DO get one.

I recently wrote that I think of traffic fines as simply one of the costs of driving.  This doesn't mean, however, that I advocate giving up and simply mailing the fine to the Court.

On the contrary, I believe that it's my OBLIGATION to fight every ticket.  In this country, the State is required to PROVE that I'm guilty; I have no problem justifying a decision to make them do so, even if I "know" that I "deserved" the ticket.

Actively fighting the ticket does six good things:

    1.  It makes you a more-informed driver, since you'll probably have to research the Vehicle Code in order to mount a reasonable defense.

    2.  It adds to the congestion in the traffic courts.  If EVERYONE fought his tickets, the traffic courts would become so overburdened that they wouldn't be able to function.  This could lead to a rethinking of the whole system and, perhaps, to some positive change.

    3.  It assures you that, win or lose, you did the best you could... If you have to pay a fine, at least you know you didn't go down without a fight.

    4.  Even if you lose, you have a good chance of getting off with a reduced fine.

    5.  Fighting every little ticket is good practice for fighting the really BIG ones.

    6.  In court, you get to see how the other half lives... After hearing the charges against some of those guys, you'll feel much better about the minor offense that YOU'RE accused of.

If you win, you achieve four admirable goals:
    1.  You don't have to pay the fine.  In most cases, this is pretty minor compared to the next one.

    2.  Your insurance rates don't rise.

    3.  No conviction is recorded on your driving record, so when you get ANOTHER ticket, the Court won't see that you're a repeat offender.

    4.  It makes you feel good for weeks.

If you want to have any chance at all of victory in the courtroom, you need to take the first few steps at the time of the traffic stop. What you say and do at that instant is REAL IMPORTANT.

Unfortunately, the method I described for getting out of the ticket entirely (Outcome #4) is often counter-productive if you want to be able to fight the ticket later.

Specifically, making the event memorable for the cop will do you no good later, when you're in court... What you want in court is a cop who can't remember the circumstances of the traffic stop, who has no notes, and who therefore can't answer even the simplest questions when you get a chance to cross-examine him.

When you're pulled over, therefore, you have to CHOOSE whether you're going to take the safe fight-the-inevitable-ticket-later route, or shoot the moon and try to get out of the ticket entirely. You can't really switch horses midstream here.

Ok... Let's assume that you've decided to accept the ticket, but you want to make a conviction as unlikely as possible.  Here's what you do:

DO NOT admit guilt, even indirectly.  I said this before, but it bears repeating.  Cops have a lot of practice eliciting casual confessions from motorists... Witness the "Do you know how fast you were going?" question:  To answer "Yes" when he KNOWS you were speeding implies guilt, while to answer "No" implies that you were driving so fast or carelessly that you weren't even glancing at your speedometer, and it also negates your ability to offer convincing testimony as to your actual speed once you're in court.

This is why the ONLY correct answer to this question is no answer at all.

Answering "No", by the way, is also INVARIABLY a lie; EVERYONE's first reaction upon seeing the flashing lights in his rearview mirror is to look down at the speedo.

Oh... And while we're on the subject of eliciting confessions, do you know WHY cops ask suspected drunk drivers to recite the alphabet backwards?

I swear to God this is true:  A huge percentage of drunk drivers respond with, "What?!!  I can't even do that when I'm sober!"

Act as "normal" as you can.  Do what 90% of people do when they're stopped:  Sit quietly, be polite, don't try to crack jokes... Just follow directions and accept the ticket quietly. The idea here is to lull the cop into believing that, like nearly all people who receive tickets, you'll just mail the fine to the court.

To further reinforce that false sense of security, you might even ask the cop to explain the procedure for mailing the fine... This'll strengthen his belief that you've already given up, and he'll instantly forget you.  If you're lucky, he won't even write any notes about the incident when he gets back in his car.

This is why you NEVER want to say "See you in court"; the last thing you want to do is warn him to start preparing his case now by taking detailed notes.

Speaking of which... As soon as possible after getting your ticket, sit down and make your OWN detailed notes about the event.  Be sure to write down ALL the relevant information, including time, date, weather, traffic conditions, the PRECISE location where you were stopped, etc.

After you've received a ticket, you can either get a lawyer or fight it yourself.  This is your decision, but I've only used a lawyer when I was accused of misdemeanors like Speed Contest or Exhibition of Speed.

Drunk driving, of course, is a misdemeanor (or felony) as well... But if you're driving drunk and anything I've said here helps you get out of the ticket, you had better not tell me; the offense is inexcusable and I will NOT be happy to have assisted you.

By the way... For those of you who remember my recent holier-than-thou rant about appropriate driving behavior on city streets, those Speed Contest and Exhibition of Speed charges against me were bogus and never even went to trial.

Ok... Let's assume, because there's really nothing to say about the alternative, that you decide to fight the ticket yourself.

I only have experience with the traffic-court system in two states: California and Colorado.  The procedures in your area may vary; in those states (although my last ticket in Colorado was over ten years ago, I don't think the process has changed), it works like this:

On your ticket (which is technically a "Summons To Appear"), there's a court date.  This is for your "arraignment" -- the initial appearance at which you either plead guilty or not guilty.

Some charges REQUIRE you to appear at the arraignment; others can be handled by simply mailing payment of the fine.

If you decide to mail payment of the fine to the court before your arraignment date, what you're technically doing is posting bail for your appearance.  When you then fail to appear at the arraignment, your bail is forfeited, you're declared guilty as charged, and the bail money pays the fine.

We're not interested in giving up that easily, though, so WE are going to appear at the arraignment.  Here's where the various states' procedures start to vary.

In Colorado (and some parts of California), traffic cases are heard by real judges in real courts, and they're tried by real District Attorneys (well, ASSISTANT District Attorneys... Same thing).  The process works like this:

You show up at the date and time specified on the ticket.  After a long wait, you get a chance to discuss your case with the prosecutor who's been assigned to it.  He'll take you aside, glance through your file, and ask you to briefly relate your version of the events that led to your being ticketed.

So long as you don't say anything really stupid, he'll quickly offer you a plea bargain... That is, he'll give you the opportunity to plead guilty to a lesser charge in order to avoid having to try you for the offense on your ticket.

Try real hard to get him to agree to an equipment-violation plea; in many areas, convictions for "defective lighting" don't adversely affect your insurance costs.  If he offers a plea like that, take it, go back into the courtroom, and plead guilty to it... You've won.

It pays to keep in mind, during the plea-bargain process, that most real judges don't want to waste their time trying petty infractions like speeding tickets, and they aren't fond of ADAs who can't plead those offenses out of their courtrooms.  You have a fair amount of leverage, therefore, in determining the final plea-bargain arrangement.

If you feel that you have an ironclad case, or if you and the prosecutor can't come to an agreement, you refuse the plea-bargain, go back into the courtroom, and plead "Not Guilty".

You'll be asked whether you want to "waive time"... This translates to "Do you want to waive your Constitutional right to a speedy trial (defined in most jurisdictions as 'within 45 days')?"

Answer "Yes"; the courts aren't yet crowded enough that they won't be able to fit you into their schedule, and the longer you can wait before the cop appears in court as a witness against you, the better... His memory will fade, he may lose his notes, and -- you can always hope -- he might die, move away, be convicted of a serious crime, or quit the force before your case comes up.

The Clerk of the Court will pick a trial date.  Write it down, go home, and prepare for your trial.  You'll usually have 60 days or more, but don't forget about your trial date... If you miss it, the Court will issue a bench warrant for your arrest and you'll be hating life from then on.

Ok... In many parts of California, the process is essentially as I've described above, except that traffic cases (except for misdemeanors, which may be heard by real judges) are heard by "Traffic Commisioners" and there ARE no District Attorneys in traffic court, so there's no opportunity for a plea-bargain.

In those areas, you're arraigned in a lightning-fast process that involves choosing one of three pleas: "Guilty", "Not Guilty", or "Guilty with an Explanation".

    [Actually, I've always wanted to try pleading "Not Guilty by Reason of Insanity", but I don't have the balls.  I'm offering $100 to anyone who does, though.]
Anyway... Pleading "Guilty with an Explanation" is the dumbest possible thing you can do.  If you HAVE a good explanation, the time to give it is AT TRIAL, when you can use it to defend yourself against the charges.  If you only have a STUPID explanation, like "Uhh... I didn't think I was really going THAT fast," the Court will listen more-or-less-politely, then bang his gavel, accept your guilty plea, and sentence you to pay the entire fine. Congratulations... You've achieved nothing, and you've wasted your time doing it.

The proper plea is "Not Guilty".  Again, don't worry if you don't think you have a defense... It's the State's job to PROVE that you're guilty, and even in a state like California, where the traffic-court system is skewed WILDLY in favor of the prosecution, you can still have a chance of beating the ticket even if you're unprepared to present any defense at all.

After pleading "Not Guilty", the process is the same as in the "real" courts:  You waive time and get a trial date from the Clerk.

If you live in California:

    After getting a trial date, go to your local bookstore and buy a copy of "Fight Your Ticket", published by Nolo Press.  I'd lend you my copy, but I lent it to a so-called friend about a year ago and he hasn't yet returned it.

    Read the book carefully; you may find that you really DO have a defense.  If nothing else, you'll learn a lot about the traffic rules and traffic courts in your area.

If this is the first ticket you've contested, take a day off of work some time before your trial and visit the courtroom.  Spend an hour or two there to get an idea of how everything works.  If possible, spend your time in the courtroom of the particular judge who'll be hearing your case.

You should also know ahead of time whether traffic trials in your area are prosecuted by a District Attorney or not... In the "Traffic Commissioner" courts here in California, there's no DA even at trial; it works more like small-claims court:  You and the cop simply stand before the judge and give testimony.

The nice thing about this arrangement is that the cop MUST testify, so you're free to cross-examine him.  You, on the other hand, need NOT testify, so you're not exposed to cross-examination by an experienced prosecutor.

Since the "Fight Your Ticket" book goes into a lot of detail, I won't mention much about what to do when you go to trial; for specific information on what constitutes a defense against the various infractions (especially radar speeding tickets), read "Fight Your Ticket".

Here are some general guidelines, though:

    Dress conservatively, as though you're going to a job interview. If you're a guy and have been thinking about cutting off your ponytail, now's the time.  DON'T wear a T-shirt that proclaims "Justice is Blind".

    If you're going to present a defense, bring lots of WRITTEN documentation.  Most traffic-court defendants show up with nothing tangible, and they lose.  YOU want to have maps, diagrams, copies of the appropriae sections of the Vehicle Code, references to legal precedents, etc.  Make three copies (one each for you, the prosecution, and the judge), and keep everything organized... You want to project an air of confidence; fumbling through a stack of papers won't do this.

    DON'T bring a copy of "Fight Your Ticket" to court.

    PRACTICE whatever it is that you're going to say in court.  As I said, you'll have a month or two between the arraignment and the trial; with that much time to prepare, you should sound like Clarence Darrow once you get there.

    If you'll be demonstrating the sequence of events that led to your stop, practice THAT at home, too.  Many courtrooms have a whiteboard and magnetized car-symbols that you can use for your demonstrations, but some don't, so bring clear diagrams with you.

    LISTEN CAREFULLY to the police officer's testimony... While you should already have a general idea of what you're going to say and what you'll ask him when it's your turn to cross-examine, don't limit yourself.

    When you cross-examine the police officer, walk him step-by-step through all the facts that you wrote down in your post-ticket note-taking session.  Be prepared to fully explore any areas where his testimony is inaccurate or vague... If you can show that he has no real recollection of the events, or if you can get him to admit that portions of his opening statement were inaccurate, you're well on your way to winning your case.

    BE POLITE.  Call the Judge "Your Honor" and call everyone else "Sir" or "Ma'am".  Again, referring to the cop by name can pay dividends... It shows that you're not treating him as a nameless, faceless entity; if you're lucky, he and the judge will treat you with the same respect.

    Although I've stressed that you should be well-prepared, this doesn't extend to typing out a "speech" and just reading it to the Court.  It might help to make up a list of questions that you really want to make SURE to ask the cop, but try to simply refer to that list every once in a while, rather than droning on and on through them with practically no regard for the answers.

    In your closing statement, clearly summarize your case AND TELL THE COURT WHAT YOU WANT.  If you think the cop's testimony shows that maybe he CAN'T prove that you were breaking the law, you need to point this out to the judge and ask that the charges be dropped as a result.

I mentioned that you can often win your case even if you don't really have a defense.  Listening to the cop and asking probing questions in order to prove that his testimony isn't credible is one way.

The other way is if the cop doesn't appear at your trial.  The odds of his being a no-show vary from locale to locale, but most times I've been in court, about a quarter of the cases on the docket are dismissed because the cop didn't appear.

Even if you DO lose your case, the judge may reduce the fine below the amount shown on your ticket.

Also (here in California, at least), you can be sentenced to Traffic School if you haven't attended one in the last eighteen months. This is a Very Good Thing... Upon completion of th eight-hour session, the charges are dismissed and there is NO ADVERSE AFFECT on your insurance.  To attend, you need to pay the fine plus $24 to the court and whatever the Traffic School charges (they're all privately-operated; it usually costs between $20 and $50), but this is small change compared to the increase in insurance rates that you'll experience if you DON'T go to Traffic School.

By the way, this is ANOTHER reason to fight every ticket... Every time you DON'T contest your ticket and instead just choose to plead guilty and go to Traffic School, you have to wait another eighteen months before you can go again.

Here in California, you get to choose which Traffic School you want to attend.

The truly clueless go to the ones run by civic agencies or the Auto Club or whatever... They get to spend eight hours watching "Red Asphalt" and listening to an ex-Highway Patrolman drone monotonously about the dangers of speeding.

Those of us who are a little more savvy choose the "Comedy" traffic schools... These are taught by more-or-less-professional stand-up comics who quickly dispense with the state's minimum requirements (informing the students of a few traffic laws and the penalties for drunk driving), then get on to the serious business of making everyone in the room laugh for half a day.

There are also "fine dining" traffic schools taught in restaurants, "singles" schools, "wash and drive" schools held in laundromats, schools specifically for gays and lesbians, etc.

And... In California, you can now "attend" home-study or online, web-based traffic schools. Is that cool, or what?

-Andy


"Say it in Code" vs. "Say it in Comments" Each of us can undoubtedly come up with some example assembly-language code that can't be fully documented without explicit comments.  What, for example, do you suppose the following useful bit of code does? (No fair going back through the archives to find my original message where the code was posted with 41(!) lines of comments documenting it):
    WAITFOR0:
     
      BTFSC   TMR0,BIT7 
      GOTO    WAITFOR0

      BTFSS   TMR0,BIT0 
      GOTO    $+1 
      GOTO    $+1

      BTFSS   TMR0,BIT1 
      GOTO    $+1 
      GOTO    $+1

      MOVLW   RELOAD+4 
      MOVWF   TMR0

On the other hand, it's just as easy to find "well-commented" code that's impossible to maintain or modify.  I just finished a 16C57 program that I took over from a guy who'd been arrested and incarcerated after writing "95%" of it... At first glance, it APPEARED to be well-written (non-trivial comments on every line, constants that all had names, etc.), but when I started looking closely, I found some truly HIDEOUS coding practices:
    1.  Important variables named "c1", "c2", "c3", etc.

    2.  A subroutine named "SndTimer", which loaded a variable called "Snd_Timer" with a constant called "Snd_Time".

    3.  Long ( > 20 line) loops terminated with "GOTO $-23".

    4.  Very explicit, well-phrased comments that gave detailed information about every important detail of the often-tricky code... And which had unfortunately not been updated when the code had, so were now WRONG.

I think that what it comes down to is this:

The best results will be achieved when you document BOTH in code AND in comments... And until you get a really good feel for it, one good way to ensure that you're being as clear as possible is to do EACH half of the documentation AS THOUGH the other half doesn't exist.

One of the BEST things you can do to promote maintainability of your code is to include descriptive "header" comments (i.e, comments on lines of their own) that describe the operation of the code that follows.

The reason's simple:  Often, even very short sections of code can perform VERY important functions that CAN'T be adequately described in short line-by-line comments.  The following excerpt from an automotive ignition-controller that I wrote a couple of years ago demonstrates this:

    ; WAIT FOR A SIGNAL FROM THE POINTS BEFORE ATTEMPTING TO 
    ; CHARGE THE CAPS FOR THE FIRST TIME.  WITHOUT THIS SECTION 
    ; OF CODE, WE'D GET TO THE JUST-IN-TIME CHARGING SECTION AND 
    ; START CHARGING THE CAPS WHETHER OR NOT THE DISTRIBUTOR'S 
    ; TURNING. THIS WOULDN'T NORMALLY BE A PROBLEM, BUT THERE 
    ; ARE SITUATIONS HAVING TO DO WITH SWITCH-BOUNCE ON THE 
    ; KEYWIRE LINE THAT CAN FORCE US TO RESTART THE PROGRAM WHILE 
    ; THE PIC'S POWER SUPPLY IS SLOWLY DISCHARGING.  WHEN THIS 
    ; RESTART HAPPENS AND THE PIC TRIES TO CHARGE THE CAPS, 
    ; ENOUGH CURRENT IS DRAWN THAT THE PIC'S POWER SUPPLY DROOPS, 
    ; CAUSING ERRATIC OPERATION AND POSSIBLE LOCK-UP DURING THE 
    ; POWER-DOWN SEQUENCE. 

    ; NOTE THAT THE INTERRUPTS ARE ENABLED AT THIS POINT, SO 
    ; AUTO-OFF WILL WORK PROPERLY IF NO POINTS SIGNALS ARE SEEN 
    ; BEFORE THE AUTO-OFF TIMER EXPIRES.
     
      BSF     KILLENG     ;MAKE SURE THAT WE DON'T MAKE ANY 
                          ;TIMING CALCULATIONS BASED ON THIS 
                          ;FIRST POINTS SIGNAL.
    WAIT41ST:
     
      CLRWDT              ;RESET THE WATCHDOG TIMER.

      BTFSS   FIRED       ;IF WE'VE SEEN A POINTS SIGNAL, 
                          ;SKIP AHEAD.

      GOTO    WAIT41ST    ;OTHERWISE, LOOP BACK AND KEEP 
                          ;WAITING.

Without the header comments, all that anyone would see is a very standard "wait for a port pin to go high" loop... The loop looks JUST LIKE any number of similar loops in this program and others, so without the headers, there's no way that a future maintainer of this code would know the purpose of the loop.

Even if he DID beat the astronomical odds and manage to figure out the reason for the loop, he probably wouldn't realize that/why it's important for interrupts to be enabled during its execution.

And... By including large comment headers like this, you help him in two other ways:

    1.  You give him a general sense of confidence in your abilities, so that when he's trying to fix a problem, his first assumption won't be that you were incompetent... If he sees some code that at first appears wrong, he'll tend to think "Hmm... I KNOW that Andy must have had a good reason for doing it that way; maybe I should look more closely before hacking up his code."

    This is vastly preferable to the alternative, in which he assumes that I'm an idiot and always worries that any change he makes will upset some delicate, brittle code that just barely works.

    2.  You explain to him every important decision/discovery you made while writing the code.  Even if he was in on the program-specification and design-review meetings, there are always any number of little details that never get discussed... And after the passage of time, even the BIG details are often forgotten.  By putting detailed header comments in the code, you can remind him of all of them.

Keep in mind that the "maintainer" of your code may very well be YOU.  Have you ever gone back to five-year-old code and started rewriting large sections of it because it contains "obvious" inefficiencies or mistakes, only to notice after a few hours of work that there really WAS a reason for doing it that way in the first place?

Me, too.  And I didn't like it, so now I put giant comment blocks in my code. 

-Andy


Automotive Fire Extinguishers 

I've been in three car fires.  Two were relatively minor, but one was REAL scary... It progressed from a minor electrical short in the dash to a full-blown conflagration in less than thirty seconds, and the car BURNED TO THE GROUND in about two minutes.

That fire is the reason that I carry fire-extinguishers in my cars. YOU should carry one, too.

Don't think that you're safe from fire just because you don't drive your car at the track... Or that it can't happen to you because your car is modern, well-maintained, and unmodified. That big fire of mine happened on the street, in my uncle's brand-new Ford sedan.

UPDATE -- 10 MAY 2000:
Driving northbound on I-805 this morning in my NSX, I saw another NSX parked on the southbound side of the highway with smoke billowing out of its open engine hatch. No visible flames; it just looked as though a hose had burst and dumped oil on the exhaust or something. The driver was safely out of the vehicle, so I didn't risk my life running across 8 lines of traffic to spray halon on his car; instead, I turned around at the next opportunity and took this photo (click on the small image to see a much larger version).

NSX Fire

Elapsed time between seeing smoke and seeing the fire above: Approximately five minutes. After snapping that photo, I turned around again and took THIS one about three minutes later:

Three minutes later

As you can see, the car was by then fully engulfed.  Elapsed time from first smoke to a total loss: less than ten minutes.

Don't let this happen to you. 

 

There are two kinds of fire-extinguishers that are marketed for use in automobiles... There are the "dry-powder" extinguishers, which can be purchased very cheaply from any hardware store, and Halon extinguishers, which are harder to find and expensive.

If you already carry a dry-powder extinguisher in your car, pat yourself on the back for being so safety-conscious, then throw it out and go buy a Halon extinguisher... Dry powder's great for the kitchen, but PLEASE don't use it in your car if you can help it.

The deal is this:  The old-style dry powder will DESTROY aluminum or magnesium.  It also eats through electrical insulation and will probably damage most plastic components.

Some modern dry powders (one has the brand-name "Purple-K") are less corrosive than the old stuff.  Nevertheless, it's STILL a bad idea to use them, since the powder is FOREVER, and it gets EVERYWHERE.

Words cannot describe the extent of the damage you'll do... Unless you've seen the results of a dry-powder extinguisher activation inside a car, you wouldn't believe it.

My advice to anyone who's discharged a dry-powder extinguisher in his car (or in the car's engine compartment), is, "Sell it THIS INSTANT, before the powder COMPLETELY dissolves your car. Take whatever you can get and cut your losses."

It's IMPOSSIBLE to clean that stuff up; it'll get into electrical connectors, gauge movements, switches, your stereo, air vents, etc.   Needless to say, it's unlikely to do much good in ANY of those locations.

With a burning-but-insured car in front of me and only a dry-powder extinguisher at hand, I'd be VERY ambivalent about discharging it.

Now...

There are two big problems with useful Halon extinguishers.

First, they're physically large.  The 5-pound bottle in my car -- 5 pounds of Halon; the whole extinguisher weighs about 12 pounds -- is a 15-inch-long, 6-inch diameter cylinder that doesn't really fit anywhere.

Second, they're expensive.  A 2.5-pound handheld bottle (5-B:C) costs around $100, and you'll pay over $300 to fill an 11-pound bottle.

However... You're not going to find anything that works as well as Halon, so you just have to deal with those issues.

To be fair, I guess I should mention that Halon's biggest advantage (the fact that it dissipates after it's done its job, so you don't have to sell your car after you've put out a fire) can also be a DISADVANTAGE in one particular situation:

If the fire's being fed from a renewable source (like oil draining or being pumped onto an exhaust pipe), it may flare up after being "extinguished", requiring repeated blasts of Halon.  You may have seen this on television... I remember seeing a crash last year in which a track worker used up bottle after bottle of Halon trying to keep an oil fire down. 

Here's the thing, though:  The fires you're likely to see are going to be (at first, anyway) very small electrical ones, not huge petroleum-fed infernos.  Halon's the best possible extinguisher for these small fires; its extinguishing capability in an enclosed space is -- please excuse my exuberance -- fucking MIRACULOUS.

If I were a track worker faced with an unconscious driver trapped in a burning car, Halon dissipation might be an issue.  I'm not, though... The extinguisher in my car will only be used by ME, so I'll presumably be conscious and mobile when I activate it.  In that situation, five pounds of Halon is sufficient to get me out of the car safely.  If the fire flares up again... Well, that's what insurance is for.

Also, Halon in an enclosed or semi-enclosed space isn't directional; if you have a fire somewhere under the dash or behind some other obstruction, you can still put it out.  Since most cockpit fires start this way, Halon is really the best choice. 

By the way, those little 12-ounce Halon extinguishers are basically toys... I carry at least one of them in each of my cars, but only as a means of extinguishing VERY small fires -- like from a cigarette ash on the carpet or something.  One of my three fires started exactly that way, and if I'd had one of those little extinguishers at the time (or even a can of Diet Coke that I could have poured on it), I might still have that car.

-Andy


India's Recent Nuclear Tests 

In early May, 1998, India tested a nuclear device for the first time since 1974.  An Indian engineer -- not involved, as far as I know, in India's nuclear program -- posted a message in which he attempted to justify those tests.

This is my response (excerpts from his message are in blue).

1. US is the only nation, thus far, to have used the N-weapons.

Correct... And the US has also AVOIDED using its nuclear weapons for more years than any other country.

2. Maximum number of N-tests were conducted (and are still being conducted) by US, a whooping 1200 odd tests have been conducted thus far by the Yankees, followed by the erstwhile soviet (700) and China (140+).

Your information is a little inaccurate...

The US is no longer testing nuclear weapons.  Before the Comprehensive Test-Ban Treaty was signed in 1996, the US had conducted 1,030 tests, the USSR had performed 715, and China had performed only 43.

The other two declared nuclear powers, France and Great Britain, have performed 210 and 45 tests, respectively.

South Africa and Israel may have conducted a single joint test in the south Atlantic in 1979, and your country has performed three (or is it four now?):  One in 1974 and two or three this week.

3. US is the only agressor in the world, in today's world; it stages wars and proxy wars - never for its country nor to defend it.  It enjoys wars.

I don't even know what to say to this.

It can assume mantle to strom the Iraqi deserts, for and on behalf of Kuwait. They do not even need an invitation to do that!

1.  The US only acted after the UN authorized the use of force through Security Council Resolution 687.

2.  The US obtained permission from Saudi Arabia to base its forces in that country.

3.  Even though Inder Kumar Gujral, your Foreign Minister at the time, publicly EMBRACED Saddam Hussein after Iraq's invasion of Kuwait, India eventually cooperated with the US-led liberation of Kuwait by allowing US warplanes to refuel in Bombay on their way to the Gulf.

4.  During your country's two-year membership in the Security Council after the Gulf War, it hardly ever voted against the US on any question relating to sanctions and other actions against Iraq.

4. None of the so called test ban and non-proliferation treaties proposed by US talk about dismantling of US N-warheads!

The START I and START II treaties require the US and Russia to reduce their arsenals to approximately 3,000 warheads by the year 2003.

5. US preaches (and practices) "what is good for americans, is good for the rest of the world".

Well, let's see...

    The US attained independence from England; so did India.

    The US is the world's largest democracy; India is the second-largest.

    The US is India's largest trading partner.

    The US is the single largest foreign investor in India, accounting for one-third of all foreign investment.

Wouldn't you agree that -- at least in these cases -- what's good for our country IS good for yours?

The real danger is with the coutries who have not toiled to get [nuclear weapons], but acquired [them] through other means.

No.  The real dangers are with:

    a.  Countries whose conventional forces are so (relatively) weak that their nuclear weapons are the only means at their disposal for waging war against a strong adversary, and

    b.  Countries with nuclear weapons AND significant tension with a neighboring Islamic nation, especially if THAT country has nuclear weapons, too.

India, of course, falls into both categories.

Tell them that India waited for about 25 years before the circumstances forced it to go for the second test.  This reluctance on the part of India just indicates that it did not wish to be seen as an agressor, it never had been one.

NO COUNTRY can be an aggressor until it has powerful, reliable weapons... But that really isn't the point.

Earlier, you mentioned that the US led the operation that resulted in the evacuation of Iraq from Kuwait.

Don't you think that -- before this week's round of nuclear tests, anyway -- India could have relied on the same assistance from the US (and the UN) in the event that it was invaded or attacked by Pakistan, China, or some other country?

Maybe I'm missing something, but it seems to me that the recent tests can only weaken the relationships between India and its potential allies... Which will INCREASE India's willingness to use its nuclear weapons early in any conflict, since it may no longer be able to count on the unconditional support of the rest of the world in the event of war.

And... How is ANY action that would tend to start an arms race in your region good for India?  Would you be HAPPY to see nuclear-tipped Prithvi and M-11 missiles pointing at each other over the India-Pakistan border?

Last, but not least, if anyone is not willing to look into the ground realities ask them to shut and ponder about the consequences of 1200 odd tests by the US.  If 1200+ cannot harm the earthlings, a mere 4 tests can never do that.

Right, but the worldwide concern over India's recent tests has very little to do with the ENVIRONMENTAL consequences of that testing.

I am planning to follow this posting with another one on "India should now sign the CTBT and NPT"

I can't wait.

-Andy

 

go to the SiliconValley GeoPage

© aw 1998.
All rights
reserved. Last
modified: 12 Nov 1999