.NET Developper - Software engineer

Mathieu VIALES

For a concise summary, jump directly to the Too long, Didn't read section

Mathieu VIALES - A brief history

I began coding at the age of 14, starting where every web developer started: with HTML and CSS. I kick-started my coding career by reading the online resources provided by openclassrooms.com at the time called “Le site du Zero”. With no more ambition than to do some wibbly-wobbly barely-workingy computery-stuff I started learning PHP to build simple websites and C++ to create basic 2D video games (all of these projects are now lost).

Now, after 10 years of practice I understand and know enough about computers and programming to create and maintain the code needed to build robust web applications using theorically any language, altough I have a strong preference for the C#.NET stack.

Despite not being in possesion of the required diploma, I do consider myself an engineer due to the nature of my line of work and skill set as it does not "only" requires me to code but also to design, plan, discuss, maintain and improve complex systems that are often required to reliably function for years.

Photo Mathieu


View a timeline of my career

Technical lead R&D - .NET Engineer

Current position

Project "Elasticsearch"
At CToutVert
January 2019 -> Now

In collaboration with a former 15+ years Java engineer converting to C#, I was asked to implement a replacement solution for our existing "Search Engine" webservices leveragin the speed, reliability and data analysis tools provided by Elasticsearch.

The team's mission was to
  • Improve speed on the internal search engines
  • Improve search reliability, prevent crash and time-outs
  • Build and maintain the new infrastructure supporting these new components
  • Gather usage data from our portals to improve our understanding of our customers' behaviour
  • Enable the usage and visualization of this data for the commercial service and customer relationship management system

I created the infrastructure for the new components this project required using Azure virtual machines and Azure Web Applications. The new REST Webservice was written mostly as a set of .NET MVC5 projects, with a .NET Standard 2.0 project used in anticipation for a future migration to .NET Core.

Technical lead - .NET Engineer

Project UCamping
At CToutVert
August 2018 -> December 2018

I was tasked to lead a small technical team consisting of one senior front-end developer and one trainee back-end developer, to whom I acted as an instructor, to re-start and upgrade a dormant project. The site had been abandoned a few months earlier and had many flaws, bugs and broken parts.

The team's mission was to

  • Fix the broken user flow using the knowledge of an in-house UX expert
  • Fix the user experience through debugging and optimization
  • Fix the search engine visibility, in collaboration with an in-house SEO expert
  • Deploy and maintain two new sites using the same codebase

The project was based on a .NET MVC5 stack, which I was already quite familiar with. I was tasked with the estimation of deadlines, feasibility and complexity of tasks as well as their proper realization and implementation. I made sure that the code was getting cleaned and improved every time the project progressed, in order to shrink its technical debt and reduce its growth.

.NET Developer

At CToutVert
July 2017 -> July 2018

Following my apprenticeship, I was hired as a replacement for my former training tutor who was leaving the company. The responsibility for the two projects that he was in charge of maintaining and improving was given to me and I was asked to dedicate some amount of my time for system-wide emergencies such as bug-fixing or important feature requests.

During this year I was given technical access to the production machines, so that I could deploy and monitors my projects on the release environment with no need to request permission or supervision from a senior coworker. At the end of this year I was also tasked with assuring weekend duty to monitor and maintain the system’s stability and global health during the high-season.

Trainee .NET Developer

At CToutVert
July 2016 -> June 2017

Apprenticeship position linked to the LP APSIO (Bachelor's Degree) formation.

As a developer I took part in the writing and maintenance of the code used by the company’s web application. I worked mostly on the data layer and the internal administration interfaces. Most of my work was done as a member of a small team consisting of two other developers. This year was my introduction to C# and the Microsoft web tech stack, which made me quickly move on from PHP for my personal projects to use MVC5 instead.

Latest Realizations

Nathalie VIALES - Relaxation & Meditation

Nathalie VIALES relaxation website

I built this website for a professional working in well-being and personal developpement.

The original design was maquetted by a 3rd-party designer, but I did the implementation of the site from front-to-back, including search engine optimization and communication advising.

The site was built with search engines and user-experience in mind, making it very fast to render, easy to navigate for humans and easy to parse for robots. I have also leveraged Google's professional-oriented tools such as Google MyBuisness to increase exposure of the site and the person it represents.

It is built using C# .NET Core 2 and leverages Docker's amazingness to be easily and cheaply hosted.

View the live version - Relaxation & Méditation à Canohès

Foyer Rural - Ponteilla-Nyls

Foyer rural Ponteilla-Nyls website

I built this website for the community center of a small village in the south of France.

This site's creation predates my switching to C# and .NET stacks, thus it was coded in PHP (Silex/Symfony) and is hosted on a shared apache server.

View the live version - Foyer rural de Ponteilla-Nyls

Open Source

The libraries and communities related to open-source have helped me a lot over the years, so I try to help others back by open-sourcing the code I write for my own projects which I consider to be potentially valuable to the community, and I also invest a part of my time to help others on StackOverflow.

Selenium Utils

A C#.NET Standard 2.0 collection of utility methods for Selenium WebDriver.

I built this library as a mean to centralize and share my most commonly used custom-made extension methods for the Selenium WebDriver C# API. And hey, why not make it open source, who knows ?

View package on NuGet.org

View on github


A C#.NET Standard 2.0 wrapper for the haveibeenpwned password REST API.

This library is meant to be a way to make the already simple to use Have I Been Pwned API a breeze to use in C#.

View package on NuGet.org

View on github


A .NET Core 2 implementation of Google's reCaptcha V3

This library's purpose is to simplilfy the integration of the third version of the famous google "ReCaptcha" utility. It is meant to be a plug-and-play unobtrusive way to leverage the invisible captcha.

View package on NuGet.org

View on github

Tech Stack

I am specialized in Web development using Microsoft’s latest .NET technologies, but I am always open to new experiences and learning new stacks.


After over four years working every day with C#, I consider it as the base stone of my back-end stack. I mostly use it in the context of web applications, leveraging the power of .NET MVC5 and .NET Core 2 frameworks along with razor and, more recently, Blazor.

Regarding data manipulation in a relational environment, I am used to working with Transact SQL and Entity Framework, both in code-first and database-first, the former being by far my preferred solution over the latter.

Over the past year I have worked a lot with Elasticsearch, making me proficient in the a very powerful, robust and sought-after NoSql data & search engine.


While my main focus resides in back-end work, I am a decent web-integrator and I can write robust and maintainable client-side code using HTML, CSS (LESS, SASS) and JavaScript (JQuery).
As I recently got started working with Blazor it is possible that I will replace Javascript with C# in the coming years.


My currently favored tools are Rider IDE, SQL-Server, Windows 10, Git & GitKraken, Sublime Text, GitHub or Visual Studio Team Service. I also have a bit of experience working with the Azure portal.


I am well-versed in Object Oriented Programming and the associated concepts such as Interfaces, Polymorphic and Generic algorithms as well as Reflection.

I am also quite comfortable with Dependency Injection thanks to several years spent using the Ninject library in MVC5 and my extensive use of .NET Core 2 and the built-in DI system.


Company Formations

Web Applications Security

By Aelion
Décembre 2018

Some of the back-end developpers in the company attended a 3 days course with a .NET certified software engineer. This formation's purpose was to sensibilize the back-end engineers to the many possible means of attack through example, and to provide a few simple keys to protecting the software we write by writing an implementation to counter each of these attacks. Among the many topics discussed during this class, the most important ones were, in no particular order:

  • SQL Injections
  • XSS Injections
  • Origin validation (CSRF)
  • Integrity validation (hash, checksum)
  • Bots (captcha)
  • Authentication (Identity Server, .NET Authorization)
  • Password protection (encryption, hash, derivation)
  • Data hiding (Symetric & assymectric encryption)
  • DLL replacement (Software signing)
  • Overposting (just-what-you-need-model-design and the "don't use entities directly in forms FFS!" rule)
  • HTTP headers talk too much (hiding x-powered-by & such)

Only a portion of the company's developpers follow this course, but a coworker of mine and myself thought that what we were shown during these three days was valuable information to anyone related by any meangs to the actual source code no matter their actual position (front/middle/back end, Database expert, SEO expert, in-house lawyer). For this reason we organized two sessions of internal re-formation that consisted in a simplified version of the formation stripped of the actual implementation of the countermeasures. The purpose of this was to inform that the aforementioned attack existed and that it was of high importance to protect us from them.

Design Patterns

By Vaelia
September 2017

This formation focused on the theory and example implementation of many common design patterns. Among the ones studied during this 2-days long formation we focused mainly on the following one: Factory, Object Pool, Proxy, Composite, Singleton, Observer and Visitor.

The real purpose of this formation was not so much to teach us the exact name of these patterns, but to give us the tools to design solutions that are meet the requirement in the best possible way, by showing us many different paradigms.

JQuery - TypeScript - Angular

By Vaelia
January 2017

This 2-days long formation had us discuss and practice a wide range of basic and advanced concepts, mostly using JQuery and TypeScript. We learned the key advantages of TypeScript over regular JavaScript and created some simple application to demonstrate the power of this super-set.

We also talked about the best practices and recommended usage of JQuery as well as the best way to use it within a TypeScript file.


Web development, Bachelor's Degree (UK) - LP APSIO(FR)


A one year course the resulted in a short thesis about the big O notation - theory of algorithmic complexity.

The following fields were taught and practiced

  • Computer development in Java, Android, PHP (Symfony), C# (.NET Framework).
  • Database management using Transact SQL and SQL Server.
  • System administration on linux (Ubuntu) using the command line and shell scripts.
  • The mathematics of computer algorithms and theoretical study of optimization.
  • Team management and handling of human relations within the workplace.
  • Project management and life cycles. This includes agile methods and GIT.
  • French and international law aimed towards software engineering authorship and licensing.

Web development, Higher National Diploma (UK) - BTS SIO (FR)


A two-year course with classes and practical exercises targeting the fields of

  • Computer development in Java, PHP (Silex/Symfony), MySQL and JavaScript & JQuery.
  • System administration on linux (Ubuntu), using the command line and PHP scripts.
  • Algorithmic theory, using pseudo-code.
  • Software building tools with Merise II, UML, flow charts and use-case diagrams.
  • French and international law aimed towards software engineering authorship and licencing.

I had two periods of two month as a trainee in two different companies during this formation. The first one was in a marine life biology laboratory as a C and PHP developer. I worked on an Arduino to create a floating data-reporting beacon. The second training period took place in a Web Development agency.

Too Long; Didn't Read

Like, REALLY over-simplified

Coding is a passion. I'm a C#.NET developer, specialized in .NET web technologies and tools. I value well-designed systems and I apply myself to produce elegant & maintainable code.

Development: C# .NET
  • .NET Core 2, .NET Core 3 / MVC5, Razor, Blazor server-side
  • .NET Standard 2
  • Entity Framework
  • Transact-SQL
  • Elasticsearch
  • The essentials
    • HTML
    • CSS (LESS, SASS), Bootstrap 3 & 4
    • JavaScript (JQuery, Vue.js)
  • Shell: Powershell, RedHat & Debian

Project & code management/deployment:
  • Git (CMD, GitKraken)
  • GitHub, workflows
  • Gitlab, pipelines
  • Azure DevOps (VSTS)
  • Azure Portal
  • Agile (SCRUM)
  • Kubernetes, Docker
  • System admin (Redhat, Debian)