Jeff Duntemann's Contrapositive Diary Rotating Header Image

Daybook

Descriptions of what I did recently; what most people think of when they imagine a “diary entry.”

Going Into Eclipse

As I mentioned yesterday, my publisher wants me to revise Assembly Language Step By Step over the coming year, for release in early 2010. I had assumed for some time that they considered the book a dead issue, though judging by my royalty statements, it continues to sell. And that's a clue: When the market is bad, publishers get nervous about striking out in entirely new directions with new series and lots of new titles. A handful of books are what they call “evergreens,” because they sell all year, every year, for years and years and years. I think that a lot of evergreen titles are going to be freshened up and reissued in the next few years. The publisher considers my book an evergreen (it was first published, after all, in 1989, and has sold steadily ever since) and the acquisitions editor had done her homework. She wanted DOS to go. She wanted to ditch the CD bound into the book. She wanted more Linux coverage. And if possible, she wanted me to use Ubuntu as the flavor of Linux cited in the book.

I'm cool with all that. I had decided years ago that DOS would be missing from any future editions. I had assumed that I would include coverage of 32-bit Windows console apps, but I'm not welded to that notion, nor to any particular Linux distro. The book is not about Windows, nor about Linux. It needs an OS over which to run the example programs, but which OS is mostly immaterial, so long as it supports the Intel 32-bit flat model. The book is a “front door” introduction to what computers actually are, and how Intel-based machines function under the hood. It's about that waydeepdown place where the software meets the hardware. It is not about how to make API calls nor how to coordinate all the folderol that happens inside large-scale apps.

A lot of people misunderstand the book, and I get gripes all the time about how it “doesn't go far enough” and “doesn't teach the principles of software development.” That's not what it's for, and I don't have the page budget to write enough book to satisfy all my gripers. The format has worked across twenty years and three editions, and I'm sticking with it.

There's still a lot of work to do. Much of the coverage depends on DOS, DOS calls through INT21, and BIOS calls through INT13. All that has to go. I need to explain how the software interrupt mechanism itself works, and for that I'm going to defy the Unix Gods and explain how to use the Linux INT80 call gate. This is heresy, but the mantra that “INT80 calling conventions can change at any time” isn't sufficient reason to keep the secret. I've asked several people to show me an example—even a single example!—of when a Linux INT80 kernel call changed, but so far I've seen nothing. And even if some of the more arcane kernel calls are still evolving, I doubt that the very simple calls have changed at all in many years. Proper warning will be given, but I don't bow before that particular altar anymore.

Alas, if DOS goes, Rob Anderton's excellent NASMIDE programming environment has to go as well, and something else will need to be found to help people load, assemble, link, and run the examples. I've got John E. Davis' text-mode JED editor installed, and in a pinch it will do, but the holy grail for me would be running NASM under Eclipse. Eclipse is a sort of Erector set (ok, a Lego set) for creating platform-independent IDEs in Java. Almost everything beyond the very basics is a plug-in. You can get plug-ins for most modern languages and toolsets, and Eclipse can run anywhere that Java runs. (Of course, your tools must either be in Java or available on the host hardware.) Eclipse itself and nearly all available plug-ins are free and open-source. I've already got it running here on both XP and Ubuntu. All I need is a NASM-oriented assembly language plug-in.

The infuriating thing is that such a plug-in exists, but it comes with no installation documentation, and it does not install the way all other Eclipse plug-ins I've seen install. Eclipse has a clever system in which plug-ins are posted on the Web using a standard format, so that the Eclipse environment can fetch them down and install them automatically, given a URL. I've downloaded the plug-in file and have tried just about everything to get Eclipse to suck it in or even see it. So far, no luck. If you've ever gotten it to install and work, boy, I'd sure love to learn the secret.

I have to scope out some new example programs, write them, and then describe them, and make sure that DOS and segmented Real Mode retreat into a few pages of historical context. It's months of work, even if it becomes my major project (which it will) and knocks most of my lesser projects back into the closet (which it might.) I'm slurping at the firehose right now regarding Eclipse, and have a couple of books on order. It's going to be a long climb, but I've made such climbs before, and they're always good mental exercise. It'll give this book (which I considered a throwaway back in 1989!) another eight or ten years of life. The publisher has always treated me well, and the book paid off my mortgage. What's not to love?

It's All for the Best

There's an odd human tendency to expect the worst in the absense of sufficient data. One of my readers wrote to me in a panic regarding my sadness of yesterday, saying: “Tell me you're not separating from Carol!”

People, get a grip. Carol's mom had a medical emergency and Carol is in Chicago looking after her. Our relationship has never been stronger. Carol's mom means a lot to me. I was still getting over the last vestiges of a very bad cold. I'm having my jawbone drilled for a dental implant tomorrow morning at 8 ayem sharp. My dinner exploded. You'd probably be a little down too.

As for dinner: I was being a bachelor, and I emptied a can of Bumble Bee canned salmon into a Corelle bowl to heat it up. I grill fresh salmon a lot, and I have reheated the leftovers in the microwave many times. Alas, canned salmon is packed in brine. Brine is a good conductor, and brine and microwaves have fun together. As best I can tell, a brine pocket somewhere inside that pinkish lump boiled and blew off the microwave lid and itself out of the bowl and all over the inside of the oven. I salvaged enough for dinner and for today's lunch, but that left me wiping out the oven for most of half an hour last night. I'm annoyed because it was a science experiment, and I'm supposed to understand a thing or two about microwave physics.

And my dogs. Well. QBit and Aero were playing tag all over the upper level right before dinner. They chase one another around at flank speed, leaning into the turns, yapping and growling and evidently having a fine time. I had gone to the powder room down the hall to get rid of some well-used diet root beer, and while the process was underway, the two of them barrelled unexpectedly into the room. QBit ran behind me and dove under the toilet tank. Aero, in hot pursuit, hopped up on his hind legs and put his front legs on the rim of the bowl. I half expected him to attempt a leap over the bowl on top of QBit, and tried to dodge. The rest I leave to your imagination. And now, whether I'm home alone or not, I close the door.

As for the election, I don't have much to say. It turned out almost exactly as I had expected, and I don't see any serious damage. Hey, we survived Bill Clinton. We survived GW Bush. Hell, we survived Herbert Hoover and Woodrow Wilson, compared to whom even GW is Gabriel the Archangel. We will survive Obama, to whom I wish all the best, and to whom (if they existed) I would send a case of Tut-B-Gone mummy foggers to deal with the lobbyists now lining up outside his door. Our problem is not now and will not be Obama. The problem is the parasites that gather about high office.

As for my Outrageous Proposition (see my entry for October 30, 2008) I think it went pretty well. Thanks to all who followed the rules and shared their thoughts, and I apologize for not participating more vigorously myself. Headcolds don't schedule their appearances in advance, and this one really took it out of me. But I encourage everybody to go back and read the comments. Aren't those better than raging rants? Isn't life just, well, better without anger?

I will be drugged tomorrow and may not post. After that, the cone of silence once more descends over politics. Like canned salmon, a little goes a long way. (Especially when you heat it up too much!)

A Nose Was Blown, But Not By Me

Uggh. Today has been misery punctuated by mere discomfort, and you won't get anything profound from me tonight. What time I didn't spend in bed with Aero's butt in my armpit and QBit lying across my ankles I spent reading in my big chair, pulling Kleenexes from the box as needed and tossing them atop my desk when I finished with them. A few minutes ago, I looked at the pile of snotty Kleenex and asked myself, “Did I do all that nose-blowing this afternoon?” I was so bleary I barely remember.

Yet objective evidence (the head-sized pile of snotty tissues) suggests that I did.

And on that note I will make a very strong recommendation for the book I am mostly through reading, though I will probably have to read it a second time once I'm no longer blissed out on antihistamines. Do not miss this one: Mistakes Were made, But Not By Me, by Carol Tavris and Elliot Aronson. (Thanks to Michael Abrash for recommending the book.) It is a masterful piece of pop psychology, beautifully written and well footnoted, that offers to explain why we justfy foolish beliefs, bad decisions, and hurtful behavior. It has been a painful read in that I have seen myself in every other paragraph, and you will too. It has been a hopeful read, however, in that I have been intuitively struggling against these damaging psychological mechanisms for much of my adult life; in fact, the book has allowed me to define what I mean by contrarianism: the act of swimming against the torrent of stupidity and falsehood that flows from the deeper mind.

If you are a person given to certainty, the book will enrage you, since it almost defines certainty as a species of mental illness. (This is also the thesis of another book that I have read but not yet reviewed here, On Being Certain, by Robert A. Burton.) No matter what you're certain about, you're wrong. So am I. All knowledge is tentative, and our memories are full of holes and scrambled pointers. I'll start talking about that once I feel better and this damned election is over.

At this point it's time for shower and bed, and my nose is running. Damn. I'm out of Kleenex. I was sure that the box was still half-full!

The Answer to All Difficult Questions

I apparently brought a headcold home from Chicago, and it was in full bloom by this morning, so I don't think I'll be able to continue my anger-free politics series tonight. Things got off to a good start, and the LiveJournal comments are worth reading. I hope to get back to it tomorrow, if I can get a decent night's sleep. Right now I'm pretty wobbly.

Halloween is slow this year. It's 7:15 PM and even though it was a gorgeous day and is still 68 degrees outside, we've had exactly three groups come to the door so far. To be fair, the last group consisted of most of the ten-year-old girls in the western hemisphere, all of whom wanted to pick QBit up and hug him, and were willing to fight one another for the privilege. I quelled the riot before it got ugly, and passed out a decent number of Kit Kat bars so that I won't be tempted to off them myself tomorrow morning. QBit concealed his annoyance, even though what he wanted were not hugs but handouts.

I do want to relate one anecdote from our Chicago trip. We were hanging out in Gretchen's family room after dinner, being funny as is out wont. (Gretchen and Bill are good enough at it to do it onstage.) We were talking about Katie Beth's exploding vocabulary, and I was reflecting that sooner than we think, Katie (who will be two in a couple of weeks) will be engaging us in real conversation. So, in a fit of godfatherly ridiculosity, I looked soberly at Katie and asked her, “Where do you stand on the issue of transubstantiation versus consubstantiation?”

Katie wrinkled up her forehead in rapt concentration for a few seconds while she thought it over, and then, through a radiant smile, announced, “Pie!”

She probably thought I was asking her what she wanted for dessert, but clearly, the girl would make a good Episcopalian.

Bending Your Thumb

I was given Carol's sister's old 2002-era Dell laptop recently, in hopes of degunking it and making it useful in Carol's hobby room for Web lookups. My approach in dealing with the machine was what I generally do: Leave it off-network, and plug in a USB thumb drive full of portable degunking utilities. Being in a hurry rarely leads to anything good, and what I was not used to was a laptop in which the USB ports are on the spine of the machine rather than one side or another. So I plugged it into the back, and at some time during my first ninety seconds in front of the laptop, I tipped it back and up on its spine to see if the battery lock had come loose on the bottom plate. The obvious result is shown above.

Dratz. Cruzer Minis are getting increasingly uncommon, and this was literally the first time that I have ever had one go bad on me, whether I was the proximal cause of badness or not. Astonishingly, the drive still works, though the metal USB connector is now holding on solely by its printed circuit contacts. Fortunately, there was nothing on the drive but software that I have elsewhere, so it went into the trash without huge regrets. Not huge. Not small. Middling.

Setting the Ether on Fire

I finally finished my attic shortwave antenna a few days ago, after puzzling over how to do it for almost four years. It was both easier and harder than I thought. The project took up most of my spare time for a week, and required me to practice tossing a tethered tennis ball around up there between the two attic hatches.

I had to get the antenna up in the attic, above the walls of the house here, because the walls are stucco-coated chicken wire and thus form a very effective shield can. Even a 40' dipole in my workshop could pull in only some of the strong local AM broadcast stations. The new antenna works extremely well, and scanning the bands on Wednesday night with the Icom 736 brought in all the usual suspects from Europe at 9 MHz, along with an amateur station in Costa Rica at 7220 and another one that was (I think; copy on that one was poor) in Argentina. The quiet sun means that the bands above 14 MHz are basically dead, but assuming that we're not headed into the next ice age, they'll be back in a couple of years.

The wire was cut for 7200 KHz, and the measured SWR minimum was at 7130 (with another potentially useful one at 21400) so I got pretty close. Seeing if I could get a signal out was the next test. I tuned around on 40M to find a quiet spot, pressed push-to-talk, opened my mouth…

…and the fire alarm went off. I tore upstairs to find Carol in a panic and QBit barking furiously at the cold-air return where the siren lives. I didn't assume that the transmitter was at fault, but took a quick run around the house and garage to make sure nothing was burning, and by the time I reset the siren, the alarm system had already called the fire department. Nothing was burning, and with a red face I had to tell the firemen who came up in a truck (not a huge one, fortunately) that my transmitter had triggered a false alarm.

The garage smoke detector is perhaps 5' below the south leg of the dipole, and I may have to have the company that installed the alarm system run shielded cable to it. We think that the dipole was inducing sufficient current in the smoke detector cable to trigger the system, so the shielded cable may be enough. If the dipole is inducing currents in the smoke detector itself, the detector may have to go into a Faraday cage of some sort. The fact that the vulnerable detector is in the garage is fortunate. Out there a Faraday cage would be almost stylish; but maybe not so stylish on our livingroom ceiling.

So amateur radio station K7JPD will remain off the air for a little while longer. Damn. Hiram Percy Maxim didn't have this problem. Ubiquitous computing—and the wires that make it work—are a two-edged sword.

CSS Progress

I'm continuing my re-exploration of CSS in my spare moments, and it's worked out very well so far. If you're doing static pages that don't need Javascript or other fancy stuff, CSS can make very slick layouts with only a handful of rules. The problem of many people using old browsers that don't fully support CSS still exists (especially for IE) but to some extent it always will. CSS-challlenged IE6 still has 32% of the browser market, which means that at least 32% of people will not see your pages render correctly, and that seems like an awful lot to me. I thought I was alone in grumbling about this, but I'm not—and this guy does webstuff for a living.

Anyway. The browsers aren't there yet, but they do enough to support my modest goals. First of these is to get rid of table-based layouts in my Web articles. Tables are a kluge, but they were the best that the Web could do for its first ten years. Another goal is to create an “imprint style” defined in a single external style sheet. I've taken my several articles about kites and have been CSS-izing them to a common imprint style. These three articles work off the same style sheet:

(The Hi-Flier article is the biggest and messiest, and is still on the workbench.) The headers are custom-made images for the sake of the decorative title fonts. One of the Web's biggest defects is not having embeddable fonts. If you want to use fancy fonts, you have to render the font text in graphics and treat the rendered titles as images. I don't mind doing that at all; the page title is present in the META information, so the Semantic Web, wherever the hell it's hiding, will not be deprived of its due.

I'm still interviewing CSS editors. I've already gone through a bunch of them. The biggest disappointment was Amaya, an editor/validator that goes way back and was created by the W3C. Something that old (it's been around since 1996!) should be much better by now. Six of the toolbar icons are empty holes, and it crashes with the same unenlightening error on Win2K that Kompozer does. It did help me clean up my markup between crashes, but there are other ways to do that. Another major disappointment was TopStyle, an $80 commercial product with a downloadable trial version. The trial version is a good thing, because the only supported preview browser is IE. You can rig it to preview with Firefox, but there's a three-year-old message claiming that the Mozilla embedding technology is “experimental” and not supported, with warnings that border on those against crossing the streams. No way to preview in Opera or anything else. This is the kind of lazy-ass nonsense I will sometimes forgive on free products, but it's most of the way to 2009, and anything that costs money and claims a preview feature had better do IE, Firefox, and Opera, or it gets the hook. TopStyle got the hook.

In the meantime, I'm using Kompozer every day downstairs on my XP machine, and it hasn't crashed yet. It's got some thin spots—by default it creates internal style sheets, and you have to manually insert a link to an external sheet—but now that I've gotten to know it, my productivity is way up. Kompozer is a cleaned-up version of Nvu, and the French chap who wrote Nvu is working on a successor. (Having a little French helps here, though most of his posts are at least mostly in English.) Kompozer/Nvu's heart is definitely in the right place, and if I have to use it for awhile until M. Glazman releases its successor, I should at least be able to get some work done.

Other odds and ends associated with my efforts to transcend Webfossilhood:

  • I tried to upload WordPress to Sectorlink using a product called ZipDeploy. Apart from the arrogance of having a three hour trial period (!!!) the damned thing got partway through the longish upload and…vanished. It didn't show an error dialog. It didn't even beep. The app window simply disappeared, leaving the upload incomplete. There was nothing running in Task manager. It Died And Made No Sign. Hook!
  • Sectorlink being unhelpful in this regard (and I will not be renewing the contract for next year there) I went over to my Fused Network account and installed WordPress through their Installatron utility. It took 2 minutes and worked flawlessly. I've had difficulty installing Gallery 2 there, but it's looking like the problem is with Gallery and not Installatron.
  • Contra will be moving to WordPress sometime around the first of the year, depending on how quickly I learn it and how long it takes to sort out the hosting equation. There is a plug-in to do automatic cross-posts to LiveJournal, so I will be keeping my LiveJournal mirror. But this hand-edited table monster will (finally) be laid to rest. My WordPress install is browsable, but don't bookmark it, and don't expect it to be a mirror. It's just test posts. I have it on junkbox.com right now, but it will be on duntemann.com when it “goes live.”

And so to work.

Evaluating WordPress

I’ve been manually editing ContraPositive Diary in Dreamweaver since 2000, and prior to that (mon dieu!) in Notepad. The template is typical 2000-era table-bashing, and it has some quirks. I got the notion not long back that this nonsense has got to stop, and I have to sit down and think through what I’m going to be doing in terms of Web presence for the next few years, assuming that it’s not going to be what I’ve been doing for the last ten.

So what you’re looking at is an experiment. ContraPositive Diary is still alive and well at its usual home on duntemann.com and will be there for awhile yet. I’m playing with themes and plugins and CSS and a lot of other things, and I suspect that at some point I will switch over to WordPress. Soon. (Or maybe not soon.) But not yet.

Crossposted from contrapositive.junkbox.com

More on John T. Frye

I just uploaded a new version of my Carl & Jerry index, including an expanded bio of John T. Frye. We know a lot more about him than we did a couple of months ago, and almost all of the new material came to me from Lisa Enfinger, whose parents were close friends of Frye’s for many years. I’ll summarize here:

  • John Frye was stricken by polio as an infant, and he could not walk at all, throughout his entire life.
  • That said, he was not immobile: He had hand controls installed on all of his cars, and traveled extensively throughout the United States. He owned a 1963 Olds Dynamic 88, but no word on whether he ever had a Buick. (Legend holds that he was a Buick man, but no one can tell me why that should be so.)
  • Remarkably enough, he never attended Purdue University, but instead studied at the University of Indiana, Columbia University, and the University of Chicago. Lisa did not know if he ever received a degree.
  • More remarkably, he never studied engineering, but preferred English, journalism, history, and psychology.
  • Her parents both attended Purdue in the 1940s while earning their degrees in chemistry, and John visited them there. He probably knew other people at Purdue, and it was not a long drive to Layafette from Logansport in any event.
  • He is credited with close to 600 short articles, including Carl & Jerry and Mac’s Service Shop. His first publication was supposedly in Hugo Gernsback’s Radio Craft in the early 1930s.
  • Her great uncle Gene Buntain was Frye’s close high school friend in Logansport, and the two of them discovered electronics and ham radio together. (Could Gene Buntain have been the inspiration for Carl?)
  • John Frye lived much or most of his life at 1810 Spear St. in Logansport, one block south of US 24. It was a little weird to dive down from orbit on Google Earth and be staring at the roof of Frye’s old house. One wonders what the man himself would have thought of it.

I dug through my smallish collection of really old radio magazines (including a few Radio Craft) and did not see him there, but if any of you guys can find any of his early articles, I would like citations.

Needless to say, I’m still looking for details on John Frye’s life, especially concerning where he learned radio and TV servicing and where he practiced it. Lisa said she never heard of him owning his own shop nor even working for a shop in town, so that would be a question worth answering.

Finally, I had written to Frye’s younger brother Bailey Frye late last year, but he was evidently too ill to respond, and I found today that he passed away at the end of April, at age 90.

Many thanks to Lisa Enfinger for taking the time to send me all the information, including the scan of a newspaper article from 1962 that I first lined to a couple of weeks ago, including a picture of Frye at that time, when he was 42.

Gritting My Teeth Over KompoZer

I've been re-learning CSS over the past week and change, and it hasn't been hard because I didn't learn all that much of it to begin with. Back in 1999 and 2000, CSS was mostly proof-of-concept in Web browsers. The spec itself is a work of brilliance, but it wasn't until the release of IE7 at the end of 2006 that it was possible to make even fairly simple pages render identically on IE, Firefox, and Opera. IE6, which an amazing (appalling?) number of people still use, will not render the max-width property correctly, so fluid and even flexible layouts are still problematic.

No matter here. I'm a page-oriented, fixed-width kind of a guy. My 25-year publishing background has taught me to think in textual spaces that don't change shape. This is in part my webfossilhood showing, but in truth it's not a new argument, and the discussion pivots on how you use your UIs. I display only one thing at a time on my screen, as an inducement to personal focus, and so I maximize all windows that I use except for those belonging to small utilities. There is sometimes a need to show two or maybe three windows at once, but it doesn't come up often for me, and when the need arises, I know it.

So what I've been exploring are table-free fixed-width CSS layouts that will render on an 800 X 600 display (as you find on some of the smaller netbooks) without kicking up a horizontal scroll bar. I haven't tested this on all browsers on all platforms, but the magic number is probably 775. If you don't insist on total fluidity, you can make a very nice 2-column layout with no tables and very little CSS. Here's my learning project. It's not an expert job (I'm not an expert) and it's far from finished, but considering how few lines of CSS it took to do it, I'm pretty happy. I'm going to try to center the material as my next step, and from my reading that shouldn't be hideously difficult.

It's worth a little time here to describe my experience with Kompozer. Overall, it's a nice little item, especially for simple table-oriented layouts. Its CSS features are limited to what CasCadeS can do, and as best I can tell, CasCadeS was abandoned in 2002. I'm still shopping for a good CSS-capable Web editor, but in the meantime Kompozer has been a reasonable learning platform. It has some weird gaps—for example, I see no way to make it insert an em dash—but that's not my major problem. Kompozer does not work reliably on Windows 2000. It crashes frequently when you click the tabs to shift between the different views (text, tags, source, and browser preview) and sometimes when you click the Save button, egad. Then when I went downstairs to my XP lab machine, I edited for hours and suffered no crashes at all. Whose fault that is, well, I won't pursue, but it feeds into the difficult ongoing decision process I have here over moving to XP for my daily work. These days, alot of media stuff, even free software, won't work reliably (or sometimes at all) on Win2K. I have to force myself not to grit my expensive new teeth when I think about it.

Anyway. CSS reminds me a little bit of PL/1. Both technologies tried to bite off way too much at one time, especially considering the state of the underlying technologies when they first appeared. CSS would probably have been accepted more quickly if it hadn't been such a huge challenge to the developers of HTML rendering engines. As with PL/1, different groups with different emphases focused on different features, with the result that identical rendering on all the major browsers still isn't quite here, even though CSS is now ten years old, with roots going back another five. A simpler standard intelligently incrementalized and expanded every three or four years would have been better.

The lack of genuine WYSIWYG tools for CSS bothers me, but I keep reminding myself that hand-futzed CSS/xhtml is not the future. The future is turn-the-crank Web apps that manage content. Tweaking those requires that you know PHP and especially CSS, so I'm cracking the books here and brushing up. I will shortly have a Joomla instance to play with, and Drupal will be close behind. I won't be redesigning Contra because it's all going into a CMS as soon as I can manage it. Hand-coding is addictive, but in the vast majority of common cases, machines do it better and faster. After all, I'd much rather be researching and writing articles than hand-formatting them.