It's clear that software engineering is changing. Gone are the days of code output being the core bottleneck for most projects. In any medium to large company, the plan-code-test cycle is the most efficient way to write software going forward. If you're still in denial, you're falling behind. However, that is not what defines a software engineer or engineering in general. The following is the…
Sometime around the end of 2025, I took stock of my reading habits. Over the years, I had started spending more time on social media (bad) and less time on curated feeds (bad, again). Where I usually would end my days reading or consuming feeds or saved articles, I now found myself endlessly doomscrolling. Considering one of my core goals of 2026 to restore balance back into my personal life, I…
📨 Mail Client: Gmail (web and iOS) with ImprovMX for domain routing 📮 Mail Server: Gmail 📝 Notes: Obsidian ✅ To-Do: TickTick 📷 Phone Photo Shooting: Default iOS Camera App 🟦 Photo Management: Lightroom or Google Photos 📆 Calendar: Fantastical with Google Calendar backend 📁 Cloud File Storage: Google Drive 📖 RSS: Feedbin (web + iOS) 🙍🏻♂️ Contacts: Cardhop (only because it comes bundled…
I use Lightroom for all my edits. I also use Google Photos for all my photo sharing and backups. Until a few months ago, I was using Lightroom Classic. My workflow then involved editing on my desktop, exporting the JPEGs manually, and pushing them to Google Photos. This was not arduous really, but it required me to keep my computer on for larger edits for the sync to fully go through. However,…
I currently have 4 different tiers of computing devices, listed in no particular preference order: An iPhone 16 Pro An iPad Pro 11" An iPad Mini A Macbook Pro 14" M4 Pro On the outset, it seems like too many devices. And in all fairness, it probably is. But I get enough use out of all of them that I find them worth it. Here's how I think about each one. iPhone # This is my main device and is…
Let's get a few things straight first. I dislike AI. There are many rational reasons I can put forward on why, such as its a stochastic word box with an ability to override our judgment with its confident tone. It's a poker machine of banal ideas mixed in from a corpus of open source books and the internet, skimming the words but not understanding the reason. It has an eccentric bubble of…
It’s been a while since I have posted here, so today I wanted to share a bit about one of my favourite past time: productivity apps. Over the years, I have tried in some way or the almost all the popular (and sometimes not so popular apps). Through those years, I have gained an insight into, not only into the kind of apps that work with my particular bend of grey matter, but also the ones that are…
The core problem with VC funding model is that they want you to pay for the failures of their 10 other ventures. I have been thinking about this for a while and am writing down my thoughts from my lens. Most VC-funded or run businesses are not primarily running to make the consumer's lives better in a sustainable way. It does happen, but it is a side effect rather than the core goal. Regular…
I have been thinking about a sapling of an idea for a while now. It all started when I was helping my team at work with several important projects over the past few months. The basic idea I’ve been playing with is that in software engineering, there is a tension between things that are important in the short term and things that are important in the long term. Switching between these two levels of…
In today’s fast-paced world, we often find ourselves juggling multiple tasks and responsibilities, leaving us feeling overwhelmed and exhausted. Just like electrical circuits have circuit breakers to prevent overloading, we too need a similar mechanism to prevent ourselves from being overwhelmed. Circuit breakers can be small or large, depending on the degree of overwhelmingness we are…
Context # Sometimes git gets confused and uppercases the branch names. This happened to me today while I was working on a bug and on git checkout issue/* prefix kept getting renamed to ISSUE/* and this usually breaks the auto build mechanism at work for me, since we have it configured to look for a particular regex. This is not a particularly complex or even a unique problem, but I encounter it so…
I recently jumped on the bandwagon (again) for Arc , as I'm really not feeling Chrome's changes to shovel more ads down users throats. One of the little pieces of set and forget software that I really like is NextDNS . I have been using them for coming up to 3 years now. The way I use it on my Mac is via profiles, which means it should be available to any app that uses system dns. Chrome doesn't…
One of the main things I have been chewing on over the last few weeks is the quality of technical decisions made by different people working on a shared codebase. The thoughts then led me to think about the contributor vs maintainer mentality. Although the terminology has been used extensively in the context of open source software (OSS) [1] - the writing here is more focused in terms of…
I have been thinking a lot about code reviews lately and the impact it can have on delivery for teams. Whilst not a topic that has never been touched before, I found the existing material either was too verbose or too much geared towards how to raise a PR rather than how to review them. In light of that, I have compiled a small set of principles to guide them for myself and I am sharing them here.…
Update 2023 I have settled back on Bear as I kept coming back to it and the new Bear 2.0 looks amazing 🤩 I have always been a bit of a bike shedder regarding productivity apps, and note-taking apps are probably the most bike-shedded. Personally and professionally, notes have been integral to my learning journey since I was in University when I started to use them thoughtfully. In this post, I…
Ever since the pandemic threw the world in chaos, I have been consciously thinking about my work and life and how interconnected they have become, partly due to WFH, partly because I am growing old. Pre pandemic, I never really cared much about daily routines, other than basic things, like I need my coffee by 9 am to function, or, I need to go gym atleast twice a week to not feel shit through the…
Too often I see people building software and doing changes in an existing piece of code as if they're texting one...excruciating...line...at...a...time. As if it's important to get one disjointed piece of functionality out and making up what's next on the go. This is bad. Software like any other piece of well thought out functionality should be deliberate . Don't rush into adding a change because…
This is a small blog post on equality checks in Kotlin when one of the objects may contain arbitrary data. Let's say you have an object that looks like: data class ArbitraryData(val id: UUID, val someData: Map<String, Any>) where someData is any json map of data that could contain any untyped data at runtime. Now, if you have two instances of this object with the same data and try to compare the…
This is just a collection of things that required some google searches to resolve while working with DynamoDB at work recently. All the code examples here use Kotlin, though, I'm confident that they would still appear in Java. Persisting a DynamoDb Object that extends a class # DynamoDB doesn't automatically work with Abstract classes. For example, let's say you have an abstract class which…
Background # In this post, I’ll walk through two new exciting things that have happened in the spring ecosystem recently. First is spring webflux support for kotlin couroutines and second is the overhaul of spring security, and the addition of the out of the box oauth2 client support for social logins . For me one of the most impactful new features is the integration with spring coroutines throw…
If you’ve been spring boot for a while, you’re probably familiar with Spring’s bootJar functionality that lets you create a new executable “fat jar” with all its dependencies pre defined. However, while I was building a kotlin app using http4k, which doesn’t come with any such built in tooling I had to resort to using the shadowJar plugin to build a fat jar. However post deploy, the app stopped…
Background # Recently I found myself with some extra development time on hand. Now usually, most of my projects start off as big grand ideas and as soon as I start working on them, I lose steam or life comes in the way and things just sit their eating dust as a private github repo. However, I stumbled upon Kweb which is a server side rendered web app building library, but written entirely in…
Background # For the past year or so, I have been working extensively with spring, especially spring webflux; building scalable reactive micro services for our customers. Coming from spring MVC, learning webflux and getting used to reactive programming in general has been a great and worthy learning experience and I highly suggest going through the references section if you haven’t heard of…
Recently on my usual #githunt prowl I came across a new promising http library called http4k . The library is based on the philosophy of Application as Function based on the twitter paper Your Server as a Function and promises a lightweight a server toolkit alongwith a very modular approach to adding functionality on top of the core set of capabilities built in. But the best part of all, http4k is…
Background # Recently I faced an interesting problem at work. A production app written in Kotlin with Spring Webflux as the webframework had suddenly started taking more than 189 seconds on average to start (more than 3 minutes 😱). Now as much as I love spring for the easy to use and battle tested APIs, everyone knows its not the nimblest of frameworks around, but having a boot time of 3 minutes…