GitHub Deployments on DigitalOcean

GitHub Deployment On DigitalOcean


Simply put – to deploy my GitHub projects on my DigitalOcean droplet automatically and asynchronously.

I’ve got multiple personal projects on GitHub and I’ve got the corresponding demo micro-sites on While it’s extremely easy to maintain the code repos on GitHub, I have had difficulties maintaing the micro-sites outside of a repo and independent of the code updates. Every time I check-in a new piece of code, I need to manually transfer & deploy the built code to the micro-site. It’s easy with my, currently, limited number of projects but I don’t see it scaling well in the future.

I want my demo micro-sites to be always up to date and I cannot afford to manually transfer and deploy the built files for every small check-in I make.

So, the agenda is to ensure that every check-in gets deployed to my droplet automatically without any manual intervention.

Read More »

ReactJS – Recursive Class Components

Recursive Drawing


I recently wrote a library to filter JavaScript Objects – JSOF (
In addition, I built a data set and condition set builder using ReactJS – JSOF Builder (

The input data set is a straight forward array of objects. It supports boolean, string and number value types and can be represented as –

[ { "attribute1": "value1", "attribute2": "value2"},
{"attribute3": "value3"}, {"attribute4": "value4"}]

Read More »

JavaScript Object Filter – Nested Filter

JSOF - Nested Filter

Finally – it’s ready.

While handling AND/OR operations was relatively easy, it took a different level of thinking to finally implemented nested conditions.

For example, it’s easy to implement the following:

A || B
A || B || C
A & B & C

However, to implement nested conditions, one needs to think about the condition structure, the algorithm and finally the actual implementation.

A || (B & C)
(A & B) || (C & D)
(A & B) & (C || D)

Read More »

JavaScript Object Filter – Filter Logic



As discussed earlier in the design blog, I have broken down this module/application into multiple phases. As and how and when I progress, I’ll keep on updating this blog.

Update: Date: Oct-29-2015 – Conclusion


The initial development for operator evaluation, AND operation and OR operation is complete.

The logic for the operations is as follows:

  1. If the operator is AND, final result = data set; else if the operation is OR, final result = []
  2. Traverse through each condition
    • If the operation is AND
      • For each condition, let the final result = final result +operator filter
      • We filter the data set and set that to the final result – basically reducing the data set to only the elements that match the operator
      • The next pass will operate on the final result and will further reduce it
      • At the end, we’ll be left with the final result with elements that match all operators
    • If the operation is OR
      • For each condition, let the final result = data set + operator filter
      • Every pass will return all the entires of the data set that match the filter
      • This results in duplicates – first and second pass might return the same element as we filter the data set every time
      • To eliminate duplicates, we create a hash of all the attribute (sorted) values and store the same in an object
      • If object contains the hash, the element has passed a previous operator; hence, we ignore it
      • If the object does not contain the hash, it’s a new and we add it to the final array

Read More »

JavaScript Object Filter – Problem Statement

Object Filter

Problem Statement: As a user I want the ability to filter objects based on predefined attributes, conditions and values.

Description: As a user I want the ability to filter an array of objects with predefined attributes on attributes, conditions and values. I want the ability to provide the attributes to be filtered, the condition to be used and the value that needs to be satisfied.

Read More »

What, Why & How?

Welcome To The Future

I come from the days when Ant reigned over build and deploy. I’ve used Ant on personal projects as well as enterprise solutions.
Then came Maven – a more thought out solution – and the world migrated to Maven for build, packaging and deployment.

Now, with nodeJS, we’ve got Grunt, Gulp, WebPack, etc as task runners and packagers.

While it took a few years from Ant to Maven to nodeJS, I do think that we’ll move faster hence forth; simply because with JavaScript running on the server, the development and configuration of tools and plugins are no more confined to the likes of WebAdmins. There are enough people who can not only develop in JavaScript but actually understand it and know how it works under the hood.

Read More » reborn


Every web site, like technology professionals, becomes obsolete a few times in the course of it’s life. The reasons for this are numerous – from the technical stack to the original purpose. If I were to create a checklist, would probably have every item in the list checked.

The original purpose  of my website, back in 2010, was to showcase my photography. I wanted an online presence to not only show and share my photographs but also to receive feedback and comments. In addition, the project was also supposed to help me further my technical skills – I thought my front end development skills would enable me to develop a theme that was unique to me.

Read More »