Introduction to Terraform
Dec 15, 2019
Terraform is an open-source infrastructure automation tool by HashiCorp. It has been gaining more ground towards being a defacto choice for creating and managing cloud infrastructures by writing declarative definitions. By enabling “Infrastructure as Code”, Terraform provides repeatability and consistency, which is very useful when setting up complicated infrastructures, such as a cluster of containers with its underlying infrastructure on AWS.
Terraform supports many cloud providers for IaaS (e.g. AWS, GCP, Microsoft Azure, OpenStack, Alibaba Cloud), PaaS (e.
Running GUI applications using Docker in Mac, Linux and Windows
Oct 07, 2018
Docker, being mostly used for applications running in backgroud, can also be used for running GUI applications. Although it is not very common, but still it can be useful for delegating heaving-lifting to docker containers for some applications with GUI.
For GUI applicaitons to run, XServer is needed to be installed on local machine.
Running On MacOS Prerequisites:
Install XQuartz from https://www.xquartz.org Installation of XQuartz will require restart your machine.
Back to Blogging
Oct 06, 2018
Ok, I’m back to effortful and also joyful world of blogging after 5 years. That is the plan, at least.
Yes, it has been 5 years since I blogged last time on my Wordpress blog. It was this post. Many things have changed in the technologies I work with and many new things arosen to shared. I still continue getting hands dirty on development. I had times to coach teams to improve process and gain development skills as well as do development.
Java Developers! You Should Learn Groovy
Nov 05, 2013
A couple of years ago, I started playing with Python, Scala, Ruby and Groovy time to time. The very first thing that really impressed me was their expressiveness.
I really like all of these languages, but here in this post I’d like to emphasize the benefits of Groovy for Java developers since Groovy is the easiest to learn and to make transition to a “Java.next()” language for them.
Groovy is Expressive
A software myth: Behind schedule, add more people
Apr 21, 2011
You may have already experienced several times that when a project is late or seems to be late, the first solution mostly applied is to add more people. But mostly, it makes the project later. It does not solve the problem but ironicaly creates more problems.
Even with adding more people, sometimes, the project can be delivered as working somehow. However, the team later has to deal with some bugs introduced by these people added.
A Collection of Lessons Learned From My Last Decade on Software Development.
Dec 28, 2010
No language fanatism : All languages are like tools in your toolbox. Just use the most suitable one, which is not necessarily the most popular one. Measure progress and make it visible, even when you are doing it yourself. Use board and charts.
Code base is like your house. Always keep clean, otherwise after a while, you can find yourself in a mess. Refactor.
Always be very humble.
Arrogance, humility and software development
Jan 23, 2010
One’s true greatness is inversly proportional to behaving as if one were great, just as one’s true smallness is inversly proportioanl to behaving as if one were small. (Anonymous)
The more I learn, the more I realize I don’t know. (Albert Einstein)
You should have heard about how arrogant developers are terrible in communication with team members and client or you should have met an arrogant developer who never listens anyone else, thinks he knows everything and who is also very rude.
Verify details of argument passed to the mocked object
Jan 22, 2010
Mockito, my favoritte mock library, introduced ArgumentCaptor with 1.8. ArgumentCaptor allows you to capture and store arguments passed the mocked methods. The captured arguments are available with the methods like getValue and getValues. So, the arguments can be easily verified by using standart JUnit assertions.
ArgumentCaptor argument = ArgumentCaptor.forClass(Person.class); verify(mock).doSomething(argument.capture()); assertEquals("John", argument.getValue().getName()) Value Objects
Dec 26, 2009
The value objects are simple but very useful objects. Value object, one of the powerful concept from DDD, is an object that describes a characteristic of a thing.
According Eric Evans,
An object that represents a descriptive aspect of the domain with no conceptual identity is called a value object. Value objects are instantiated to represent elements of the design that we care about only for what they are, not who or which they are.