Category Archives: Uncategorized

Lighting Out for the Territories

(Both classic and modern allusions in headline)

After 26 years in California, my family decided it was time for a new adventure. So we sold our house, and last Sunday all piled in my Ford Escape and rolled out of our driveway in San Jose for the last time on a one-way trip across America–most likely ending around Nashville, TN–from where I’m writing this post in a local Starbucks.

Carolyn’s been blogging our moving adventures over at her blog ( — so check it out if you’d like lots of color commentary on the Great Bickford Road Trip (including all the weird things we ate at the Texas State Fair–fried Jello, anyone?)

In the meantime, we’ve had a great time seeing old friends as we made our way across the southwest, through Texas, and now, Tennessee. We’ll be looking at houses tonight and tomorrow with the very nice realtor who introduced us to Nashville Hot Chicken, and will likely be settling down if we can make something happen here and all the other factors work out right. At least, that’s “Plan A”.

“Plan B?” Well, it’s a big, amazing country with a lot of wonderful people and places in it. And I have to admit, it’s sort of thrilling to have all the possibilities wide open. I’ll do my best to keep everyone updated as things develop…

Control Through Fear

It seems as we approach the election, that the favored strategy of the media–once again–is to try to excuse one deplorable candidate’s innumerable faults by peddling the story that at least they’re not as SCARY as the other candidate.

Is your favored candidate a lifelong Washington power-broker who’s voted or connived to start multiple wars? For the media, this presents no problem: All they have to do is simply never mention any of those annoying facts (which they once proudly touted as hallmarks of their candidate’s “smart” foreign policy), while repeatedly running red-faced pictures of the opponent accompanied by half-baked conjecture on how he might send the world straight to nuclear armageddon with his “overheated rhetoric”… about, uh, Mexicans, or fat beauty queens, or the Russians which… uh… he’s apparently too friendly with.

I mean, crazy friendly. You know, like “start-a-war” friendly.


But seriously, folks, this stuff is nuts. And I can’t believe that not only are many otherwise perfectly sensible people playing along with it, but that they also bought it every four years going back to at least Reagan, if not earlier.

Look, anyone who knows me well knows that I regard this election as absolute horror show. There is literally nobody in the race who even remotely represents my point of view*. That said, at the end of the day, most of us are going to hold our noses and vote for the person we consider the least-bad of the bunch. But that doesn’t mean we have to simultaneously parrot the media’s insane talking points about how weally, weally scawwy the other guy is.

As it turns out, no matter who wins, the shocking truth is that:

  • No one’s illegal immigrant gardener is going to be put in a cattle car and sent to the gas chambers. Even if they did overwater the roses.
  • The president stands no risk at all of accidentally punching the “nuclear button” because they forgot to say “half-caf” when ordering that double-espresso.
  • And no, women are not going to be “put in binders” or forced to use coat hangers for anything other than hanging clothes; and blacks are not going to be all “put back in chains” or hunted to extinction by legions of racist cops.

This is all, as they say, nonsense on stilts. But I can’t believe how many times I’ve heard the same conversations repeated earnestly at bars, in checkout lines, or on Facebook.

C’mon folks. Let’s change things up this (miserable) election and at least not embarrass ourselves by pretending the world works like any of that. Frankly, the folks in the press pushing these fairy stories are treating us with absolute contempt. Wouldn’t it be nice if for once we returned the favor instead of credulously playing along.

Hey, I can dream, right?

*I’m basically a John F. Kennedy Democrat–whose pro-business policies of lower taxes, free markets, and consistent support of human rights and freedom around the world, enabled by a muscular but restrained military– would mark both of us as troglodyte, fascist, Nazi mouth-breathers in today’s crazy political landscape. 


How to Score Free Stuff from me when Ordering on Atomic Avenue


I’ve often mentioned in the ComicBase User’s Group meetings that we here at ComicBase order comics a lot like a mid-sized comic store does. Basically, we order one of every “normal” comic book (everything but extremely expensive variants, or those that require you to order X regular copies in order to buy 1 copy of the variant issue). And yes, our comic bill each month is genuinely frightening.

After we scan and index the books, they typically get added to my collection and sold at the going market price on Atomic Avenue. (My store is

Now, one of the weird wrinkles of ordering a jillion comics per month is that Diamond periodically damages comics (typically bent edges when the packing was a little tight), or throws in giveaways or promotional comics. We also wind up with huge numbers of Free Comic Book Day and Halloween special comics, which–since we don’t have a storefront–tend to accumulate.

Since it wouldn’t be honest to try to sell the comics we got damage credit for, or that were meant as giveaways, I typically try to load up the packages I sell on Atomic Avenue with as many of these extras as will fit–provided it doesn’t cost me in extra shipping.

In effect, that means that if I can throw in one or two with a regular order without adding to the shipping cost, I will. But the surest way to get a package stuffed with whatever I’ve got is to take advantage of the packages that I’d wind up shipping in a flat rate envelope: essentially, any regular order with 3 to 12 comics in it.

The way it breaks down is typically this: 1-2 comics fits in a flat mailer (like the kind used for photos), and is charged by the ounce as First Class postage. But as soon as you get to 3, you get over the magical “13 oz” level–typically with the third comic–it has to be shipped a Priority Mail package. And from 3 to 12 comics, I can ship them for the same flat rate price. (After 12 comics, they no longer fit in the envelope and I have to use a conventional box).

So: If you want free goodies from me with your order, just order that 3rd comic and you’re likely to receive a package packed full of surprises.


Error Prevention is Way Better than a Cure when it Comes to .Net Error Handling

Here’s a fun little .Net speed optimization I found out today:

(In both of these “Reader” is a DataReader which I’m using to loop through a set of database records.)

Code #1:

dim myValue as string

While Reader.Read()
     myValue = Reader("FieldWhichMayNotExist")
     myValue = "This is a default value"
  End Try
end While

And here’s Code #2:

dim myValue as string

dim fieldExists as Boolean = 
FigureOutIfFieldExists(Reader, "FieldWhichMayNotExist")

While Reader.Read()
  if fieldExists then
     myValue = Reader("FieldWhichMayNotExist")
     myValue = "This is a default value"
  end if
End While

So, what’s the big difference? The first one traps for the field not existing and inserts a default value if so; and the second one wastes a bunch of time going through a routine to see if the field exists, then loops through and uses the result of that first scan to use either the field value or the default value accordingly.

You might think that the two would run in similar amounts of time–or maybe even Code #1 would be a little faster, since it didn’t waste a few precious milliseconds scanning to see if the field exists.

But here’s the shocker:  Code sample #2 runs about 20 times faster than code sample #1, since it doesn’t need to deal with the whole .Net exception architecture. In the case of the actual code upon which this was based, it meant the difference between being able to insert 630,000 records in around 100 seconds, vs. more than an hour.

Exception handling: it’s more expensive than you think–particularly inside loops. Prevention in this case was worth 20 times more than a cure.

Laws of Intended Consequences: Grocery Store Checkout Misery in California


This was the scene tonight at my local Safeway as I attempted to grab a quick twelver of Becks to refill the office fridge.

In case it doesn’t look dire enough from here, here’s the scene behind me in line.


At this point, gentle reader. you might be a bit curious as to why Californians seem to love waiting in grocery store lines so much that they don’t speed their way through the four (!)  readily open self-checkout lanes seen at the front of the first picture. Lanes so lonely for company that the checker overseeing them began touting them, carnival barker-style, while none of the doomed patrons in line could do more than grimace and sourly wait for the next available spot at the one open checker.

The answer is found in the sign posted at the front of the Checkout lane


In a another world–in fact, the world we had just 18 months ago as it turns out–I’d have grabbed my brews, swooped through checkout in a minute or less, and be back at my office jangling my still-cold beers in a plastic bag (that cost less than a penny to make, and which easily holds my purchases together while contributing nothing at all to the inconvenience of the journey, and requiring a fraction of the energy and environmental waste of the “eco-friendly” reusable bag that  every shopper in California is practically required to hoard).

But thankfully, I was saved from this hell of convenience by our wise leaders in the State Legislature–who have Done Something about the Very Pressing Problem of… uhh… what, exactly?

Stopping underage drinking? After all, a minor could just grab a case of beer and… what? Get carded at checkout by the scowling clerk watching the lines like always once the big “Alcohol Purchase–Show ID to Checker”: signal goes off on the self-checkout?

Were underage buyers really standing in line to law-abidingly pay for their non-lawful booze at self-checkout (vs. the much more sensible action of simply shoplifting the brewskis using the now-mandatory “reusable bags” that everyone now carries–thanks to the same legislators?)

If one is overly cynical about the actual motives of this law (and I’ve found it’s very, very difficult to be even appropriately cynical where politicians are concerned), one might suspect that the actual reason for this new prohibition is to lessen the usefulness of self-checkout–which has been catching on hugely in the past few years since it offers customers a way to pay without waiting forever, and which offers store owners a way to control labor costs in an era of massive increases in mandatory minimum wages.

Perhaps it was a payoff to their friends in the grocery unions. Or a way to “Do Something” about the lack of employment brought on by their ever-increasing minimum wages that make it utterly uneconomical to hire low-skilled workers for starter jobs… like checkout clerk.

But once again, thanks legislators. Your willingness to step forward and Do Something–about plastic bags, minimum wages… and now the terrible perils of unregulated self-checkout… has made grocery shopping in California the delight it is.

Review: Advanced Installer 12.2 from Caphyon Ltd.

Bottom Line

A powerful, well-supported installer  that checks all the boxes in terms of features and stands well above the rest of the pack in terms of support and ease of use.

Windows Installers: A Den of Scum and Villainy…with the Occasional Hero

The world of Windows Installers is a bleak one for the most part, full of bloated, breathtakingly expensive, and frankly lackadaisical offerings from the industry leaders, and half-baked, ill-supported packages from the less-expensive competitors.

Almost all come with fearsome learning curves, four-figure prices for initial purchase (with much more required for support and maintenance), and a general “hands off” approach to customer relations once the purchase has been made.

Unless the package you’re deploying is incredibly simple in nature, you’re likely to find yourself overmatched both by the prices and the complexity of the various installer packages, with little in the way of support except the odd technical forum or too-slow-to-be-useful email support system.

Having dealt with more of this sort of thing than we’re comfortable recounting, it was with some surprise that we dug into the workings of Caphyon Ltd.’s Advanced Installer 12.2 and found what appears to be a company that is actually throwing some effort into making an installer package that’s both usable and full-featured enough to handle complex installs.

Checking the Boxes

Advanced Installer comes in multiple versions, from the surprisingly full-featured $399 Professional version to the $2999 “Architect” version which is, frankly, of most use to sysadmins managing very complex enterprise software distributions. A freeware version for very simple installs is also available.

Most Windows application developers will find themselves drawn to the Professional version, which handles both installation and updating of 32 and 64 bit applications across any Windows platform. Those with need of patch creation or dialog editing will find themselves eying the $1499 Enterprise edition, as will those who need to take advantage of the all-too-common need to add the software they’re installing to the Windows Firewall. The need to shell out another $1,000 to get that last feature is a particular pain point to small developers.

A full breakdown of the features of the various versions can be found on the Caphyon web site.

Getting into the IDE

Caphyon makes a decent attempt to ease the burden of creating an installer by providing numerous project types to start you off. Unfortunately, the descriptions of each type could use a bit more fleshing out, and it wouldn’t be a bad idea to quiz the user a bit on the sort of features they intend to use to help them pick the proper template.

Advanced Installer-Project Types

Once you’ve chosen a template and gotten started, most of the work is accomplished by stepping through the various product information screens to define how your product will be installed.

Advanced Installer-Product Details

These pleasantly work in a fairly standard manner, but with a number of nice interface touches along the way to help guide you along and prevent common errors. There’s a general attention to detail on display throughout the IDE which — although it doesn’t quite rise to the level found in consumer level software — goes far beyond what is typical in enterprise offerings such as this.

Help and Support

Advanced Installer does a good job of providing context-based help, and their web site contains copious documentation which is reasonably organized, if sometimes a little light on details. They also host a strong support community with a surprisingly high “signal to noise” ratio in terms of providing guidance.

Another area where Advanced Installer rises about the rest of the contenders for InstallShield’s crown is in the responsiveness of their technical support staff.  Support was friendly, and–more to the point–got straight down to business in solving the problem with a minimum of time-consuming back-and-forth.No matter how skilled you are as a developer, it’s comforting to know that the product you’ll be relying on to build your own product is well-supported–both by the company itself and its community of users. Here, Advanced Installer shows some real strength.

Building the Installer

We used the 30-day trial of Advanced Installer to really work the product over by devising a copycat installer of our horrifically complicated ComicBase Archive Edition install–a beast of a project that involves everything from installing .Net frameworks and configuring dozens of merge modules to installing everything from fonts to graphic files across numerous folders on the target hard drive.

Advanced Installer-Files

We won’t lie: we did hit a few hitches along the way, and turned to Caphyon’s tech support a couple of times to answer questions about how things work, and at one point to address a bug in the generated install file. All things considered, however, the experience wasn’t half bad, and we managed to get a working version of the installer generated with less than a day’s work.

Having used competing products from InstallShield, InstallAware, and Wise, the Advanced Installer IDE was similar enough to be navigable without a lot of instruction, and did a better job than most of the competition in guiding us through the more complicated bits of the process. It also excelled in the sheer speed of the IDE, never suffering the slow-downs that made others come to a crawl once large numbers of files were added.

The product as a whole still feels “young” — with a few rough edges to be found for sure, but also with an energy behind its design and its support community which is sorely needed in the enervated world of Windows installers. We’d love to see further refinement of the product in terms of additional wizards for complex areas (e.g. setting up firewall exceptions), as well as with better integrated support for providing repositories of downloadable merge modules and the like.

All in all, however, Advanced Installer was a very pleasant surprise: a much-needed shot of youthfulness and energy in a sedentary field of development, but one which carries with it the sort of chops that allow you to take it seriously for the creation of even very complicated installers.

Kudos for Great Tech Support: Caphyon and Advanced Installer 12.2

Even geeks need to call for help sometimes, and when we do, it’s rarely for something that can be solved by turning the machine off and on.

The sort of software problem which trips up professional programmers tends toward the complex, and often comes in configurations that require encyclopedic knowledge of everything from NTFS and IIS permission settings to DNS routing maps to understand. It’s not something that lends itself to adequate resolution by having some underpaid drone read off a script, or tell the user to check out the support forums for ideas.

Another feature of enterprise-level software? It ain’t cheap, often costing hundreds or thousands of dollars, often with license renewals every 12-18 months. Over a ten year development lifetime, it’s not uncommon to lay out four or even five figures with a software vendor for a single piece of development software.

So when you’ve just dropped a grand or more on an development package only to get told that doing anything beyond posting a question in the forums is beyond their ability to support, it’s a frustrating experience indeed. But sadly, too many makers of software geared toward developers think this is an acceptable way to go.

Luckily, there are still a few companies which seem to take support seriously, and I’ve had occasion to do business with all three of them in the same week.


The Windows installer-creating software field desperately needs shaking up, with behemoth InstallShield very comfortably occupying the mediocre throne, atop $699 “express” versions to create very simply products, up to $4,999 “Premiere” editions (with suggested $1300 annual “Gold maintenance” support plan!) for creating full-featured programs.

We’d tried using the Express version years ago before discovering that it was inadequate to the task of installing–much less patching and updating–ComicBase. We wound up switching to the ill-fated Wise Installer, which did a respectable enough job, but whose company was bought and sold like a paid woman at a biker rally, ultimately being discontinued.

Attempting to move to a something more modern (capable of installing .Net 4.5, for instance), we made an extremely ill-advised investment in a cross-grade to InstallAware, only to suffer through such anguish-inducing customer service that we were ultimately left with a dead loss on the $1000 we paid, and not even left with an installable version of the installer tool (!). There’s a future blog entry–if not a couple of chapters in a book on how to alienate customers–in covering the saga.

Having been previously burned, we were wary of the den of scum and villainy which seemed to comprise the Windows Installer tool market when we discovered Caphyon Ltd. who makes a product called Advanced Installer 12.2. Accordingly, we gave their product a full test during the 30 day demo period, using it to recreate the surprisingly complex ComicBase 2015 installer package (which must install all manner of system files, .Net Framework components, thousands of graphic files, and other bits and pieces).

Unlike some of their competitors, Advanced Installer didn’t claim to be able to read in the existing .msi file we use now (InstallAware claimed to be able to do this, but failed to make a usable installer from it). As such, we basically had step through the entire complicated installer process from scratch, while looking at a copy of the old Wise installer for reference.

Surprisingly, we were done within an hour, and without any of the interminable “compressing files” and “scanning files” lags which bedeviled the original creation of the installer using Wise.

Unfortunately, we ran into a fatal error when attempting to build the final installer, so we reached out to Caphyon’s tech support for assistance. We got an email back within a few hours asking to examine a copy of the installer file, which we promptly sent over. Within half a day, we received back a fixed version of the installer file, along with a request to help them investigate further to make sure no future customer ran into a similar problem.

It’s worth noting that at this point, we hadn’t even become a customer yet, yet they resolved our highly technical problem efficiently and with speed and professionalism. This is the way that support for professional-class products should go, but too often does not.

Kudos to the support team at Caphyon. (And may the others in this space learn from them as they hopefully steal away your underserved customers).