Skip to content

Technology Decision Log

Reflecting back on the technology decisions the past four years and what I would change if I were to redo it all over again

JVM Performance Tools

Over the past few months i got the opportunity to run an enterprise JVM webapp in production. A Weekly deployment schedule made tackling production performance issues and outages  challenging as CD wasn’t an option. I needed to find ways to debug a production instance without taking it down, or making any code changes.

Java Performance: The Definitive Guide has been tremendously valuable in helping me understand how JVM works. In this post I’d like to list few tools and techniques i learned from the book, as well as few scripts i wrote in the process.

Read More »JVM Performance Tools

Cargo Cult Programming

A style of  computer programming characterized by the ritual inclusion of code or program structures that serve no real purpose. Cargo cult programming is typically symptomatic of a programmer not understanding either a bug they were attempting to solve or the apparent solution. Cargo cult programming can also refer to the practice of applying a design pattern or coding style blindly without understanding the reasons behind that design principle.


Recently I’ve been learning Kubernetes from a course I bought on Udemy. After spending a couple of hours, i realized all what the instructor is doing, is showing me various commands and how to execute them using kubectl. Even though I had already invested couple of hours into this course I still had along trail of questions related to fundamental concepts; What is a Pod? are Services a physical thing, or just an abstraction of rules defined in IPTables….and many more questions.

Read More »Cargo Cult Programming

Know Thy Domain

Whenever I switch jobs or change teams, I find myself spending all of my time learning the new technology stack and all the fancy tooling that are being used in my new workplace.

I’ve been reading more of the Domain Driven Design book by Eric Evans and one particular paragraph stuck with me as it made me reflect on my attitude towards software engineering in general.

Read More »Know Thy Domain

The Struggle With Maintainability

Looking over the past 3-4 years I realize the way I build software hasn’t evolved as much as I would hope. I hate to admit this, but I find myself repeating the same mistakes and stumbling  over the same challenges in my projects over and over again. While I have adopted (specially over the past year) cloud computing and different techniques to ensure service availability and better fault tolerance, application code maintenance hasn’t improved by much.

Read More »The Struggle With Maintainability

Introducing Json Transqlify

Earlier this year I participated in a hackathon in the company where I work. The idea was to transfer data from a Mongodb to a MySQL db to fulfill some business requirements. I needed to apply some transformations on the JSONs and validation. Each record was to be decomposed and normalized into multiple tables.  I needed to Update or Insert a record depending on some conditions.

It became apparent to me that alot of the code I wrote could be abstracted into a library that handles most of the common logic flow. The idea kept brewing in the back of my mind until I recently realized it into a npm module I call Json-Transqlify (Json Transform Sqlify)

In this blog I hope to demonstrate some of the functionality I’ve already baked into Json-Transqlify and some of the other ideas I’m working on.

Read More »Introducing Json Transqlify

Monitor Java Threads Context Switching

Out of curiosity, I wanted the other day at work to get more clarity on the Threads we have in a Spring Webapp. To be more precise I wanted to see how many threads are there, what’s going on in each thread, get insight on threads context switching. This blog summarizes the tools I used on Ubuntu and how to make sense out of the data I found.

Read More »Monitor Java Threads Context Switching

The Quest For a Hybrid Mobile App

Every now and then I do a mobile application, and it’s always desirable to have an app running on both Android and IOS. Large teams and companies can afford to have separate teams for each platform( although managing two growing code-bases is still a hassle), however for smaller teams and business it would cost too much to develop to separate apps for each platform.

Read More »The Quest For a Hybrid Mobile App