Hello World, Sort of, Part II: Talk Nerdy

In my previous post I talked about my time working on software for Knox and Shelby Counties in Missouri.  That was all historical, and probably not very interesting to anyone besides me.  In this installment I’m going to reminisce about the actual computers.

Knox County bought their computer first, and got a Radio Shack Model 16b running TRS-XENIX.  Shelby County followed, purchasing a Tandy Model 6000 computer, which was nothing more than a rebranded Radio Shack 16b (after all, Tandy owned Radio Shack).  I suspect the rebranding was intended to indicate that the 6000 was a more “upscale” computer, separating it from the TRS-DOS-based Radio Shack computers that were then popular in businesses (at least in my area).

The 16b/6000 was an oddball machine.  It resembled the other Radio Shack computers of the era, with 8″ floppy disc drives and large external hard drive boxes.  Here’s a copy of an original ad for the 16b:

radio-shack-16b

The dual processor architecture mentioned in the advertisement was one of the weird features.  The main processor was a Motorola 68000 running at 8 MHz, with a second Zilog Z80 processor that normally served to manage I/O devices.  I don’t know exactly what that means… that is, what I/O was directly managed by the Z80.  Was it all of it?  Or just some devices?  What I do know is that the 16b could boot TRS-DOS on the Z80, leaving the 68000 offline, or it could boot TRS-XENIX on the 68000 with the Z80 in that subordinate role.

TRS-XENIX was an interesting case.  Both computers I worked with came with the early version, based on AT&T Unix Version 7, and I (rather painfully) upgraded both to the later XENIX 3.0, which was based on AT&T Unix System III.  I don’t even recall what the changes were, but I remember liking the upgrade.

For those not “in the know,” let me boil it down.  AT&T/Bell could not sell software at that time (because of their monopoly status), so the Unix OS could only be bought from someone else who licensed it from AT&T.  No, that doesn’t make sense to me either.  They couldn’t sell it to you or me, but they could sell it to some company for resale.  Anyway, Microsoft licensed Unix from them, but because they couldn’t use the name “Unix” (why?), they called it XENIX.  Microsoft then licensed XENIX to Tandy, which rebranded it TRS-XENIX.  Wikipedia says that Tandy was at that time the largest (in terms of count of units sold) reseller of Unix.  I can believe it.

By the time XENIX 3.0 came out, the copyright headers in a lot of the scripts now included a new player:  SCO, the Santa Cruz Operation.  I see on Wikipedia that SCO and Microsoft worked together to create a XENIX for the Apple Lisa in 1984, and I assume that work fed back into the upgraded Tandy XENIX.

The two computers I worked on each had two remote serial terminals, DT-1 Data Terminals that appear to have been stripped-down early-model TRS-80 computers; they still had bays for floppy drives, for example.  I think Knox County’s computer had a pair of the 15 MB hard drives, while Shelby’s later model had a single 35 MB hard drive; my memory may be a bit faulty on the exact details, but I do know Knox had dual drives.  Both counties had LMP-2150 printers, which were rebranded Printronix printers which had astounding lifespans.  The buttons on the cover (which cover was apparently made for or by Tandy) were membranes, and they tended to break down over time, but the printer engine was bulletproof.  Also very loud.

Possibly the most amazing thing to me now was what these things all cost.  Here are the prices I’ve been able to find for the bits and pieces I remember being installed at Knox (the actual price they paid probably varied).  I’ve added adjusted 2015 prices (the latest year I can find inflation info for).

Item Original Qty 2015 Total
TRS-80 Model 16b $4,999.00 1 $11,995.00
15 MB Hard Drive, each $2,495.00 2 $11,975.00
DT1 Data Terminal, each $699.00 2 $3,355.00
LMP-2150 Printer $3,995.00 1 $9,585.00
2015 Grand Total
$36,910.00

WOW.  And they let 18-year-old ME touch it.  What WERE they thinking?

The 16b probably had half a meg of RAM, and yet it managed to run a fully functional Unix system as well as application software.  (Oh, yeah, I didn’t add in the software price above… no idea how much that would have been.)

Man, that was a long time ago.

Hello World, Sort Of

My first paying job working with computers was with the Knox County, Missouri Assessor’s Office.  It so happened that, in 1983 when I was starting college, my next door neighbor was the county assessor.  He was someone I had always known, a local businessman before he ran for the office; his job, on the other hand, I knew nothing whatsoever about.

He called me up one night and asked me if I could “help out” with their computer.  This was during the reassessment (in fact, let’s capitalize that as “The Reassessment”).  I don’t really remember the whole history, but I can tell you that all the counties in Missouri were performing fresh assessments on all their real property.  It was a huge job, and the State Tax Commission was providing money to assist with computerization of the data.  It had never been done in most counties before that, so it was kind of a “Wild West” situation, with lots of people who knew a little about computers jumping in and trying to get something done.

I knew a little about computers.  It was my freshman year in college, and I had experience with Apple II computers running DOS 3.3.  That was about it, actually.  But I said sure, I’ll do what I can.  I spent a bunch of evenings in the office learning about their computer on my own before I ever talked about getting paid.  Still, they were probably nuts to let me do it.

But it seems the salesman who sold them the computer had done all the programming.  Is that alarming to you?  It should be… little as I knew, I still knew more than he did.

I had barely started working for Knox County when I was called by the assessor of Shelby County, who had the same computer, bought from the same guy, with almost but not quite the same software setup.  So I started working for Shelby County at almost the same time I did for Knox.

I spent 1984 just getting familiar with the programs the salesman had written (actually, the whole assessing-collecting system was put together on top of Profile 16+, the Tandy database software they had purchased with the computer) and writing or revising reports, screens, etc.  It took me until the end of that year to really understand what he had done wrong, and that all came back not to technology but to understanding (or not understanding) the offices.  I pitched a rewrite to both counties, and got the go-ahead to do it; it took me most of 1985 to get that done, working part-time while going to college.

I should mention that I was working for the Collector of Revenue in both counties as well as the Assessor.  Part of the issues with the software system the salesman wrote was that it didn’t adequately separate the two offices (in each county) so that each office could work with the data only half a year, and the Collector couldn’t keep unpaid (delinquent) taxes on the computer from year to year.  This was one of the first major changes I made.

The software remained in use in Knox County until 2012, thus getting about 27 years out of the rewritten system.  Seriously.  Shelby County bailed earlier, around 2008 if I recall correctly.  When the old computers got too old, they switched to a network of DOS PCs running filePro+, and I transplanted all the data from old to new.  When those computers got old, they got Windows XP computers and ran the program in DOS windows.  It was the advent of Windows 7 that finally spelled the end for the old program… though you can make DOS programs run on Windows 7, it’s not easy, and it really sucks trying to network them.  By that time the Shelby Co. Assessor had finally moved away from the old program, and the Knox Co. Assessor only used the personal property parts (having long before switched to a full appraisal system from another vendor) but the Collectors in both counties still used that old program.  I’m happy to say I wrote the replacement programs for both counties (though perhaps not surprisingly they aren’t quite the same program…)  It’s my hope that the new software will have the same “legs” as the old, giving decades of service before needing replacement again.

Wow, that’s a lot of writing.  I had planned to “talk nerdy” here, but I think that will wait for another post, in a few days perhaps.

A Personal Distinction

A question a customer asked me a few days ago reminded me that I have a point of personal distinction, albeit a very small one:  I was the very first student banned from the Knox County, Missouri High School computer lab.

It was in my senior year, 1982-83, when the school first decided to have a computer class at all.  The class would be open to seniors only, at least in that first year, and would be a semester class.  I signed up for it and was placed in the second semester; I filled in that slot in the first semester with an art class of some sort.

The lab had two whole computers… a Radio Shack Model 4 (I think) and an Apple //e.  A friend told me that, were you to ask the teacher who was the head of the business department (not the actual teacher of the computer class), you could go into the lab during study hall and play with them.  It happened that I had 7th hour study hall, a time when there was no class in the room, and only one other student (a friend of mine) was interested in going to the lab, so there were enough computers to go around.

This was during the first semester, by the way; I hadn’t yet started the class, nor would I.  I was approached by the teacher as Christmas break was closing in, and told that, as there were a lot of students who still wanted to add the class, and I obviously knew a lot about computers, they would let me “test out” of the class to make my seat available for someone else.  I passed, got the half-credit, and took another art class to finish out the year.  So I was never actually in the computer class at all.

Anyway… another friend had an Apple ][+, and he had the technical manual for it, which he loaned to me.  I still have it, actually, which probably says something… never mind.  Studying that book, I learned a lot about the architecture of Apple II computers.  In particular I learned about using the built-in ROM monitor to enter code in assembly language.

I should mention at this point that neither computer had a disc drive of any sort.  There was a cassette tape player for the Apple, but I never had occasion to use it.  So if you turned either computer off and on again, any and all work you had done was gone forever.

On the Apple II computers, the standard AppleSoft BASIC prompt was a single square bracket ], and you couldn’t change it.  There was no “set PROMPT=” or PS1= or anything like that… it was a fixed feature of the ROM.  But actually, you could change it, if you did it in assembly language and hooked the input routine just right.  Once I found that out, I couldn’t resist, I had to do it just to see it work.

So I hand-coded the assembly language code on notebook paper, went into the classroom before classes began, and typed it into the ROM monitor; I used the unused 256 byte memory page at $0300 to contain it, so it would not be in the way of any BASIC code that might be entered during the day.  When I came back into the room during study hall, the last hour of the day, I found my altered prompt still in effect.  They had used the computer all day long with the modified prompt and apparently never noticed it.  Again, if they had turned it off and back on at any point during the day, my changes would have disappeared as if they had never been at all.

What did I change the prompt to?  My initials, followed by a carriage return and a square bracket.  Just about as clever as you’d expect from a high school student.  I was proud of it, and thought it was rather funny (really, it was just dumb), and I told the business teacher (the woman I had to get approval from to access the computers).  She was about as impressed as you’d think, but didn’t seem concerned, at least as far as I could tell.

A full week later she came to me and told me the administration had ordered me banned from the lab for “hacking.”

Seriously.

So as I say, I am officially the first person ever banned from the computer lab at Knox County High School.  I really feel the ban was about as stupid as my “hack” was… I got no hearing, never had the opportunity to point out to the administration (whoever it was who had banned me, I don’t even know if it was the principal or superintendent or who) that what I did neither affected the class nor had any lasting effect at all.

But it’s still a point of distinction for me.  For one brief moment I was an “outlaw.”

Pfft.

Toner In The Carpet (Oh No!)

Yesterday while evaluating a printing issue with a customer’s color Lexmark laser printer, I managed to drop the black developer unit on the floor.  It left a quarter-sized spot of purest blackness, then spread a gray cast over dinner-plate-sized area nearby when it bounced.  Ack.

I looked up the best ways to clean up that sort of mess and found several sites that recommended dry cleaning solvent, which I did not have, followed (if needed) by water with dish detergent added.  Messy procedures that would require me to go out and buy things.  I was pretty sure there was no place in the city of Edina to buy dry cleaning solvent anyway.

I apologized profusely to the secretary whose office I had just sullied; she acted cool about it, but that was no consolation to me as I was well aware of what I had done.  I called Lexmark to get replacements for the parts I had determined were bad, and as I stood there waiting for the tech to finish filling out forms (he was helpful, to be sure, but that sort of thing is never quick) I considered the mess I had made.

It was dry toner, after all, finely powdered plastic.  A vacuum cleaner had already failed to remove it from the carpet, so the particles must have been entangled with the carpet fibers.  Was there still a way to remove it dry?

Then I considered the can of compressed gas (“duster”) I had brought in with me to clean the printer inside.  I sat down on the floor, phone pinned against my shoulder, and with one hand hovering curled behind the darkest spot I pointed the nozzle at the nearest edge and fired away.

A few sprays later, the toner was all (all!) out of the carpet; most was distributed on my guarding hand, which I cleaned up with a tissue.  Elated (as you might imagine) I moved on to the larger, paler mess and did the same thing.  I think I may have used up almost the whole can, but it was worth it.

So for anyone with a similar mess, before you get it wet, you might want to try my procedure.  I make no guarantees, but I promise you it worked for me.

Killing GWX (as in, I really don’t want Windows 10)

I don’t use Windows myself, but I do sell and support computers that must run Windows.  Most of my customers are very fond of Windows 7, and even though its days are numbered they still want to keep using it.

When Microsoft pushed out the GWX update (KB 3035583, if you care), things became… annoying… for those people I just mentioned.  There’s no apparent way to turn that nonsense off.  The only solution I found in the early days was to kill the program, then change the privileges on the folder C:\Windows\System32\GWX and delete it.  So I went around doing just that.

And Microsoft re-issued the update, and they all came back.  Gah.

I searched again, and after extensive revisions of my Google search parameters I finally found a page on Charles Allen’s blog where he explained the secret.  But he gave the steps in the manual mode, and I’m too lazy for that.

So here’s a registry patch to do the job.

http://newcenturycomputers.net/user/KillGWX.reg

Mostly this is here so I can find it later… as usual for Notebook entries.

UPDATE:  In addition to the anti-GWX registry entry, I’ve become aware of the group policy option entitled “Turn off the Upgrade to the latest version of Windows.”  Even with GWX disabled by the aforementioned option, Windows Update may still offer Windows 10 as a “regular” Windows update (especially now that it is “Recommended” instead of merely “Optional”).  This new policy option just sets a registry entry, of course, and I’ve added that registry entry to my KillGWX.reg and uploaded it to the location above.

I found this information here:

Turn off the Upgrade to the latest version of Windows GPO

It’s been there for months, but it’s darned hard to find with an ordinary Google search; when I tried to find it again to post it here, I kept finding ways to block ALL Windows updates (not a good idea) rather than the specific upgrade block I was wanting.  So as usual, I’m posting it here so I can find it again.

Can’t Login to Netflix on Roku

So I wanted to watch Netflix on my new Roku stick, and I found myself looking at this message:

There was an error processing your request.

Following that was a paragraph stating that my (actually, my wife’s) account could not be found.  I picked up my Samsung tablet and opened Netflix… same account, no problem.  Checked on the computer… still good.  What the heck?

Several minutes of frustration searching Google turned up nothing, until I dropped Roku from the search and found the following info on a Samsung Smart TV forum:

Open the Netflix app and use the arrow buttons on your remote in the following sequence: UP, UP, DOWN, DOWN, LEFT, RIGHT, LEFT, RIGHT, UP, UP, UP, UP.  It should take you to a menu.  Choose SIGN OUT and then sign back in again.

Surprise, surprise… this exact procedure worked on my Roku.  Same app, apparently.

One Experience for Everything in Your Life???

vehicles

I keep seeing these Microsoft ads trumpeting “One Experience” for all your computing needs, with Windows 8 on tablet, laptop, and desktop, and the similar-feeling Windows Phone on your phone.  This is their big theory, their almighty goal going forward.

It’s also why their product isn’t selling like they want it to.  It’s a bad theory.

Let’s move to a different machine space for a moment… vehicles.  I own a Pontiac Vibe, one of the last made before Pontiac closed down.  It’s a hatchback, reasonably fuel efficient, big enough to haul computers with a hatch large enough for a good-sized laser printer in a box.  Right now it has a substantial amount of inventory in it, parts that I might need when fixing computers.

I also own a Yamaha TW-200 motorcycle.  It’s amazing fun to ride, goes anywhere, fits the most screwed-up parking space and gets 70 MPG.  Then there’s my Ford F-150 pickup.  It has 4 wheel drive, goes almost anywhere, is comfortable and hauls a lot of stuff.

All three vehicles will haul my butt to work.  The bike is by far the most fun, but it’s only practical to ride it to work on short to moderate length trips (too small for the Interstate), and then only when I don’t have to haul more stuff than will fit in a backpack.  The Vibe is my “default” work vehicle, but on icy roads or on gravel it’s a bit of a hockey puck; the low-rolling-resistance tires don’t stick worth a darn to any surface other than clean dry pavement.  When the roads are snow covered or icy, the only choice is the F-150.  It’s also the only choice when I go out to buy furniture or home improvement materials (lumber, plywood, sheetrock, etc.).

My point is, they don’t have the same experience.  The truck is sort of like the car, but the motorcycle, now, that is a totally different experience.  Handlebars, hand throttle, hand clutch, foot shifter, separate front and rear brake, the former at my right hand and the latter at my right foot.  But that’s just the basics you need to get it rolling; riding a motorcycle is much different than driving a car.  You lean into corners, so the G forces are distributed differently.  There’s no cage of glass and steel around  you… you’re in the world, not separated from it.  In plainer words, it feels different.

I think this analogy applies perfectly to the Windows 8 situation.  Microsoft saw the rise of the tablet, a lightweight mobile device that’s fun to use but more limited, and decided that desktop and laptop computers ought to work the same way.  A tablet has a user interface designed for fingers, rather than one designed for keyboard and mouse.  It feels different.

A big part of Microsoft’s theory is that we are too stupid to work technology unless the user interface is the same everywhere.  I consider myself reasonably proficient both at driving a car and riding a motorcycle, and they have very different user interfaces.  Many people proficiently do both.  It’s not that hard.

So what Microsoft did is like putting handlebars, a hand throttle, separate brakes, hand clutch and foot shifter in a car or pickup.  It makes absolutely no sense.  Oh, sure, there would be a few people who climbed into that pickup truck with a set of handlebars installed and say “Cool, this is what I’ve always wanted!”  But it would be a flop in the marketplace.

The key difference here is that, for the last two decades, almost all “small computer” work has been done on computers running a Microsoft operating system.  So this isn’t like Ford putting handlebars on a truck… it’s more like if almost all auto makers changed to handlebars overnight, and you had to buy from lesser-known brands with limited parts and service availability to get a steering wheel.

If that happened, though, it would only be a matter of time before those lesser-known brands gained market share substantially.  Will we see that in the computer industry?  I’d like to hope so.

PollyReports Additional Bands

I’ve added a new feature to the 1.7.6 version of PollyReports: additionalbands.  A Band instance may have one or more additionalbands defined (as a list of Band instances), and each will be rendered in order after the parent band renders.

Conceptually, this is much like the existing childbands feature; however, childbands become “part” of the parent band, rendering on the same page (and potentially forcing a page break before the parent band).  additionalbands are separate from the parent band, and from each other.

I added the feature to deal with a report that needed a two page long report footer.  So that’s what it’s for.

additionalbands render as part of the detailband, in groupheaders and groupfooters, and in the reportfooter.  They are not rendered as part of a pageheader or pagefooter band.  Also note that additionalbands will render childbands of their own.

Remember, you can get PollyReports using pip or by cloning the Github repo at:

http://github.com/Solomoriah/PollyReports

Why I don’t like the “Cloud”

This question comes up a lot with my customers… “should I put my data in the cloud?”  When it does, I recount the following story:

Years ago when I started working with computers, all the local school districts had software from the same company.  We’ll call them OldCo (obviously not their real name) for the purposes of this discussion.  OldCo also sold software targeted at city governments, and I had a few city customers using some of those products.

OldCo’s software was all DOS based.  They started a project to convert their school accounting and student records programs to Windows.  Just as they were about to begin beta testing of their Windows accounting software, the database vendor they were using went out of business.

So they couldn’t buy the necessary licenses to resell to their customers.

They started all over at that point, essentially scrapping the entire project, and switched to an entirely Microsoft-oriented codebase, using SQL server as their backend.  This put them way behind their planned deployment schedule, not to mention costing them a bunch of money.

Along came another company, which we’ll call OSC (Other Software Company).  They were another major player in the school software business, and their software supported Windows already.  OSC bought out OldCo to get their customer base (a sound strategy I’m sure), and pushed all those schools into switching to their student records software.  They didn’t have a school accounting program, but that was okay with them… they kept the OldCo staffers who understood that program and continued to maintain and sell it.

Who’s missing here?  The city government customers.  OSC notified them that they would not be supporting or selling OldCo city government software any more, and no, they wouldn’t really help anyone extract their data from it either.

Those city government customers were cut off from support, but at least they could keep using the programs.  If their data was stored in someone else’s cloud, and that someone else closed their service for any reason, where would they be then?

This is why I don’t like the Cloud.

I am a Rockstar Programmer?

There has been a lot of talk lately about the “rockstar programmer” (aka the “10x” programmer); specifically, whether or not such a creature exists.  For instance, on Hacker News today I saw Scott Hanselman’s article The Myth of the Rockstar Programmer, which is very critical of the idea.

I think it’s more complicated than that.  You see, I am a “10x programmer.”

Sometimes.

I run a one-man programming operation as a sort of side-business; I’ve been writing application software for vertical (mostly local government) customers for many years, in a variety of languages.  Most recently I’ve been focusing on web-based apps in Python (and of course, Javascript).  I’ve spent many an hour working on these programs, and I can tell you that most of the time I’d call my productivity average.

But a couple of years ago, near the beginning of my love affair with Python, I wrote an application for handling city property taxes for a small town.  My understanding when they contracted the work was that they just wanted help with some Excel files… but it was more than that.  They really needed a program similar to the ones I had written for several county-level customers.

So in the course of about five hours of wild-eyed hacking, I wrote it.  I repurposed a few small components from a personal project, but even so most of the code was new, and surprisingly it works pretty well.  Since then, two other small towns have acquired versions of the program, largely cloned from that original program, and in each case it took me more time to customize the program for them than it did to write it in the first place.

I still don’t know how I did that.  Zero testing.  Solving problems I was uncertain about not by research, but by going around, over, or under them.  But it worked great for the original customer for the entire first year, and has required only another hour here or there in maintenance, mostly adding features.

It’s not the only time I ever did that.  I have other programs, or parts of programs, written in the same way, usually under time pressure but sometimes just because I felt like it.  If I worked more consistently in software development (full time, as opposed to basically part time now), I might do that sort of production more often… but I really don’t know.

It’s a mystery to me.