avatarDean

Free AI web copilot to create summaries, insights and extended knowledge, download it at here

3617

Abstract

se electrons moved around inside the CPU, that course in Assembler scratched my itch just enough. I later used it to speed up the drawings in a product called Linneaus, the first x86-native graphical <i>C++</i> class browser, and by then I did indeed understand how moving those ones and zeroes from register to register made something appear on the screen.</p><p id="f94e">And I then used MASM to emulate a telephony switch, which is how I got married.</p><p id="2eaa">My lifelong goal had always been to live in Colorado, ever since my Dad took me on a trip to the Rocky Mountain National Park at the age of five. So, after I finally got my first C programming job in Kansas City, I immediately started looking for a new job out of state. I spent over a year driving across town to the one newsstand I had found that carried out-of-state newspapers. I bought the imported Denver Post every Monday and snail-mail applied to Lord knows how many jobs (waaaaay pre-Linked-in.com, or upwork.com, or any .com) until I finally got a response from US West (the former Rocky Mountain regional phone company once a part of Ma Bell aka AT&T… nevermind) in one of their more interesting subdivisions, then called Knowledge Engineering. They developed hardware and software to replace the dedicated 911 and 411 operator terminals of the day with a PC plus a custom computer-on-a-card combo.</p><p id="01d6">For my interview, I drove across the Plains through a Wrath-of-God snowstorm to find Denver buried under three feet of fresh powder and arrived two hours late to my interview. The white-out was so bad I often couldn’t even tell where the road ended and the sidewalk began, nor could I read the street signs which were coated in snow. The people I met briefly were very pleasant about the whole thing, but they didn’t want to talk to me until I took their test — kind of like “Don’t name the puppy ‘cuz then we have to keep it.”</p><p id="70ee">I can’t really remember what was on it save something about triply-dereferenced pointer arithmetic, and I know it truly made me sweat. They were quite serious about their <i>C</i> since they built the operating system and device drivers for their custom silicon from the ground up. Even their own windowing system.</p><p id="3e6e">As an aside, this was, BTW, <i>completely illegal</i>. It violated the federal consent decree for the break-up of AT&T and the Baby Bells. Our office got shut down by the Feds about two years after this and US West, if I remember correctly, got a stern talking to — “Don’t you dare break that consent decree again, mister, or you’ll go to your room without dinner and no more stock buybacks!” — plus a slap-on-the-wrist fine. But that’s a story for another time.</p><p id="75cc">Anyway, I passed their gatekeeper test — “maybe we can keep the puppy” — and the interviewer’s first directive was: “Talk to me about Assembler.”</p><p id="e04c">Maybe I only had classroom experience, but x86 Assembler programmers didn’t just pop out of the dot-matrix printers, especially in that era. While the language may have been taught in a big university somewhere, as far as I know it didn’t merit mention in virtually any four-year curriculum, PC’s still being relatively new. My local JuCo just happened to have a teacher who wanted to teach it, and so I lucked out.</p><p id="686e">It got me the job. Then a best friend, and then a wife.</p><p id="a285">My first task was to develop a device driver for one of the cards that emulated a 411 operator’s terminal. But they didn’t have a switch (the specialized computer the terminals addressed for ca

Options

lls) to connect to. Which was funny, when you think about it — a telephone company that didn’t have a spare switch.</p><p id="9123">But there you go.</p><p id="d88b">They had a prerecorded set of data that a real switch had sent, and I had to first create a dummy ‘switch’ to send and respond to data on a second machine to test the device driver I was writing on that end. Since they had recorded hours of both sides of the ‘conversation’, all I had to do was exactly match the prerecorded responses.</p><p id="37b8">They gave me a cubicle, two computers, a cable, a copy of MASM, and just let me tippety-type away. I learned a ton of new stuff — practical, as opposed to homework Assembly; serial communications, device drivers, telephony, and rigorous testing. A total blast.</p><p id="a606">Until they sent me out on a surprise install to a local phone company in Arkansas which was not fun at all, and ended up with me getting a colleague fired after his front-end crashed and burned during live calls.</p><p id="708b"><i>Sorry dude — still feel bad about it.</i></p><p id="f860">(That debacle is a whole other story involving a Japanese lunatic, all the beer in the world, and a sexual dysfunction hotline. But I digress. Another article, perhaps.)</p><p id="6300">A little over a year after I got hired, my co-worker and new best friend Rasta and I skipped out of work early (we’d been putting in some serious deadline hours) and went to a newish bar called the Tijuana Yacht Club in the basement of the old Tivoli Brewery downtown (which building is now CU Denver’s Student Union. Go figure.)</p><p id="711a">I walk in and the first thing I see is a short, green-eyed, freckled girl in an even shorter turquoise dress, hopping up stomach flat on the bar to hang head-down and tell the kneeling bartender to “put more Tanqueray” in that Tanqueray tonic he’s about to make.</p><p id="d97e">And that’s how I met my wife.</p><p id="8c21">She’s Irish-Catholic, by the way, in case that wasn’t readily apparent.</p><p id="ec0b">But if I hadn’t taken Assembler, I wouldn’t have gotten the job in Denver, wouldn’t have gone to the Tivoli, and wouldn’t have met the hot Irish girl I married eight months later.</p><p id="7384">So <i>that’s</i> how x86 Assembly got my wife pregnant and gave us two kids.</p><p id="1587">Thank you, x86.</p><p id="3f64">The moral of the story is: follow your interests and take that obscure class — there’s absolutely no telling what opportunity it might bring you.</p><p id="1b96">(P.S. it has all come full circle — our oldest girl is now a CS major and is taking Assembler this fall semester. Pity her.)</p><h1 id="fc01">Blatant Self-Promotion</h1><p id="5e77">If you liked this article, and are into software development, you might find my series on the principles of software engineering of interest. I developed it after witnessing the — shall we say ‘uneven’ — level of material in my daughter’s CS curriculum.</p><div id="3a13" class="link-block"> <a href="https://readmedium.com/software-engineering-the-missing-course-2e49ffe79733"> <div> <div> <h2>Software Engineering : The Missing Course</h2> <div><h3>Never comment your code… if you have to comment it, you didn’t write it well enough.</h3></div> <div><p>medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/1*RmTvb061xIcyeZiLTZrIGQ.jpeg)"></div> </div> </div> </a> </div></article></body>

How Assembler Got An Irish Girl Pregnant

The unexpected result of too much MASM, photo by author

Like most coders of my generation, BASIC became my first computer language, with COBOL being my second courtesy of the local junior college. But neither prepared me for a truly unpleasant four-year university (cough-KU-cough) where I was subjected to Pascal and dismissed by long-haired dudes Lisping about AI.

I thought it all well and truly beyond my grasp. Though much later I found that none of their BS or code (if they did actually code) would lead to anything useful. While we as a species are finally making progress on AI, Lisp is (mostly) ancient history, and we don’t have intelligent robot manservants doing our Smalltalky bidding. Even with Tensorflow-forward-propagating-neural-network-deep-fakes my Pixel phone fails to understand anything beyond the most rudimentary sentence fragments, and Maps tried to drive me into a river last week.

But at the time all that talk intimidated me, and so, instead of looking up the stack, it being incomprehensible from where I stood, perversely, I looked down.

I didn’t understand what those guys were saying, and it made me realize I didn’t know how any of it actually worked. What actually went down in the CPU.

This bothered me.

Greatly.

Smoke and mirrors, wingardium leviosa, for all I knew.

You fellow compunerds will no doubt understand — I needed to know how the ones and zeroes got distilled from:

do {

some cool shit;

} while(poor==true);

// cash out unicorn for thick stacks

Every stupid magazine article of that four-decades-old ‘computer age’ pontificated about the ones and zeroes that would someday rule our lives blah-blah-blah, but where the hell were those ones and zeros? I certainly wasn’t typing in 101001001 010 1001000 anywhere in my TRS-80.

So, after I had left my accidental consultancy (see my introductory article) and landed a good job, I went back to night school for a CS + Business degree. I had seen Michael J. Fox’s Secret of My Success and thought — that’s what I want to be, but using a compiler instead of the boss’ wife to become a mega-rich master of the nascent digital universe.

(This didn’t happen.)

Since I had no idea where to start, I talked to a professor and he linked me up to the JuCo’s Assembler class. I had never heard of the language before, but he assured me that it was as close to the metal as I could, in reality, get, since trying to hand-code a significant computer program in machine language was a fool’s errand. Apparently.

So I enrolled.

Besides being great in and of itself, learning MASM (the actual package we used) gave me a lifelong appreciation for the next step up the evolutionary ladder — the beautiful elegance of Kernigan and Ritchie’s C, which is both so expressive and so succinctly compiles down to Assembly. As does C++.

The course was one of the most demanding scholastic learning experiences of my life, and I absolutely loved it. While in the end I realized I still didn’t really know how those electrons moved around inside the CPU, that course in Assembler scratched my itch just enough. I later used it to speed up the drawings in a product called Linneaus, the first x86-native graphical C++ class browser, and by then I did indeed understand how moving those ones and zeroes from register to register made something appear on the screen.

And I then used MASM to emulate a telephony switch, which is how I got married.

My lifelong goal had always been to live in Colorado, ever since my Dad took me on a trip to the Rocky Mountain National Park at the age of five. So, after I finally got my first C programming job in Kansas City, I immediately started looking for a new job out of state. I spent over a year driving across town to the one newsstand I had found that carried out-of-state newspapers. I bought the imported Denver Post every Monday and snail-mail applied to Lord knows how many jobs (waaaaay pre-Linked-in.com, or upwork.com, or any .com) until I finally got a response from US West (the former Rocky Mountain regional phone company once a part of Ma Bell aka AT&T… nevermind) in one of their more interesting subdivisions, then called Knowledge Engineering. They developed hardware and software to replace the dedicated 911 and 411 operator terminals of the day with a PC plus a custom computer-on-a-card combo.

For my interview, I drove across the Plains through a Wrath-of-God snowstorm to find Denver buried under three feet of fresh powder and arrived two hours late to my interview. The white-out was so bad I often couldn’t even tell where the road ended and the sidewalk began, nor could I read the street signs which were coated in snow. The people I met briefly were very pleasant about the whole thing, but they didn’t want to talk to me until I took their test — kind of like “Don’t name the puppy ‘cuz then we have to keep it.”

I can’t really remember what was on it save something about triply-dereferenced pointer arithmetic, and I know it truly made me sweat. They were quite serious about their C since they built the operating system and device drivers for their custom silicon from the ground up. Even their own windowing system.

As an aside, this was, BTW, completely illegal. It violated the federal consent decree for the break-up of AT&T and the Baby Bells. Our office got shut down by the Feds about two years after this and US West, if I remember correctly, got a stern talking to — “Don’t you dare break that consent decree again, mister, or you’ll go to your room without dinner and no more stock buybacks!” — plus a slap-on-the-wrist fine. But that’s a story for another time.

Anyway, I passed their gatekeeper test — “maybe we can keep the puppy” — and the interviewer’s first directive was: “Talk to me about Assembler.”

Maybe I only had classroom experience, but x86 Assembler programmers didn’t just pop out of the dot-matrix printers, especially in that era. While the language may have been taught in a big university somewhere, as far as I know it didn’t merit mention in virtually any four-year curriculum, PC’s still being relatively new. My local JuCo just happened to have a teacher who wanted to teach it, and so I lucked out.

It got me the job. Then a best friend, and then a wife.

My first task was to develop a device driver for one of the cards that emulated a 411 operator’s terminal. But they didn’t have a switch (the specialized computer the terminals addressed for calls) to connect to. Which was funny, when you think about it — a telephone company that didn’t have a spare switch.

But there you go.

They had a prerecorded set of data that a real switch had sent, and I had to first create a dummy ‘switch’ to send and respond to data on a second machine to test the device driver I was writing on that end. Since they had recorded hours of both sides of the ‘conversation’, all I had to do was exactly match the prerecorded responses.

They gave me a cubicle, two computers, a cable, a copy of MASM, and just let me tippety-type away. I learned a ton of new stuff — practical, as opposed to homework Assembly; serial communications, device drivers, telephony, and rigorous testing. A total blast.

Until they sent me out on a surprise install to a local phone company in Arkansas which was not fun at all, and ended up with me getting a colleague fired after his front-end crashed and burned during live calls.

Sorry dude — still feel bad about it.

(That debacle is a whole other story involving a Japanese lunatic, all the beer in the world, and a sexual dysfunction hotline. But I digress. Another article, perhaps.)

A little over a year after I got hired, my co-worker and new best friend Rasta and I skipped out of work early (we’d been putting in some serious deadline hours) and went to a newish bar called the Tijuana Yacht Club in the basement of the old Tivoli Brewery downtown (which building is now CU Denver’s Student Union. Go figure.)

I walk in and the first thing I see is a short, green-eyed, freckled girl in an even shorter turquoise dress, hopping up stomach flat on the bar to hang head-down and tell the kneeling bartender to “put more Tanqueray” in that Tanqueray tonic he’s about to make.

And that’s how I met my wife.

She’s Irish-Catholic, by the way, in case that wasn’t readily apparent.

But if I hadn’t taken Assembler, I wouldn’t have gotten the job in Denver, wouldn’t have gone to the Tivoli, and wouldn’t have met the hot Irish girl I married eight months later.

So that’s how x86 Assembly got my wife pregnant and gave us two kids.

Thank you, x86.

The moral of the story is: follow your interests and take that obscure class — there’s absolutely no telling what opportunity it might bring you.

(P.S. it has all come full circle — our oldest girl is now a CS major and is taking Assembler this fall semester. Pity her.)

Blatant Self-Promotion

If you liked this article, and are into software development, you might find my series on the principles of software engineering of interest. I developed it after witnessing the — shall we say ‘uneven’ — level of material in my daughter’s CS curriculum.

Computer Science
Life Lessons
Entrepreneurship
Programming
Consulting
Recommended from ReadMedium