Apr 20, 2018

Semantic Versioning Dotnet

Versioning application allows us to know which features are currently available in the environment where we deployed but when our application is composed by multiple webservers, it becomes tedious to maintain the versioning. On top of that with the dotnet core movement, management of versioning has changed. Today I will show a way to automate the versioning using Gitversion and how it can be used for dotnet core and dotnet framework.

DotNetCore CSharp

Apr 11, 2018

Microsoft Orleans Migration From 1 To 2

Prior 2.0.0 stable, we used to configure client and silo using ClientConfiguration and ClusterConfiguration. I was hard to understand how to configure those as many options were available. Moving forward to 2.0.0 stable, ClientConfiguration and ClusterConfiguration no longer exist! It has now been replaced by a ClientBuilder and a SiloBuilder (notice there is no cluster builder). The shift toward builders makes life easier to us to configure client and silo. Today I want to take the time to explain how the migration between beta 3 and stable can be done.

DotNetCore CSharp Microsoft Orleans

Apr 01, 2018

Hashicorp Vault

During development it is common to save local connection string in the code via setting files. But when it comes the time to deploy, hosted environments should not have their secrets persisted as plain text in the code. Since those can’t be saved in the git repository, they have to be stored in a secure place where they can be managed easily, a vault. Hashicorp Vault is one of this software which allows us to store and retrieve secrets while providing a granular level of control over the secret accesses. Today we will see the basic configuration of Hashicorp Vault to store and retrieve secrets using the Vault CLI.

HashiCorp

Mar 24, 2018

Lets Encrypt With Iis

Few weeks ago we saw how we could generate a SSL cert for free using a browser based ACME implementation. While doing that, we had some manual process for the verification to happen, either by changing the DNS settings or making a key available on an endpoint and at the end we were handling the key to upload it to our server. Today we will see how we can achieve that with an automated verification process and without manual handling of the secrets using IIS and win-acme.

Let's Encrypt

Mar 17, 2018

Estimate Aws Infrastructure Cost

Few weeks ago I was tasked to estimate a cloud architecture with limited requirements. Today we will see the rules which can be followed in order to come up with a price tag.

AWS

Mar 09, 2018

Remote Powershell With Winrm

The Remote Desktop Protocol is great to access remotely a Windows Server machine. It is great for actions requiring visual but for actions which can be taken from a PowerShell prompt within the server, it would be best to directly access to a remote PowerShell session from our local computer. Today we will see how we use the Windows Remote Management included in Windows Server to gain access to a remote PowerShell session and therefore manage our server from our local computer through PowerShell.

Azure

Mar 02, 2018

Ubuntu On Windows With Subsystem Linux

Dotnet and ASP NET Core are rapidly moving toward cross platform development. As of today, we are already able to write dotnet application running on Windows, Linux or docker. But when our development environment differs from our production environment, for example using Windows for development while deploying on Ubuntu, it can be hard to catch problems early. What we can do is spin off a virtual machine which we can use to test our application for development pruposes. Recently a new approach came to life thanks to Windows subsystems which allows us to run a Linux binaries executables natively on Windows 10. Today we will explore how we can run a Hello World ASP NET Core application locally on Ubuntu on Windows 10.

DotNetCore CSharp Ubuntu

Feb 22, 2018

Serilog With Aspnetcore

At each stages of an application development cycle, good logs are necessary to debug and fix bugs efficiently. Serilog is a logging framework allowing developers to log structured logs into different ouput platforms.

DotNetCore CSharp

Feb 16, 2018

Oauth 2.0 Openid Connect And Identity Server

When it comes to authentication and authorization, the most used standard is OAuth 2.0 with OpenID Connect (OIDC). Few weeks ago I discussed Resource owner password and Implicit flows focusing mainly on implementations with Identity Server. There is a lot of confusion revolving around OAuth 2.0 and OIDC, what they are, how they differ and even what Identity Server is and what is it used for. Today I will give more insights on what is OAuth 2.0 and OIDC are and how Identity Server relates to them.

DotNetCore CSharp OIDC

Feb 08, 2018

Free Ssl With Letsencrypt

Few months ago I explained briefly how SSL could be setup with CloudFlare. Today I would like to share another way to get a SSL certificate for free via a browser based implementation of Let’s Encrypt.

Let's Encrypt

Feb 01, 2018

Angular Router Params Inheritance

Few weeks ago I discussed about Angular router, how we could make sure our data are loaded before accessing a component. If you aren’t familiar with Angular router, I suggest you have a look at my previous blog post where I introduced the router. The example was loading data from the store (ngrx store) to check if data were loaded. But it would have been difficult if we needed to load data from the route params. Today we will see the problem faced when taking params from the route and how it can be resolve with a newly introduced feature in Angular router since 5.2.x.

Angular

Jan 27, 2018

Run Batch Files From Csharp In Dotnet Core

Being able to run batch during the lifecycle of an application is always useful. It gives a way to programmatically interact with any programs which implements a CLI. Today we will see how we can start processes from C# on .NET Core applications and how it can be useful in a real scenario.

DotNetCore CSharp

Jan 20, 2018

Dotnet Core And Dotnet Standard

Lot of things have changed from the past few years in the DotNet ecosystem. In many occasions, I have seen people get confused with the differences between DotNet Core, DotNet Standard and DotNet Framework and how do they all relate to ASP Net Core. I don’t blame them, so many new keywords that it is quite confusing to first look at. Today, I would like to explain the differences in term of project templates. What is the difference between DotNet Standard library or DotNet Core library, what is the difference between DotNet Core application or DotNet Framework application, etc…

DotNetCore CSharp

Jan 13, 2018

Steps Toward Leadership

As a Software Engineer, I have gone through many managements, different countries, different companies, different projects which all left me with a bitter taste. After years of reflection, I realized that half of the feeling came from my inexperience while the other half was meant to be fulfilled by the management under which I was working. This management was meant to provide me, a Software Engineer, the direction, vision and ideology to carry on my work. Management composed of line managers, higher management, directors and company, I expected them to lead me to success. It is incredibly hard to find the right way to get a Software Engineering team to work well. Most of the challenges aren’t well understood by those coming from different backgrounds. Not that it is harder or easier, it is just different. Tasks aren’t easily measured, it is hard to make KPI, goals aren’t easily defined and set, and many more issues. We have seen that giving management responsabilities to someone without a Software Engineer background can be challenging, if not harmful. But we also seen the opposite whereby giving management responsabilities to a Software Engineer by elevating her as leader caused equal harm to the team. Not all of us are equipped with the tools and mentality to manage more individuals then just ourselves.