Farpoint Engineering

In Long Forgotten Computer Technology, written in 2008, I wrote about having used Weitek math coprocessors. In 1988, Bill J. and I developed a Micro Channel card with a Weitek co-processor for IBM PS/2 Model-80 PC's. Bill did the hardware and I did the software. We called ourself "Farpoint Engineering" and we eventually sold the design to Microway who managed to sell some boards. A few documents from that era still exist.


I wrote a terminate-and-stay-resident program to install an "int 15h" interface between applications and the hardware, but that code is long lost.
Comments

Dad & Koala, Me & Monkey

Dad.Koala.snapshot
Dad with a koala in Sydney, Australia; May 1985. Taken with Kodachrome 64; AE-1 Canon; automatic exposure.

Click for larger picture.

Note that the koala is clutching a stuffed animal. That keeps their claws in the doll and not in you.


Monkey.snapshot
Me with a monkey. I don't remember this picture being taken, I have no idea where it was taken, and I have no clue as to the monkey's name. A business card was attached. Jasmine Technologies, Inc. was in business from 1986 to 1990. They made an external SCSI drive for Macintosh Computers. I was most likely working for Quadram/National Semiconductor (12/86 to 6/90). While they primarily made accessories for IBM-PC computers, they also had a NuBus color graphics card for the Mac. I could also have been early in my time with DayStar Digital (6/90 to 4/96).


Comments

3M Datavision D-8000

D8800

The 3M Datavision D-8800 was a character generator for the television broadcast industry. It existed circa 1977-1986 and very little information about it exists on the web, outside of mentions in trade journals. There is a Wiki for character generators, but the entry for the D-8800 is mostly empty. A semi-technical marketing presentation can be found here1. A description of the product and its price2 is here3. A comparison of features between various brands of character generators from 1983 is here4. Several ads from the trade journals can be found here5, here6, here7, and here8. An article featuring a D-8800 in a studio is here9. Want ads from 1985 for people with D-8800 experience are here10 and here11. A used D-8800 was offered for sale in October, 1990, here12.

I worked on the software for the D-8800 from circa 1978 to possibly as late as early 1981. Memories fade after 45 years. But I kept the following material among my memorabilia:

The D-8800 was powered by two Intel 8080 microprocessors. One controlled the keyboard, floppy, and possibly other peripherals. The other managed the fonts and the character layout and attributes for display by the video hardware. "Suds" designed the 8080 boards (which, if memory serves, were 18"x18" wire-wrap boards). Steve designed the video hardware. 3M contracted with Xener Corporation, which was a small consulting firm in Springfield, VA at the time, to write the software. "Duffy" M. wrote the intial software and I took over for him later. The software was written in assembly language, developed on an ISIS-II system. Two ICE-80's were used to load, run, and debug the code.

The keyboard was a "beast". Not only did it have a QWERTY keyboard, it had a number of buttons for selecting fonts and colors, and for starting various operations such as roll (scroll multiple pages of text up or down) and crawl (scroll a line of text across the screen). There were lights that could be turned on, off, and flashed for operator feedback. There were four seven segment LEDs above the numeric keypad. Files were stored on floppy by number, 0000 (?) to 9999 and the LEDs were used to display that number to the user. There was an LCD screen for user instructions and feedback.

The two computers communicated via DMA. The video system had an interrupt for vertical sync which, if I remember correctly, was the only timer the system had. Because the display CPU had the timer, as well as the need to keep the video system fed in conjunction with vertical sync, it constantly told the system CPU what it needed and when. It would also ask the system CPU if the user had done anything it needed to know about. This caused one of the more interesting problems in my career. The system would lock up, but so rarely that the problem could never be reproduced. After a year and a half I discovered that the DMA register that contained the amount of data to transfer would not have the value that was written to it. So one CPU would wait forever for a transfer to complete. Suds then found that if the system was doing everything all at once that the voltage might drop below nominal levels causing the malfunction in the DMA register. Fixing the problem was easy - the length value would be written, then read back, until what was read matched what was written.

HPL
As this screen shows, the D-8800 had WYSIWYG editing and display of proportionally spaced fonts before this was made popular by the Macintosh. But we were too focused on the broadcast industry to think about printers and documents.

All tech products have a lifecycle. In 1984, 3M announced their BFA system, here13. But this at least was three years after I had moved on.



[1] Excerpted from the 1978 Proceedings of the "
31st Annual Broadcasting Conference" of the NAB", pages 30-33.
[2] In all of the years I worked on this product, I never knew how much it sold for. $28,990!
[3] Excerpted from "
Video Images, 1982", page 134.
[4] Excerpted from "
BroadCast Engineering's Spec Book, December 15, 1983", page 48
[5] Excerpted from "
Broadcast Engineering, March, 1977", page 41.
[6] Excerpted from "
Broadcast Engineering, January 1979", page 21.
[7] Excerpted from "
Broadcast Engineering, March 1981", page 145.
[8] Excerpted from "
Broadcast Management/Engineering, October 1983", page 120.
[9] Excerpted from "
Broadcast Management/Engineering, December 1985", pages 83-84.
[10] Excerpted from "
Broadcasting, April 22, 1985", no page numbers.
[11] Excerpted from "
Broadcast Engineering, December 1985", page 128.
[12] Excerpted from "
Broadcast Engineering, October 1990", page 117.
[13] Excerpted from "
Mix, November 1984", pages 132, 143.

Comments

Ancient Publication

dr.dobbs.cover
Sometime in 1987, or thereabouts, I was working with various Intel processors. For some reason I needed to know which type of CPU some code was running on, so I wrote a routine that would determine whether the processor was an 8086, 80186, 80286, or 80386 and, if a 286 or 386, whether it was running in real or protected mode. I wrote an article about it which was first printed in PC Tech Journal, November 1987, on page 51. Somewhere I still have a copy of that issue. Somewhere. The article was then anthologized in Dr. Dobb's Toolbook of 80286/80306 programming on pages 75 to 78.

The text of the article and the source code is below the fold. I wish I had my original work to show how it was edited for publication.

Read More...
Comments

"Free at last..."

I joined Scientific Atlanta full time in June, 1999 after nine months or so as a contractor. Scientific Atlanta was sold to Cisco in 2005 who later sold a part of the business to Technicolor in 2015. Today was my last day at Technicolor. On Monday, I start as director of software engineering at a local startup.
Comments

Five Seconds of Fame

I am a co-author on US Patent # 8,191,099 which was issued on 29-May-2012.
Comments

Ancient Victories

For much of my career I’ve written software to bare metal. Back in the early ‘90s I worked for a company that made add-in products for Apple’s Macintosh line of computers. When something didn’t work, the hardware engineers would blame the software and the software engineers would blame the hardware. Too, challenges were made as to the actual knowledge and abilities of an engineer. Of course, friendly wagers were placed on the outcome.

I found this dollar bill attesting to bets won from the hardware group. I hope the Feds don’t get too upset that I scanned this.

bets
Comments

The Myth of the Super Programming Language?

In his classic essay, Beating the Averages, Paul Graham recounted how the programming language Lisp gave him a tremendous advantage over his competitors. If you haven't read it, I highly recommend that you do so now, then come back here.

Jonathan Edwards, in his post The Myth of the Super Programming Language, argues that programmer productivity is due to the ability of the programmer and not the capabilities of the language. Edwards states, "It doesn’t matter what language a great programmer uses – they will still be an order of magnitude more productive than an average programmer, also regardless of what that programmer uses."

We have known for many years that some programmers are far more productive than others. In chapter three of The Mythical Man Month, Fred Brooks wrote:

Programming managers have long recognized wide productivity variations between good programmers and poor ones. But the actual measured magnitudes have astounded all of us. In one of their studies, Sackman, Erikson, and Grant were measuring performances of a group of experienced programmers. Within just this group the ratios between best and worst performances averaged about 10:1 on productivity measurements and an amazing 5:1 on program speed and space measurements!

So I take no exception to the statement that some programmers are more productive than others due simply to native ability, regardless of language choice. And in some circumstances, I don't disagree with Edward's statement that "it doesn't matter what language a great programmer uses". All things being equal, the great programmer will outperform the mediocre or poor programmer.

But language does matter. For most of us, language constrains how we think. George Orwell, in 1984, described the development of the language "Newspeak." The purpose of the development of this language was to restrict the range of thought by restricting vocabularly so that the very idea of revolution against the totalitarian regime was literally unthinkable. If language can restrict thought, language can enable thought. The genius may transcend the restrictions of language and invent new ways to express what had not been expressed before. The bright may learn how to think in new ways when given a language with new idioms. The mediocre will likely think the same way, regardless of the language. Certainly, many of are are familiar with the phrase "FORTRAN with semicolons".

I am a native speaker of English. Learning German didn't prove too difficult; the languages are similar enough that, at least for me, there isn't a big switch in the way I think in either language. Perhaps this is an artifact of my not knowing German as well as I should. On the other hand, I do have to change my mindset when dealing with the language of the New Testament, Koine Greek. I can think things in Koine Greek which are not easy to translate into English.

What is true of natural languages is true of programming languages.

In his bio, Edwards says that he has been programming since 1969. He has me by two or three years; I taught myself BASIC in '71 or '72, followed by FORTRAN. In college I learned Pascal, Algol, COBOL, SNOBOL, and Control Data and H-P assembly languages. I tried to teach myself Lisp from Weisman's
Lisp 1.5 Primer, but I gave up. I could blame it on not having a Lisp environment, but the truth is that it just didn't "click." After college, more languages followed, such as C, C++, Java, and etc...

Five years ago, I decided to give Lisp another try. I bought Seibel's
Practical Common Lisp. I put Steel Bank Common Lisp and LispWorks Personal Edition on my MacBook Pro. I took both of them to Myrtle Beach on family vacation and started to learn the language in earnest. It wasn't easy. But I fell in love. As a language, Lisp enables me to think thoughts I wouldn't normally think in the other languages I know. And that's the key. Can I do anything in C that I can do in Lisp? Probably. After all, Greenspun's Tenth Rule is "Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp." But the pain involved in using Lisp idioms in C usually means that I use the C idiom, instead. This is one reason why I don't like using C much, anymore, even though it's used a great deal where I work. It's just too painful. It's why C programmers use C, when assembly language is equally powerful.

Edwards wrote, "The anecdotal benefits of esoteric languages are a
selection effect", (emphasis his) where the selection is for programmer ability and not language capability. But if this is so, then I would expect to see comparisons of programmer productivity when the same individuals use different languages to implement the same tasks. Not long after I felt somewhat confident with Lisp (I still don't consider myself to have mastered the language), the company I work for dabbled with instituting PSP (Personal Software Process). A 3 day overview was offered for managers while a 2 week course was given to engineers. The two week course provided two large notebooks of course material which included programming exercises to be done in order to teach the methodology. I wasn't able to take the extended course, so I borrowed the materials from one of my co-workers. I didn't do much with the methodology, but I did do the programming exercises in C. Then I did them in Lisp. I found a 7-10x improvement in my performance, namely, time to implement the problem. One reason was that the Lisp code almost always required many fewer lines of code. I suspect another reason is that my mind switched from "C" to "Lisp" mode. Different idioms require different ways of thinking. For example, one of the advantages of Lisp is that I can write code that writes my code for me. That's a huge win over C, but it requires an unfamiliar way of looking at problems. I grant that this is anecdotal evidence. But it is consistent with what is known about natural languages. A master craftsman can craft using mediocre tools; but a master craftsman can do more faster with master tools.

Edwards said, "These kinds of claims are just thinly veiled bragging about how smart Lisp/Haskell programmers are. I actually agree that they are smarter. But ascribing it to the language is a form of tribalism: our language (country/race/sports team) is better than yours, so we are better than you." Granted, the exceptionally talented can lack humility. But human nature being what it is, if the gifted revel in their gifts, the mediocre can be oblivious to their mediocrity. "It can't be the language that makes you better" is a rejection of new ways of thinking, of expanding mental horizons, and a loss of potential increase in productivity. It is because they can't, or won't, embrace these new ways of thinking that they remain mired in mediocrity.

I have argued that language choice can make a big difference for the individual master craftsman. But Edwards notes when the "really smart programmers" complete an application using their "esoteric language" and move on to other things, that when the "professional programmers" come in to maintain the system, it "gets thrown out and rewritten in a normal programming language using normal techniques that normal people understand." This certainly happened with the software Graham developed. But the question of "what language is best for a team which follows the bell curve of ability" and "what language is best for master craftsmen" are two different questions. You cannot conclude that language choice has no effect of productivity by comparing these two unlike groups.

You don't give power tools to infants. But you can't say that the only difference between a handsaw and a power saw is solely due to the ability of the wielder.
Comments

Long Forgotten Computer Techonology

I wrote my first computer program in BASIC in 1972. I thought it might be interesting to reflect back on some of the different technology I've used, most (if not all) of which are obsolete today.
  • EasyCoder, assembly language for a Honeywell computer. It was used in my twelfth-grade data processing class. The only program I remember writing was one that had to sort three numbers.
  • Patch panels, for some long forgotten IBM machine. Also part of the curriculum for the previously mentioned class.
  • Keypunch machines, IBM 026 and 029 models. I used to know how to punch the cards that controlled the keypunch.
  • Punch tape, both paper and mylar. H-P would send the system software for the HP-2100 Time-shared Basic system on mylar tape. I have a friend who learned to read paper tape. He is why I know what the punch tape says in Harlan Ellison's story I Have No Mouth, and I Must Scream.
  • Punch cards. I once thought it awesome to have a collection of different punch cards which were custom-printed with company names and logos. I'm now embarrassed to admit that.
  • Dedicated word processing terminals, such as the Lanier "No Problem" machine. A company I worked for developed a sort package for it.
  • Idris, a Unix-like operating system written by P. J. Plauger. I used it in the early 80's. It could have been Linux. Fortunately, Unix is still alive and well and living in my MacBook Pro. And Plauger's book, The Elements of Programming Style, remains a favorite.
  • Weitek math coprocessor ASICs. A friend developed the hardware for a Weitek chip on a PS/2 board and I wrote the software. We managed to sell a few. Weitek chips were later used in a graphics terminal that used floating-point numbers in its display list.
  • CGA, EGA, and VGA graphics.
  • Apple's "Slot Manager" for NuBus-based cards.
Yet not everything evaporates that quickly. FORTRAN and LISP are the oldest high-level languages still in use today. I learned FORTRAN in high school and used it in college. I had a brief exposure to Lisp in the late '70s. I still have my copy of Weissman's LISP 1.5 Primer. Having revisited the language in the last three years I find I'd rather write code in it than most anything else. What languages will we program in a thousand years from now? Will we even develop software anymore, or will our machines do it for us?
Comments