On this story I will explain

  1. Why I decided to create a project generator application
  2. The options I scrolled through
  3. How Kotlin helped me
  4. How I deployed my application to Google Cloud Platform
  5. How I took advantage of server-less

The Problem

I’ve been working (maybe for too long!) on my pet project which includes DSLs using Jetbrains MPS, and I will definitely get into much more details of this tool and how you can take advantage of its infinite possibilities in the future!

But today, I want to talk about one of the recent obstacles I faced which was the lack of…


While I was migrating my pet project from REST-based communication between micro-services to async message-based architecture, I came across an interesting problem. While I believe there are simple solutions for this, I was also thinking of a more generic way of handling these scenarios and would love to hear your thoughts on this.

Let’s start with a our simple case. We have two different micro-services “Order” micro-service which will focus on Orders and “User Profile” micro-service which is the expert on Users and their information. Now, let’s say along the way, Order needs to get the User information for the…


I’ve been reading about Spring Integration for some time now, and I have started shifting my pet project from web towards Messaging. I remember the days when the company share-holders would kill me if I were to do such changes, but nowadays, if you try just a bit harder, a change like this could be rather small.

The number one rule you should always remember is, “your code should not depend on the transfer technology”. But what does that mean? This means anything related to the “transfer technologies” preferably should be (order is important!):

  • Config
  • Metadata (e.x. Annotations)
  • O(1) classes…

We’ve all been there! The argument over “the right thing to do”. This usually happens because of a conflict between business interests (for example meeting the deadline) and technical interests (for example keeping the code maintainable).

As a team, we faced this problem very recently, and we were forced to make the uncomfortable decision of taking the shortcut to meet the deadlines. But we made up for that by also creating a separate ticket to apply “the right solution”. This may seem very unnecessary, but I think this at least resolved our conflict. …


I’ve seen a lot of developers claiming one of the “Cool features” of Spring is that it simplifies your unit tests by introducing @SpringBootTest. Now that’s just not true and I think it was not the intention of Spring also! Now let’s first get into what is a “Unit Test” and what is “Not a Unit Test”. I don’t want to be a Word Nazi here, but I have seen this leading to usage of @SpringBootTest on every Unit Test and no one wants that!

To explain the problem, let’s take a step back and see how we [should] test…


I have been studying DDD for a few month now, and just recently saw an opportunity to apply DDD to the new project we have started working on. I have learned a lot during my work on the project. Just recently, I found a some-what easy solution for our multi-client product we used to have. As any other software product, ours also has a number of features and modules. A client may buy a subset of these or maybe all of them. But how should we deliver this? A very simple approach could be, we would deliver a full functionality…


Working on my pet project, LoCoRepo, there’s a challenge I faced which I think is interesting to share. My application imports data based on user’s git repository. So there are a bunch of files on one’s git repository which will be parsed by the application and then the parsed data will be persisted in db. That’s the main functionality of the application, but some of these repositories are considered “Initial Data” and this “importing” need to happen before “anything else”.

First thought

Usually we handle these scenarios with database migration tools such as Liquibase or Flyway but this is more advanced than…


On my way of starting my own service, the next challenge I came across was to implement CI/CD for my project after I finished a first rough implementation of DDD.

My first decision was to use Jenkins pipelines because then I will have my build as part of my code also. Jenkins has a special job called “Multibranch Pipeline” which expects you to have a Jenkins file on your source code. If you have that, Jenkins will only ask for the project source code git URL, and then it will create on Job for each one of your branches and…

Amir Mohammad Vosough

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store