Programming The Sierras

Insights to high quality software development

A Tree Falls…

The philosophical thought problem was presented as “A tree falls in the woods and no one is around to hear it, does it still make a sound?” This promptly digresses into a discussion of what ‘sound’ is and ‘no one’ and so forth. But they miss the point: IT DOESN’T MATTER!

In old houses and buildings the interior walls were made up of thin strips of wood (lath) then plaster was smeared over the lath and smoothed out. On the back side of the wall the plaster would ooze between the strips of wood (if it was done right) then harden. The backside was ugly. But it doesn’t matter. It doesn’t matter because nobody will ever see that side of the wall, and even if they ever did it was when the house was being demolished or new wiring was being installed or whatever and the old plaster that had oozed between the lath was as it was supposed to be (ugly). The ugliness doesn’t matter.

I installed a bathroom light in my rental house, the fixture was made of thin flimsy metal, it barely held its shape when it wasn’t screwed to the wall. The metal was dangerous with sharp edges. But these issues were not a problem once installed, secured to the wall, out of reach of anyone poking it or cutting themselves on the edges. It doesn’t matter.

I added a feature to an existing program but the existing code was crazy and convoluted, poorly written, but because it worked in all the ways it was ever used or needed to work, it was fine.

There was a cosmic cataclysm that killed everything in an entire galaxy. Everything. 100 billion stars, trillions of planets and moons a few of which were inhabited, probably even had sentient races.  Everything was cooked with hard radiation for a million years. This is very sad but it happened long, long ago, far, far away. It has zero effect on me, it can’t possibly be otherwise.

So I buy a pack of a dozen pairs of socks, I do laundry about once a week. The question I mulled over was “Which is better: to rotate through all dozen or just the same six? Sooner or later some will show signs of ware and then I’ll toss those. But along the way I’ll have warn-but-serviceable socks…” The answer is YOU ARE OVER THINKING IT. Just wear the dam socks.

A tree falls in the woods. Whatever. Shrug. Nothing to me.

Analog vs. Digital

When I was young, like back in the 1970s I read articles talking about the benefits of converting from Analog to Digital, the revolution that will spread through the world and into each and every crevice of our lives. An example given was a washing machine and how much easier it would be to have it controlled by a computer instead of switches and relays. That instead of filling with water until a full-sensor switched the valve off, it would wire the water level sensor into a digital box that would then activate to open or close the water fill valve.

Well the year is 2019 and I still have an old analog washing machine and it works fine with its switches and relays. It even has four wash modes, three water levels, and an optional extra-rinse phase. I did not see the advantage.

What I recently realized about those old articles was they missed the point; sure analog works fine, for now. With the current level of sophistication the clock driven switches of the washing machine works fine. But once you start adding sensors and controls and requirements of operation, the complexity of relays and wires and switches, the rat’s nest of wires, quickly spirals out of control and becomes unmanageable.

For example, back then, my step-father Doug designed an alarm system for our house. It had time-delay relays and and locking relays and switches and regular relays and lights and was a glorious creation. But he scrapped it for a Radio Shack system that was digital because it was just too complex to get it to work the way he wanted it to work. And changing how it worked required rebuilding it completely, unsoldering the wires and relays and switches.

Cars are another great example; it used to be there was just the ignition switch that ran from the battery to the starter and that worked fine. But modern cars it requires you to have the brake pedal depressed and the transmission in park. Wires now had to run wires back and forth and the brake light switch down by the pedal has to be wired in to do so much more and sometimes it was a matter of ‘when it is off’ and other times it was ‘when it is on’. A low level of complexity can be managed with switches and relays and wires but add just couple more and it becomes unmanageable.

The solution is to run all the sensors and switches directly into a computer that has outputs to control every device or control. From there the software controls what does what depending upon the situation. So, when you wire the brake-light switch into a computer you can just reprogram it to add features like ‘tap the brake pedal to close the door’ (the Tesla X does this). It is relatively easy to write an involved if-then-if-not-then-else conditional. And instead of running all the door-open switches in series to the dome light you run each one to the computer and one of the outputs would be the dome light, this way you can also determine which door is ajar and display that on the dash.

My next washing machine will have sensors that measure how big the load is, how dirty it is, factors in the water quality and do a better job of washing my clothes. That is the advantage.

The House at 7030

By 1955 the trees had been cleared from the View Ridge lots revealing the spectacular views of the Cascades, Lake Washington, Mount Rainier, and, well, the Sand Point Naval Air Base at the bottom of the hill. This is when my mother, Elaine Roys, a bookkeeper at Peter Kiewit and Sons construction company asked around the office about who she could get to design a house that would stand out in the neighborhood, for her and my dad, Frank. Now, Peter Kiewit and Sons is a company that builds big commercial building and hospitals and freeway on-ramps and the like but they have a subsidiary that did residential construction and they suggested an up and coming architect by the name of Ben Woo.

Ben wanted to get to know my parents before designing their house so he invited them over to learn to play Mahjong with he and his wife. After months of Saturday night Mahjong games he felt he knew my parents well enough and designed their house. His Chinese-American sensibilities rendered a look and feel that could be called the standard in mid-century modern architecture.

Growing up, everyone in my family knew to play Mahjong and in her later years, my mom was the Mahjong shark at the Wallingford Senior Center.

At that time Peter Kiewit and Sons was doing a project in Alaska and the crew had to be furloughed to Seattle for the winter months but, being union, were still receiving pay so the foremen were picked from the lot to build her house. Nothing but the best.

I heard bits and pieces about the construction:

  • Very pregnant with my older sister, my mother went around the house with a putty stick filling nail holes in the woodwork.
  • “There is enough rebar in the driveway you could park a tank on it and not crack it.”
  • “The plans called for construction paper (tar paper) but they had some plastic sheet with wire mesh left over from a project that they used instead.”
  • “They ordered twice as much wood as they needed for the living room ceiling, picked through it, sent the rest back.”
  • A carpenter was pondering while looking at the unfinished window sill: “I know how to do this with two cuts but I think there is a way to do it with only one.” It was done with only one cut.

Ben Woo went on to become a highly regarded architect and a pillar of the Chinese community in Seattle.

On My Mother’s 90th Birthday

Today is June 3, 2018, my Birthday, the 90th.

The world I knew most of my life has changed many ways. I grew up in the 1929 depression, the Real Depression. Banks closed, people (working types) lined up for food. We used and reused everything. We were fortunate. My father was a high school teacher and my mother a very fine piano teacher. We were close to a farming community so we had fresh food. People bartered services for food. Dad bought gunny sacks of potatoes, onions, carrots, cabbage and whatever was available. We raised chickens from brooders to adults. Dad caponized many (we started out with 400 chicks) sold a bunch but kept enough for us. The hens gave us eggs and we had chicken every Sunday.

Postage, I recall, was 3c for regular mail, but airmail was 5c (reserved for emergencies) We had a small air field close to us (Felt’s Field) and every night at 10 o’clock the mail plane took off.

Then WWII came along. jobs really picked up. On Dec 7 ’41 we were guests of the Minister and wife for Sunday Dinner, celebrating Larry’s 5th birthday when the NY Philly was interrupted to tell of the attack. The world changed. I was 13 and in the 8th grade. My home chores included cleaning (vac & dust) the house every Saturday, and shop for groceries (balance the food money ($20 a week) and the ration points. Meat, canned goods, sugar, coffee, butter, etc. etc.) and have dinner ready by 6 PM. Mom had pupils until 6 and usually again at 7.

The phone system has changed. When I was very young (pre school) you picked up the phone and the operator asked for your number. My aunt (Mine) was a telephone operator before she left for the UW. She knew my voice when I called to see if Bobby John could play. I don’t know when the dial came into use. By the 60s? or 70s the touch tone came in. All outside (long distance) calls were chargable. My Dad did not tolerate charge fees, or pay to park. Now I have a cordless phone (actually 6 of them in the house) and no long distance fees. I also have a cell (for emergencies only). Electronics make me dizzy so I avoid it if possible. The young ones can handle electronic toys from birth. I really think many have lost the capabilities to communicate with people. They have their nose in their toy.

Cats I have known and loved.

Cats were always important to me. In my childhood they existed by luck. They received table scraps and a few birds, maybe a mouse ????. Their care was haphazard as I look on it now.

As an adult the first cat I had was for Xmas 1950. We were just married in Sept, and Frank brought home a kitten from the pound. She was Snookie (reg. name was Snikleficity). We had her for 15 years, and she was great. Our first apt was on a hill in the UW district (20th NE). When I came home on the bus from work, she was waiting for me on the roof of a garage on lower street level. She heard my walk before she saw me and would come to greet me. Six years later when we first had Becky she was very put out and jealous. But one day, maybe a couple of months later, she jumped up to investigate Becky, decided she was OK and was her protector. A stray cat came in and was about to go upstairs, Snookie whipped the stray until it escaped. She was a great cat I we loved her dearly.

She was soon replaced (I had to have a cat) by a lovely black, Sheba. And had Mitzie, a beautiful Calico. She had one kitten, had to be taken to the vet to save her and the two kittens she couldn’t deliver. But she became Aunt Mitzie to several other litters produced by SuLin a not very nice but gorgeous Persian. She had a lot and I couldn’t catch her between litters. Mirtzie would wash the babies, cuddle them and try to nurse (it didn’t work) That was 3 cats.

Then we had Sugar and Spice. Sugar was a beautiful long haired white and Spice was a short hair black. One day my Mother was visiting, and sat at the piano playing for about an hour, Sugar at her side on the floor, intent on the music. When Mom thought she wanted to go rest, Sugar took her back to the piano. Mom thought she was the smartest cat she had ever known. We loved both cats a long time, but they finally left us. I still had Spice when a friend of Mom’s at her retirement apartment wondered if I could take a cat that had to be taken as a stray. That was Sherman. He was taken to a vet by the owner of the ret Home, had him cleaned up, shots, etc. and was presented me with a lovely Tabby we had for 19 years. He was special, a gentleman. He greeted visitors at the door, in a group he would welcome each person. He saw me through some hard years. Lost Mom and Douglas. When he had to be put down (he had kidney failure) I was devastated.

NOTE: the above was a hand-written essay my mother never told me about. We found it clearing out her house after she passed away 6 April 2019. She had more cats than she told but I’ll leave her story as-is.

New Development vs Debugging

I was asked which I prefer; New Development or Debugging. I used to say New Development because you get to create and design and plan and build and interact with the customer first-hand. Now I say Debugging because there is no downside, no liability, only rewards and praises. But it could also be said that I need to get out of my comfort zone.

When developing new products you have a clean slate and that is the double edged sword: you get to create fresh, you also get blamed for picking a bad architecture. When debugging existing code you have to work within the existing framework and that is the double edged sword: you have to work with the mess, the bad ideas, the junk code of your predecessors but when you fix a bug you get accolades and kudos.

You can make a living doing either one and if you live long enough you get to do both with the same code base: fix your own bugs. That is humbling and educational.

There is refactoring: rewriting code that was once good but is now no longer viable. Just don’t break anything.

Transitions

My Career, the High Points, the low points, things not in my resume.

MBSI

Spring of 1982 I was about to become unemployed and a friend told me about a company just around the corner that was hiring programmer trainees. I don’t know how she knew I was into that but grateful nonetheless. I stopped in at the office of Micro Business Software Inc, third floor of the Colony Building and met with the CTO, Scott Snow (maybe he was “VP Tech”, I don’t remember). I told him I was interested in the job, that I knew how to program, had taught myself FORTRAN and Wang 600 machine language. He was impressed and asked me for a resume so that night I typed out what was more of a cover letter since I had no professional programming experience. The bottom line (actual last line of the letter) was “I’d like to start work on Monday”. He read it over and said “OK”. And that was it! That was all there was to the hiring process. I was handed a book on CP/M and was started on editing COBOL programs. This is how I started my career in Programming.

MBSI sold COBOL accounting programs for small businesses to use and the source code for companies to customize for vertical markets. In 2002 I did a google search and found RealWorld COBOL source code I worked on in 1983 was still being sold!

And I kicked ass: I managed the DEC mini computers and did all the bulk editing jobs with TECO macros (I became a maistro), and did some bleeding edge development.

Once I was explaining to a co-worker what was wrong with a big complex ‘if’ statement and the right way to do it and he pointed out ‘you have real savvy’. I didn’t appreciate that as much as I should have.

Later, a couple years down the line, MBSI renamed itself RealWorld Software and moved around the corner. At this time we acquired IBM ATs running 286 chips at 6 megaherz (ooh aaaah) and I snagged my co-worker’s Turbo Pascal disk, loaded it on my AT and wrote my first program in Pascal a 3D graphing of mathematical formulas. I wasn’t shy about my work and would leave the graphs displaying on my screen.

About that time, 1985, the owner of the company, David Gale, spun off a Department of New Technology. They were interviewing other programmers to see if they wanted to join the group and learn to program in “C”. They didn’t even ask me, they just gave me a new computer, a new desk and Plum’s book on how to program in C and told me “Start”. I ate it up.

Practical Software

That new department became a new company, Practical Software, a small company. We moved up stairs. Shortly and through attrition I became VP Tech or VP Programming. I worked long and hard on developing DOS applications in C. We had our own UI and DB libraries. Now that I look back on it, we should have sold those as products, that would have been rich.

David bought the building next door and renovated it. Practical Software moved in and enjoyed a big comfortable space. I had a twelve by twenty office with a big sliding glass door looking out to the common area. Cool.

Money dried up and the products finished and out the door so I had to find new work. At that time, 1991, the newspapers were the only source of jobs and I quickly found jobs that fit my skills

TTI

Southern Datacom

Over the past many months I had collected business cards and had a three or four inch stack. When I was out of work I just started cold-calling names in my stack of cards when I got to Gary Eng of Southern Datacomm. Gary had a shop set up in a store front even though they had no customer traffic, it was just an affordable location and I had stopped in to chat a couple of times on my afternoon walks. The call went like this:

“Yes, can I speak with Gary Eng?”

“Is this about the Programmer position?” (I hadn’t mentioned who I was)

“Aaah, YES, this is about Programmer position.”

So I made an appointment to come in for an interview. One of the best interview processes I ever ran: every question they asked I had a “Yes, I just used that in the project…” kind of answer. The process went from manager to manager and finally to the President, Gary, he just waved me away with a “I don’t need to talk with Brian.”

This was before the days of cell phones so by the time I had gotten home the message was waiting for me that I had the job.

The down side (it turns out) that I was under very heavy performance pressure, my pay was dependant upon it, and my stomach was upset for the duration of my employment (to the very day). And I never got the review I was supposed to get (my fault for not pressing the issue). Anyway…

Axiom

So its 1992 and I’m working at Southern Datacom, hating every day until the day I got the call: “Hi. This is Steve Palmer, I know you from RealWorld but now I’m with David Greenbaum here at Axiom and we’ve been talking about high powered programmers we could hire and your name keeps coming up. Want to talk?”

So I was hired, like that night. But everyone at Axiom worked at their own home, everyone. So I had to set up my own home office and that was cool. So for ten years I’d work at my little home office, crank out the code, handle support, write documentation and own my two products (CellManager and RefManager).

I learned MicroStation Development Language (MDL) and that put many a paycheck in my pocket. There are few MDL programmers and when one is needed my phone lights up. I’ve done work, several contracts, for Verizon using MDL and my knowledge of MicroStation.

The down-side of this was that I was locked into a procedural language writing event driven applications while the rest of the world was getting on the Object Oriented Programming bandwagon. I was behind the times. I didn’t get to play with OOP for years.

Sandia National Labs

“I’ve emailed you the specs for a project we’re doing for Sandia National Labs. We farmed it out to a company in India but just today they told us they didn’t know how to do it. It is due Wednesday after next and it is a government contract so if we screw it up we won’t get any more.”

Steve went on to give me ideas on how to accomplish the task, full go-ahead to work as many hours as I need and they would cover extra expenses as-needed. So I did.

I wrote a multi-thousand line MicroStation Basic ‘macro’ (I found out macros were never expected to be more than a dozen lines or so) that performed the tasks required within the constraints defined.

I got to chat with the people at Sandia National Labs and that was fun: “You guys make atomic bombs, don’t you…”

I delivered just in the nick of time. And I received a bonus. And the following Friday I was at a screening of an indie-movie and David Greenbaum, the owner of Axiom, was there too. He enthusiastically introduced me to his table “This is Brian, he saved our bacon.”

LinkFixerPlus

Pegasus Digital Imaging

Corpus

The

Youngsoft / Integrated Health Plan

So I just finished the job with Corpus/Verizon and put out my feelers, starting to get some action when I get a call: “Hi, this is Jill from Youngsoft up in Detroit. We have you on our short list for a job in Saint Pete., actually you’re the only one on the list so don’t screw it up for us. We’re going to pay you $48 per hour and you have to work from home. Do you want medical/dental? You need to go over and meet with the Project Manager, Jennifer, she will get you started.”

So I met with Jennifer (Who used to be a guy named Ed!) she gave me an envelope with screen sketches on the back (yes, really) and a CD with a sample database; “We need it to do <this and this>. Call me when you have a prototype ready to show.”

So I went home and in three days had a running application that did what she had asked so I called her up and told her. “Great. Meet us at 10:00 Wednesday”

I show up Wednesday, I put it up on the big screen, the room has managers and clerks and everyone and I give them a show-and-tell. We order out for lunch. They give me feedback and I have a laundry-list of features and changes and they end the meeting with “Great. See you next Wednesday.”

And that is how it went for two and a half years.

The Great Recession

Loop LLC

Aricent / Verizon Data Services

This was a doomed project: they intended to hire a team of MDL programmers in the Tampa area to work out of the Telecom Park building (F4) but only got me.

Insight Global / AAA

Price Waterhouse Cooper

Modis / Chase Paymentech

Vastec

Applicant Insight

Bridgeline Digital

Pegasus Transflo

SaviiCare

Reputation

It takes only two or three events to get a reputation. Good or bad, if you do something, something out of the ordinary, something notable, do it two or three times and people will expect it of you or know you for it.

I show up to work wearing a bowtie, next wednesday my co-workers are asking where the bowtie is and that is how ‘bowtie Wednesday’ got started. Next thing I know I’m expected to wear a bowtie for a video shoot and that the big finance guy has been talked into wearing a bowtie and I have to do so when he shows up.

The takeaway is don’t squander your reputation.

Tools

Blacksmiths were in an enviable position: they could build most of their own tools. Need a pair of tongs, start hammering out a pair of tongs. You may have to borrow a hammer but a bad hammer is not much worse than a good hammer and then you can pound out a better hammer. And it builds from there.

Programmers are in much the same position; they can build their own tools. This started early on with compilers and editors; we needed something to start off with then we used them to build better editors and compilers. And it happened fast. As a matter of fact there is some kind of designation when a compiler can compile the code used to build itself.

Through the years, programming has created many of its own problems; version control, sprawling projects, poorly written and hard to maintain code. It has also created its own solutions; MVC, Git and Visual Studio, are the current pinnacle of progress.

Stories from My Dad

On our last visit to my dad, Frank A Roys, I scribbled down an evening’s worth of storytelling. I’m transcribing it here for posterity. 

1930, Winfield Kansas

Dad worked for Jack Lane Chevrolet. Networking, until summer of ’35.

Keith born 1930, March 25th.

Frame house, first lived in an apartment. Remember two bedroom house but it must have been three because Aunt Emma, Lidia’s kid sister, came to live with us.

Hary Longfeffer — quiet the joker – “Over the fence the cow some hay throw.”

FRANKIE HALBERT – kid next door works himself up into frenzy, hit Frank in the nose give him a nose bleed and run home to tell his mother he was in a fight. After five or six times I saw him winding up, blocked his punch, caught him as he ran away, use wasteband on the ground where I found a rock from garden and hit him in the back of the head – put an end to that. 6 years old. His mother came over screaming , my mother and Aunt Emma were laughing about the “I’m dying…”

Dad worked for a Chevy dealership so every year or two we would have a new car.

Aunt Helena (Lena) married Longfeffer (Longhoffer?), had Clifford one month younger than Frank. 

John Litke, born in Warsaw Poland, in the German Ghetto. Moved to Russia looking for a better life- wound up in Manitoba, Canada. At German club he met Flaie Slochim, she was born in Warsaw also – never met there, got a homestead (had to improve property – then it was your). They lived in a doug out in side of hill.

They had to wrap up baby Lidia in a shirt.

There is a picture of grandpa with his pet bear.

Logged property for 3-4 years.

Lidia was born 1900 (1899-1901 records were burned in court house fire)

1911 they moved to TX for less than a year then moved to OK.

Roys Family:

  • Marco – oldest
  • ?
  • Rhubin
  • Phillip Allen Jr, hated “Al”
  • Luciel
  • Cousin Phil,
  • George Pat Roys

Lots of “Pat & Mike” jokes – Irish.

The 4 older brothers made up a quartet, they would sing during the Amature Hour between movies to get in free. They would pay for their dates, see a movie, excuse themselves , go up on stage to sing. Marco was the best singer. All were base. He would sing “Asleep in the deep” and win 1st place all the time.

Lidia and her brothers and sisters would kid each other about being Polacks or ‘hangaks’ They were Germans born in Warsaw but never really Polish.

We had a dog part german shepard part big dog. The dog would sit on the running boards as we drove around. once dad made a tight turn and the dog went straight – yelping. We had to slow down while the dog caught up and got back on the running boards.

Reuben graduated from Eastman school, top bookkeeper. Rich kids paid him to do their books.

Aunt Emma lived with Lidia and family. When Keith was born he had colic and would start crying in the middle of the night, and the only thing she could do was pick him up and rock him. It worked, they developed quite a bond.

Vocation Class Seaside OR 38. Mom taught girls to sew and I learned woodcrafts. Wakefield family taught crafts. 

He was a retired missionary, he had malaria had to move to Seaside OR. Wednesday night social that is where I learned “winkum”

Dad worked for Weyerhaeuser, logging – one log per truck. It took at least two days per tree. Most was Fir, some Hemlock, some Cedar. The trucks would come down to the office and get ‘scaled’ before heading to the mill.

After Weyerhaeuser logged it out he went to work for Corverse & Hitchmen and for bunkhouses and office in Elsie OR, wide spot in road. Lived in stree6t car used them for offices bunkhouses, mess hall, etcv.

Less than a year,m moved back to.

Started freshman year in Seaside then moved back to Arkansas. First dad told me Father needed help. Truth was the company wanted him to cook the books. He called parents and moved back home, quit the job. He won’t admit it, make a scandle. Turned out Father wasn’t feeling too good. Needed help with hardware store. Russellville, Arkansas. Frank had to graduate Jr. High School twice. Arkansas had a high school system that Seaside didn’t.

After I graduated from 8th in AR went back to Seaside for the summer. House had an alley running behind it. One day a truck dropped off a snag – a 20 foot piece without any limbs. A man with a gas powered cross cut saw and sliced it into 16″ sections. It was my job to use axe, wedges and sledge hammer – bust it up into firewood big pieces for fireplace and heater and some for kitchen stove and kindling. 3 sizes. In winter place we would block off fireplace with plywood p,ae a stove heater with pipe through hole.

Lived in basement apartment of a hotel at ground level. When it rained we had to walk planks.

I was a pinsetter at bowling alley. half dozen of us. We went to beach and got cracked crab.

Tarter Sauce:

  • 4 Mayo
  • 3 Ketchup
  • 1 Relish
  • Dash lemon juice.

Went to my place to eat it as it was closest. 13-14 years old. We worked 7-11 when they closed. Had to guess what it was made with

Brittle Software

Some months ago a manager referred to an existing method as ‘brittle’. I knew the standard definition to the word and inferred the meaning in this context but only afterwards have I settled on what it really means for software to be brittle.

Software becomes ‘brittle’ if too many assumptions have been made; “It will never be run on anything less than 1024×768 resolution”, “The user knows to enter the numeric serial number here”, “The quantity is never zero”, “We expect no more than ten users at any given time” and so forth.

Brittle software usually works just fine, or at least it does in the beginning or without too much extensive/excessive use. The load piles up, the users try unusual stuff, sometimes then the cracks start to show.

Robust software, on the other hand, makes the opposite assumptions; “We have to check the resolution of the display”, “The users may enter the date incorrectly”, “The database can contain anything (or nothing) in any column”, “The connection may drop at any time”, “The user may run the process for days on end”, etc. Hard coded values and factors are a common source of brittleness.

You have to actually pay attention to the stated requirements and look for actual real-world shortcomings. And that is how you make resilient software.

« Older posts