Programming The Sierras

Insights to high quality software development

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.

Cut & Paste Programming

It is nigh impossible to resist the urge to copy a file or a block of code to repurpose it. This is a good thing to reuse working code. Just Ctrl-C, Ctrl-V, rename what needs renaming and you’re done.

Right?

Wrong!

All too often this ‘easy’ task goes off the rails and your code gets broken in the process. It is too easy to miss something in your rename process, to miss a required change.

All too often the least that goes wrong is the error messages and comments talk about the old version.

So… the rule to make Cut & Paste Programming work is: always rewrite the whole the whole thing from top to bottom. As if you’ve never seen it before, line by line, clean it up.

Or if you are really good just refactor the module to a more generic form and call it with appropriate parameters, that is the right solution. 

Time

Once upon a time I had an epiphany, an epiphany about time. My recollection of the event, of letting go of my slavish dependence to time, is crystal clear.

2008, November, my sister in-law was moving from a remote location in Washington state to an even more remote location in the heart of Tennessee and was down in Tampa to pick up a load of household goods we had acquired. We loaded up a cargo trailer, my Dodge Ram pickup, my sister in-law’s huge Dodge van and an S-10 pickup and headed out.

It should have taken a long day to get to Deer Lodge.

We couldn’t get out of the front yard without a minor disaster: the trailer hitch jammed itself into the dirt but thanks to a landscaping crew passing by at that exact moment we were quickly unstuck and on our way.

Then the trailer’s left tire shredded itself up where I-275 and I-75 merge. I was all zen about having to take the tire off to go replace it. I first stopped at Sam’s Club but they didn’t have trailer tires and that I needed to go to the next exit off of I-75 for a real tire store where they did put a new tire on the wheel. I then went back south, well past where the girls were waiting, loop around and meet back up with them. I quickly replaced the tire and we headed to the tire store to replace the other one.

But it turns out the S-10 was not up to the job of pulling the trailer so we switched it to the Van which easily handled it but it didn’t have the proper electrical connection for the trailer’s turn indicators and tail lights so we found an auto parts store where they fashioned an electrical adaptor and send us on our way. Also I took the helm of the S-10 at this time and Chris, my wife, drove the Ram pickup.

We made it to Lake City and found a hotel by sun-down. A friend who was tracking our progress reported we were making an average speed of nine miles-per-hour; wow.

The next morning we made an easy-going start but hit bad traffic and very heavy rains in Atlanta. We made the mistake of taking the bypass route which was jammed with road-raging truck drivers one of which tried to run me off the road. I’d like to point out the S-10 was in a rough condition: bad windshield wipers, no music, loud muffler, and a uncomfortable seat but I was being all zen about it. We made it to north Georgia that night.

The next morning we took off and checked out a job site in Knoxville and got new wipers for the S-10 (yay) before continuing on to her new property in Deer Lodge. Let me put it this way: you get off the interstate and on to a state road, you then get off the state road and on a county road, take a turn off the county road and onto a local road which leads to a country road then a dirt road and then to a steep gravel private driveway to her place.

It was a wood tent in the middle of nowhere. And there were no leaves on the trees and it was gray and rainy and it was cold and I was miserable.

As soon as we pulled in I sized up the situation and was all ready to unload the cargo and head home, right away.

Chris saw my discomfort and got us a room at a LaQuinta twenty miles away where we had hot water (none at the property and no water and no toilet) and electricity and wi-fi and soft beds.

So we got Cailin settled into her place and spent a day there. Monday, we gassed up the van so Cailin and Chris could drive back to Washington to get more stuff and I gassed up the Ram so I could drive home. I mapped the route and committed it memory (pre-smartphone era) before taking off.

I headed south on state road 127, down the Sequatchie Valley. I reset the trip odometer and noted the time and in my head calculated my ETA.

“NO!” I told myself (this is the epiphany).

Just drive, it doesn’t matter when I should get there. I’ll get there when I get there. Tampa will be there at the end of the trip no matter what, it isn’t going anywhere. Time didn’t matter. I took my watch off and stashed it so I couldn’t habitually refer to it or robotically check it. Time didn’t matter.

I relaxed. I relaxed because time didn’t matter.

And I drove down the Sequatchie Valley. The road is a lazy left-right left-right, little up, little down though overall it was downhill for 100 miles so the drive was easy. And the valley was beautiful, trees were in color, some bright orange. I got in behind a Jaguar doing 85 and cruised down the road. I was at peace with the world.

« Older posts