Archive for the ‘technical’ Category

Book Review – Graph Databases

Monday, August 26th, 2013


Graph Databases provides a concise introduction to this particular alternative to the relational database.

Having lots of experience with relational databases and very little experience with graph databases, I found this book to be an interesting read. The book effectively describes the weaknesses of relational databases and explains how graph databases address these weaknesses.

After introducing the idea of a graph database, the book proceeds to demonstrate domains that graph databases are suited to. This corresponds to domains where a network is a natural representation of the data, although the authors tend to suggest that graph databases are almost always more suitable than a relational database!

Next up is the demonstration of a specific implementation: Neo4J and Cypher. Examples of how to create a Neo4J database and query with Cypher follow. Explanations are a little terse, but the interested student can easily investigate further.

Finally, the book includes an interesting comparison of Graph Databases with some of the other NoSQL options available.

My only reservation is that the book felt a little unbalanced in its unwavering promotion of graph databases and the limited discussion of alternatives to Neo4J/Cypher. Overall though, this book provided a good overview of this technology and opened my eyes to the possibilities of Graph Databases.

Note: This book was provided by O’Reilly Media as part of their blogger review program.

I review for the O'Reilly Blogger Review Program

Book Review – Python for Data Analysis

Sunday, January 20th, 2013


Python for Data Analysis is primarily a reference for Pandas. Pandas is a Data Analysis library for Python.

Also covered in less depth are some other components in Python’s data analysis ecosystem. There are chapters on iPython and NumPy. A chapter on plotting and visualization provides a great rundown of matplotlib, along with mention of alternatives like chaco and mayavi.

Pandas is then presented in significant depth, with sections on data storage, data transformation, data aggregation and time series analysis. This forms the bulk of the book.

This is a well-written book that provides a good summary of Python’s data analysis capabilities, however, it will not teach you how to do data analysis. This book will show you how to use the Pandas library.

Note: This book was provided by O’Reilly Media as part of their blogger review program.

I review for the O'Reilly Blogger Review Program

Book Review – Programming Computer Vision with Python

Tuesday, September 18th, 2012


Programming Computer Vision with Python covers the foundations of computer vision along with numerous interesting and practical examples.

Topics covered include:

  • Basic image handling and processing in Python
  • Image descriptors and points of interest
  • Image mapping and homographies
  • Augmented reality
  • 3D scene reconstruction
  • Clustering, searching and classifying images
  • Image segmentation and
  • Interfacing to OpenCV

Python forms an integral part of this book and is used throughout the book. It is an ideal language for this purpose, being easy to understand and with excellent libraries. The scientific library numpy is used extensively.

This book is well-written, easy to understand and a lot of fun. There was a heavy emphasis on practicality which I appreciated.

Typically the theory would first be explained in text, then implemented in code. Finally a practical example would demonstrate how to apply the theory.

There are some great examples. This is where the book shines.

For instance, in the chapter on image classification, we are given an image of a Sudoku. The grid location is first determined, then the contents of each cell in the grid are classified into digits.

It was great to see some machine learning algorithms applied to real problems. PCA (Principal Component Analysis) is used extensively. SVM (Support Vector Machines) and the Naive Bayes Classifier are also used to solve real computer vision problems.

The author clearly knows his stuff, often pointing out pitfalls and demonstrating many handy tricks.

A very enjoyable and recommended introduction to the world of computer vision.

Note: This book was provided by O’Reilly Media as part of their blogger review program.

I review for the O'Reilly Blogger Review Program

Book Review – Fitness for Geeks

Sunday, July 8th, 2012


Fitness for Geeks attempts to teach fitness principles via “real science, great nutrition and good health”.

The book includes sections on nutrition, eating habits, exercise, sleeping and other lifestyle decisions.

Many of the principles advocated in this book mirror those of the “paleo” movement, which is based on the diet and exercise patterns of humans from the paleolithic age. The theory is that the human body hasn’t had time to adapt to the modern life.

The author begins by describing why the human body is not well suited to the modern life. Sitting around all day eating a diet high in saturated fat is less than optimal. Makes sense.

The next section covers nutrition. This section of the book is informative and well written, first covering the “macronutrients” – carbohydrates, protein and fat, before moving onto vitamins and micronutrients. All very interesting and useful. Many useful resources are provided for analyzing what you eat and assessing your diet.

Next is a chapter promoting an idea not heard too often – the health benefits of fasting for significant periods. It’s an interesting idea – usual dietary advice is to have a good breakfast; this chapter advocates skipping breakfast.

The book progresses to exercise and the author recommends intense, short workouts – he cites the Tabata workout. Also recommended is variety in exercise regimes by using systems like crossfit.

The section on resistance training was good, however much of the fitness advice is simply the preference of the author and doesn’t seem to be based on any particular best practice.

This book reminded me of “The Four Hour Body“, which was primarily a book of ideas to investigate further, rather than advice provided by an expert in the field. Both books lack the scientific rigour to back up much of the supplied “wisdom”.

The connection to “geeks” was tenuous. For example in the section on sleep, there was, inexplicably, a page of source code to connect to the Zeo sleep monitor. A variety of gadgets for health tracking were reviewed in the book.

Overall, the sections on nutrition and resistance training were great, sometimes the rest felt a little patchy.

Note: This book was provided by O’Reilly Media as part of their blogger review program.

I review for the O'Reilly Blogger Review Program

Book Review – Machine Learning for Hackers

Sunday, May 13th, 2012


Machine Learning for Hackers provides an introduction to Machine Learning and the increasingly popular statistics oriented language: R.

The book covers the basic concepts and some useful tools, including:

  • An introduction to R;
  • Basic stats and probability;
  • Supervised and unsupervised learning;
  • Linear regression and categorization;
  • Non-linear data and regularization;
  • Principal Component Analysis (PCA) and input correlation;
  • Multidimensional scaling (MDS) for clustering;
  • k-nearest neighbour (kNN) for social network analysis; and
  • SVMs for non-linear classification.

The general structure of each section is to first introduce a new concept, then demonstrate it by applying the concept to a trivial data set. Next, the technique is applied to a real data set. This structure is a great way to understand a technique.

The complete process of first massaging the data and then determining the technique to apply is covered. Occasionally the author makes a wrong turn and the analysis fails. The demonstration of failure, why it occurs and what to do about it is a great feature of the book.

The book is almost completely lacking in any of the mathematics or workings of the underlying algorithms being used, which may be considered a good or bad thing. Sometimes the book felt more like a tutorial on using R’s various machine learning packages, rather than learning about machine learning itself.

If you aren’t familiar with R or machine learning, this book presents a significant learning curve. Unfortunately, R’s syntax can be quite opaque, even to experienced programmers. Indeed, due to the heavy R component in this book, a better title may have been “Machine Learning with R”.

I’m not sure you can “hack” machine learning without properly understanding the underlying concepts, but with this book you can undoubtedly try.

The book presents a relatively quick, somewhat cursory overview of Machine Learning. It provides a good starting point for further study.

Note: This book was provided by O’Reilly Media as part of their blogger review program.

I review for the O'Reilly Blogger Review Program

Backup your Google Docs documents to Dropbox

Sunday, February 5th, 2012

Supernifty is pleased to announce a new, free service that enables you to backup your Google Docs documents to Dropbox.

Google Docs to Dropbox

Nobody cares more about your own data than you. Anything that you care about should be backed up. If you have anything on Google Docs that you care about, you should be backing this up.

Although Google mostly do a fantastic job, even they occasionally lose user’s data. It’s inevitable. Hard drives fail. Things catch fire. Accounts are hacked.

Your next big novel could be lost forever.

Enter Supernifty. Supernifty’s new free service exports all your documents from Google Docs to Dropbox once a week. Simple.

Being Dropbox, once your Google Docs are on Dropbox, they will then be synced down to your local machine. And you’re safe. Safe!

If Google go offline, or you accidentally overwrite your tax return, or reveal your password to the Russian mafia, you will still have your documents, safely and securely stored on Dropbox. Easily recovered.

I recommend you give it a try.

The service is new – we are actively adding features and looking for issues. If you try it out, please let us know what you think.

Note that neither Supernifty nor this service are afiliated with either Google or Dropbox.

Book Review – iOS Sensor Apps with Arduino

Friday, February 3rd, 2012


iOS Sensor Apps with Arduino provides a concise introduction to the possibilities of interfacing Arduino with iOS.

Much of the book concentrates on the Redpark serial cable. This cable simplifies many of the headaches involved with interfacing with iOS devices.

With the Redpark serial cable, things appear to be reasonably plain sailing, with the author providing step by step instructions to building a simple application that interfaces with Arduino, takes a reading from a sensor and plots it on the iPhone.

The book includes a number of useful tips along the way that may not be obvious to the beginner, such as how to easily track the log messages generated by the Arduino.

Finally, the book covers other communication options, if you don’t want to use the Redpark serial cable. This includes:

  • Ethernet
  • Wi-Fi
  • X-Bee
  • The microphone (a la Square)
  • USB; and
  • Midi

This is a short, readable book that covers the essentials; recommended if you want to get started in this area, particularly if you intend on using the Redpark serial cable for your interfacing requirements.

Note: This book was provided by O’Reilly Media as part of their blogger review program.

I review for the O'Reilly Blogger Review Program

Speed Scrabble Notifier for Firefox

Wednesday, September 28th, 2011

Firefox
If you’re a Speed Scrabble player and running Firefox, then you might be interested in trying the new Speed Scrabble Extension.

The add-on helps you keep track of who is currently online so you can easily drop in for a game. Try it out!.

Speed Scrabble is a fast, fun and free online multiplayer word game. If you’ve not played it before then check it out!

If you aren’t a Firefoxer, there are similar extensions for Safari and Chrome.

If you’re a software developer interested in seeing how the extension works, the source code is freely available and can be used for any purpose.

If you have any thoughts on the new extension, feel free to get in touch!

JavaScript Task Queue – Hack it #9

Sunday, July 17th, 2011

Suppose you have a lot of tasks with completion callbacks to complete in the browser, but you want to do them sequentially. For instance, you might have a list of AJAX requests to make to your server.

This JavaScript demonstrates a simple solution:

If you can’t see the source code, look here.

Book Review – Programming HTML5 Applications by Zachary Kessin (O’Reilly Media)

Saturday, July 16th, 2011


“Programming HTML5 Applications” is a new book from O’Reilly media that focusses on some of the new technologies available in HTML5. It also places significant emphasis on the language of web applications – JavaScript.

The book starts with a brief history of the Internet and the web, before covering some of the trickier features of JavaScript in Chapter 2 – primarily closures, the event-oriented nature of JavaScript, and the DOM.

Next is a good overview of two JavaScript frameworks: the ultra-popular JQuery and the more application oriented ExtJS, before moving on to some testing frameworks – QUnit for JavaScript unit testing, and Selenium for browser interface testing.

The author then moves on to HTML5, briefly covering:

  • local storage,
  • application caching,
  • web workers and
  • web sockets.

Finally, some interesting server side technologies are described: the “cloud” paradigm, node.js and Erlang. The book concludes with some useful JavaScript tools.

The copy provided for this review was an “early access” version which hasn’t been through the full editing process. The book clearly still requires considerable polish – I was surprised to find that the HTML5 chapters cover less than half the book; they feel incomplete. The “web workers” chapter contains a detailed example, but the other HTML5 chapters do not.

When learning a new technology, I like expert, clear advice about best-practise, and the production-readiness of each technology. This was lacking in the chapters on HTML5. For instance, there is little mention of which browser versions support which technology – an important consideration when deciding whether or not to use a particular feature.

Currently much better HTML5 resources are the truly excellent Dive into HTML5 and HTML5 Rocks.

In contrast, the JavaScript chapters are well-written and informative, particularly the framework and testing chapters. I would have liked to have seen some analysis of the other major frameworks. The overview of QUnit and Selenium and their use-cases made for a useful introduction to these tools.

When the final copy comes out, hopefully the HTML5 chapters will have filled out, and the many little errors corrected. Assuming this happens, this book will serve as an introduction to the main technologies involved in building an HTML5 application.

Note: This review applies to an “early access” version of the book and was provided by O’Reilly Media as part of their blogger review program.

I review for the O'Reilly Blogger Review Program