Understanding Software ComplexitySoftware development is a complex process that involves addressing complex problems. The complexity arises not only from the problem itself…Oct 15, 2023Oct 15, 2023
Java Module SystemJava Platform Module System (JPMS) is Java’s new modularity to provide a higher-level aggregation above packages. It has been introduced as…Dec 18, 2021Dec 18, 2021
Evolution of Java ConcurrencyJava’s concurrency support has changed significantly over the last 20 years to mostly reflect the changes in hardware, software systems…Dec 14, 2021Dec 14, 2021
A Collection of Lessons Learned From My Second Decade on Software DevelopmentIt has been a decade since my first post on the lessons learned. There have been significant changes in the way we work, and tools and…Dec 28, 2020Dec 28, 2020
Introduction to TerraformTerraform is an open-source infrastructure automation tool by HashiCorp. It has been gaining more ground towards being a defacto choice…Dec 15, 2019Dec 15, 2019
Running GUI applications using Docker in Mac, Linux and WindowsDocker, being mostly used for applications running in the background, can also be used for running GUI applications. Although it is not…Oct 7, 2018Oct 7, 2018
Java Developers! You Should Learn GroovyA couple of years ago, I started playing with Python, Scala, Ruby and Groovy time to time. The very first thing that really impressed me…Nov 5, 2013Nov 5, 2013
A software myth: Behind schedule, add more peopleYou may have already experienced several times that when a project is late or seems to be late, the first solution mostly applied is to…Apr 21, 2011Apr 21, 2011
Arrogance, humility and software developmentOne’s true greatness is inversely proportional to behaving as if one were great, just as one’s true smallness is inversely proportional to…Jan 23, 2010Jan 23, 2010
Verify details of an argument passed to the mocked objectMockito, my favourite mock library, introduced ArgumentCaptor with 1.8. ArgumentCaptor allows you to capture and store arguments passed…Jan 22, 2010Jan 22, 2010