Yes that’s right, I got my first ever big life changing promotion. My new title goes as Chief Diaper Changing Officer and Proud daddy. I know it is quite a mouthful but i am super excited to get into my new role.

You read, watch youtube videos and get unsolicited advice from your friends and family, but I believe nothing will prepare you for parenthood. You just have to go through those phases with your newborn and learn on the job. After all, every baby is different and your circumstances are different. So you adapt and learn on the job.


Problem statement

Save cost on our on-demand EC2 instances by shutting them down based on a schedule defined within a tag.

Solution description

The solution can be found on my Github repo.

We came up with the following tag format to help us shutdown our EC2 instances. As each EC2 instance runs specific applications with varying workloads and access patterns, we wanted to define a set of tags to cover all of them. This is what we came up with.

Schedule

24x5_Mon-Fri

Shutdown at 12am on Saturday and start back up at 12am on Monday.

08–24_Mon-Fri

Shutdown at 12am on Saturday and start up at 8am on…


Stepping into the realm of Chaos engineering

We were inspired by the Chaos engineering activities that were done by Netflix and wanted to test out of platform here at track.health to see how resilient we were on random failures.

As a famous quote from the book Release It! Design and Deploy Production-ready Software by Michael T. Nygard;

Enterprise software must be cynical. Cynical software expects bad things to happen and is never surprised when they do. Cynical software doesn’t even trust itself, so it puts up internal barriers to protect itself from failures. It refuses to get too intimate with other systems, because it could get hurt.

Defining the steady state


People say parents are the closest we get to seeing God while we are alive. For me though, that has been my sister.

We are just four years apart yet she was more than a sister all the time watching over me.

When my father had to retire early due to a neurological illness, it was my sister that took on the responsibility of the family. No one asked her to do it yet she did.

She was the smart one in the family and yet she gave up on her dreams for me and the family. I did not…


Introduction

I work as a principal software engineer here at track.health and this is my take on the amazing platform we have built and continue to improve upon as a team.

We help patients, hospitals, clinical research firms across the globe with our innovative way of planning and executing your e-consenting journey in a seamless manner.

This post will focus on how we do that at a very high level and we will dive into specifics on subsequent posts.


Kubeval

By now you probably know I love anything Kubernetes and so does our company Track.health. As part of our continuous improvements to our overall CI/CD process, we strive to make it more streamlined and self-correcting.

One missing piece to the puzzle was the ability to validate Kubernetes files. YAML is tricky(at least it is to me), especially when you want to do any sort of updates to it. Add on the Kubernetes schema, it gets even more tricky with a plethora of valid elements and configuration options. …


On this post, I am going to focus on how we achieved zero downtime with our deployments on Kubernetes utilising rolling updates.

At Track.Health, we run our platform on AWS EKS and all our components are run as Kubernetes deployments. When we started out, the deployment process was as follows;

  1. Tag the deployment and push to AWS ECR(We were always using the tag name latest-<environement_name>
  2. Delete the existing deployment on Kubernetes (kubectl delete deployment <deployment name>
  3. Create the new deployment (kubectl apply -f <deployment yaml> )

Yea I know what you are thinking, why would you ever tag all your…


Problem statement

Yesterday, I had the need of querying a map data structure we store on Mongo without having to do the filtering in-memory post load. A sample data-structure looked as follows;

{
"_id": ObjectId("5f0c07a36aea9125527d80f1"),
"firstName":"Bruce",
"lastName":"Wayne",
"fileInfoMap":{
"5a09fa70-1aa1-4c71-b938-64dde74eba79":{
"id":"5a09fa70-1aa1-4c71-b938-64dde74eba79",
"fileName":"test",
"fileType":"image/jpeg"
}
}
}

What I wanted was the ability to go through the fileInfoMap and get all the records that have the fileType set to a type I pass in.

Stackoverflow and beyond

As many of us developers do, I resorted to Googling for a solution for this problem. Alas, I was not having much success. But it did take me into Mongo’s…


At Track.Health we run our platform on an AWS EKS cluster. Up until now, we were using AWS credential files within our micro-services to access other AWS services(S3 for example).

Knowing it is a bad practice to keep credentials with the source code, I explored a few alternatives. Vaults were a good option to rotate keys and inject credentials as part of the build process.

However, today, I stumbled upon an eksctl command that lets you create a service account with a linked IAM role. …


Remember this guy? If not, well then you have not had the privilege of watching the Heroes tv series which aired a few years back. It did go downhill after the first couple of seasons though.

Sylar was a character who used to murder people with powers and take their powers. He cuts their head open and figures out how their power works and mimics it. Yes gruesome indeed, but that’s not the point of this post.

With everyone in lockdown these days, I started watching Heroes again(only the good parts) on Amazon Prime. It got me thinking. …

Dinuka Arseculeratne

A coding geek, gamer, guitarist and a disciple of Christ Jesus. That would be me in a nutshell!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store