Tag: Design Flaws

Where Will the PC Go? -- Part 2: Possible Solutions

In my previous post, I established that, despite strides made in screen keyboards and text-to-speech programs, a hardware keyboard is still the best way to write text documents.

In this one, I'll look at how phones and tablets work as replacements for PC's.

Problem 3: Phones Are Still Phones

Of course, you can connect a phone to a computer monitor, and to a keyboard. Or to a game controller.

Awhile back I hooked my phone up to my TV, and paired it to my DualShock 4, and fired up Sonic 4.

The game ran fine -- I didn't like it very much but it ran fine.

And then my mom called me.

The game stopped, and my TV screen filled up with a message that I was getting a phone call. So I walked across the room, picked up my phone, disconnected it from my TV, and answered it.

This is not optimal behavior for a computer.

Now, there are possible ways to fix this.

Headsets and speakerphone are two ways to answer the phone without having it in your hand, but neither one is optimal. Speakerphone is often hard to hear and can have that awful echo. And as for headsets, well, do I carry one in my pocket? Do I keep one in every room where I might dock my phone and use it as a computer?

A better solution would be to "connect" your phone to a monitor and speakers wirelessly, maybe using a device like a Chromecast. That way you could keep it next to you, or in your pocket, while still editing documents, or playing Sonic 4, or whatever. And if it rang, you could answer it, and not lose whatever was on your screen -- say I get a call where I want to take notes with my keyboard (as frequently happens); there could be a way to do that.

But the easier solution is probably to have the device that's connected to your keyboard and monitor(s) not be your phone. Especially if people continue to buy other devices, such as laptops or tablets.

Problem 4: Phone Interfaces Don't Make Good Desktop Interfaces

Windows 8. Do I even need to elaborate?

Microsoft tried to design an interface that would work on phones and on desktops. It was a huge failure.

This was entirely foreseeable. A 4" touchscreen is completely different from a pair of 1080p monitors with a keyboard and mouse attached to them. An interface designed for the former is a lousy fit for the latter, and vice-versa.

So, with Windows 10, Microsoft tried something else, and something altogether more sensible: the OS was designed with a phone/tablet interface and a desktop computer interface, with the ability to switch between the two. If you connect your phone to a dock that's hooked up to a monitor, a keyboard, and a mouse, then the interface changes to desktop mode.

Which is a good idea (and one that Canonical has been moving toward for years), but Windows Phone hasn't exactly set the world on fire (and Ubuntu Phone isn't a thing that anybody seems to want). Windows tablets, on the other hand, including Lenovo's Yoga series and MS's own Surface line, have fared much better.

Google's moving toward this sort of convergence too; it hasn't gotten as far as MS or Canonical yet, but there have been hints of future compatibility between Android and ChromeOS.

Ah yes, ChromeOS -- and the return to dumb terminals running server-side programs.

I think that's going to be key to bringing a few of the major special-case users on board with the transition to lower-powered systems: gamers and media designers.

We'll get to them soon. But in the next post, I'll be looking at the market that's really going to continue driving PC sales: business.

Where Will the PC Go? -- Part 1: Identifying the Problem

The other day, Ars Technica posted an article called Cringe-worthy “PC Does What?” campaign wants you to upgrade, about a new ad campaign the PC industry is pushing to try and convince users to buy new computers.

The PC industry is in trouble. It's built around a pattern of regular upgrades that customers just aren't buying anymore. And it's trying whatever it can to stop the bleeding.

On the other hand, rumors of its demise have been greatly exaggerated. In the comments thread on the Ars article, someone named erikbc said:

Well, if anyone believes PC is dead they need to get their head checked.
And understand some numbers:

https://en.wikipedia.org/wiki/Usage_share_of_operating_systems#Desktop_and_laptop_computers

A user named has responded:

…said every horse-and-buggy salesman in 1900 ever.

Which, okay, doesn't actually make a whole lot of sense. (In fact I am fairly confident that very few horse-and-buggy salesmen in 1900 ever said "If anyone believes PC is dead they need to get their head checked" and then linked to Wikipedia.) But, like many shitty analogies do, it got me thinking about why it was a shitty analogy.

Mainly, I don't think the PC will go away to the extent that horse-drawn carriages have. I think it's possible that tablets could completely replace desktop and laptop computers, but I don't think that can happen until they effectively duplicate the functionality of PC's -- in effect not actually replacing PC's but becoming them.

General Case: Typical End Users

While it's easy to point to the rise of the smartphone as the reason for declining PC sales, it's only one of the reasons. There's another one: the last processor most end users will ever need was released in 2006.

A typical end user only needs a few things in a PC: a web browser, an office suite, music, and videos. (And those last three are, increasingly, integrated into the first one; I'll circle back to that in a later post.)

In 2006, Intel released the Core 2 Duo, which, paired with even a low-end onboard graphics chip, could handle HD video and drive two 1920x1080 monitors. And it's 64-bit, so it can handle more than the 3GB of RAM that 32-bit processors max out at.

There have been plenty more, and plenty better, processors in the 9 years since. But they're not better for people who only use their computer for browsing, Office, listening to music, and watching videos. The Core 2 Duo was good enough for them.

There are people who greatly benefit from newer and better processors -- gamers and people who produce media rather than just consuming it. But they're special cases; I'll get to them later. For the average user, the difference between a Core 2 Duo and a Core i7 isn't even noticeable.

The computer industry grew up in the 1990's around the expectation that people would upgrade their computer every few years to handle new software. And people just don't do that anymore. They buy a new PC when the old one quits working; not before.

But, at least at this point, they still need a PC. People may be buying more phones than PC's, but, at least in America, a phone is not a replacement for a PC.

Problem 1: Screen Keyboards

Screen keyboards are a pain in the ass.

They're fine for short communication -- text messages and tweets -- but they're just too slow and imprecise for long-form writing. (I thought of writing this post entirely on a screen keyboard -- like last week's handwritten post -- but I think that would make me want to gouge my eyes out.)

There are still plenty of requirements for longform writing in day-to-day life -- reports for school and reports for work, for starters. And that's even in professions where you don't have to write for a living, never mind ones where you do. People who write articles, and especially people who write books, are best served with a keyboard to type on.

And maybe that won't always be the case. Maybe kids growing up with screen keyboards aren't learning to type on traditional keyboards; maybe they're faster with screen keyboards than they are with hardware ones. Maybe, within a generation, we will see essays, reports, articles, even books, all written with screen keyboards. I suspect that if we do, they'll look a whole lot different than they do today.

Or maybe screen keyboards will get better. Maybe predictions and autocorrect will improve. Maybe a faster paradigm than qwerty + swipe will catch on. There's a lot that can happen in this space.

Or maybe we won't be using keyboards at all.

Problem 2: Text-to-Speech

Speech recognition software has grown by leaps and bounds. Terry Pratchett used Dragon Dictate and TalkingPoint to write his last few novels.

But being good enough for a first draft, for a user who is no longer physically capable of using a keyboard, isn't the same thing as being able to recognize a full range of standard and nonstandard grammars and sentence structures, pick correct homonyms, and understand slang and regional dialects. (Pratchett liked to tell the story of how he had to train his text-to-speech software to recognize the word "arsehole".)

Text-to-speech software might be good enough for simple, clear documents, such as manuals, lists, daily work logs, AP-style newsbriefs, and technical writing (provided you're writing on a subject that doesn't have a lot of jargon words that don't appear in a simple dictionary). But for writing that's meant to convey personality -- editorials, reviews, fiction, even this blog post -- text-to-speech algorithms have a long way to go.

So, for now at least, a good old hardware keyboard remains the best way to input large blocks of text into a computer. In my next post, I'll examine why a dedicated PC is still the best thing to connect to that keyboard, and how phone and tablet OS's are (or aren't) working to bridge that gap.

Actually, It's About How Games Journalism is a Pain in the Ass

Or, Why I Won't Be Doing That Again Any Time Soon: A Postmortem

So the last three posts comparing and contrasting five different Mega Man games required rather a lot of screenshots. It took a long time to get them all, for a number of reasons I'll get into in a moment. It wound up taking a lot longer to get those posts done and posted than planned, and it really wasn't a whole lot of fun.

The other day on Brontoforumus, I described it as taking two things I enjoy doing -- playing video games and talking about video games -- and turning them into work. More specifically, work I don't get paid for.

I like how the whole thing turned out, but it took hours and hours to put together, and playing a game to farm for screenshots is a pretty different and altogether less fun experience than playing it just to play it.

Some of it may be down to the tools I'm using, or just my lack of proficiency with them.

I opted to grab all the screenshots myself, rather than try and find a resource that already had them (or close enough). I think this was probably the right call; VG Museum has a perfectly good shot of the floating platforms in Ice Man's stage that I could have used, but it doesn't really have any other grabs of the Mega Man screens I needed, and it's got next to nothing from Mega Man X and nothing at all from the other three games I was capping.

So I could have poked around the Internet trying to find the screens I was looking for, either as static images on websites or as caps from Let's Play videos on YouTube. But I think that would have taken just as long as getting the damn things myself.

The next decision I made that made my life more difficult was to try and grab all the images at each device's native resolution, with graphical filters turned off.

Here are some of the screenshots I used in the last three posts:

  • Cut Man Stage -- Mega Man
  • Chill Penguin Stage -- Mega Man X
  • Sigma's Fortress -- Mega Man Xtreme
  • Launch Octopus Stage -- Mega Man: Maverick Hunter X

And here are what those games look like when I play the game scaled up for a 1080p screen and with a graphics filter turned on:

  • Cut Man Stage -- Mega Man
  • Highway Stage -- Mega Man X
  • Highway Stage -- Mega Man Xtreme
  • Highway Stage -- Mega Man: Maverick Hunter X

Now, first of all, those images are pretty big. In fact, unless you've zoomed this page in, you're not even looking at them at full size right now, because they've been scaled to fit the content area of this post. That's 892px wide (unless you're viewing it on a mobile device, in which case it's less), whereas the images are between 1157 and 1920px wide.

And they're PNG's, which means they're also pretty big in terms of filesize (except the Mega Man Xtreme one). Unnecessarily big; you just loaded a 1920px-wide image just to display a scaled-down 892px version. Or less. If you're reading this on a 3G connection, then I probably owe you an apology.

Now, there are things I could do differently. I could set my emulators to output as JPEG instead of PNG, but that would result in a visible decrease in quality. I could resize the images manually, but that would be more work for me. I could set up a script to scale them automatically, but we'd still end up with a bunch of images all scaled to the same width. Which isn't really ideal; it doesn't make a lot of sense for the Game Boy screenshots to be the same size as the PSP ones, and 892px is just too damn big to get multiple images onscreen and get a good comparison anyway.

So, instead of that, what I did was turn off the filters and, when I was ready to take a screenshot, toggle fullscreen off to take it.

This is a pain in the ass, not just because it interrupts the flow of the game but because it's fucking difficult to set up a good screenshot in a tiny 160x144 window on a 1080p TV when you're sitting on the couch across the room.

And that's before you get into weird shit like this:

  • Cut Man Stage -- Mega Man
  • Cut Man Stage -- Mega Man

I don't know why the fuck RetroArch did this. I told it to size the window to native NES resolution, and it gave me these monstrosities instead. That is not native NES resolution. And it's not a problem with the core I was using, because I tried it with two different cores. (I thought it might be some weird leftover setting from when I'd done the Game Boy screen grabs, but that doesn't make sense; the Game Boy screen grabs were 160x144, while these are 205x191.)

And I took a bunch of screenshots before realizing what it had done. I had to go back and replay fucking Ice Man's stage and do it all over again.

So I think the best solution would be to use emulators that output screenshots at native resolution and without filters, regardless of what scaling and filters are applied as I'm playing them. I know I've used emulators like that before, but I can't remember which ones they were offhand.

And there's another requirement: I want to be able to take a screenshot without having to use the damn keyboard. I want to be able to use one of the buttons on my controller to take the screenshot. Because having to stage a shot and then quickly take my hands off the controller to hit F12 on a keyboard doesn't just interrupt the flow of the game, it's a good way to get yourself killed if you're trying to grab a screenshot of a particularly difficult section of game.

Snes9x let me map the screenshot button to my controller, and I think FCEUX did too, but I couldn't find any feature like that in PPSSPP or RetroArch.

So I guess what I'm looking for is an emulator that lets you output screenshots with no scaling or filters applied, and lets you map that function to a button on your controller.

That would make the whole exercise a lot quicker and easier, but it wouldn't fix a number of other problems -- I'd still have to wade through a bunch of files with names like ULUS10068_00017.png and RetroArch-1011-165734.png and find the ones I wanted, and then realize "Fuck, I forgot to take a screenshot of Spark Mandrill's stage" and have to go back and replay that section, and seriously, you have no idea how many times I did that.

And that's without even getting into the editing portion.

Remember this guy from the first post, with the measurements?

Mega Man is 33x54px

I added those rulers and numbers myself, manually, in Gimp (and it probably shows). And it wound up being way more fiddly and time-consuming than it should have. I guess I probably should have gone looking for plugins to see if somebody had already coded up a tool to draw a shape like that automatically so I wouldn't have to do it myself; that is what I ended up doing for this graphic, with the arrow in it:

Flame Mammoth Stage -- Mega Man: Maverick Hunter X, with Giant Red Arrow

So, I dunno. Like I said, I'm pretty pleased with how the feature turned out (and it's gotten a positive response from the Brontos, which is nice), but it just took so long to put together, and it was not very fun. I might try it again sometime -- especially if somebody can steer me in the right direction and help make it easier next time -- but for now I'll probably go on back to my usual Wall of Text posts.

Course, in the old days I used to enjoy doing shit like this:

City of Heroes time-lapse

But there's a pretty important difference: we were already just fuckin' around and essentially posing for photos anyway; it's not like I was taking screenshots in the middle of a difficult mission. (And even if I were, it was pretty easy just to reach over and hit PrtScn without breaking stride in the game.) I wasn't trying to get a grab of any specific gameplay element -- let alone compare and contrast across five different games.

Maybe if I do this again I'll just pick an easier topic.

In the meantime, I think I'll go back to just playing games. Maybe I'll replay some more Mega Man X games. I never did get around to finishing X8. Fucking vehicle levels.


Mega Man ® 1989 and © 1987 Capcom Co, Ltd
Mega Man X ™ and © 1993 Capcom Co, Ltd
Mega Man Xtreme © 2001 Capcom Co, Ltd
Mega Man Powered Up and Mega Man: Maverick Hunter X © 2006 Capcom Co, Ltd
City of Heroes © 2004 NCsoft

I took all the screenshots myself.
I used the following emulators:
NES: FCEUX and Libretro with the FCEUmm and Nestopia cores
SNES: Snes9x and Libretro with the Snes9x Next core
Game Boy Color: Libretro with the Gambatte core
PSP: PPSSPP

Dueling Mega Men, Part 3: Rebalancing Act

As I've indicated in the last two posts, Mega Man: Powered Up has a lot more changes from the original game than Mega Man: Maverick Hunter X. And the changes to Powered Up are usually for the better, while the ones to MHX are usually for the worse.

There's a pretty simple reason for that: Mega Man has a lot more to improve than Mega Man X.

Back in the first post, I described Maverick Hunter X as "a pretty solid remake of an excellent game." Powered Up is the reverse: an excellent remake of a pretty solid game.

The original Mega Man is a classic, but it's got rough edges; it's an amazing first effort but it's got its share of flaws. There's a reason Mega Man 2 is universally considered to be a much better game.

The original Mega Man X, on the other hand, is pretty much perfect. It's exquisitely designed and balanced.

So, rebalancing Mega Man resulted in a better-balanced game, while rebalancing Mega Man X resulted in a worse-balanced one.

Let's start with Mega Man.

Powered Up changes the original game so fundamentally that it actually changes the boss weaknesses.

In the original Mega Man, the order is:
Bomb Man Guts Man Cut Man Elec Man Ice Man Fire Man

In Powered Up, it's:
Cut Man Bomb Man Ice Man Fire Man Oil Man Elec Man Time Man Guts Man.

The change in order does more than just accommodate the two new bosses; it makes for a more natural stage order.

The original game has two logical starting points: Bomb Man's level and Cut Man's. The trouble is, if you follow the order of weapon weaknesses, starting with Bomb Man means you go to Guts Man's famously difficult level second. Starting with Cut Man means you take Elec Man's stage before Guts Man and have to go back later to get the Magnet Beam (though, granted, this wouldn't be an issue in Powered Up, which removes the Magnet Beam entirely).

The weakness order in Powered Up puts the two easiest stages right at the start, first Cut Man and then Bomb Man, and puts trickier levels like Elec Man, Guts Man, and the new Time Man near the end.

Mega Man: Maverick Hunter X doesn't change the Mavericks' weaknesses, but it does play musical chairs with the capsules. And that's enough to wreak havoc on the original game's finely-crafted balance.

The most important of the four capsules, the one you need in order to get the other three, is the Leg Upgrade. Here's where it is in the original game:

Chill Penguin Stage -- Mega Man X

It's about halfway through Chill Penguin's stage (the easiest in the game), smack dab in the middle of the path. You literally can't miss it.

Whereas in Maverick Hunter X, not only is it possible to miss it, it's likely. Here's where it is in that version:

Flame Mammoth Stage -- Mega Man: Maverick Hunter X

Don't see it? Let's try that again.

Flame Mammoth Stage -- Mega Man: Maverick Hunter X, with Giant Red Arrow

That's right: the ledge you grab onto to reach the Leg Parts is covered up by the fucking HUD. It's so hard to see that you can walk right past it even if you know it's there.

Contrast with the same location in the original Mega Man X (which, in that game, had the Arm Parts capsule):

  • Flame Mammoth Stage -- Mega Man X
  • Flame Mammoth Stage -- Mega Man: Maverick Hunter X

The original game gives a very clear visual cue that there is something up there. Maverick Hunter X, on the other hand, once again fails to handle the conversion from 4:3 to 16:9, and makes the hanging section almost impossible to see. And if you don't find that tiny ledge, you can't get any of the other upgrade parts -- your mobility, offense, and defense are all severely limited, and the game is much harder. Not fun hard, unfair hard.

And if you do know the Leg Parts are on Flame Mammoth's stage, there's another problem: nobody in their right mind would pick Flame Mammoth's stage first.

It disrupts the entire stage order. Do you start with Chill Penguin and then end with Flame Mammoth? That makes the game a whole lot more difficult, going through seven stages with no capsule upgrades.

No, the best option here is to base the stage order around the capsules, not the bosses' weaknesses. Take out Chill Penguin first, then Flame Mammoth, with maybe a stop-over at Storm Eagle along the way (he's a relatively easy boss and Flame Mammoth is weak against his weapon, and it also makes Spark Mandrill's stage easier; on the other hand, it's got all the shitty vertical parts I mentioned in my previous post, and they're harder without the Leg Parts).

The other three capsules are rearranged too. Chill Penguin has the Head Parts instead of the Leg Parts, Sting Chameleon has the Arm Parts instead of the Body Parts, and Storm Eagle has the Body Parts instead of the Head Parts.

The Head Parts are damn near useless in the original game, and they're not any more useful in the remake. In the original game, they protect you from falling rocks in one section of Sting Chameleon's stage, and are also necessary to reach the Arm Parts capsule in Flame Mammoth's stage. Maverick Hunter X is much the same, except that in this case you need them to reach the Body Parts capsule in Storm Eagle's stage. Chill Penguin's stage -- which, again, is the easiest level and, in the original game, the best one to start with -- has gone from having the most useful of the four upgrades to the least useful. Storm Eagle's stage, on the other hand, ends up with a much more useful upgrade than it had in the original, and one more reason to hit that level earlier in this version of the game than in the SNES version.

The change to Sting Chaemeleon's stage probably makes the most sense of the four, though it removes the nice sense of symmetry the original game gives you of defeating a suit of robot armor to gain an armor upgrade.

If you follow the stage order implied by the capsule locations (ie fight Storm Eagle and Flame Mammoth early), then that means Sting Chameleon will be the last of the eight stages. Getting the Arm Parts right before the Sigma stages, or right at the beginning of the Sigma stages, matches the original game, where if you started with Chill Penguin you'd end with Flame Mammoth, and get a chance to get the Buster Upgrade -- and if you missed it, you'd get it on the very next level.

Which brings us to another change.

In Mega Man X, midway through the first Sigma stage, Zero confronts Vile, and sacrifices himself. If you didn't get the Buster Upgrade from the capsule, Zero will give it to you.

Maverick Hunter X changes this in two ways. First, it moves the battle to the third Sigma stage instead of the first. Second, instead of Zero giving you a Buster Upgrade that's identical to the one you would have gotten from the capsule, he gives you a different Buster Upgrade.

It's an interesting idea, but I don't think it's a very good one, for two reasons.

The first is that it messes up the narrative structure. There's a reason Zero dies, and passes the torch to X, in the first Sigma stage in the original game: it changes the atmosphere of the rest of the game. It establishes a sense of loneliness and isolation that lingers through the end. Nobody else is going to help you; you're humanity's last hope. And you've done what Zero said you'd do all the way back at the end of the first stage: you've become stronger. The student has become the master.

In Maverick Hunter X, on the other hand, you spend most of the Sigma stages playing catchup. Zero's gone on ahead. Even at full power, X is playing second fiddle, right up until the end.

Which brings us to the gameplay reason why it doesn't make sense to kill off Zero right before the end: it's right before the end. I understand the reasoning behind rewarding the player for getting almost to the end of the game without the Buster Upgrade with a cool, unique weapon -- but what the fuck good is it? You've got exactly half a level left in the game at that point, and then four bosses. (And I guess the caterpillar things in the last level, but they're pretty much just there to fill up your Sub Tanks.) The game rewards you by giving you a weapon you'll hardly get to use.

Aside from that, there are other weird little changes. The X-Buster takes longer to charge to its maximum level, and bosses are invulnerable for a longer period of time after you hit them.

And then there's stuff like this:

  • Spark Mandrill Stage -- Mega Man X
  • Spark Mandrill Stage -- Mega Man: Maverick Hunter X

In the original game, when Spark Mandrill's stage goes "dark", it's just a transparency effect; you can still see where you need to go.

In Maverick Hunter X, the lights cycle off and on; the platforms go from being completely illuminated to being completely invisible. This, combined with the reduction in height, makes the section a lot harder, the timing a lot trickier, and makes it damned difficult to get through this section without getting clipped by the fireflies that whiz through it.

In fact, this section seems to be taking a cue from the Mega Man Xtreme version of the stage.

Spark Mandrill Stage -- Mega Man Xtreme

(It may look like the platforms are visible in that screenshot, but I assure you that if you play the game on authentic Game Boy Color hardware, you can't see shit.)

Basically, the game's full of changes, great and small. And most of them are for the worse.

All of this stuff, all of these changes, the reordering of the Capsules and the Sigma stages and Zero's death scene -- I think they actually could have made for an interesting game, if they were only on Hard Mode. The way I see it, Normal Mode should have kept everything where it was in the original game (with some changes, of course, to accommodate the screen height), while Hard Mode could have jumbled things around and created a legitimate challenge for experienced players. Think of it like the original Legend of Zelda: the Second Quest is neat, but it would have made a pretty crummy first quest.

Instead, Hard Mode gives the bosses some additional attacks (that's good!) and ups the amount of damage all the enemies do (that's cheap and lazy).

And then there's Vile Mode, which makes for a pretty great addition but can be overwhelming in the sheer number of options provided. Vile gets a total of 45 weapons, and while it's great to have that kind of versatility, it also means it takes a lot of time testing out all those choices and deciding which ones fit your play style -- and it also makes it a lot harder to figure out which weapons are effective against which bosses. If you're X, you can swap weapons on the fly and keep trying until you find one that works; if you're Vile, you can only equip three weapons at a time, and if none of them do the job, you have to start the level over if you want to try other options.

Plus, when you're Vile they move the Heart Tanks and Sub Tanks around, and while the save screen has a counter for how many you've got, it doesn't tell you which ones you've gotten. Okay, I've got seven out of the eight Heart Tanks; guess I get to figure out which one I'm missing.

(Also, I sincerely hope the decision to make every fucking stage use the same music when you play as Vile was an accident. Giving him is own theme music on the first stage is fine; reusing it on the next eight is not.)

To summarize three long posts, it's really easy to recommend Mega Man: Powered Up. It's thoughtfully and exquisitely redesigned, and good enough to be considered the definitive version of the game, even before you get into all the extras like the many playable characters and the level design toolkit.

Maverick Hunter X isn't bad but it's a much harder sell. Play the SNES game first; it's better; it's that simple.

But if you've played the SNES game already, forward and backward and side-to-side, and you're interested in trying out a new take? Then I'd recommend you take a crack at Maverick Hunter X. But remember going in that things are going to be different, and sometimes maddeningly so.


Mega Man ® 1989 Capcom Co, Ltd
Mega Man X ™ and © 1993 Capcom Co, Ltd
Mega Man Xtreme © 2001 Capcom Co, Ltd
Mega Man: Maverick Hunter X © 2006 Capcom Co, Ltd

I took all the screenshots myself, and tried to get them all at native resolution with no filters.
I used the following emulators:
SNES: Snes9x
Game Boy Color: Libretro with the Gambatte core
PSP: PPSSPP

Dueling Mega Men, Part 2: Verticality

The original Mega Man has some tricky platforming sequences. Mega Man Powered Up actually does a pretty solid job of redesigning them to make them more fair. Here's one of the most infamous examples, the gauntlet at the beginning of Guts Man's stage:

  • Guts Man Stage -- Mega Man
  • Guts Man Stage -- Mega Man Powered Up

Mega Man drops you right into what may be the toughest sequence in the game, and it's right at the beginning of the level. Powered Up, by contrast, starts you off with some training wheels.

Lest you think it's going easy on you, though, what it actually does is move that bastard platform to the end of the level:

Guts Man Stage -- Mega Man Powered Up

On the one hand, that's a much better balance, putting the easy stuff at the beginning of the level and the tough stuff at the end. On the other, it's even more infuriating to repeatedly die right before the end of a level than right at the beginning. And it's actually even harder in Powered Up: note the spacing of the "safe" spots in the lower belt; there's much less time to land and jump than the original game.

There's another sequence, in Ice Man's stage, which is, for my money, the worst part of the original Mega Man.

  • Ice Man Stage -- Mega Man
  • Ice Man Stage -- Mega Man Powered Up

In the original game, you have to jump from moving platform to moving platform over a vast empty pit. The platforms' movements are not predictable, they shoot at you while you're trying to time your jumps (and, not shown, penguin guys fly at you too), and sometimes just for the sheer fuck of it instead of landing on a platform you will fall right through it and die.

Powered Up reduces the number of platforms to two, makes them move in consistent zigzag patterns, and eliminates the additional obstacles that you have to avoid (not to mention fixes the collision detection). And greatly reduces the amount of space you have to pass over.

It's a pretty perfect example of Powered Up finding something that was wrong with the original game and fixing it.

Maverick Hunter X does not do that.

Here's an example from Storm Eagle's stage:

  • Storm Eagle Stage -- Mega Man X
  • Storm Eagle Stage -- Mega Man: Maverick Hunter X

It's hard to tell from a static screenshot, but those three platforms all move up and down. And while it's easy to keep an eye on the next platform in the original Mega Man X, in Maverick Hunter X they move right off the screen.

It gets worse in Sigma's fortress.

  • Sigma's Fortress -- Mega Man X
  • Sigma's Fortress -- Mega Man: Maverick Hunter X

Once again, Mega Man Xtreme actually does a better job than Maverick Hunter X; it reduces the number of platforms and their amount of vertical movement. It even turns the Sigma's Fortress sequence from a vertical section to a horizontal one.

  • Storm Eagle Stage -- Mega Man Xtreme
  • Sigma's Fortress -- Mega Man Xtreme

(Of course, don't let any of this faint praise give you the mistaken impression that Mega Man Xtreme is a good game. Its version of the Sigma Fortress platform sequence ends with a blind leap off into nowhere.)

The pattern here is that, while the Mega Man: Powered Up devs were more than happy to retool tricky platform sequences, the Maverick Hunter X team seems oddly reluctant to change them, even just to accommodate the different aspect ratio. ("Oddly" because they made plenty of other, and much worse, changes; we'll get to some of them in a little bit.)

The other big problem is the underwater sequences, because of the increased height of your jump. In Maverick Hunter X, you jump so high that you can no longer see where you're going to land. Here's a miniboss from Launch Octopus's stage:

  • Launch Octopus Stage -- Mega Man X
  • Launch Octopus Stage -- Mega Man: Maverick Hunter X
  • Launch Octopus Stage -- Mega Man X
  • Launch Octopus Stage -- Mega Man: Maverick Hunter X

The enemy uses a weapon that pulls you towards the spikes; if you jump to get out of its range in the original Mega Man X, you'll still be able to see the platforms where it's safe to land, but in Maverick Hunter X, you'll scroll them right off the bottom of the screen.

And here's another miniboss from Launch Octopus's stage, a serpent which you can ride:

  • Launch Octopus Stage -- Mega Man X
  • Launch Octopus Stage -- Mega Man: Maverick Hunter X
  • Launch Octopus Stage -- Mega Man X
  • Launch Octopus Stage -- Mega Man: Maverick Hunter X

While you can ride the serpent past the point where the spikes and platforms scroll off the bottom of the screen in the original Mega Man X, you go higher before that happens -- and it's still not too hard to land safely.

  • Launch Octopus Stage -- Mega Man X
  • Launch Octopus Stage -- Mega Man X

Riding the serpent and shooting it in the back of the head until it drops you is a viable strategy in the original game, but it's likely to get you killed in the remake.

Of course, for all the examples so far, there's at least an explanation for why these sequences are like that in Maverick Hunter X: because they were like that in the original. What's entirely baffling is when they add new vertical hazards, on purpose, and they have the same problems or worse.

Maverick Hunter X significantly redesigns the Sigma's Fortress stages (which, again, makes it even stranger that it leaves the sequence with the floating platforms as-is, albeit in a later level than in the original game). Early on in the first fortress level, there's another fight with one of the giant fish minibosses from Launch Octopus's stage, which wasn't in the original game.

  • Sigma's Fortress -- Mega Man: Maverick Hunter X
  • Sigma's Fortress -- Mega Man: Maverick Hunter X

Let's compare that to the one on Launch Octopus's level again.

  • Launch Octopus Stage -- Mega Man: Maverick Hunter X
  • Sigma's Fortress -- Mega Man: Maverick Hunter X

The one on the Sigma stage is definitely worse: the spike traps are twice as wide, there's only one place where you can stand and it's half as wide as the Launch Octopus version, and the platform is at the same height as the spikes, so if you miss it you're dead, instead of having a chance to grab onto the side and jump back out.

The underwater section is followed by a reworked version of the vertical section from the original game, and I'll actually give some props here: this is one of the few instances where I like the Maverick Hunter X version better.

  • Sigma's Fortress -- Mega Man X
  • Sigma's Fortress -- Mega Man: Maverick Hunter X
  • Sigma's Fortress -- Mega Man X
  • Sigma's Fortress -- Mega Man: Maverick Hunter X

There are several reasons the Maverick Hunter X version is better: it's shorter, there are fewer enemies, and there are more places to stand. But most of all, this is an instance where the devs understand that they're working with a different aspect ratio, and make it work for them. They don't try to preserve the narrow shaft, or keep the Joes on tiny platforms backed right up against the wall where it's nearly impossible to get them to attack, then hit them while their shields are down, and then get onto the platform they were standing on. It's not perfect, but it's a thoughtfully-designed sequence that's a legitimate improvement on the original. And it's a frustrating example of how good this remake could have been if this same kind of care had been applied to other vertical sequences.

And then it passes, and you're in another vexing vertical sequence that wasn't in the original game. It isn't as likely to cause cheap instant deaths as the aquatic sequence at the beginning of the level, but it is incredibly awkward and annoying because of the screen's limited height and your inability to see where you're going:

Sigma's Fortress -- Mega Man: Maverick Hunter X

But the worst new sequence of all is the end of Armored Armadillo's stage when you play as Vile:

Armored Armadillo Stage -- Mega Man: Maverick Hunter X

It's similar to the sequence in Sigma's Fortress, with platforms at multiple heights and those same helicopter dudes coming at you. But there are more of them, they're harder to hit when you're playing as Vile (and you can't just use a powered-up Rolling Shield to protect yourself like when you play as X), and you have to jump to platforms below you, not just ones above you. And of course when you jump, you may very well scroll your destination platform right off the bottom of the screen and have to guess where it's going to be by the time you land. It's a friggin' nightmare, and a great justification for savestate-scumming.

All in all, Maverick Hunter X does a terrible job with pretty much any sequence that deals with vertical scrolling.

Powered Up doesn't have that problem -- but the comparison's not entirely fair, because Powered Up has an advantage: it's a remake of a game that has no vertical scrolling.

There are lots of vertical sequences in Mega Man, but the screen never scrolls. When you have to traverse a section that's taller than a single screen, that means climbing from the bottom of the screen to the top and then climbing a ladder up to the next screen, where you end up back at the bottom. The screen doesn't move up and down as Mega Man does, only left and right.

  • Elec Man Stage -- Mega Man
  • Elec Man Stage -- Mega Man Powered Up
  • Elec Man Stage -- Mega Man
  • Elec Man Stage -- Mega Man Powered Up

So it was easy for Powered Up to follow that pattern. As substantially as it changes some segments of the game (and adds two entirely new levels), it keeps that rule. No room is ever taller than one screen high; the screen doesn't scroll vertically -- and so the game never has to deal with the challenge of how to handle vertically-scrolling sequences.

Maverick Hunter X does. And it proves, time and again, that it's not up to the challenge. And then, bafflingly, it doubles down on this flaw and adds entirely new vertically-scrolling sequences. And they're even worse.

That's a major reason why, despite all its polish, despite all the effort that clearly went into it, and despite the many things it does right, Maverick Hunter X is an inferior game, both to the original Mega Man X and to Mega Man: Powered Up.

Another major reason is that it completely fucks up the balance of the original Mega Man X. And that's the topic of my next post.


Mega Man ® 1989 and © 1987 Capcom Co, Ltd
Mega Man X ™ and © 1993 Capcom Co, Ltd
Mega Man Xtreme © 2001 Capcom Co, Ltd
Mega Man Powered Up and Mega Man: Maverick Hunter X © 2006 Capcom Co, Ltd

I took all the screenshots myself, and tried to get them all at native resolution with no filters.
I used the following emulators:
NES: FCEUX
SNES: Snes9x
Game Boy Color: Libretro with the Gambatte core
PSP: PPSSPP

What Mega Man Powered Up Does Right and Mega Man: Maverick Hunter X Does Wrong, Part 1: Aspect Ratio

So the other day, I got to listening to OCRemix's Mega Man X: Maverick Hunter Rising album, and it got me jonesing to replay some Mega Man X.

I decided to take another crack at the 2006 PSP remake, Mega Man: Maverick Hunter X; it had disappointed me on my first playthrough, but I thought maybe I'd give it another chance.

And on a second playthrough, now that I'm familiar with its changes and idiosyncrasies, it went a lot smoother. Those changes and idiosyncrasies are glaring -- and they're what this series of posts is about -- but underneath them, it's a pretty solid remake of an excellent game.

But it's no substitute for the original.

And it's interesting to look at its immediate contemporary, Mega Man Powered Up, and see how much better Powered Up is than Maverick Hunter X.

There are a couple of reasons. One seems obvious -- in fact, it's the very first thing you notice:

  • Mega Man model
  • X model

Mega Man is short and squat, while X is tall and thin.

Now, these graphics tell you one thing right off the bat, and it's tone. Mega Man is fun and lighthearted; X takes himself seriously.

But the thing is, those designs affect every aspect of the game's design. And what you're looking at, in both cases, is a game that was originally designed for a 4:3 screen ratio, remade for a 16:9 one.

And which one of these guys do you suppose makes the transition better from 4:3 to 16:9 -- the one who's short and squat, or the one who's tall and thin?

At least, that's how it looks. But it's an illusion. Let's take a look at their actual dimensions, in-game:

  • Mega Man is 33x54px
  • X is 51x57px

Those are back-of-the-napkin measurements; I haven't taken the models through their full range of motion, and I'm not sure what the exact dimensions of their hitboxes are. But it's enough to see that Mega Man only looks shorter and squatter -- in terms of the dimensions rendered in-game, X isn't significantly taller than Mega Man, and he is significantly wider.

But it's not really just about the ratio of the character models -- it's about the design of the worlds they inhabit.

Both games face the same challenge: they have to substantially rework stage designs to fit a different screen ratio, while still making them feel like they play the same. Take a look at this screen from Cut Man's stage:

  • Cut Man Stage -- Mega Man
  • Cut Man Stage -- Mega Man Powered Up

It's pretty close.

In fact, it just hacks out the brick below the ladder, and the (inconsequential) top section of the ladder, above the range of the enemies.

It's got the same number of little eye-lantern guys, and nearly the same width to move around in. (The movable width of the screen in the original Mega Man is 12 "blocks", where in Powered Up it's a very close 11. And the height from the floor to the topmost enemy is 9 blocks in the original and 6 in Powered Up.)

There are places where Maverick Hunter X does a similarly good job, like here in Flame Mammoth's stage (after defeating Chill Penguin and freezing the lava):

  • Flame Mammoth Stage -- Mega Man X
  • Flame Mammoth Stage -- Mega Man: Maverick Hunter X

There's a lot less vertical space to move under that platform, but it's not important; it's still enough to fit, and still keep the entire room onscreen.

But other sections don't always fare as well. Look at the beginning of Spark Mandrill's stage:

  • Spark Mandrill Stage -- Mega Man X
  • Spark Mandrill Stage -- Mega Man Xtreme
  • Spark Mandrill Stage -- Mega Man: Maverick Hunter X

In the original SNES version of Spark Mandrill's stage, the sparks that run along the floor and ceiling are half X's height and half his width, and the gap between them gives you plenty of room to dodge them. In the Maverick Hunter X version, they're as big as X, and there's very little room in between them. Even the Game Boy Color Mega Man Xtreme, with its severely compromised screen size, didn't have that problem.

(On the plus side, this does mean that defeating Storm Eagle before Spark Mandrill (and thereby disabling the sparks in the floors) makes a much more significant difference in how the level plays than it does in the original game.)

Chill Penguin's stage has problems too:

  • Chill Penguin Stage -- Mega Man X
  • Chill Penguin Stage -- Mega Man Xtreme
  • Chill Penguin Stage -- Mega Man: Maverick Hunter X

In the original, you can see the wheel coming and have time to get out of the way; in Maverick Hunter X, you can't and you don't. Though in this case, at least it's not being shown up by Xtreme, which has the same issue.

In a nutshell, Powered Up does a really good job of redesigning its vertical segments to fit a 16:9 screen, while Maverick Hunter X doesn't. And this really sticks out, because like Powered Up, MHX is a really polished remake. It shouldn't have these kinds of glaring issues with cropping; they're the hallmark of much lazier ports, like Mega Man for Game Gear, Mega Man and Bass for GBA, and, yes, Mega Man Xtreme.

But it's not just a few sucker punches by enemies that are too big, or that come out of nowhere. No, worst of all are the tricky platform segments where your limited field of vision can result in cheap, instant deaths. And I'll get to those in my next post.


Mega Man ® 1989 and © 1987 Capcom Co, Ltd
Mega Man X ™ and © 1993 Capcom Co, Ltd
Mega Man Xtreme © 2001 Capcom Co, Ltd
Mega Man Powered Up and Mega Man: Maverick Hunter X © 2006 Capcom Co, Ltd

Character models supplied by Models Resource

I took all the screenshots myself, and tried to get them all at native resolution with no filters.
I used the following emulators:
NES: FCEUX
SNES: Snes9x
Game Boy Color: Libretro with the Gambatte core
PSP: PPSSPP

E-Mails and Passwords

So the other day I decided it was past time to reset all my passwords.

I'm pretty good about password hygiene. I've been using a password locker for years, with a unique, randomly-generated* password for every account I use. But I'll admit that, like most of us, I don't do as good a job of password rotation as I might. That's probably because I've managed to amass over 150 different accounts across different sites, and resetting 150 different passwords is a giant pain in the ass.

(I'm thinking that, from here on in, I should pick a subset of passwords to reset every month, so I never wind up having to reset all 150 at once again. It would also help me to clear out the cruft and not keep logins for sites that no longer exist, or which I'm never going to use again, or where I can't even find the damn login page anymore.)

There was one more reason I decided now was a good time to do a mass update: I've got two E-Mail addresses that have turned into spam holes. As I've mentioned previously, I'm currently looking for work and getting inundated with job spam; unfortunately I went and put my primary E-Mail address at the top of my resume, which in hindsight was a mistake. Never post your personal E-Mail in any public place; always use a throwaway.

Which I do, most of the time -- and that's created a second problem: I've been signing up for websites with the same E-Mail address for 15 years, and also used to use it in my whois information. (I've since switched to dedicated E-Mail addresses that I use only for domain registration.) So now, that E-Mail has turned into a huge spam hole; it's currently got over 500 messages in its Junk folder, and that's with a filter that deletes anything that's been in there longer than a week. My spam filters are well-trained, but unfortunately they only run on the client side, not the server side, so any time Thunderbird isn't running on my desktop, my spam doesn't get filtered. (If I'm out of the house, I can tell if the network's gone down, because I start getting a bunch of spam in my inbox on my phone.)

So now I've gone and created two new E-Mail addresses: one that's just for E-Mails about jobs, and another as my new all-purpose signing-up-for-things address.

My hope is that the companies hammering my primary E-Mail address with job notifications will eventually switch to the new, jobs-only E-Mail address, and I'll get my personal E-Mail address back to normal. And that I can quit using the Spam Hole address entirely and switch all my accounts over to the new address. Which hopefully shouldn't get as spam-filled as the old one since I haven't published it in a publicly-accessible place like whois.

Anyway, some things to take into account with E-Mail and passwords:

  • Don't use your personal E-Mail address for anything but personal communication. Don't give it to anyone you don't know.
  • Keep at least one secondary E-Mail address that you can abandon if it gets compromised or filled up with spam. It's not necessarily a bad idea to have several -- in my case, I've got one for accounts at various sites, several that I use as contacts for web domains, and one that's just for communication about jobs.
  • Use a password locker. 1Password, Keepass, and Lastpass are all pretty highly-regarded, but they're just three of the many available options.
  • Remember all the different devices you'll be using these passwords on.
    • I'm using a Linux desktop, an OSX desktop, a Windows desktop, and an Android phone; that means I need to pick a password locker that will run on all those different OS's.
    • And have some way of keeping the data synced across them.
    • And don't forget that, even with a password locker, chances are that at some point you'll end up having to type some of these passwords manually, on a screen keyboard. Adding brackets and carets and other symbols to your password will make it more secure, but you're going to want to weigh that against the hassle of having to dive three levels deep into your screen keyboard just to type those symbols. It may be worth it if it's the password for, say, your bank account, but it's definitely not worth it for your Gmail login.
  • Of course, you need a master password to access all those other passwords, and you should choose a good one. There's no point in picking a bunch of unique, strong passwords if you protect them with a shitty unsecure password. There are ways to come up with a password that's secure but easy to remember:
    • The "correct horse battery staple" method of creating a passphrase of four random words is a good one, but there are caveats:
      • You have to make sure they're actually random words, words that don't have anything to do with each other. Edward Snowden's example, "MargaretThatcheris110%SEXY.", is not actually very secure; it follows correct English sentence structure, "MargaretThatcher" and "110%" are each effectively one word since they're commonly-used phrases, the word "SEXY" is common as fuck in passwords, and mixed case and punctuation don't really make your password significantly more secure if, for example, you capitalize the beginnings of words or entire words and end sentences with periods, question marks, or exclamation points. Basically, if you pick the words in your passphrase yourself, they're not random enough; use a computer to pick the words for you.
      • And this method unfortunately doesn't work very well on a screen keyboard. Unless you know of a screen keyboard that autocompletes words inside a password prompt but won't remember those words or their sequence. I think this would be a very good idea for screen keyboards to implement, but I don't know of any that do it.
    • There are programs and sites that generate pronounceable passwords -- something like "ahx2Boh8" or "ireeQuaico". Sequences of letters (and possibly numbers) that are gibberish but can be pronounced, which makes them easy to remember -- a little less secure than a password that doesn't follow such a rule, but a lot more secure than a dictionary word. But read reviews before you use one of these services -- you want to make sure that the passwords it generates are sufficiently random to be secure, and that it's reputable and can be trusted not to snoop on you and send that master password off to some third party. It's best to pick one that generates multiple passwords at once; if you pick one from a list it's harder for a third party to know which one you chose.
  • Of course, any password is memorable if you type it enough times.
  • And no password is going to protect you from a targeted attack by a sufficiently dedicated and resourceful attacker -- if somebody's after something you've got, he can probably find somebody in tech support for your ISP, or your registrar, or your hosting provider, or your phone company, or some company you've bought something from, somewhere, who can be tricked into giving him access to your account. Or maybe he'll exploit a zero-day vulnerability. Or maybe one of the sites you've got an account with will be compromised and they'll get everybody's account information. Password security isn't about protecting yourself against a targeted attack. It's about making yourself a bigger hassle to go after than the guy sitting next to you, like the old joke about "I don't have to outrun the tiger, I just have to outrun you." And it's about minimizing the amount of damage somebody can do if he does compromise one of your accounts.
  • And speaking of social engineering, security questions are deliberate vulnerabilities, and they are bullshit. Never answer a security question truthfully. If security questions are optional, do not fill them out. If they are not optional and a site forces you to add a security question, your best bet is to generate a pseudorandom answer (remember you may have to read it over the phone, so a pronounceable password or "correct horse battery staple"-style phrase would be a good idea here, though you could always just use letters and numbers too -- knowing the phonetic alphabet helps) and store it in your password locker alongside your username and password.
  • You know what else is stupid? Password strength indicators. I once used one (it was Plesk's) that rejected K"Nb\:uO`) as weak but accepted P@55w0rd as strong. You can generally ignore password strength indicators, unless they reject your password outright and make you come up with a new one.

* For the purposes of this discussion, I will be using the words "random" and "pseudorandom" interchangeably, because the difference between the two things is beyond the scope of this post.

Web Design Got Complicated

It's probably not surprising that rebuilding my website has gotten me thinking about web development.

The first six years I ran this site, I did it all by hand -- my own HTML, my own CSS, no scripting languages. I thought that CMS software was for pussies.

But ultimately, plain old HTML just doesn't scale. I conceded that when I started using b2evolution for my blog back in '06, and it's truer now than it was then.

You can poke around some of the old sections of the site a bit, the ones that haven't been updated significantly since the turn of the century -- KateStory's a good one, or the Features page (though I'd like to get at least the Features page up to date sooner than later, and maybe the KateStory one too, so maybe there'll be people reading this post well after those pages shed their 1990's style) -- and they get the job done. Breadcrumb navigation at the bottom of every section, leading you back to either the parent page or the main index.

But Jesus, you can only manually copy and paste "Back to Features / Back to Index" so many times.

And maintaining a years-long blog archive without a CMS to automate it for you? It gets old.

So, you want some automation? You're going to need a scripting language. That usually means PHP for server-side, and JavaScript for client-side.

I got to thinking the other day -- man, it's weird that you need extra toolsets to perform such common tasks as, say, reusing a navigation bar. It's weird that there's not some way just to write up a navigation bar and then write code, in HTML, no scripting required, to embed that common HTML block on the current page.

I thought this was a pretty smart observation.

For about three seconds.

At which point I realized I had just described fucking frames.

Course, the biggest problem with frames is that they weren't exactly what I'm describing. I'm talking about just an HTML snippet in some secondary file that you call from a primary file -- like an include in PHP.

That's not what frames were. Frames were complete fucking HTML pages -- <html>, <head>, <body> (or, more likely, <HTML>, <HEAD>, <BODY>, because in the old days we wrote HTML tags in all-caps) -- which is, most times, downright stupid and wasteful, and was much moreso in the days of 14.4 dialup. Even worse than the load time was the logistics -- if you used frames to build a website with a header, a footer, and a sidebar, you'd have a total of five separate web pages -- a content area, the three other sections, and some kind of main page that all of them were embedded into. This was a fucking nightmare for linking, both for the developer (who had to remember to set the target attribute on every single link, lest the page load in the navigation bar instead of the content area) and the end user (because the URL in the location bar would be the container page that called all the other pages, not the content page the user was currently looking at).

In a way, it's kinda weird that nobody's gone back to that well and tried to do it again, but do it right this time. Update the HTML spec to allow an HTML file to call a reusable snippet of HTML from another file, one that isn't a complete page.

Given all the concessions HTML5 has made to the modern Web, it's surprising that hasn't happened, even given how slowly it takes for a spec to be approved. We've got a <nav> tag, which is nice and all, but who the hell uses a <nav> tag without calling some kind of scripting language that automates code reuse? There really aren't that damn many reasons to use the <nav> tag for code that isn't going to be reused on multiple pages throughout a site.

And I dunno, I'm sure somebody's brought this up, maybe it's on the itinerary as a consideration for HTML6.

Which is another thing, really: the people making the decisions on the specs do not want the same things I want.

I liked XHTML. (In fact, lest this whole thing come off as a curmudgeonly damn-kids-get-off-my-lawn diatribe against new technologies and standards, I'd like to note that I was using XHTML Strict back when you pretty much had to be using a beta version of Phoenix -- before it was Firebird, before it was Firefox -- for it to render correctly.) I thought it was the future. I wish XHTML2 had taken off. HTML5 feels ugly and inconsistent by comparison, and, as legitimately goddamn useful as it is to be able to put something like data-reveal aria-hidden="true" in the middle of a tag's attributes, it always feels dirty somehow.

But I digress.

Point is, in 2006, I switched the blog from just plain old HTML and CSS, and added two more elements: a MySQL database to actually store all the shit, and a PHP CMS (originally b2evolution, later switched to WordPress).

And then came smartphones.

We live in a world now where every website has to be designed for multiple layouts at multiple resolutions. You wanna try doing that without using an existing library as a base? Try it for a few days. I guarantee you will no longer want that.

I think my resistance to picking up new libraries is that every time you do it, you cede a measure of control for the sake of convenience. I don't like ceding control. I like my website to do what the fuck I tell it to, not what some piece of software thinks I want it to.

I've spent the last decade arguing with blogging software to get it to quit doing stupid shit like turn my straight quotes into "smart" quotes and my double-hyphens into dashes. Just the other day, I built a page in WordPress and discovered that it replaced all my HTML comments with fucking empty paragraphs. Why would I want that? Why would anyone want that?! And that's after I put all the remove_filter code in my functions.php.

And that's the thing: WordPress isn't built for guys like me. Guys like me use it, extensively (it is the world's most popular CMS), because it automates a bunch of shit that we'd rather not have to deal with ourselves and because when we're done we can hand it off to end users so they can update their own site.

But I still write these posts in HTML. I want to define my own paragraph breaks, my own code tags, the difference between an <em> and a <cite> even though they look the same to an end user.

(And okay, I still use <em> and <strong> over <i> and <b>; there's really no explaining that except as a ridiculous affectation. I recently learned Markdown and used it to write a short story -- I'll come back to that at a later date -- and I could see switching to that. HTML really is too damn verbose.)

...and that was another lengthy digression.

So. Mobile design.

Bootstrap is the most commonly used toolkit for responsive websites. I've used it, it works well, but it's not my favorite idiom, and I've decided I prefer Zurb Foundation. So that's what I used to build the new site layout.

Except, of course, then you've got to get two dueling design kits to play nice to each other. Square the circle between WordPress and Foundation.

I started to build the new theme from scratch, and I'm glad I was only a few hours into that project when I discovered JointsWP, because that would have been one hell of a project.

JointsWP is poorly documented but has proven pretty easy to pick up anyway.

So. I've gone from HTML and CSS to HTML, CSS, and WordPress (HTML/CSS/PHP/MySQL), to HTML, CSS, WordPress, Foundation (HTML/SCSS/JavaScript, importing libraries including jQuery), and JointsWP (ditto plus PHP). And on top of that I'm using Git for version tracking, Gulp to process the SCSS, and Bower to download all the other scripts and toolkits I need and keep them updated.

So, going with Foundation (or Bootstrap, or whatever) as a standard toolkit, you get somebody else's codebase to start from. That comes with some elements that are a necessary evil (I hate fucking CSS resets, and think writing p { margin: 0; } is an abomination in the sight of God and Nature -- but if it means I can assume my site will look more or less correct in Mobile Safari without having to go out and buy an iPhone, then I guess I'll take it), and others that are actually pretty great -- I find SCSS to be really exciting, a huge saver of time and tedium, and it's hard to go back to vanilla CSS now that I've used it.

Course, with increasing complexity, you still hit those things that don't quite work right. One example I've found is that Foundation sets your placeholder text (the gray letters that appear in an "empty" input field) too light to be legible, and does not have a simple definition in _settings.scss to let you adjust it to darker. I've found a mixin that allows you to create such a definition pretty simply, but for some reason JointsWP doesn't like it (or maybe Gulp doesn't). So until I get around to finding a fix, the text stays light, and I'll just have to trust that you the user will be able to determine that the input field under the phrase "Search for:" and to the left of the big blue button that says "Search" is a search box.

I've also got loads of optimization still to do; part of that's going to mean figuring out what parts of Foundation's CSS and JS I'm not actually using and cutting them out of the calls, and part of it's probably going to mean minification.

Minification is one of those things I resisted for awhile but have come around on. It can be a real hassle for debugging, not being able to view a stylesheet or script in full, and it may not be practical just to save a few kilobytes (or a few dozen, rarely a few hundred) -- but on the other hand, well, it's not so different from compiling source code to binary; the end result is still that you take something human-readable and turn it into something much less human-readable.

And of course now that I'm using a preprocessor, my CSS file isn't my real source code anyway; it's already the result of taking my code, feeding it through an interpreter, and outputting something that is not my code. If you want to look at the stylesheet for this site, you want to look at the SCSS file anyway (it's on Github), not the CSS file. And if I'm already telling people "Look at the SCSS file, not the CSS file," then what's the harm in minifying the CSS file and making it harder for people to read?

For now -- prior to removing unnecessary code calls and minifying everything -- I feel like the site design's a lot more bloated than it needs to be. And even once I slim it down, there are going to be some compromises that go against my sensibilities -- for example, when you loaded this page, you loaded two separate navigation systems, the desktop version (top navigation and sidebar) and the mobile version (just a sidebar, which contains many of the same elements as the topnav and sidebar from the desktop version but is not exactly the same), even though you can only see one of them. That redundancy makes me wince a little bit, but ultimately I think it's the best and simplest way of doing it. Sometimes, good design does require some redundancy.

All that to say -- man, there have been a lot of changes to web design in the last twenty years. And while there are trends I really don't like (if I never have to build another slideshow it'll be too soon; gradients are usually dumb and pointless; and the trend of making visited links the same color as unvisited ones feels like a step backward into 1995), there are also a lot that I've eventually warmed up to, or at least accepted as something I've gotta deal with.

Anyway. Welcome to the new corporate-sellout.com.

And one more thing about the site before I go: it's probably worth noting that this site is different from the other sites I build, because it's mine. Its primary audience is me. I like having an audience, but frankly I'm always a little (pleasantly) surprised whenever anyone actually tells me they enjoyed something I put on this site.

Because this site isn't one of my professional sites. I didn't build it for a client. It's not my portfolio site, which I built to attract clients. This one? It's for me. As should be clear from this rambling, 2200-word stream-of-consciousness post about the technical ins and outs of web design, as it applies specifically to me and to this site.

Frankly I'm always surprised when anyone actually reads anything like this.

The Auction House is the Worst Thing in Final Fantasy 6

It really, really is.

I mean, the Fanatics' Tower is downright sadistic -- it's a huge, nasty, difficult slog, with no save points, ending in a boss who will almost certainly kill your entire party when you defeat him, and then, if you survive (which requires either Reraise or an extremely high-level party), makes you walk all the way down again, and not only that, but it offers no experience, so if you die you lose everything you've gained.

But, it's pretty easily gamed. You're not going to fall for that wipe-out-your-entire-party thing a second time, and players who know what they're doing can actually get in and out painlessly with a Moogle Charm and the Berserk and Reraise spells.

The Auction House, on the other hand, is bullshit.

The first thing wrong with it is that it is not a fucking auction house. It is a store with a randomized inventory where it takes an inordinate amount of time to buy things. Items go for the same price, every fucking time; you just have to sit through a goddamn cutscene before you can agree to buy them.

And the second thing wrong with it, of course, is the goddamn Talking Chocobo and 1/1200 Scale Airship.

Not only is it a store with a randomized inventory that makes you sit through a cutscene to buy things, but a very large percentage of the time (I'm going to say "majority", though people who've paid more attention to FF6's RNG can correct me) it hits you with a gag item that you can't actually buy.

This is, possibly, mildly amusing the very first time it happens.

For some reason, it is possible for it to happen a second time after that.

And a third, fourth, fifth, and seven hundredth fucking time.

And if you want to get two particular espers, or certain rare relics early in the game, you either have to study the game's random number generator to figure out how to get the things you actually want, save-spam until you get lucky, cheat, or actually sit through every one of the auctions.

Nice thing about emulation is that it makes it a lot less obnoxious, what with the ability to use a save state right outside the door and fast-forward to nudge the RNG. (On my last playthrough I was convinced that the item up for auction was seeded by your number of steps; this time I'm more inclined to believe it's time-based. I'm sure somebody out there has written an exhaustive guide, though I must admit I'd be more interested in just finding a hack that turns the damn thing into a store and lets you buy the things you want from it.)

Auctions -- actual auctions -- make a lot more sense in MMORPG's, where you're interacting with other players. So do extremely rare drops, for that matter. FF6 is less guilty of the latter than FF4, with its rare summons, Pink Tails, and such (though I've only ever seen one Economizer drop in all the times I've played 6 top-to-bottom and side-to-side), but there's slim damn reason for there to be an auction house in the game in the first place, and no reason at all for an irritating goddamn barely-functional store that pretends it's an auction house.

More Stupid Ideas in Digital Distribution

Stop me if you've heard this one: a media company does a promotion, is totally unprepared for the traffic it generates, the servers are obliterated so that legitimate customers can't access their stuff, and all the while pirates are still able to trivially obtain the media in question.

I'm talking about Comixology and Marvel, but I could just as easily be talking about EA ('cept that last part I guess; to my knowledge there's no crack to run SimCity without a network connection as yet).

Marvel started a big promotion the other day: 700 free issue #1's through Comixology.

The demand took down the Comixology site for two days. And it's still running slowly.

To blame for all this? Two things:

  1. a client-server distribution model with only a single website available to download from, and
  2. DRM on the files to make sure nobody else can set up a mirror.

Well, I should say "to make sure nobody else can set up a legal mirror", because, well, if you've been on the Internet for five minutes and are not a complete dumbshit, you're probably aware that anyone who wants those comics can trivially find pirated copies.

Go the legal route, with Comixology? You get a proprietary file that you can only read in their program. Provided you can access their fucking website at all.

Go the illegal route, through some dodgy website? You get a CBR, or a CBZ, or a PDF, which you can read in any program that supports that format. And you don't have to worry about whether a single specific website is actually working in order to acquire that file.

It doesn't take a fucking genius to see which is the superior, more customer-friendly option.

Let's talk about what customers want. Hey, I like comics. Let's start with me. Here, maybe this will help you get a feel for just how much money you could potentially squeeze out of me:

27 shortboxes, a long box, and a stack of bags a couple of feet high of books I haven't boxed yet

Not pictured: 14 more shortboxes, plus about 2/3 of a bookcase taken up by hardcovers and trades.

My point is, I have spent a fuck of a lot of money on comics over the course of my life.

You know how much I've spent on Comixology? Zero. The Dark Horse digital store? Zero.

And make no mistake: that's not just because I prefer physical comics. I do, but I've downloaded any number of free comics from both those stores. I've read them and I've enjoyed them. I'd be adding those 700 Marvel #1's to my collection right the fuck now if the website were functional.

But free is the amount I am willing to pay for a DRM-infected book, comic or otherwise. If you won't let me read the file on whatever computer I want, in whatever program I want, then you're not getting a damn dime from me.

I realize I'm not the guy Comixology's trying to appeal to here -- they're trying to draw in new readers, not people who know what happens on Wednesdays. I get that. I'm not the target audience here.

But the target audience is getting timeouts too. Not just new readers coming for the Marvel promo, but existing customers who can't access their accounts.

So, here are a couple of points to start with that I think should be blisteringly obvious:

The very idea of restricting access to a free digital giveaway is completely fucking insane.

Why put DRM on something you're giving away for free? What conceivable reason is there for this? Why would you want to restrict copying of a free promotion that you are doing?

And why only make it available from a single distributor?

I mean, I get the reasoning behind that one, at least: they want to turn people into Comixology customers. They don't want people to just grab the free comics and never bother coming the the Comixology site. I get the theory.

But in practice, well, how's that working out for you guys? You getting any customers out of this thing?

Here's the right way to do it: just post all 700 files in a big torrent file. Make them CBR/CBZ format. And stick an ad for Comixology in every file.

Ever see a popular torrent collapse under the weight of high demand? Of course you haven't. Because that is the opposite of how BitTorrent works. BitTorrent is at its absolute best on files that are in high demand.

Now, I know why media companies don't take advantage of BitTorrent: because that would legitimize BitTorrent. As far as the publishers are concerned, BitTorrent is synonymous with piracy. They want the protocol banned entirely -- so of course they're not willing to acknowledge that it can be used as a tool for legal distribution, and a very very good one at that.

So instead, they opt for DRM-encumbered files distributed through a traditional client-server model -- and create this gigantic fucking debacle. And you know what their takeaway from this is going to be? "Well, obviously we need to make sure we've got more bandwidth next time." They're going to think that the problem is that their stupid distribution model wasn't implemented correctly, not that their stupid distribution model is stupid.

"Let's just make sure we've got more bandwidth next time" was EA's solution to the authentication problems that Spore users faced in 2008. 5 years later, did it work?

As long as you're thinking that the fix is a better delivery mechanism for DRM-infected content, you're doing it wrong. The problem will persist.


But you know, there are lots of great digital comics out there that aren't from Comixology and aren't DRM-infected. I've gushed about Mark Waid's Thrillbent before; those are all DRM-free and free to download. I also enjoyed the first issue of Dracula the Unconquered by Chris Sims, Steve Downer and Josh Krach; it's DRM-free and only costs a buck.

The point here isn't merely to castigate companies who do it wrong -- please reward the ones who do it right.