Getting to Meaningful Use and Beyond By Fred Trotter, David Uhlman

Published by Rob on July 4th, 2011 - in O'Reilly Blogger Review

Getting to Meaningful Use and Beyond Is a book about the meaningful use standards for electronic health records in the united states. I grabbed a preview copy of this book having implemented a simple database for a patient record reporting for a small therapy group many moons ago. I was expecting a dry boring book, but was pleasantly surprised to find it engaging and well written.

Health IT systems provide great promise for improving the efficiency and quality of health services, with the cautious guard that IT implementations for large organizations carry huge risk of failure. Queensland Health have been an example of what can go wrong, particularly with their spectacular payroll system failures after a recent upgrade.

Getting to Meaningful Use and Beyond presents many of the opportunities with health IT, informing of some of the great successes, while informing of the risks and challenges.

A quote in the book says “When you’ve seen one medical practice, you’ve seen one medical practice.” which forms a basis for one of the key challenges in Health IT systems. The book continues the point out some of the differences, and considerations to include. It highlights the requirements and value for helping to follow the processes for health it systems, but also the need for flexibility and customization. It cries out for techniques like those used by FlexaData(http://flexadata.com/) for modeling and working with data.

I was reviewing an early access version of the book, which was well worth reading on it’s own right, even with some typos and a couple of chapters missing. It will be interesting to see how the book evolves with a changing landscape. In particular I look forward to seeing the authors comments on the pending demise of Google Health (google health was referenced in the book, but the comments predate knowledge of it’s pending close in 2012).

I’d definitely recommend the book to anyone considering HealthIT, or an IT professional interested in health. There is also some great pointers and ideas useful for computer literate people who are dealing with health issues.

[This book was reviewed as a part of the O'Reilly Blogger Review Program]

Why iCloud isn’t Going to Kill Dropbox

Published by Rob on June 27th, 2011 - in Miscellaneous

One of the most exciting new features in iOS5 is the iCloud. It is a very cool way of easily making it possible for iOS applications to sync data to the cloud. Apple provides an easy to use API which makes the remote saving of data as easy as saving a file locally.At a first glance in would seem that this would be the dropbox killer. A really frequent use case for many people is for dropbox to be used with their iDevices. Using dropbox to store their data remotely.

Apple as usual isn’t chasing what their competitors do. Instead they are walking their own walk, and doing what makes sense in their environment. They aren’t trying to provide the general file storage and sharing capabilities that dropbox provide, instead focussing on making it easy for a single “application” and “user” to share it’s files between devices. The advanced folder sharing capabilities of dropbox, and the independence of files and applications provided, aren’t given by iCloud. Apple let’s you store your stuff on the cloud, but keeps things “sandboxed” to your application.

There’s three key terms above: application, user, and sandbox.

  1. An application is defined by the application key provided by apple. Each application has it’s own unique key.
  2. A user is specified using an Apple ID. appleid.apple.com . This is the id that you use for interacting with apple to do things like buy stuff from iTunes etc.
  3. A sandbox is a way of providing limited access to a particular resource. The apple sandbox is a tight one, coupled to the application id. Applications on iOS devices have the ability to interact with files on the local filesystem, but only within their local sandbox. They are not able to share files between applications.

The sandbox has been continued with iCloud. Applications can only access files within their own sandbox. While it is possible to share files between a laptop, an iPhone and a iPad easily, it is not possible to share files between two different applications. Also iCloud does not support sharing files between users. These two key limitations are why iCloud is not going to replace dropbox.

The Book of CSS3 A Developer’s Guide to the Future of Web Design By Peter Gasston

Published by Rob on June 25th, 2011 - in O'Reilly Blogger Review

As on of the contributors to TinyMCE, it’s important for me to be well on top of CSS for two reasons, first to ensure that we support CSS well for our customers, and second to ensure that we leverage it well for the product.

The book of CSS3 presents the new features included in CSS3 in a readable, well written style.  I found interesting and noteworthy points in almost every chapter. Some of the particularly valuable topics follow. The coverage of media queries and web fonts particularly interesting, particularly since I was recently talking with a customer about cross platform friendly fonts. The chapters on selectors and pseudo elements were also interesting and add some more useful tools to the shed. The CSS appearance attribute has very exciting implications for accessibility (expect a blog post soon with some more thoughts and an example). The collection of tools and resources tucked away in the appendices at the end are well worth a looks well, as is the books companion website (http://thebookofcss3.com/).

I highly recommend this book to anyone interested in what’s possible now with CSS3 or what’s coming soon. Take a look through the table of contents to get a quick idea then dive deep to really learn. I’d almost go as far as to say that anyone who is doing front end development must read this book.

[This book was reviewed as a part of the O'Reilly Blogger Review Program]

Pujols More Than the Game By Scott Lamb, Tim Ellsworth

Published by Rob on June 24th, 2011 - in Book Reviews, Book Sneeze

I’ve long enjoyed reading books about people who have been publicly successful in some form or another. I particularly enjoy being inspired and challenged by people who manage to live a full life with their faith in the public sphere.

I’ve been a bit hit and miss with my baseball watching over the years. I’ll periodically pop in and watch some of the playoffs, but I’e not watched much at all since the years when the Blue Jays were winning last century. I hadn’t really heard much of Pujols, so I was quite interested in the book.

Pujols, More Than a Game presents the career and life of Pujols. It does a good job of highlighting his successes, and filling in the details of his career and life. I found the sections on Pujols personal life and faith informative and inspiring. In particular his attitude and conversations around first base are awesome. I’m grateful to hear of his generosity, and how much he gives.

I’d recommend this book to anyone who is interested in how Pujols lives his life.

[this book was reviewed as a part of the BookSneeze Blogger Review Program]

How to fix mount_fusefs: mount point XXX is itself on a MacFUSE volume errors

If you are getting a mount_fusefs: mount point XXX is itself on a MacFUSE volume when trying to remount an sshfs filesystem in OSX, the fix is pretty straight forward.

  1. type the “mount” command,
  2. find the sshfs#user@host line, and
  3. type the command “umount sshfs….” using the connect string from 2.

This will unmount the server, and make it possible for you to connect again using sshfs.

50 Tips and Tricks for MongoDB Developers By Kristina Chodorow

Published by Rob on May 18th, 2011 - in O'Reilly Blogger Review

I’ve been learning the world of MongoDB for a little while now, building up my understanding of how it works, and Trade-offs to be considered when entering into the world of noSQL. With the query support and other interesting properties Mongo has been the system I’ve been diving deep into, and getting some real experience with. As an ex Oracle DBA, working through the strengths and weaknesses of Document based databases has been interesting. The book 50 Tips and Tricks for MongoDB Developers, provides some good food for thought relating to the tradeoffs when working with document stores in general and MongoDB in particular. The end of the book also delves into advanced configuration and production topics such as replication and restoring from backups. I’ll admit that I let these topics was over me without fully grokking them.

The book is a pretty quick and easy read, and leads you through how to model and work with documents in MongoDB. I’d recommend it to people who understand the basics of MongoDB and want to dive deeper.

[this book was reviewed as a part of the O'Reilly Blogger Review Program]

Inside TinyMCE plugins (and an introduction to plugin dependencies)

Published by Rob on May 12th, 2011 - in Ephox, JavaScript, TinyMCE

I’ve just been spending some time adding dependency resolution to TinyMCE plugins.

The concept is that a plugin can depend on other plugins. As a part of doing this work I’ve had some good opportunity to dive deep into how plugins in TinyMCE work. It’s been a good little trip that I’ll summarise briefly here. I’ll do this by first presenting the lifecycle, then explaining how plugin dependencies will work.

Plugin Loading Lifecycle

The TinyMCE plugin loading lifecycle there are three concepts that are important to understand:

  1. load
  2. add
  3. init

Load

The loading of a plugin will automatically download the javascript code, and run this. This is done by looking for a file, “editor_plugin.js”, in the “plugin short name” folder in the plugins folder. When running in development mode, the file “editor_plugin_src.js” will be used. It is expected that the source code in this js file will use the TinyMCE create function to create a class for the plugin, add the plugin to TinyMCE using

1
PluginManager.add

This code should typically try to remain outside of the global namespace, executing within an anonymous function block, as per the code in the example plugin.

Plugins specified in the plugins attribute of the settings object will be loaded if they have not previously been loaded. Historically TinyMCE has also included a – prefix to prevent autoloading of plugins. This is no longer required, as TinyMCE is smart enough to know if a plugin has been loaded, and won’t load it twice. So in effect, there is no reason to include the – prefix (so the only part to remember from this paragraph is that plugins specified in the plugins attribute of the settings object will be loaded if they have not previously been loaded).

Add

A plugin class can be added to TinyMCE using the PluginManager.add function, passing the short name of the plugin and the implementing class for the plugin. The short name should be a unique identifier for the plugin, and the plugin class provides the code that implements the plugin.

Importantly the class can provide an init method which will be called by TinyMCE when it is being initialised. The class should also provide a getInfo method which returns information about the plugin.

There are two ways of performing an add. It can either be done manually before loading TinyMCE, or it could be specified in the editor_plugin.js that gets loaded as a part of the load process above.

Init

The init function of the class for a plugin will be called after TinyMCE has created the plugin, as a part of the editor initialisation process. The plugin will be passed a reference to the editor as a part of the initialisation process.

Plugin Dependencies

Plugin dependencies can/will be specified in an array parameter to the PluginManager.add function call. There are two ways to specify a dependency.

  1. as a string. String dependencies will reference the short name of the dependency. If the dependency has not previously been loaded, TinyMCE will attempt to load the dependency.
  2. as a simple object. The object will have the form:
    1
    2
    3
    4
    5
    {
      prefix: 'url_prefix/',
      resource:'name_of_plugin',  
      suffix:'/path_to_file.js'
    }

    These will then be concatenated together to form a url. URLs will be resolved as relative to the TinyMCE installation. In the above object this would generate the url: “url_prefix/name_of_plugin/path_to_file.js”

When specifying a plugin dependency, there is a guarantee that the init method of the dependencies will be called before the init method of the plugin. There is no guarantee of the order in which the plugin “editor_plugin.js” is loaded. This can be seen in the test “plugin_dependency_init_call_order.html” which shows the order in which the init method is called. That the loading of plugins is not specified as a part of the new dependencies work is somewhat intuitive. It is only as a part of the load process that a plugin (and it’s list of dependencies) are made known to TinyMCE, which means that it is not possible to specify dependencies within the plugin before loading the plugin. The init of plugins is only performed after the plugins have all been loaded, making it possible for the dependencies to be init’ed before a plugin is init’ed

JavaScript: The Definitive Guide, Sixth Edition By David Flanagan

Published by Rob on May 11th, 2011 - in O'Reilly Blogger Review

JavaScript: The Definitive Guide has well been known as the bible of JavaScript Development. As a professional JavaScript Developer and leader of JavaScript Developers, I had to grab an updated copy (we’ve got various old editions around the office). It was great to get opportunity to review it as a part of the O’Reilly Blogger Review program.

The book has been updated for HTML 5 and ECMAScript 5, and has heaps of useful information about both. Even as an experienced JavaScript developer, I found a significant number of insights, making it well worth the list price. My only criticism is that the code formatting technique in the examples didn’t work very well on n iPad. Unfortunately the width of lines including the copious explanatory comments was just too long.

David Flanagan recently caused a stir by announcing that piracy of his books may end his full time writing career, which would be a sad loss. http://www.davidflanagan.com/2011/04/javascript-the-1.html. Please consider buying this well written JavaScript book, which is useful for beginners and experts.

[this book was reviewed as a part of the O'Reilly Blogger Review Program]

Gamification by Design By Gabe Zichermann and Christopher Cunningham

Published by Rob on May 3rd, 2011 - in O'Reilly Blogger Review

The idea of using games and such to help engage people with learning a product or idea appeals to me. On of my favourite apps on my iPhone is Mind Snacks (http://mindsnacks.com/), a fun application that aids learning Spanish through a series of games.

It was interesting that the blogger review program is it’s own game. Completing a level in this game is doing a review. I have to complete levels to be able to do more reviews.

Gamification by Design is well written and easy to understand. It does a good job of presenting the key ideas of Gamification. The use of real world examples showing what people have done is great. There’s even some real code showing how a forum being enhanced with Gamification. The code examples and examples of interactions with gamification services complete a good book. It was an exciting eye opening read that I thoroughly enjoyed. I was able to get a good introduction to the theories and principles behind gamification, and ground these in reality with the code and examples.

I wouldn’t hesitate to recommend the book to someone technical wanting to learn about gamification.

[this book was reviewed as a part of the O'Reilly Blogger Review Program]

Data Mashups in R By Jeremy Leipzig, Xiao-Yi Li

Published by Rob on April 20th, 2011 - in O'Reilly Blogger Review

The Book Data Mashups in R gives a short tutorial using R to pull data from the web and analyse it. The specific presentation is looking at foreclosure auctions in Philadelphia. I used this book to get some practical hands on exposure to R.  It happily fulfilled this use case for me, exposing packages in R, and helping me gain an idea of how R can be used. It also provided a good idea as to what R does well, helping me know when to pull the R tool out of the shed.

I recommend the book to experienced developers who want to get their heads around what is possible with R and how R works by trying it out.

[this book was reviewed as a part of the O'Reilly Blogger Review Program]

© Rob@Rojotek