CoffeeScript: Accelerated JavaScript Development – #bookreview #programming

CoffeeScript: Accelerated JavaScript Development
By Trevor Burnham
(Pragmatic Bookshelf, $29.00, paperback)

JavaScript was thrown together in 10 days and “was never meant to be the most important programming language in the world,” says Trevor Burnham, a web developer and founder of DataBraid, a startup focused on “developing data analysis and visualization tools.”

Yet, JavaScript was “understood by all major browsers,” despite their numerous differences, and it quickly became the “lingua franca of the Web,” he says in his well-written new book.

JavaScript also became a headache for many programmers struggling to learn it well enough to provide support and develop new applications.

“JavaScript is vast…[and] offers many of the best features of functional languages while retaining the feel of an imperative language,” Burnham notes. “This subtle power is one of the reasons that JavaScript tends to confound newcomers: functions can be passed around as arguments and returned from other functions; objects can be passed around as arguments and returned from other functions; objects can have new methods added at any time; in short, functions are first-class objects.”

Unfortunately, “JavaScript doesn’t have a standard interpreter,” he adds. “Instead, hundreds of browsers and server-side frameworks run JavaScript in their own way. Debugging cross-platform inconsistencies is a huge pain.”

Enter CoffeeScript, first released on Christmas Day, 2009 as “JavaScript’s less ostentatious kid brother.”

Coding in CoffeeScript requires fewer characters and fewer lines. And “the compiler tries its best to generate JavaScript Lint-compliant output, which is a great filter for common human errors and nonstandard idioms,” Burnham writes.

Another benefit: “CoffeeScript code and JavaScript code can interact freely,” he notes.

His book, aimed at CoffeeScript newcomers, assumes you have at least a little knowledge of JavaScript. But you don’t have to be a JavaScript Ninja, he assures.

He starts at the classic “Hello, world” level of CoffeeScript, including installing the CoffeeScript compiler, deciding which text editors are best, and learning how to write and debug simple CoffeeScript code.

From there, he moves quickly into showing you how to put CoffeeScript to work and develop a simple multiplayer game.

There are several different ways to run CoffeeScript, and there are different requirements, depending on whether your machine is Mac, Windows or Linux. Burnham describes these in his text and in an appendix, and he gives links to more information.

He also shows how to use a browser-based compiler for developing his book’s example application. But he does not recommend using the browser-based compiler for production work.

His book has six chapters and four appendices:

  • Chapter 1 – Getting Started
  • Chapter 2 – Functions, Scope, and Context
  • Chapter 3 – Collections and Iteration
  • Chapter 4 – Modules and Classes
  • Chapter 5 – Web Interactivity with jQuery
  • Chapter 6 – Server-Side Apps with Node.js
  • A1 – Answers to Exercises
  • A2 – Ways of Running CoffeeScript
  • A3 – Cheat Sheet for JavaScripters
  • A4 – Bibliography

CoffeeScript: Accelerated JavaScript Development offers a focused blend of examples and exercises to help speed up basic competency with CoffeeScript. In learning how to build the multiplayer game application, you use CoffeeScript to write both the client (with jQuery) and the server (with Node.js).

Since CoffeeScript and JavaScript are intertwined, you also can gain a better understanding of JavaScript by learning to code in CoffeeScript, ” Burnham promises.

In a foreword to the book, CoffeeScript’s creator, Jeremy Ashkenas, hails Burnham’s work as “a gentle introduction to CoffeeScript led by an expert guide.”

It lives up to that good billing, with many short code examples and many short tutorials and exercises that can lead quickly to building both a working app and a working understanding of CoffeeScript.

Si Dunn

Designed for Use: Create Usable Interfaces for Applications and the Web – #bookreview

Designed for Use: Create Usable Interfaces for Applications and the Web
By Lukas Mathis
(Pragmatic Bookshelf, $35.00 paperback)

There’s no code inside this well-written book for programmers and visual designers. Instead, the focus is on usability — how people use things — and how you can make big, modest or subtle improvements to their experiences with digital interfaces.

You may be designing a software product that you think will be user friendly. Yet how good, really, is your knowledge of efficient and effective design? And what do you really know about how users will respond to what you create? Are you relying on formal focus groups to tell you what your users supposedly will want?

If you are, you are not doing nearly enough research, insists the author, Lukas Mathis, a developer and user interface designer for Numcom Software. “[P]eople often aren’t able to tell us how we can solve their problems. Worse, people may not even be able to tell us what their problems are. And worst of all, people are pretty bad at predicting whether and how they would use a product if we proposed to build it for them,” he writes.

Instead of depending on focus groups, you should spend some time doing “job shadowing” and “contextual interviews” to help you shape a better interface.

“Since people don’t know what they want, a good approach is to simply observe what they do. The idea of [job] shadowing is to visit users in our target audience at the place where they will use our product. The goal is to find out how our product will help them achieve their goals.”

He adds: “With usability testing, the goal is to find issues with the user interface. When you are shadowing someone, the goal is to figure out what kind of product to create or how to change your product on a more fundamental level.”

In contextual interviews, you interview a user after doing some job shadowing. And: “What you see is more important than what people say. Still, by asking the right questions, you can often get some useful information out of people….The kinds of things you’re looking for are areas where improvements seem possible. Don’t ask for opinions, and avoid questions that force the person to play product designer.”

Mathis has structured his 322-page book into three parts – research, design and implementation – and 36 short, nicely focused chapters that deal with everything from “[c]reating documentation as soon as possible” to “learning from video games” to doing “guerilla usability testing,” overcoming common testing mistakes and dealing with bad user feedback.

Designed for Use has numerous illustrations that highlight common interface design mistakes. The book also shows major, minor and subtle ways to improve customers’ understanding, acceptance and appreciation of what happens when they use product interfaces on their computer screens or phones.

The author also emphasizes the importance of keeping in mind “that you don’t have to own 100 percent of your market. It’s true that adding more features to your product allows you to target more users, but doing so comes at a cost. Your product becomes more desirable to the people who would not be able to use it if it didn’t offer a specific feature. However, it also makes your product less desirable to the people who have no use for that specific feature.”

In his view: “It’s OK to let some people go to your competitors to get what they need; you can’t be everything to everybody.”

Si Dunn

Windows Sysinternals Administrator’s Reference – #bookreview #software #techsupport

Windows Sysinternals Administrator’s Reference
By Mark Russinovich and Aaron Margosis
(Microsoft Press, $49.99, paperback; $39.99, Kindle)

To the uninitiated, the title may sound a bit ultra-geeky and scary. Particularly the “Huh?” word “Sysinternals.”

But this book may benefit you “whether you manage the systems of a large enterprise, a small business, or the PCs of your family and friends,” Mark Russinovich and Aaron Margosis contend.

The Sysinternals Suite, it turns out, “is a set of over 70 advanced diagnostic and troubleshooting utilities for the Microsoft Windows platform” written by one of the book’s authors, Mark Russinovich, plus Bryce Cogswell.

The 70+  Sysinternals tools can be downloaded free from Microsoft TechNet at http://www.sysinternals.com.

The book’s goals are to make you more familiar with the Sysinternals Suite and learn how to use the Sysinternals to “solve real problems on Windows systems.”

Russinovich’s and Margosis’s Windows Sysinternals Administrator’s Reference is well written and has a good number of illustrations that provide amplifying “how-to” information. The book has a hefty 25-page index, as well, to  help you find your way through the Sysinternals’ maze of available features, capabilities, verifications, files, drivers, states, fixes and more.

The Sysinternal tools work with the following versions of Windows:  Windows XP (with Service Pack 3); Windows Vista; Windows 7; Windows Server 2003 (with Service Pack 2); Windows Server 2003 R2; Windows Server 2008; and Windows Server 2008 R2. The authors note: “Some tools require administrative rights to run, and others implement specific features that require administrative rights.”

Following its introduction, the book is divided into three parts, containing a total of 18 chapters:

Part I: Getting Started

  • 1. Getting Started with the Sysinternals Utilities
  • 2. Windows Core Concepts

Part II: Usage Guide

  • 3. Process Explorer
  • 4. Process Monitor
  • 5. Autoruns
  • 6. PsTools
  • 7. Process and Diagnostic Utilities
  • 8. Security Utilities
  • 9. Active Directory Utilities
  • 10. Desktop Utilities
  • 11. File Utilities
  • 12. Disk Utilities
  • 13. Network and Communications Utilities
  • 14. System Information Utilities
  • 15. Miscellaneous Utilities

Part III: Troubleshooting – “The Case of the Unexplained”

  • 16. Error Messages
  • 17. Hangs and Sluggish Performance
  • 18. Malware

The book is aimed mainly at “Windows IT professionals and power users who want to make the most of the Sysinternals tools.” And it includes real-world case studies to illustrate several tough problems.

If you are not yet a power user, but wrestle with Windows on a frequent basis (as many of us do) and are ready to tear into it, the Windows Sysinternals Administrator’s Reference can help you learn how to diagnose and troubleshoot your system and also optimize it.

If you work in a small business where there is little or no tech support, or if you are tech support in your small business, add this book to your library. You’ll likely put it to good use.

Si Dunn

Gamification by Design – Implementing Game Mechanics in Web and Mobile Apps – #bookreview

Gamification by Design: Implementing Game Mechanics in Web and Mobile Apps
By Gabe Zichermann and Christopher Cunningham
(O’Reilly, $24.99, paperback; $9.99, Kindle)

Many companies which sell us products and services are rushing to try to adapt successful videogame strategies to their sales techniques.

This well-written and adequately illustrated book encourages companies to view consumers as “players” rather than “customers” or “users.” In the co-authors’ view: “By thinking of our clients as players, we shift our frame of mind toward their engagement with our products and services. Rather than looking at the immediacy of a single financial transaction, we are considering a long-term and symbiotic union wrapped in a ribbon of fun.”

“Gamification,” the writers emphasize, “…is the marketing buzzword of our time,” and it “can mean different things to different people.”

In their book, it means “the design strategy and tactics you need to integrate game mechanics into any kind of consumer-facing website or mobile app.”

The co-authors also state that their overall goal is “to help demystify some of the core concepts of game design as they apply to business” and that they have structured their book from “the perspective of what a marketer, product manager, or strategist would want to know.”

They define game mechanics as “the tools used to create games,” and game dynamics as “how players interact with game experiences.”

The two writers, both gamification experts, stress that gamification cannot fix core problems within a business. And bad products or products that don’t fit well into a particular market will not get a sales boost if game mechanics and game design are applied to sales campaigns. One hypothetical example they cite is trying to create “a world where your consumer’s avatar is chasing gremlins with an AK-47 in order to save the spaghetti sauce your company is trying to sell in outer space.”

Gamification by Design is not about showing you how to create actual games. Instead, it is more about using gamification to enhance customer engagement and loyalty to your products or services.

The chapter line-up shows the scope of this 182-page book:

  • Introduction
  • Chapter 1: Foundations
  • Chapter 2: Player Motivation
  • Chapter 3: Game Mechanics: Designing for Engagement (Part I)
  • Chapter 4: Game Mechanics: Designing for Engagement (Part II)
  • Chapter 5: Game Mechanics and Dynamics in Greater Depth
  • Chapter 6: Gamification Case Studies
  • Chapter 7: Tutorial: Coding Basic Game Mechanics
  • Chapter 8: Tutorial: Using an Instant Gamification Platform
  • Index (12 pages)

Once the basic game mechanics and structures are introduced, the reader is presented with more information on how “[p]oints, badges, levels, leader-boards, challenges, and rewards can be remixed in limitless ways to create a spectrum of experiences.” And the book moves into deeper discussions of game mechanics and game dynamics.

Feedback, for example, is the process of “returning information to players and informing them of where they are at the present time, ideally against a continuum of progress.” In the toolbox of game mechanics, “[f]eedback loops are essential parts of all games, and they are seen most frequently in the interplay between scores and levels. As scores increase during an experience, they provide clear and unambiguous feedback to the player that she is heading in the ‘right’ direction.”

The book includes case studies focusing successful use of gamification by Yahoo!, Nike and Quora. It also offers up some examples of bad efforts at gamifying a website.

While Gamification by Design keeps its focus away from actually designing and creating games, it does give the reader the architecture and code needed to gamify a basic consumer site. It also shows how to use “mainstream APIs [application programming interfaces] from Badgeville,”

Noting that badges have motivated military warriors and Boy Scouts for hundreds of years, the co-authors contend that offering electronic badges as rewards and status symbols on websites “are [for game designers] an excellent way to encourage social promotion of their products and services. Badges also mark the completion of goals and the steady progress of play within the system.”

This is a fine standalone book, but it also can be used in conjunction with O’Reilley’s Gamification Master Class and with “the supplemental videos, exercises, challenges, and resources available at http://www.GamificationU.com.”

Si Dunn

#