Tuesday, 12 August 2014

Building a case for a Two Factor Authentication Model

Two Factor Authentication (TFA) has been around for quite some time and one gets the idea that it must be important if big names like Apple, Google, Facebook and Twitter are using it. Banks use it to authorize payment transfers and limit changes. While on one hand, it adds another level to the authentication mechanism and slows down the transaction, it definitely makes the possibility of a hacker taking control of a system harder.
While implementing a TFA is not hard, the main issue with implementing a TFA model is recovering the login as the recovery mechanism usually bypasses the TFA model. However inspite of the complexity, I feel that that TFA is a must in cases where a user needs to VPN into the corporate network. While user tokens such as RSA's SecurId have been cracked, bio metrics might be the missing link in setting up a secure and relatively reliable model of TFA.

Saturday, 30 November 2013

Windows 8.1 : A big improvement over Windows 8

After all the negative reviews and tales of doom following the release of Windows 8, I recently got the chance to upgrade my Windows 8 machine to Windows 8.1. For starters, the upgrade was free which was a pleasant surprise and while the upgrade which was carried out through the Windows store took a good hour or so to complete it went without any problems.
Windows 8.1 is all about smoothing the feathers that Windows 8 ruffled. In the drive to be aggressive in the phone and table segment, Windows made some changes to the basic features of the operating system that didn't go down well with the users.The biggest annoyance was the absence of the Start button. Users were expected to get used to the tiled view of invoking and accessing programs. To enter into the classic desktop view, there was a desktop tile that needed to be used.
Windows 8.1 fixes these annoyances by bringing back the Start button albeit not in the way as it appeared before but with a slightly different flavour. The main programs can now be invoked from the Start button by right clicking on it.
Another change that Windows 8.1 brings in is the boot to the desktop option. Users can now choose to start with the classic desktop view that they have been used to rather than the tiled view that comes up by default. This change is again a crowd pleaser and allows users who were comfortable with the old interface to accept this new avtaar of Windows.
Overall, after upgrading to Windows 8.1, I am much more comfortable with the operating system than I was with the basic Windows 8.0 so if you are struggling with Windows 8.0, check out the upgrade to Windows 8.1 in the Windows store before Microsoft removes it from the Free section :-)

Wednesday, 30 October 2013

Presentation at eResearch Australasia 2013

Last week, I was at eResearch Australasia 2013 which is turning out to be the annual star event for eResearch in Australia. The conference had some interesting presentations made by researchers from various research organisations and I met an attendee who had traveled all the way from far flung Pakistan for this conference.  While CSIRO staff had several presentations in the conference, I was involved in a couple for which we received a lot of positive feedback.Overall the conference was very interesting and it was great to showcase our applications and connect with other researchers who are working on solving big data and data management problems.

Saturday, 14 September 2013

MongoDB Aggregation vs Map Reduce

According to the release notes of mongodb 2.4, the Javascript engine has been changed from SpiderMonkey to V8. This is expected to give mongodb's map reduce the ability to run multiple threads and improves performance. The Aggregation Framework is expected to out run Map Reduce hands down since the former runs on compiled C++ code while the latter has to rely on the Javascript interpreter and conversions from JSON to BSON and vice versa to load dataset and store results. 
In any case, it is always an interesting exercise in attempting to answer a problem using the Aggregation Framework and the Map Reduce so towards this end I picked up a sample mongodb dataset named images with 90,017 records with the objective of counting the number of times a particular tag occured in an image record.

> db.images.count();
90017
> db.images.findOne();
{
        "_id" : 1,
        "height" : 480,
        "width" : 640,
        "tags" : [
                "dogs",
                "cats",
                "kittens",
                "vacation",
                "work"
        ]
}

The objective is to count the number of times, a particular tag occurs in the data set.

In the Aggregation Framework, this could be achieved by:

var c = db.images.aggregate(
  [{"$unwind":"$tags"},
  {$group:{_id:{Tag:"$tags"}, "Tag_Count":{$sum:1}}},
  {$sort: {"Tag_Count": -1}},
  {$limit :5}
  ]);
printjson( c ) ;
Results of the Aggregation Query
The Map Reduce solution was as follows:
map = function() {

if (!this.tags) {
       return;
    }
for(var i in this.tags){
   key = { Tag: this.tags[i] };
   value = 1;
   emit(key, value);
  }

}

reduce = function(key, value) {
    return Array.sum(value);
}

result = db.runCommand({"mapreduce" : "images",
"map" : map,
"reduce" : reduce,
"out" : "tag_count"});
printjson( result ) ;

Results of querying the collection produced by Map Reduce