“Make Me Feel Like A Wizard” Isn’t A Feature. Or Is It?

There’s something about typing in a trigger word into your code editor, hitting the Tab key, and seeing it suddenly transformed into a custom function, class, object, or whatever which you’ve created– it feels magical.

I know it’s not truly magical, obviously. But it feels like it.

For context, I’m mentioning this because I’m in the middle of migrating from the 32-bit version of my coding editor to the 64-bit version. The plugin I currently use to manage my reusable code snippets is only available in a 32-bit DLL, it hasn’t been updated in nearly 6 years, etc. There is a different code snippet plugin available for the 64-bit version, it’s actively developed and maintained, has great documentation, arguably better UX/UI, and does everything the previous plugin does . . . except for the trigger word/Tab key transformation.

The analytical part of my brain says this is a no-brainer: “Migrate your code snippets to the new plugin.”

The creative side of me, however, is like: “But it’s missing THE coolest feature! Can’t we download the plugin source from GitHub and re-compile it in Visual Studio as a 64-bit DLL, or make a wrapper or something?”

The silly part is, no one actually watches me write code. There’s no “wow factor” or whatever you want to call it. If you stop and think about it, the whole trigger word/Tab transformation scheme doesn’t even scale well– because every snippet you add requires you to remember a new trigger word. And if you try to export and share your snippets with someone else, they won’t have memorized your trigger words. It’s impractical.

But typing in “errorhandler”, hitting the Tab key, and suddenly seeing your text replaced with the method to invoke your organization’s error catching and logging object– that’s some Doctor Strange meets Jeffrey Zeldman in Area 51 kinda mojo right there. Using a category scheme with a dropdown UI to ultimately pick the “errorhandler” function from a displayed list of matching functions, just isn’t as satisfying.

I think the secret behind this feature’s irrational appeal is “It makes one feel like a wizard.”  You type in the secret word, press the magic button, and (voila!) something cool happens. It creates an empowering feeling, and that’s a big piece of “locking people in” to your product.  (Seriously, the fact that I’m even considering trying to recompile a plugin which hasn’t been updated in 6 years as a 64-bit DLL shows you how ridiculous this is.)

Your turn now. Tell me about your favorite “Makes me feel like a wizard” feature.

Book Review: HTML5 Applications

I picked up Zachary Kessin’s book, HTML5 Applications, at a used bookstore and tried to read it recently. It was not a pleasant experience.

To be fair, this book was published in 2011 and a lot of the specific details have changed in the seven intervening years.  The BlobBuilder() function, for example, has been subsequently deprecated. It would be unreasonable to expect a printed book to anticipate and adapt for this kind of change, obviously, and I don’t fault the author for this.

Here’s an example of the kind of frustrating problems I had with the book in addition to the material being changed:

Because JavaScript is a case-sensitive language, the correct methods should be fadeIn and fadeOut, rather than all lower case. Granted, developers already familiar with jQuery will know this and adjust accordingly, but a technical reviewer should have caught this and set it right before it got to print.

Similarly, in a later portion of the book where Kessin is explaining the filter() method, an even function is referenced– even though it is never defined anywhere else on the page. Again, an experienced JS developer will be able to infer the need to define an even() to make the code work, but expecting readers to “just know this” and “fill in the blanks on their own” doesn’t contribute to a positive reader experience. It’s precisely these sorts of omissions which make learning new material frustrating instead of enjoyable, because you feel like you’re spending more time fixing someone else’s code rather than learning new material.

The section on Testing JavaScript Applications with QUnit and Selenium were fairly decent, and some material in the New Tags chapter was helpful, but I’ve found it necessary to put notes in the margins of several pages to keep track of omissions and updates.