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.

Wednesday, January 22, 2014

WS-BPEL 2.0 Beginner’s Guide

Professor Matjaz B. Juric and I authored the book, titled "WS-BPEL 2.0 Beginner’s Guide". This book will be available in the near future and you can pre-order via PACKT Publishing site. We started working on this since 2012 and I would like to thank all who are behind the success of this book.


What you will learn from this book
  •     Design and develop WS-BPEL 2.0 executable business processes
  •     Get familiar with BPEL 2.0 activities and the most important usage scenarios
  •     Develop a BPEL process to invoke other services and orchestrate them
  •     Learn how to declare variables and store, assign, copy, and manipulate data within variables
  •     Understand conditions and learn how to use the activities and loops
  •     Invoke external web services using asynchronous communication channels
  •     Recognize fault-handling capabilities to manage faults and to avoid unexpected states
  •     Organize a BPEL process into hierarchical orders using Scopes
  •     Define repetitive tasks in sequential or in parallel using dynamic parallel invocation activities

In Detail
Business Process Execution Language (BPEL, also known as WS-BPEL) has become the de facto standard for orchestrating services in SOA composite applications. It enables automation of business processes, reduces the gap between business requirements and applications, and allows better alignment between business processes and underlying IT architecture. BPEL is an open specification and one of the most important pieces of SOA. Therefore, learning BPEL is essential for successful adoption of SOA and for the development of composite applications.

This book provides a fast-paced practical introduction to WS-BPEL, one of the centerpieces of SOA. It covers the most important features of BPEL 2.0 and provides several real-world examples to underline its concepts. In addition to BPEL specifications, the book provides comprehensive coverage of BPEL support in JDeveloper and Oracle SOA Suite.

This book starts with an introduction to BPEL. It first teaches you how to develop your first BPEL process and understand the basic structure of BPEL processes. It will then move on to explain the core concepts such as invoking services, synchronous and asynchronous processes, partner links, the role of WSDL, variables, flows, and more.

Moving ahead, this book will make you familiar with concepts such as human tasks, fault handling, transaction management and compensation handling, scopes, events and event handlers, concurrent activities and links.

The book takes a fast-paced practical approach to WS-BPEL design and development based on practical examples and clear descriptions of the most important usage scenarios. This book is all you need to get up and running with WS-BPEL development.

Approach
A systematic guide for beginners which focuses on getting you up and running with building BPEL processes and learning the BPEL language with clear instructions and examples.

Who this book is for
If you are a software architect, a designer, a software developer, an SOA and BPM architect, a project manager, or a business process analyst who is responsible for the design and development of business processes, composite applications, and BPM/SOA solutions, then this book is for you. You should have a clear grasp of general SOA concepts including business processes and web services, but no prior knowledge of the BPEL language is required.

Tuesday, December 17, 2013

Time-lapse photography tryouts

I am working on few time-lapses these days. All shots were taken in Randwick, Sydney.