Tuesday, March 24, 2015

Measuring the Livability

Every year, I come back to Sri Lanka for 5-6 weeks to meet my family during the new year season. Every time when I am back in Sri Lanka, I think what has been changed compared to the previous year?, which aspects have been improved? and do such improvements affect the livability of Sri Lanka?.

When it comes to the livability, I am concerned and believe on three things which are absolutely important. They are,
  • Do people respect other people?
  • Do people respect the law of the country?
  • Do people respect money?
But, how do I measure them? I just observe three simple things when I commute via public transportation.
  • Do motorist stop when pedestrians wait beside crosswalks?
  • Do motorist and pedestrians oblige to traffic lights and signs?
  • Do bus conductors give back the right amount of change back to commuters?
If I get “Yes” for at least one question, I would say "Yes, the livability is improving".




Thursday, December 18, 2014

Tuesday, November 25, 2014

When flight tickets get cheaper in advance - v2

In When flight tickets get cheaper in advance - v1, I wrote a Google App Script with Google Spreadsheets to track when flight tickets get cheaper in advance. In that script I weekly tracked the minimum return-ticket price from Sydney to Colombo for a fixed departure date (07th of April 2014). In this post, I improved the script and automatically calculated minimum return-ticket price from Sydney to Colombo daily for last 8 months without restricting to a fixed departure date. These details say, for a given date, ticket prices get minimum in advance of 80 days in average (given that you have no preferred departure date).
Here you can find the spreadsheet which contains up-to-date data-set and followings are the charts extracted from the data-set.

Tuesday, April 1, 2014

When flight tickets get cheaper in advance - v1

I wrote a small Google App Script with Google Spreadsheets to track when flight tickets get cheaper in advance. I weekly tracked the minimum return-ticket price from Sydney to Colombo for a fixed departure date (07th of April 2014). The answer was, ticket prices get minimum in advance of 5 months in average. Due to the disappearance of Malaysian airliner, MH370, I noticed a sudden fall of Malaysian air-line ticket prices after 8th of March 2014. So I added two charts. 1st one doesn't includes deviations related to MH370. 2nd chart includes the relevant deviations.

Thursday, February 13, 2014

Categorisation of different Process models

There are various process modelling techniques, explained in research literatures. But here are three of the process models that my research is based upon at the moment.
  1. Artifact based (or State based) models
  2. Activity based (or Flow based) models
  3. Rule based models
Artifact based (or State based) models
Two examples for artifact based modelling techniques are state machines and state charts. This modelling technique, take an artifact (eg.,- a Google Doc, Software Bug or AWS virtual machine) and specify the states of that artifact go through (eg.,- For a Software Bug, it can haves states like "created", "assigned", "resolved" and "tested"). 
Advantages of Artifact based models are declarative and specification oriented language can be used to describe a process. This modelling technique enables the user to describe a high level description of the process rather specifying nitty-gritty details on how the artifact go through. 

Activity based (or Flow based) models
Two examples for activity based modelling techniques are BPMN and BPEL. This model is consisted of a set of activities and the activities are associated with other activities to generate a flow (eg - Bank loan approval process can have a set of activities like "Open up a loan request form based on client request", "get the approval from manager" and "send the response of approval back to the client"). This technique provides a procedural language to specify what the execution runtime of the model should do. So each activity represent some task and tasks are linked together, to represent the execution order among such tasks. 

Rule based models
Two examples for rule based modelling techniques are event-condition-action rules and javascript. This technique models a process via a set of rules (eg.,- For a AWS-EC2 VM, there can be a process with a set of ECA rules like "if VM utilisation > 95%, then increase CPU power of that VM"). Typically activity based models and rule based models can be interchanged. That means, a process escribed in a activity based model also can be described using a rule based model as both techniques provide a procedural language to specify what the execution runtime of the model should do. The main difference between the activity based models and rule based models is, rule based models don't describe links among each rules. But the activity based models explicitly describe the links among each activities. So the execution engine of the rule based model has to infer (or generate) the links between rules before executing the process. One advantage of rule based modelling techniques is that it is easy to model a process. But it has consistency issues as some execution semantics (like execution order or rules) are not explicitly specified.

Wednesday, February 12, 2014

Take your sleep, Seriously!

I've been using a fitness+sleep tracker for some time. Initially what I had in mind was, I am not having enough exercises. But later on I realized that I was not having enough sleep compared to the right amount of exercises. For various reasons, we have overlooked the importance of sleep which is explained in the following TED talk. Finally, Take your sleep, Seriously!.

Friday, January 24, 2014

Understanding Docker with an Analogy from Traditional Software Development

Docker, a Linux container that is becoming increasingly popular with developers for deploying apps to a cloud infrastructure. Docker allows application data to sync with the OS running on the cloud infrastructure. That means a developer can work directly from their desktop environment and use Docker to automatically sync updates.

Suppose a traditional software developer which follows the below steps as the development process.
  1. Checkout a remote SVN/Git repository to the local file system 
  2.  Improve the code in the local repository 
  3. Test the code in local repository 
  4. Push the modifications back to the remote repository, so others can update those modifications 
Then pushing those modifications to the production deployment is handled by a separate deployment engineering team. As developers only test their modifications in a local environment rather in the production environment, there can be bugs introduced in the production environment. This is mainly due to configuration differences between the local test environment and the production environment. This sort of bugs cause a lot of friction in the deployment process.

Docker tries to tackle this. Comparing with a source code repository system (SVN/Git) which manages the source code, Docker manage the complete software deployment (i.e. source code, configuration) as a "Container". This ensures every developer test their code in a developer environment exact similar to the production environment.

When it comes to maintaing the configuration of components with in the Container, it follows a JSON representation as follows.