Sign in

Writes about technology, products and productivity

Whether we start a new project for private or for open source, we can follow some best practices to organize the repository for better team contribution and more elegant project structure.


API Management, API Gateway and Design Patterns

It’s fair to to mix the terms API management and API gateway, But we will try to make some distinction.

API Management

API management is the answer for the following use case: We want to expose our system via API to the outside world or the customers. Here we need to think about the following questions:

  • How to track the use of the API (monitoring and analytics)?
  • How many calls are allowed per user per endpoint (limit rating and governance)?

So API management is more a concept that a service! The piece…


Key Takeaways

  • It’s important to educate the business stakeholders about the source code the software developers write!
  • High level knowledge of the source code blocks help business analysts, project managers and product owners to estimate the requirements / features better, plan more realistic deadlines and mitigate risks.
  • Business logic is the core source code that is solving the business problem (Business Logic Code)
  • The software developer needs to write extra code to handle the lifecycle of the software (Lifecycle Code).
  • The software developer should write code to connect to other services or systems (Networking Code).
  • The software developer needs to write code…


A farmer who owns and breeds animals in his farm doesn’t treat them all the same way! There are Pets that live with the family. The dogs and cats have their names, They are unique, lovingly hard raised and cared for. If they get sick, He will bring them to the veterinarian.

On the other hand, cattle in the pasture are almost identical to other cattle. They are given numbers. When they get ill or the business grows, he will get some more.

The same analogy applied to IT infrastructure. The “Pets vs Cattle” concept was first introduced by Bill…


What is sidecar pattern?

Similar to a sidecar attached to a motorcycle, A sidecar component provides the main service or application with supportive features. It is not part of the code and never share the application’s process or container. However, It share the same lifecycle of its parent (the main app or service).

Logging, monitoring, encrypting and configuration are common features which we need to implement into any service in a distributed system (microservices, cloud native…). It is the best use case of the sidecar!

We may ask: Why not to integrate these functionalities into my code? Well, You can but think about loose…


You may heard the terms “Upstream” & “Downstream” in the context of software development. Most likely you encountered such a word in an open source project or a book about distributed systems.

These terms are coming originally from manufacturing / production theory. Let’s look at a simple electric car production example. We should first collect all the parts, then assemble them all together and finally ship it to the happy customer :)

The process flows from the start to the ends adding more values to the final product. It is also clear that each step depends on the previous step…


Facts & Definitions

  • Docker: with capital D is the company that developed docker.
  • docker: with small d is the tool (container runtime) to build & run containers
  • container: is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. It runs directly on container runtime.
  • container image: is the abstraction of a container. Considering OOP, container image is the Class and container is an Object of that class
  • docker container: is a container. However, not all containers are docker containers :) There are other container runtimes.
  • Kubernetes


If you are lucky enough to have a development Kubernetes cluster setup for your team, you may not be interested in this post. However, It’s possible to simulate the production cluster locally on your Laptop!

I will present 4 tools to run K8s cluster(s) locally. Keep in mind that the cloud and DevOps world is changing rapidly and new tools and platforms are popping up everyday!

Docker Desktop

Docker Desktop is an easy-to-install application for your Mac or Windows environment that enables you to build and run containerized applications. …


Traditional Web Application

A traditional web application is a server application that handles a client request, processes it on the server, generates and renders the HTML response and passes it to the client’s browser. It mostly centers around static text and filling out forms, and most interactions require a full page refresh (Ajax is an exception). Browsers send data to the server via HTML forms, and the server handles the processing.

What is Single Page Application (SPA)?

In a traditional web application, the UI is built and rendered on the server side and sent to the browser. However, a Single page app is a web-based app where UI is…


Table of Contents

  1. LaunchSettings.json

2. Development & Testing Environment (2.1 Kestrel , 2.2 IIS Express 2.3 HTTP.Sys)

3. Production (3.1 IIS In-Process Hosting, 3.2 IIS Out-Of-Process with Kestrel Hosting)

4. Other Hosting Scenarios (4.1 Windows Service , 4.2 Linux Hosting, 4.3 Cloud / Azure Hosting, 4.4 Docker Hosting)

1. LaunchSettings.json

Every time we create a new ASP.NET Core (3.1 or .NET5) application form Visual Studio, we will find a LaunchSettings.json file under the Properties folder. The default content of the file looks similar to this:

ASP.NET Core Launchsettings.json

These settings are going to be used when we run the .NET core application either from Visual…

Soulaiman Ghanem

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