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!


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.


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.

  • Config
  • Metadata (e.x. Annotations)
  • O(1) classes containing all “implementation details” of an infrastructure (I mean, the bigger your domain becomes, the number of these classes should remain the…

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).


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!


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 “binary” and then use configuration files to only enable a subset of those features. Yep that works, but is there a better way? A solution where I won’t give Full Functionality binary and only the subset which is used by the client. …


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 those because there is business involved which is the processing of the git repository. Besides, my database is a NoSQL database and actually recently I’ve been thinking about breaking my data to two types of data, graph-based data and none-graph data. …


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.

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