Jeff Duntemann's Contrapositive Diary Rotating Header Image

There Goes My Banner

I know that my custom banner’s gone; I upgraded to the latest PrimePress theme here a few minutes ago, and the damned thing is too stupid to check if custom graphics exist before overwriting everything. Alas, I don’t have time to fix it right now, as I’ll be out the door in a couple of minutes. Will try to get to it by this evening.

Meerkats. This thing was written by meerkats.

UPDATE 7/16: All fixed. And really, I like meerkats. They’re cute and I’m sure they mean well. But we shouldn’t let them get near PHP or CSS.

“Click the Word That Describes Them…”

ClassmatesLaneTechGirl500Wide.jpg

How about… “imaginary”?

As I’ve said before with respect to fraudulent pitches like this, there were no girls in Lane’s Class of 1970. And I’ve heard from others who have paid up for the service in response to Classmates’ endless emails, only to find that no one had signed their guestbooks, and no one was looking for them. Once I’d call a mistake. But this is actually the third such pitch I’ve received (I mentioned the second back in January) and three’s a pattern. I suspect I will get another every so often.

Simple lesson, put bluntly: Assume that everything you receive from Classmates.com is a scam.

App Inventor for Android

AppInventorBlocksEditor.png

Whoa. Yesterday morning Google took the wraps off App Inventor, a visual development environment for the Android mobile OS. I’m still trying to slurp from the firehose, even though I’m finding that all the hoses have basically the same information, and in truth not a great deal of that. But I’ll tell you right now: It stopped me in my tracks on the iPad decision. As of yesterday morning, I wanted something that runs Android. The new search is on.

You know me. I’m the Visual Developer guy, and the fact that my magazine’s been dead for ten years doesn’t change that. I still believe that visual metaphors for programming are not only useful but necessary, if certain kinds of software development are to happen at all. (More on this below.)

If you haven’t looked into App Inventor at all yet, a very good place to start would be Jason Kincaid on TechCrunch. He’s got a good overview and some screenshots (including the one I show above) that will give you a sense for what Google’s cooking up. I’ll summarize here. App Inventor has two major subsystems:

  • The Designer is basically a form designer, not conceptually different from that in Delphi, VB, and many other more recent environments. You drag UI components from a palette and arrange them on a form.
  • Far cooler (if less proven in its approach) is the Blocks Editor. Here’s where program logic happens, and it happens by snapping together logic blocks that look literally like jigsaw puzzle pieces. Clusters of blocks become event handlers. You connect a cluster to an event generated by a component on the form, and the blocks in that cluster execute.

(This may not be the correct jargon. Please understand that I don’t have an instance to play with yet, so all I can do is relay what I’ve read from the fortunate few who were given early copies.)

I knew what the major problem was going to be before Jason told me: In any system like this, you’re limited by the selectable elements on your palette. He didn’t mention where the blocks come from (I assume they’re written in Java using some relative of the MIT Open Blocks technology) nor whether user-created blocks will be importable into the product as shipped. I’m a lot less worried than he seems to be about this, because Google isn’t stupid, and they know damned well that the system lives or dies by the richness of the set of available logic blocks from which the apps are generated. If it’s anything like an open system, there will be an explosion in third-party blocks once a few Java guys get the system and figure out how to do it.

Jason provides some screenshots with his article, and I borrowed one above to get your attention. Here’s another page with a description of a more complex app, with a much more representative Blocks Editor display.

There’s not a lot more that I can say about App Inventor itself, at least until I can get a workable instance installed here. But it’s been interesting seeing all the dorks in the comments to the news stories, dumping on the system for its simplicity, and for the (frightening) possibility that the hoi-polloi will be able to use it to write their own software. They scream the obvious: You can’t write a word processor with a tool like this!

Fersure. And that’s not what it’s for. I’ll respond with something that should be equally obvious: The mobile phone environment is fundamentally different from the desktop environment. From the beginning, it’s been about smallish apps that do one or two things of interest, and no more. Mobile phone computing for the most part is about getting in, doing something with a few quick clicks, perhaps reading the screen, and getting out. The apps are very focused and often extremely specialized. Some are obviously going to be a lot more difficult to write than others, but a useful mobile app does not necessarily require man-years of development time.

And if it ever did, it won’t anymore once App Inventor hits its stride.

I think that I’ll use App Inventor for the same reasons that I use Delphi: To play with ideas, see how things work, and gen up one-time test apps that may lead in useful directions. I’m guessing that App Inventor will enable people to create apps for an audience of one–themselves–and not have to spend six months of free time to do it. Companies may experiment with different approaches to mobile computing without having to commit millions of dollars in dev costs to any one approach, just to see if it’s useful or even doable.

I have never had a smart phone, and I’ve been waiting for my current cell provider contract to expire early next year before getting one. I may have to accelerate the schedule a little. This thing’s making me itch in places I haven’t itched in for a long time.

Millard Fillmore in the Rivervalley

FillmoreBuck.jpgI finally got a Millard Fillmore dollar at the bank today. I’ve been meaning to ask for one for a long time, but I hate to bother the poor tellers for silly things like that when there’s a line. Today, for whatever reason, the Wells Fargo branch at Safeway was empty and staffers were standing around BSing, so I asked. And I got.

It’s a ridiculous coin in a lot of ways, none of them involving poor President Fillmore. Nobody uses dollar coins, and the government only issues them as a means of making something out of a nickel’s worth of metal and selling it to collectors for a dollar. The coins don’t suggest “money,” (and certainly don’t suggest “dollar”) and after only a little while in circulation they darken up and look like big ugly old pennies.

But I like Millard Fillmore, and have wanted to work him into a story for thirty years. I got closest in the fall of 1984, when someone in my SF group told me that Philip Jose Farmer was allowing people to write stories set in his Riverworld universe, as long as the yarns didn’t conflict with anything in the novels themselves. I have a collection of such stories, which were far better than what we now call fanfic, and are worth reading if you enjoyed Farmer’s epic even a little.

So I read up on Fillmore a little, and began a story. That was 26 years ago. I dug around in my two moving boxes full of old manuscripts downstairs just now, and found it without a great deal of trouble. Some quick OCR, and I can give you a sample:

It had been a quiet night, and the late night rains were past. Nicky was close by, too close: Through the merest wisp of thatch Fillmore heard female giggling. Soon, too soon, he suspected he would hear Nicky say something like, “I’ll do that again if you’ll go next door and be good to President Fillmore…” When the line worked, he felt wretched. When it didn’t work, he felt worse.

Fillmore had died an unhappy old prig at age 74, and even after thirty years on the great River, where everyone had been resurrected a healthy, glowing, eternal twenty-five, he had never gotten the knack for seducing young women who seemed more suitable to be his granddaughters than his paramours. Telling them he was Millard Fillmore virtually always produced a shrug–telling them he had been President of the United States usually brought forth a belly laugh.

For five years he had lived with a woman who had heard of him: Phyllis Swoboda, a twentieth-century American from Chicago. She had been a psychologist and was fascinated by what she called a “self-persecution complex manifested in a claim to be an unimportant historical figure.” She was clearly the one who was insane, but she had a magnificent memory, and she was from the future of America.

America! Phyllis told him tales of Apollo’s conquest of the Moon, the Panama Canal, Hoover Dam, personal computers, television, Chevrolets, and Space Shuttle Columbia. The most powerful, noble nation in the history of planet Earth, and he had led it for a little while. Wasn’t that worth something?

When Phyllis Swoboda couldn’t cure him of being Millard Fillmore, she moved on. Soon afterward, a tall, muscular blond man in a Panama hat approached him on the beach, set down his grail, and shouted, “You’re Millard Fillmore!” He had almost fainted.

The man was Nicky Daniel Scroggins, who had died of polio in 1955 at twelve years of age. Nicky had collected stamps, and his favorite series of stamps had been the “Prexies,” issued in 1938, including every deceased President up to that year. On the 13-cent issue was the face of Millard Fillmore. “I had a whole sheet of you!” Nicky had shouted, and it was the beginning of the longest friendship Fillmore had enjoyed in either of his two long lives.

I doubt I would have sold it anywhere, but the story had some promise: Fillmore and Nicky trudge on along the River, where they find an “America” every three or four hundred miles. Each of these ersatz Americas boasts a charismatic leader who claims to be someone like John F. Kennedy, FDR, or Andrew Jackson. In no case is this true, but in every case the phony Presidents tell Fillmore to hit the road. After having adventures and being insulted by Sam Clemens (“Millard Fillmore! The man who proved that no one can grow up to be President!”) they happen upon yet another America, a small enclave led cooperatively by three men who claim to be Franklin Pierce, Chester A. Arthur, and Warren G. Harding. Conceding that there was little point in falsely claiming to be Millard Fillmore, the three obscure former presidents welcome Fillmore and make him the fourth partner in ruling the cooperative. (Somehow I flash on a Victorian steampunk epic entitled The League of Unexceptional Presidents.)

I got a few thousand words down, but the story had started to wander when I set it aside. Shortly afterward, I took the job with PC Tech Journal, and my SF career went into near-immediate eclipse. Still, I’m glad I tried: It was the only time I had ever attempted to write a story set in someone else’s world, and that whole challenge gave the project a very weird feel. I had to be careful not to be too imaginative, for fear of violating the fabric of the Riverworld saga, and I wasn’t used to putting artificial limits on my inventiveness. That, of course, is a core skill of a really good writer, and anyone who claims to be a master of his/her craft should try it.

Daywander

I put Carol on a plane Thursday morning for Chicago, after her mom was taken to the hospital late Tuesday night. Delores is doing a lot better now, but for a few days it was unclear just what was going on. We were both planning on flying out there on the 16th, so this wasn’t an immense change in our summer plans–it just means I’m here by myself for a bit, trying not to eat like a bachelor nor dress like a college student.

I didn’t get the whole story yesterday when I cited the YouTube video of Carol’s sister talking about her experiences at her local Ford dealership. It’s actually a clever piece of marketing, though I’m also sure it’s not viral: The dealership will award a gift certificate to the customer garnering the most clicks on their YouTube video by July 15. So do us a favor and go look at the video. Thanks! (I will admit I’m curious to see how many clicks a citation on Contra can generate, and this is a rare opportunity to find out, with real numbers.)

When Carol’s gone, I generally drown my sorrows by writing, but I ran into an interesting problem yesterday. I finished Chapter 7 of Old Catholics last week. I won’t know how good it is until I get a month’s emotional distance from it, but in the meantime there’s Chapter 8. The problem came in when I sat down to write, me in my shorts with an iced tea on the coaster, the sun beating down on the oaks outside my window, only to realize that Chapter 8 is the Christmas chapter. It’s about the quirky Polish Christmas vigil supper at St. JJ’s, and draws heavily on my own experiences with Polish Christmas vigil suppers, both quirky and ordinary. It was 86 degrees out yesterday afternoon, and no matter what I did, I just could not get my interior state to feel like Christmas. It may be the mark of a true hack to be able to write convincingly about Christmas during the second week of July, but I may need to go back to hack school. I just can’t do it.

No matter. I’ve been working on Old Catholics since 2005; what’s another five or six months’ delay? In the meantime, there’s “Drumlin Circus” to work on. It’s still at the notes-and-outline stage, but that doesn’t mean progress isn’t being made. Imagine a line of circus wagons pulled by woolly mammoths, and a show with an acrobat who performs in a cage with two live smilodons. (I may even work in a giant beaver.) And every artifact the circus owns; wagons, props, steam calliope, everything, is made out of drumlins. The Bitspace Institute kidnaps the circus master’s wife, who supposedly has a private drumlin that compels wild animals to obey her. After two years without her, the circus master finds out where the Institute is keeping her, and let’s say that he has a grudge. When the circus comes to a nearby town, it mounts a show that no one in town–especially the Institute–will ever forget. Pleistocene megafauna, scary clowns, calliope music, secret drumlins, the legendary Function Controller–we’re gonna have a real good time!

It may be as much as 35,000 words long. Jim Strickland is doing a Drumlins novella as well, and we may try to put the two stories together as the first Copperwood Double. I’m not an ace at tete-beche, but I intend to learn. Stay tuned.

Odd Lots

  • Before GPS, there was…rolled paper. I’m not sure how useful a one-dimensional scrollable map is, but it was a good start. (And now, all you steampunkers, figure out how to do the same thing in two dimensions.)
  • Shortwave radio and one-time pads are still being used, as we discovered in the recent Russian spy foofaraw. Slate’s done a decent overview of number-station covert communication. The late Harry Helms wrote a lot about these, and most of what I know came from his books. Some technologies just don’t get better over time. They were optimal from just about the beginning.
  • This Lifehacker tutorial tells you in agonizing detail how to install OS X Snow Leopard in a VirtualBox VM. Cool enough–but when did that become legal? (My guess: It didn’t.)
  • From Pete Albrecht comes a pointer to an item describing a proposed copyright law in Brazil that provides penalties for attempting to limit use of public-domain material, or fair use of copyrighted material via DRM. That is a remarkably good idea. (Maybe we’ll see the Viagens someday after all.)
  • This looks real (i.e., not Photoshopped) but as at least one commenter has pointed out, there seems to be no way to get inside. Maybe it’s the ultimate RC car.
  • Speaking of cars, in reading the comments for this Wired Blog article (titled “What’s the Fastest You’ve Driven?”) I felt old and frumpy. The fastest I’ve ever driven in my life was 95 or 96 MPH: in 1971, in my mom’s battered teal-green 1965 six-banger Chevy Biscayne, northbound on the Edens Expressway just before the I-290 junction…in the rain. Why? I no longer remember. And that’s probably just as well.
  • And yet more about cars: Buss Ford Lincoln Mercury in McHenry, Illinois posts YouTube video endorsements from their happy customers. Buy a Merc before they’re gone…and be famous! (It worked for Carol’s sister and her husband.)
  • And now, for quite enough about cars: Pete Albrecht reminds us that in 1973 somebody glued the rear portion of a Cessna Skymaster to a Ford Pinto, and it flew…for awhile. (What do people say? “Don’t fly 70s cars?” Uh, yeah.)
  • DARPA wants a flying submarine. They should ask Irwin Allen. Or Tom Swift, Jr. (Thanks to Frank Glover for the link.)

Realtime Cloud Logging to Spot Band Openings

(Note: This is a total ham radio geek-out entry, so if such things make your eyes glaze over, be advised that there’s an extreme glaze warning in effect until at least tomorrow morning.)

Anyway. I stumbled on a band opening yesterday by accident: I scanned the 6 meter band, expecting its usual near-silence, and instead heard something like a continuous pileup from 50.2 up to 50.6. Such openings happen semiregularly, especially in the summer and during sunspot maxima, but they’re not reliably present when you want them. Typically, people either monitor the bands for openings using a panadaptor (a way to visualize the whole band at once, often built into high-end radios) or they hear about it from their friends via Skype or some other chat system. (Hey Jeff! 6 is going batshit nuts!)

While copying my notesheet to my log last night, I thought of a better way. Suppose there were a sophisticated Web app allowing people to record their contacts in a central database off in the cloud somewhere. Serious contesters work their radios with both hands on a keyboard these days anyway, but they’re logging their contacts locally, on their own PCs. If enough people were logging enough contacts online in realtime, you could plot those contacts on a map as great-circle lines between one station and another. If you wanted, you could age the plots, so that a given line was displayed on the map for a selectable period of time, say the past fifteen minutes. Older plots would vanish and new ones would be continually added. What you’d have is a lookback time window onto what’s happening on the ham bands, plotted geographically. If you click on the “6 Meters” map and alluva sudden there’s a thick web of lines between Colorado and the east coast, you’d know that there’s a band opening underway.

This would be possible in part because the geographical coordinate locations of stations are implicit in logged contacts. Base (at home) stations are licensed by the FCC to particular addresses, and these addresses are matters of public record, easily queried by software. Mobile stations aren’t required to be at any particular location, but GPS logging for mobiles is possible, and I think has been done, if not commercially. Plus, there’s another way: More and more people (especially on higher bands like 6 meters) log the “grid squares” of the stations that they’ve worked. There’s a system for tagging 2 degree by 1 degree rectangles of the Earth’s surface, such that each rectangle has a 4-character callout. (There are an additional two characters of precision that almost no one uses.) My own is DM78. Here’s a map for the US and for the Earth as a whole. Plotting a line between DM78 and EM94 isn’t hugely precise, but it will tell you that radio signals are propagating usefully between central Colorado and northern South Carolina, and that’s all most of us need to know to make us scramble downstairs and turn the radio on.

I think this is one case where doing something out in the cloud that was previously done locally provides benefits that local storage alone does not. The whole point is to brag about how many locations you’ve worked worldwide, so privacy is not an issue. (If it is, just keep your logs local.) And the benefit of online collaboration is knowing just what propagation paths are open at any given moment of the day. I’d pay a quarter for that, or at least provide data by logging contacts.

I looked around just now to see how close we are, and whereas there are a couple of online logging systems in operation, they are nothing even close to realtime, and none that I can see makes any attempt to plot propagation paths for logged QSOs. That said, nothing I call out here is rocket science.

So. Did I miss something somewhere? And if not, what Ajax wizard is going to give this a try?

Odd Lots

Review: The Calibre Ebook Management System

I tried Calibre when it first came out a little over two years ago (v0.4.83) and was reasonably impressed. It did everything it said it did, reliably and without much fuss. Alas, I didn’t test most of its features back then, especially its file conversion modules. I’ve done a lot more in the past week, and overall I’m pleased.

The current version is 0.7.6, and author Kovid Goyal posts updated releases frequently, as often every couple of weeks. That’s amazing for a GPLed app, but Calibre itself is amazing in its way. If you install no other ebook reader or manager, get Calibre. It’s a Python app, and can be downloaded for Windows, Linux, or Mac.

There are three general aspects to Calibre:

  • It’s a sort of jukebox for ebooks: a simple database manager that allows you to browse your ebook collection, search for individual titles, and edit metadata by individual title or in bulk. It can send books to any of a growing list of hardware readers.
  • It’s a collection of import/export modules behind a GUI, allowing you to take an unencumbered ebook in one of a long list of formats, and export it to a different format out of that same long list.
  • It’s an ebook viewer that can render ebooks for reading in most popular formats. When a format isn’t supported, Calibre attempts to launch the associated app to render the book.

All three aspects work well, though I ran into some problems with format conversion. I tested Calibre by importing basically every ebook I have on disk, which at this point isn’t all that many. I still don’t have a portable reader device that I like, and I don’t read a lot on my PC display. So I went and got a bunch of things from Project Gutenberg (including all the pre-1923 Tom Swift Senior books) plus some religion journals and other PD oddments from Google Books, and ended up with about 150 titles.

Calibre copies imported ebooks from their original locations to a separate directory, and it operates only on those copies, leaving the originals alone. (This means that the space your library takes on disk will basically double, though I doubt that this is an issue in an era of 2 TB hard drives.) It controls the filename of each file, and imposes a filename by running a regular expression against the title and author name in its database. Change a book’s title in the database, and the filename changes in sync. Delete a book, and only the imported copy in the Calibre directory goes away. Your originals are not touched.

Once you import the ebooks you own, plan on spending some time editing the metadata. Calibre uses a regular expression to extract an author and title string from each file, and although you can change the regular expression if you want, there’s no broadly accepted standard for ebook filenames, and you’ll find that many of your books have the author name in the title field or vise versa irrespective of the expression Calibre uses. You can specify a series name and number for books in series; e.g., Tom Swift, Sr., Volume 12. There are additional fields for publisher, ISBN, pub date, and comments, and if a cover image is present in a book, a thumbnail will be displayed. There is a tagging system with a tag manager.

Sorting out the metadata was a fair bit of manual labor, even for only 150 books. You can do updates on several books at once; for example, I highlighted all the Tom Swift books and set the Author field to Victor Appleton in one operation. If you have many hundreds or perhaps thousands of ebooks (and I know people who do) good luck; you’ll need it. There is autocomplete on fields and that helps, but there’s an irreduceable amount of keystroking that has to happen to get the most from the database browser.

The ebook viewer is as good as I’ve tested so far. It renders almost every ebook format I’ve ever heard of, including the comic book formats and PDF. (You can configure it to launch an external app to handle a specific format if you choose; for example, I open CBZ and CBR files with Comical.) For EPub and MOBI files, at least, the reader automatically maintains a bookmark to the last opened location in the book, and when you reopen a book, the cursor goes right to that bookmark. (This is not true for LIT, PDB, , and LRF books.)

About the conversion modules I have mixed feelings, and the problems are probably not all with Calibre. I converted my EPub version of the Beyschlag Old Catholic history to LRF, MOBI, and PDB. Results were so-so. One problem with the LRF export was that the font size was inconsistent: Parts of the text were rendered in larger type than others, and I can’t tell (yet) if that’s an issue with Calibre’s LRF viewer module or with the conversion process from EPub to LRF. The conversion to PDB stripped out all the formatting, including italics, and that does appear to be a problem with Calibre. MOBI kept the italics but didn’t center the author lines. Calibre seems happiest dealing with EPubs, and conversion from other formats to EPub works better.

Note that Calibre doesn’t deal with DRM-encumbered files at all. That’s fine with me, as I won’t buy DRM, but you need to keep it in mind if you’re looking to read DRMed books on your PC; Calibre is not the item for that.

I also installed Calibre under Linux, and I moved my entire Calibre database over to the Linux machine by simply copying the Calibre books directory to a thumb drive, and then copying the directory from the thumb drive to a folder in my home directory and telling Calibre to use it. As best I could tell, there were no functional or performance differences between the Windows and Linux versions.

There isn’t a lot of downside to Calibre. Opening and rendering an ebook on the internal reader can be slow if it’s one of the more sophisticated formats. (Txt and .rtf files open very quickly.) The viewer doesn’t downsample cover images very well when displayed at less than their native resolution, though that’s a quibble. (Reduce the display size on my Old Catholic history epub and you’ll see what I mean.) Adding bookmarks seems to take more time than it should, especially on longer books. The program crashed once when I had a lot of windows open. (These included Thunderbird 3, which seems to be causing a lot of weirdness recently.)

Calibre doesn’t help you create ebooks; that’s not what it’s for. And some issues with the conversion modules are going to keep me looking for reliable ways to make MOBIs, LRFs, and PDBs out of my EPubs. However, in terms of an ebook manager, it’s just short of stellar. The viewer modules work reasonably well, particularly with files created “natively”–that is, not converted from one format to another.

Basically, the ebook business is still mighty young, and I’m not surprised at how random things still are. Among ebook-related software products, Calibre is the least random of anything I’ve yet tested, and at this crazy stage of the game, that’s high praise.

Highly recommended.

How Old Am I Again?

58 today. (I checked.) However, some weeks ago, when Carol asked, “What do you want for your birthday?” I had to think a little bit to remember which one it was. Am I 57? Or 56? Oh yeah, I’m 58. Wait…not yet. 10-2=8. I think…

This isn’t a classic 50s moment. I recall the occasional mental strain of remembering how old I was back in my late 30s. Am I 36? or 37? Same deal in my early 50s. 52, 53, well, they all run together. Sometimes the remembering is easier: Nice round numbers like 50 and 55 come easily to mind. 55 had the memorable cachet of granting me senior discounts at places like Denny’s. I’m guessing that when I’m 60 I won’t have any trouble.

It was easier knowing how old I was when I was a kid. Part of it was a constant if poorly understood preverbal ache for the privileges of age; more freedom, bigger toys. When I was 10 I was desperate to be 11, and when I was 11 I was desperate to be 12. If I’d known what was waiting behind 13 I might have turned around and been happy to stay 12. I liked 12. I hated 13. And 14. And 15. And 16. 17, now…

Like them or not, the ache made sure I always knew which year I was. However, once you’re in your 20s, the things you want aren’t strongly tied to age, and a lot of the birthday magic just goes away. Besides, much of the American Dream was mine before I even turned 30: I had a cool job writing computer programs, an active SF group that met twice a month, several SF stories in print, a pretty white house around the corner from the Cleavers, a great dog who could dance on his hind legs, milk cartons full of tube sockets, and a loving wife who looked like a supermodel and was my best friend. I lived as men might choose, and mostly what I wanted for my birthday was to keep what I already had.

So far so good. I now have an amazing house with CAT5e in the walls, twice as many tube sockets, four dogs who can dance on their hind legs (though one of them still needs a little prodding) a nerd gang I can hang out with, computers stacked like cordwood, and the love of a brilliant and interesting woman who has remained my best friend past forty (count ’em!) birthdays, and was always there to keep me aimed in the right direction when the inevitable bad patches turned up.

58, heh. It is a happy birthday. Thanks to all of you who sent best wishes and wrote on my Facebook Wall. You’re all a big part of the reason I don’t mind being 58. Oh brave and always new world, that has such people in it!