Tag Archives: LinkedIn

“Creative Destruction”, or “Server Crashes (The Good Kind)”

In memoriam…

Economist Joseph Schumpeter is famous for popularizing the term, “Creative Destruction” to talk about the way economic progress relentlessly grinds down the old to make way for the new in a never-ending cycle of “reinvent yourself or die”. For instance, buggy whip companies were driven out of business by Henry Ford’s horseless carriages which, being horseless, did not not need to be whipped quite as often. (They also pooped less). Similarly Polaroid had a monopoly on self-developing film but lost its business when digital cameras made film irrelevant, and suddenly you had other ways of taking pictures you didn’t want the photo developing guy to see.

For a little software company that’s been doing this ComicBase thing for seventeen years, we live and breathe this whole “creative destruction” thing ourselves–whether we like it or not. We started out shipping ComicBase on six compressed Mac OS 1.4 MB floppy disks, went on to become early adopters of CD, DVD, and digital video, and were the first PC program in the world to ship on Blu-ray Disc format. (We just made history again by being the first commercial PC program to ship on Dual-layer Blu-ray format!).

We’ve had to make the transition from Mac OS 7 to PowerPC processors, then wrote an entirely new version–in another language, no less–to let us run on PCs with Windows 95. Naturally, this led to later versions which in turn offered support for Windows 98, , Me*, 2000, NT, XP, and Vista, as well as new technologies like 64 bit operating systems and the growing use of mobile and handheld devices of all stripes.

*Which is to say that the constant glitches you experienced while using Windows Me were just the operating system blowing up, not ComicBase.

Ironically, we had to discontinue our original Macintosh version when Apple decided to mothball HyperCard, the development environment it was written in. Thankfully, Apple later introduced Intel-based machines which once again let the Mac folks use ComicBase under Windows, thanks to Apple’s Boot Camp software (and numerous other programs like VMWare, Parallels desktop and the like). It actually works so well that we even use a Mac Mini as one of our demo machines at San Diego Comic-Con–Not that I don’t still get regular hate mail from fans of the long-dead HyperCard version…

And of course, we’ve embraced the internet in a big way as well, starting with a basic HTML web site way back in 1996, and steadily revving it, rewriting it, and expanding it in the years that followed until it now does everything from real-time comic price quotes, to weekly price and title updates of the world’s largest comic book database. Then, since we clearly lacked anything else to do, we created Atomic Avenue–the vast online marketplace of comics which now boasts more comics for sale than all of eBay (1.2 million and counting!).

So what’s the point of this running travelogue through ComicBase history? In a roundabout way, it’s to explain why I treated five of our most loyal and longest-serving server machines to ignominious and painful deaths in the past week.

One by one they fell: “Spectrum” (our office file server) was repeatedly bashed and thrown onto the hard floor of our office until bits of plastic and metal came flying off from its horribly twisted case. “Judy” (backup and utility server), “Elroy” (our old production web server), and “Astro” (the production database server) had their disk drives ripped out, cards scavenged, then were mutilated and chucked into a dumpster parked behind our building.

And then there’s Goddard (our old test database server)…It’s probably best not to even talk about the things we did to him before the twisted bits that remained joined the bodies of Judy, Elroy, and Astro in the dumpster.

I feel really weird about all of this because in a big way, there was nothing wrong with those servers. They were all working absolutely fine when we sent them to that big shiny server rack in the sky. It’s just that their technology was getting too old, and it became possible to economically build new servers to replace them which offered twice the performance, were far quieter, and consumed less energy. We tried to find a nice retirement home to shove them off to via Craigslist and Facebook, but to no avail–they were heavy and cumbersome to ship, their technology was too specialized and dated to be worth selling, and nobody volunteered to adopt them before the time came for them to be put down.

So, after months of planning, machine construction, and staggered software installs to reconfigure all our interrelated sites and services to use the new machines, it became time for the old servers to be, well,  creatively destroyed (at least, as creatively as we could be without the use of explosives!)

So long, fellas. I’ll sort of miss you when I browse my Network Neighborhood and don’t see your names there. At times like that, I’m sure I’ll think of the fun times and the pain we had together, and get all nostalgic for a second or two (except Judy–we never really bonded for some reason).

But rest assured:  if we’re doing our job right, the day will come before too long, when your replacements will be blinking their little LEDs nervously as we assemble the machine that will replace them.

To All Software Vendors: Keep It Real on Upgrade Prices

OK, upgrades are on my mind a lot right now, and I don’t want to tell anyone how to run their business—it’s hard enough running my own. But to all you software vendors out there, can we please keep it real when it comes to upgrade pricing?

I’m catching up on phone messages and emails after our big cameo on the silver screen, and among my many messages were two from the vendors of some development tools we use in-house. These are fairly expensive products, and the messages were pleas to buy their latest and greatest. Although I’m happy with the products in question, I won’t be jumping on either upgrade deal anytime soon.

The reason? The programs in question cost several hundred dollars apiece, and the upgrades in question were incredibly minor (e.g. “now with better support for Word 2007 XML export!” or “more responsive menus! [I’m not even kidding on these]). But, because I’m a valued customer—the companies in question are offering me an upgrade discount of…about 15-25% less than buying the whole product over again.

To wit: the first product costs $799 to buy in the first place, but upgrades can be had for the special upgrade price of just $599 (but only if I act now–otherwise the upgrade price goes up to $699!) In comparison, upgrades to ComicBase typically run about 1/3 of the original price ($99.95 for the upgrade to the $299 Archive Edition, or $49.95 for the $129.95 Professional Edition).

Normally, I’d just shake my head in disbelief, but this time, in a fit of misplaced inter-company generosity, I made the mistake of actually telling the salesman of the special $599 upgrade why I wasn’t taking him up on his kind offer:

“Hey look, let’s say I get $800 worth of value out of buying your product from a starting point of nothing, which is pretty much the minimum I’d need in order for it to make sense to buy a $799 product in the first place. That’s not chump change for me, and the product really has to deliver in order to meet that. But when you price the upgrade at $599, you’re saying the difference in value between the two-year-old version I’ve already got and the new one is by itself worth 75% as much as a whole new program.”

“I mean, are you really telling me that the ‘Improved Word 2007 XML support’ is such a great feature that I’m going to get 3/4 of the value from it alone as I did going from nothing at all to the current version?”

I didn’t think so either.

What the salesman apparently didn’t recognize was that when you ask me to buy a $699 upgrade to a $799 product, it was less a question of upgrading, than trying to sell incredibly similar software to someone who already owns a copy. Upgrades are generally easy to sell: you’ve already found the customer, and done at least one thing which makes them happy. New purchases are much harder. And that’s effectively what they were asking me to buy.

Honestly, though, I sympathize with anyone running a business, and we all have to choose our best shot at a strategy for success. Ours is to keep upgrade prices as low and attractive as we can make them, and be as aggressive as possible with the data and feature set so that our customers really look forward to each year’s upgrade.

Every year, it’s really a game of, “What can we do to make this version so awesome that anyone whose subscription just ran out will be dying to grab the next one?” We don’t want to merely justify the upgrade price, we want to pack in an excess of value so that as many people as possible will feel that grabbing the current upgrade is one of the smartest buys they’ll make this year. (And I for one completely believe this–especially in the case of ComicBase 14! I know that we won’t get everyone to upgrade every year with this strategy, but our customer retention rates have been known to make a lot of other companies green with envy. And that’s the way I want to keep it.

But that’s just one man’s opinion. I wish these other folks the best of luck with their strategy (and I really do enjoy their products). But please, stop calling to ask why I didn’t grab the new version this year, and get your engineers to do something more than “improved menu speed” to justify an almost-the-same-as-new “upgrade” price.

Apple could largely stop iPod theft…should it?

As I heard tonight about another kid dying because he was mugged for his iPod, I thought again about the three GPSs I’ve had stolen from my own car, and how the companies that make both products could have probably prevented the crimes from ever taking place.

Simply put, both Apple and Tom Tom have a registration database of customers and device serial numbers. If they were to require activation of the units in question (and let’s imagine the database and devices were secured enough to not be easily broken or renumbered), it would be possible to refuse activation of known stolen devices, and to disable previously activated devices that were reported stolen. For instance, an iPod could be made to check in with a remote server to verify its activation before it was synched with a new music library, or a GPS could interact with a satellite signal to confirm activation status, much the same way as traffic reports are done now. In a world like this, stolen iPods and GPS units would become largely worthless, and there’d be no sense in stealing them. For much the same reason, car thieves largely don’t bother stealing radios with XM/Sirius transmitters: those radios can simply be shut off after the fact, so they’re worthless on the resale market.

So why doesn’t Apple implement such a scheme? I can think of any number of reasons, ranging from user inconvenience, not wanting to take on the enforcement role, or the fact that the costs of such a system would all fall on them, while the present system actually benefits Apple in the sick sense that they actually make money when a stolen iPod is replaced. Ditto for Tom Tom and Garmin. Generally, you don’t convince someone to take on a task when they’d take on all the cost and suffer financially as a result.

And yet, if companies in these situations did work to prevent the use of stolen property in this way, it’d present a huge societal good…which is the fancy-pants way of saying I wouldn’t have had to replace a couple of car windows and some kid would still be alive if there was no point stealing his iPod.

What if Newspapers are Like Land Lines?

I spent much of this past weekend rewiring my house for a big connectivity upgrade—the third time I did this since moving in a dozen years ago. I take a fair amount of pride in being a tech-savvy person, so before I moved a stick of furniture into my house all those years ago, I spent a couple of days making sure all the rooms were wired for both Cat 5 and BNC (a long-forgotten networking standard), along with enough Cat 3 cable to support 4 phone lines, including a fax. Yes indeed, I was a forward-thinking, technology-minded guy of the mid-1990s.

So of course, virtually every bit of that original wire is pointless now, and it’s been changed or removed bit by bit as technology changed. The BNC coax is long gone, replaced by slightly different and totally incompatible coax for satellite TV. Two different DSL lines came and went as well, replaced by various cable modem runs.

I guess I always expected the various internet and ethernet cabling to change every few years, but I sort of shocked myself when I realized  that all that phone cable I’d run years before, and all those phone jacks I’d installed in all those rooms were now completely useless. As a 41-year-old geek, I’m just starting to wrap my head around the idea of a world where nobody cares where the phone jacks are, because your phones don’t plug into a jack.

Of course, this is the world where the under-30 set had been living for some time. And offhand, I can’t think of a single person under the  age of 25 who answers a phone that comes mounted to a wall. They live in a world without phone jacks and land lines. It’s a strange world to us older folks, but what we would have considered crazy fringe behavior (“Waddaya mean you don’t have a real phone?“) just a couple of years ago has suddenly become the new normal.

Growing Up

It used to be, when you were a young adult moving into a new apartment, you made a lot of calls to various services: you got the power turned on, arranged for phone and cable TV installation, and called the newspaper to change your delivery address. The last one was particularly important, since reading the daily paper was both a sign of adulthood–of caring about the world around you–and a good time-killer for those four hour “installation windows” you sat through waiting for the telephone guy to eventually show up and turn on your service.

But slowly, the world changes.

Fifteen years ago, when I started Human Computing, I used to pay for three phone lines, with separate bills for long distance service. On top of this was the bill I paid to a sales answering service for after-hours reception, or for those times when all the phone lines were engaged, so that we could make sure orders were handled properly around the clock. Later, I started paying yet another bill for a cell phone which, mercifully, came bundled with unlimited long distance calling.

Over the years, the answering service went away, replaced by an online ordering system capable of doing credit card charges. An answering machine handled after hours messages, and customers starting using email for most routine queries and tech support requests. The fax machine was replaced by scanning and email, and eventually gathered dust, leading us to cut it off as well. Then VOIP (Voice Over IP) arrived on the scene, solving the long distance problem, and eliminating the need for the multiple analog phone lines. Eventually, I was left with just a single analog phone line and a cell phone.

And then one day, I realized I hadn’t actually picked up the analog phone line for a week. In the end, I decided it was time to economize and stop paying the bill for a land line we never used anymore. It was nearly unthinkable at the time, but we decided to cut the cord, and now the idea of actually having a phone installer rig up an analog phone line seems of a kind with putting in a request for two quarts of skim milk and a pint of cream with the local milkman. It’s just not done anymore.

Which brings me to that other constant in my life: the daily paper.

I was a newspaperboy as a kid (I was actually Carrier of the Year for the St. Paul Pioneer Press!) and I kept up a daily subscription from the time I was fifteen, no matter where I lived. It was, I thought, part of being an adult: in touch with my world, keeping up with current events…checking out hard drive prices at Fry’s… in short, one of life’s constants.

But then, I slowly started realizing that my half hour with the paper in the morning was turning into fifteen minutes. Then five. Then a quick leafing through looking for Dilbert and the Fry’s ads. Sometimes unread papers would pile up for days before I had to guiltily drag them out to the curb for recycling.

For some reason, the paper had stopped being essential in my life. Part of it was that I was getting my news elsewhere, primarily from the internet. Part of it was that the editorial positions of my particular local paper were increasingly (and aggravatingly) finding their way into the news sections, where I was forced to parse the reporting to find the actual story. It all got a bit wearying. And then one day, I decided to economize, letting go of my decades-old daily newspaper habit.

The newspaper carrier was obviously in shock, and for months afterward would sporadically throw newspapers in my driveway for no reason. Breakfast time also was awkward for a few days, as the old ritual of trading the sections we’d just read between my wife and I had been disturbed. And then… we simply forgot all about it. And the years went by.

Today, younger folks don’t buy land lines. They don’t wait for telephone installers. And they don’t worry about hauling their old newspapers out for recycling, because they don’t get the paper in the first place. You can argue whether something important was lost in the process, but I’m not going to second guess others for making the same decision I wound up making myself.

We’re probably all a little shocked by the recent closures, cutbacks, and attempts (unsuccessful so far) to find buyers for legendary big-town newspapers, affecting everyone from the Rocky Mountain News to the Seattle Post-Intelligencer to the San Francisco Chronicle. But when I start to ask myself if it’s possible that a world could function without these institutions, I get a sense of outrage, shock, dismissal… then something else.

And that something else is the same feeling I get when I look at the old, disused wall jacks I so painstakingly wired into every room of my house a little more than a decade ago.

Less to Look At=More Attention to What’s Left…Or Less?

We’re going through yet another web redesign on Atomic Avenue’s home page, and I find myself cutting out a lot of visual elements we’d tried, but which don’t seem to have been pulling their weight.

Many of the calls were easy ones to make, but I’m finding myself with a question about the underlying cognitive aspects of minimalism:

Does eliminating “noise” content (e.g graphics or ads not relevant to a particular user) always help give what’s left more emphasis…or is there a point where a presentation becomes uninteresting because of the lack of noise?

In general, I’d guess (and I am only guessing) that most web designs tend to include far too many items and appeals for attention, and to the extent that they’re irrelevant, they ultimately take away from user’s ability to focus on what they do care about. If so, it should be possible to measure the effect, as well as its impact on sales.

That said, I can at least imagine a situation where the various bright, blinky parts of a web site are providing a certain baseline of mental excitement—without which, the site may be seen as boring or uninteresting (and thus, less successful).

Browsing through mall retail stores, it seems that most go with the “at least some background noise” strategy, often literally in the form of piped-in music on the store’s sound system. Assuming it’s not just a way to keep bored staffers awake, it would seem to be an appeal to the shopper’s overall energy level and mood, as well as to help “brand” the store (e.g. the Goth music at the local Hot Topic).

At the same time, Apple Stores and certain high end boutiques can be spare to the point of austerity in their presentation. These stores stand out even more as sanctuaries from the constant buzz and bombast of the surrounding venues, and I do find myself paying closer attention (at least I think I do) to the merchandise on display as a result. But I’ll admit I know of no real research on point, and my feeble attempts at Googling some up have been for naught.

Any ideas of your own here?

A Year in Tech Purchases

One the the promises I’m trying to belatedly keep is to give follow-ups on how various pieces of tech gear worked out this year. Some, like the iBox2Go, got road-tested and reviewed earlier. Here’s my take on some of the other notables:

LG GGW-H20L Blu-Ray Burner

True tech trivia: ComicBase Archive Edition was the world’s first computer program to ship on the Blu-ray Disc format (The first commercially viable Blu-ray burners appeared weeks before our ship date and we were able to use them to port our entire art comic book library to Blu-ray in just a few days!)

At the time, however, there was exactly one Blu-ray burner on the market: the $1,000 Pioneer BDR-101A. Sure, the publicity of having the first Blu-ray product on the market alone made it an easy purchase for a computer software company to justify, but the $1,000 price tag ensured slow adoption in the consumer space. That, and this drive didn’t even burn (or play) CD’s–that required a separate drive!. Worse, unlike almost everything else in the tech world, it took ages for the price to fall significantly, particularly into the key $200-$300 range where serious consumers might want to jump in.

This year—finally!—the Blu-ray burner situation improved enough that we decided it was time to upgrade. The choice was the $269 LG GGW-H20L, and it’s been problem-free ever since it was installed. Not only does it burn to every format and type of disk under the sun, but it does it faster than ever, and in multiple layers too! (This means that it’s conceivable that the future may see a 50GB disk version of the Blu-ray Archive Edition someday (if only the media price would come down from its insane $35/slice level!)

The iPhone 3G (16 GB)

As part of preparing Atlas, we acquired samples of virtually every major brand of smart phone and smart device. And—since it was clearly going to be the talk of the smart phone world when it was released just weeks before San Diego Comic-Con—it meant that I was one of those poor saps sitting around for three hours to buy my iPhone 3G on the day they shipped. I’ll tell you now that I don’t think I’ve ever felt so positively foolish during any consumer purchasing experience.

Luckily, the phone itself turned out to be great—so good, in fact, that it became my regular handset (and yes, I sprung for the data plan as well—there’s virtually no point getting the phone without it). The gestural interface is downright clever, the phone speed and reception are definitely acceptable, and the integration of a the iPod features made it a replacement for the iPod I used to carry everywhere as well. I’ll admit that I still haven’t managed to get it integrated with our office email (and I’m not sure I’d want to if it meant that I’d be typing everything on a tiny, one-finger keyboard), and I’d love to see a more open platform in terms of song storage and the like.

Still, despite the hype, it’s a phone that definitely delivers on what it promises, and its mere presence has been a game changer for the whole handheld internet space. Even if you don’t have an iPhone, the browser on the phone you do have is likely far better than it would be if the iPhone weren’t resetting expectations in the market. (Remember WAP? Ugh)

Sony PSP-2000

A very cool lawyer (not an oxymoron, apparently) at the office next door was showing off her PSP to me and my son Neil this year, and I couldn’t believe how different the reality of handheld gaming was from my preconceptions. I’ll admit: my impression of the whole handheld gaming space was colored by the ancient Mattel Football game I’d played to death in 1978, as well as the less-than-impressive games I’d seen countless folks play on their washed-out Nintendo Gameboy screens. As a grown-up-type-person, I just wasn’t interested.

But as it turns out, The PSP is actually a fascinating little computer system, complete with most of the elements you think of as belonging to a “real” machine: Wi-fi, data storage, MP3 and video playback, sound in and out…even a full (albeit sorta terrible) web browser. You can even use it as a Skype handset for goodness sake—all for just about $169.

That said, the PSP is a bit of an odd duck as a gaming platform. The games it has are fine, if scant, but I’ve yet to find something truly addictive to get me hooked (although Daxter isn’t bad—particularly with the hookup to a big-screen TV). I think for me what I find most interesting is its potential as a lightweight computing platform and a place to tinker. (Tellingly, I’ve spent more time using it to listen to last.fm than I have actually playing games).

The XBox 360 (Professional Edition)

Finally bought one at Christmas after lusting after them for years. Generally, my impression is quite positive, although there are certain aspects of it that apparently can make small children cry in frustration. This would make a pretty good topic for a full User Interface Review–particularly of their NXE (“New XBox Experience”).

Having previously owned a PS3, the XBox seems less centered on showing off itself as a multi-purpose tech platform, and more as a sort of online gaming/media hub. Software support is impressive, although it’s a surprisingly closed platform, coming from a computer company. This isn’t necessarily a bad thing, but it seemed a marked swing in the opposite direction from the chaotically freewheeling platform that Windows represents.

Other than it being Christmas, what finally made me jump into the XBox platform was the combination of a price drop, a bigger hard drive (making it usable for media) and the new integration of Netflix playback, letting me stream HD-ish movies directly onto the big screen in the living room. Watching “National Treasure 2” with the family just a minute or two after someone suggested it one night was a real treat—it really was one of those times where you spend half of the movie in sheer wonder of simply being able to do what’s now possible with technology in this Age of Wonders of ours…

Bam! Atomic Avenue Gets *Much* Faster!

If you read my previous post on the subject, you know that my tech-loving heart was broken recently by the goofy connector placement on the WD300 Velociraptor drives I’d ordered which made them refuse to fit in the servers for which they’d been ordered. With great sadness, I’d been forced to return the drives to NewEgg, and by hunting the whole bloody internet managed to scrounge up a single replacement drive in the “Backplane” model which was meant to fit in servers, albeit for a C-Note more than the more common version.

The replacement arrived about a week ago, and I ran a trial moving the Atomic Avenue database over to it. As I suspected, it resulted in an improvement, but it was relatively subtle: about .4 seconds saved on an intensive database search that normally takes about 4.8 seconds to complete. This sort of incremental improvement is the stuff that IT upgrades are made of, generally, but it’s nothing to write a press release about.

Still, I was encouraged and ordered a second drive. It arrived the very next day, and today we managed to get it loaded up with the ComicBase covers library. After redirecting the Atomic Avenue site to look on thew new drive, I started running some speed test on the site.

OMG! I couldn’t believe the difference! Individual comic detail pages now load in an average of about 1.3 seconds—almost twice as fast as before. And Title pages, which typically show up to 50 covers per page, more than doubled their speed. Right now, with three massive file copies going on with the server, as well as a full backup, there are only a couple of pages on the site which take more than 2 seconds to load!

Like an idiot, I of course have to push my luck with this. The big file copies mentioned earlier are in preparation for moving the actual Atomic Avenue.com and ComicBase.com sites over to Velociraptor-based partitions in the near future. I doubt it’ll make a lot of additional speed difference to the outside world, but our own tasks of pushing updates, doing site compiles, and the like, may get a bit swifter. Even if they don’t, the $300/drive I spent on these seems like money well spent indeed!

The WD Velociraptor: The Wicked-Fast Drive that Doesn’t Fit in a Server

Ever since they were released, I’ve had a thing for Western Digital’s Raptor hard drives. Although these 10,000 RPM drives have always been both pricey and hampered by storage capacities about 1/4 of their contemporaries, they were just crazy fast: about 50% faster than the next-fastest drives in the consumer sector.

When NewEgg ran a sale on the newest version of the Raptor: the 300 GB Velociraptor, I decided to bust out my credit card and see if I couldn’t buy myself some more speed for the ComicBase and Atomic Avenue servers. The drives arrived two days later, and I spent the morning conferring with various IT folks about the best way to stage the upgrade to our various servers (the RAID configurations we use make any drive upgrade an adventure; trying to schedule the maintenance window for the servers was another challenge). Still, after a bit more than an hour on the phones, I had an upgrade strategy mapped out, and I was ready to start the upgrade prep work…all of which stopped cold when I realized that the new drives don’t actually fit in a standard SATA drive bay.

The deal is this: in order to pull off their speed tricks with this version fo the Raptor, WD used a 2.5″ (notebook-sized) drive form factor, and surrounded it with a big heat sink to let it fit into a 3.5″ drive slot (as well as keep it cool and reduce vibration and noise from the rapidly spinning disk). unfortunately, the arrangement has the side effect of moving the relative positions of the SATA plugs about 1/2″ away from where they would otherwise be. So, when you try to slide the drive into a hot-swappable drive bay like those used on…well, pretty much every SATA-based server in existence…it won’t fit.

Belatedly, it looks like WD figured out that this might be a problem, and designed a “backplane ready” version of the drive some months ago which restores the relative positions of the SATA connectors to their normal placement. Unfortunately, this version of the drive (model WD3000HLFS) is harder to find than a parking spot in Manhattan. Even WD’s own online store didn’t carry them.

Frustrated at having been thwarted after all this, I began to look seriously at even SSD (Solid State Disk) and SAS (Serial Attached Storage) drives, despite their ruinous costs and difficult upgrade paths. In the end, I managed to track down one “backplane-ready” Velociraptor from an online retailer, which we’ll try out to see how much of a real world difference we’ll see in terms of server speed. If it works out, we’ll weigh the investment in buying more.

Realistically I only expect to only shave some portion of a second off most of our database requests, but every little bit helps, particularly as the user loads climb. Benchmarks show Velociraptors performing about twice as fast as our current server drives do, but I really don}t know how much of a difference even the Fastest SATA Drive in the World will make in terms of total web page load times, since so much of the total transaction is bound by other factors. I just can’t believe that I couldn’t even get the first batch of drives plugged in, for goodness sake!

Thanks (an early Thanksgiving Post)

It’s been a crazy week, fully of 3:00 am programming sessions, server restarts, tech calls, web sites in need of updates, and a dozen other things that go into preparing for the final holiday sales push at this little software company that’s been my home for the past 15 years. As if that weren’t enough, today was update day, which means I not only needed to push out the update for this week’s new comic indexing, but also handle as many as possible of of the content corrections and updates that have been flowing in all week.

My own desk is piled with work and half-finished projects, but with everyone else in the office busily  working on their own deadlines, I started tackling the queue that had grown by some seven hundred new submissions in just three days. “Man!” I thought. “Why do I do this job? I could have gone into writing medical software, but nooooooo…“. I was ready to bang my head against the desk out of sheer exasperation.

But then, in between editing the appearance notes, cover colorists, and countless other entries sent in by dozens of people from around the world in the past few days, I had one of those quintessential ComicBase moments where I was simultaneously stressed out by the workload, ferociously proud of what our little company has built over the past decade and a half, and utterly humbled by the amount of effort, care, and goodwill that causes relative strangers from half a world away to deluge us covers for a hundred issues of Martin Mystere, or hold raging forum battles over the proper way to denote character names in anthology storylines.

Like I said, sometimes I don’t know why I do this job. And I don’t know why so many other people are willing work so hard to help us. But man, am I glad you do!

I’m a big believer in work, and I respect the heck out of anyone, in any job, that gives it their all. On a personal level, I’m incredibly proud of what we’ve managed to with ComicBase and Atomic Avenue—projects that started with me wanting to find a way to catalog and sell my own comics, then got well and truly out of hand.

But as proud as I am of all that our little company has managed to do over the years, I still have to stand back occasionally and simply marvel at the sheer volume of effort that’s been donated by people I may never even meet, much less have the chance to buy a round of drinks for at San Diego. From helping moderate the discussion boards to correcting the spelling of “Sienkiewicz”, to driving the editors here collectively mad with your insistence that we start crediting cover inkers and colorists, you folks are the one who made ComicBase and Atomic Avenue what they are today. This isn’t some kind of false modesty on my part, it’s simply the truth.

Thank you. For everything.

-Pete

Stopping “Invalid Callback or Postback” errors when using Ajax with dynamically filled dropdowns

This is one of those posts I’m just putting out there in the hopes it saves some other poor programmer the hours and hours worth of headaches that we just went through.

When we were developing the new search control panel for Atomic Avenue, we set it up so that several of the dropdownlists fill up with data based on other selections. For instance, if you choose to search by artist, a list of artist names will appear to choose from. As it turns out, such data-driven fields—particularly if they’re not always made visible until a later action (such as indicating you want to search by Artist) unhides them—is a great way to generate “invalid postback” errors under Ajax. This is especially true if you combine them with the AddHistoryPoint method in Asp.Net Futures’ July release to enable Back Button support.

The problem is that the new security controls in ASP.NET 2.0 can’t validate that the postbacks on the page were generated by those controls in the first place since (a) the contents can change as a result of the postback, and (b) the event validation may not have been set up in the first place if the control in question was hidden to start.

For the best rundown on the issue, here’s  the critical blog post by K.Scott Allen (check out part 1 as well)

Three options for getting around the situation presented themselves:

1. We could just disable the event validation checking, but that would open us up to new and fun injection attacks from folks faking postback data and using it to trick our web page into doing various inconvenient things.  In particular, we didn’t want to do that with our search since it was meant as a system-wide facility, meaning it would be used on virtually every page in the system.

2. We could avoid Ajax altogether and use traditional, full-page HTML rendering. This wasn’t a good option for us, since the Ajax-enabled version is *much* faster (and better looking) than the traditional HTML architecture which would require full page redraws after every control selection.

3. We could try calling Clientscript.RegisterForEventValidation and supply all the possible values of each dropdown prior to validation, but since there were often thousands of possibilities, this was impractical in the extreme.

So what was there to do? The answer was to roll our own version of the Dropdownlist control, leaving out the (non-inheritable) SupportsEventValidation attribute. By replacing the three problematic dropdownlists with the new control (“DynamicDropdownList”), we were able to get things working (including back button support) without tripping all over this rather thorny problem.

-Pete

Code Sample

Instructions