Blog Posts

The Power of Second-Order Thinking in Software Engineering

long exposure photography of body of water

“We don’t live in a linear world; it’s intricate, interconnected, and often unpredictable. Tiny actions can trigger significant changes, as seen in The Butterfly Effect. Second-order thinking involves looking beyond the immediate consequences of our decisions to consider the ripple effects they create. While first-order thinking focuses on the immediate outcomes of an action, second-order thinking delves into the longer-term effects. It’s about anticipating the chain of events your decision may set in motion and understanding how these effects could

Continue Reading

Mastering the Mind: Top 3 Mental Models Every Software Engineer Should Embrace

a man standing in the middle of a desert

As software engineers, we are always occupied with building things, writing tests, making design decisions, or scoping out projects. It is not uncommon to miss out on important things just because we are in the moment or when things get heated. Just as we use tools, paradigms, and techniques to write our software effectively, we need tools, paradigms, and techniques for our minds to think and make decisions effectively. These 3 mental models are abstract concepts, just like the world

Continue Reading

Why onCreate() of RoomDatabase.Callback() is not called?

Photo by Tim Gouw on Unsplash

Room Persistence library is a part of android’s Jetpack components. It provides an abstraction layer over SQLite, which is also known as ORM(Object-relational Mapping). RoomDB has substantially increased developer productivity by removing tons of boilerplate code and need to manage SQLite directly. RoomDatabase.Callback() One of the many features Room provides is the callbacks fun onCreate() and fun onOpen(). These methods come in handy when we want to pre-populate the database. As simple as it might sound, it got tricky for

Continue Reading

Deep clones with Android Parcelable

Deep Clones There are many ways to create deep clones of an object, from Java’s Clone() function to Copy Constructors to custom implementations. All methods come with their own problems and a lot of boilerplate code. With Parcelable and advent of Kotlin, creating simple deep clones can be of no effort in your android project. Why Parcelable? Serialization is a technique to convert objects into a byte stream and Deserialization vice versa. In this process totally new objects are created

Continue Reading

Site Footer

Sliding Sidebar