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
Reflecting back on the technology decisions the past four years and what I would change if I were to redo it all over again
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.
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 DomainLooking 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 MaintainabilityEarlier 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 TransqlifyOver the past year I’ve embraced writing unit tests. My attitude towards unit tests has evolved through three stages (so far). The Good the Bad and the Ugly. In this post I… Read More »Unit Tests: the Good the Bad and the Ugly
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 SwitchingEvery 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 AppSo I worked on this website at work, where users need to enter a card key they purchased in order to login. In the admin dashboard I needed to add a page where the admin can view each card in the system, and every user that had used each card.
The way I initially implemented this usecase is by paginating the Cards and eager loading the users associated with each card. It was easy, simple and I managed to get all the data I need in one trip to the Database. It worked fine on my local machine. I can’t imagine a card being used by more than 20,50,100 users, so eager loading the users seemed to make sense…….
Read More »The Interesting Case Of Laravel Silent CrashSo I get back from work looking forward to playing something relaxing. Why not some card games? So I log into Jawaker (a famous website the provides plenty of card games that you can play with your friends or random people). I pick a card game called Trix ( I won’t go into the details of the game as that’s out of the scope of this post, but just keep in mind it’s tremendously helpful if you can count cards).
Read More »Jawaker Cards Counter