InLevel Up CodingbySuraj Shah·Feb 23Mind the gap!The growing rift between traditional and AI-product engineering teams and the conundrum of where to continue investing
InLevel Up CodingbySuraj Shah·Jul 25, 2025Survivorship Bias and AICompanies and individuals are increasingly getting biased by the “survivorship”-ness of AI tools and the impact they entail.
InLevel Up CodingbySuraj Shah·Oct 19, 2023We were wasting 75% of our EC2 Memory resource!How a simple configuration check for JVM applications on Docker can help you save on your memory resource. How a downtime led us to fix it.
Suraj Shah·Sep 2, 2022Understanding mocks and spiesBelonging to the umbrella term Test Doubles, mocks and spies have come a long way. This article tries to demystify their usage patterns.
Suraj Shah·May 19, 2022[Technical] Publishing AARs to maven-centralA technical step-by-step guide to publish AARs to maven central, which unfortunately and annoyingly is a super manual process.
Suraj Shah·Apr 10, 2022The Evolutionary System design in action — Part 1A story-telling, real-world narrative on the evolution of a complex system from the lens of a software engineer.A response icon1A response icon1
InProAndroidDevbySuraj Shah·Apr 12, 2020Collections vs Sequences: War of use-cases!A definite use-case driven guide to Collections vs Sequences in Kotlin.A response icon2A response icon2
InProAndroidDevbySuraj Shah·Mar 23, 2020Dissecting the inline keyword in Kotlin: Chapter 2How Kotlin manages reification? What is the type erasure problem? How to control the inlining behavior? Unsigned data structures in Kotlin?
InProAndroidDevbySuraj Shah·Feb 22, 2020Dissecting the inline keyword in Kotlin: Chapter 1Lambdas were introduced in Java 8, but what about applications running before them? How does Kotlin manage the same for Java 6…