Category Archives: Uncategorized

My Books available on Amazon

From 2020..2021 with Dunod, Apress ad Programmez.

The Future Cover of My C# Book from DUNOD

The cover is made with Purple color. It’s close to my previous book, Aide-Mémoire C++ which was Blue color.

My new book about C# and .NET

My new book “Aide-Mémoire C#/NET”, written for DUNOD is finished and will be for sale on January 2021. here is the presentation of the book:

C# is a compiled object-oriented language created by Microsoft in 2001 for its .NET Framework platform. The C# language is a derivative of C++ and it shares many similarities with Java. C# is strongly typed, supports classes, functions, properties, fields, generics, operator overloading, delegates (function pointers), events, exceptions, and a LINQ query language. C# is inseparable from its execution engine, the Common Language Runtime (CLR), and from its NET Framework with its class hierarchy, the BCL (Base Class Library).
This cheat sheet covers the architecture of the .NET platform with the CLR, the C# language then important elements of the BCL such as I / O flows, the network, serialization, access to ADO.NET data, the multithreading, reflection, native interop and COM. The third part is dedicated to .NET Core, the cross-platform version that runs on Windows, Mac and Linux, with introductions to UWP, modern Windows 10 development and a final chapter on Linux development with Kubernetes for the world of micro-services. C# and NET are the future of software development according to Microsoft.

My Profile

Christophe Pichaud is a French software developer based in Paris. In his career, he has built large banking infrastructures, opened the first online bank (Banque Populaire) and participated in the construction of banking services for 2,500 Société Générale branches (MAIA, URTA). He also performs C ++ migrations and implements hybrid applications with the Microsoft .NET stack. Its clients are Accenture, Avanade, Microsoft, Sogeti, Capgemini, the Elysée Palace, SNCF, Total, Danone, CACIB and Bnp Paribas. He has MCSD and MCSD.NET certifications. In addition, he participates in Microsoft events as a speaker (TechDays, DevDays) and MVP on the Ask The Expert booths. He has been a regular contributor to Programz magazine since 2011. He is also the Community Manager of the “.NET Azure Rangers”, which contains 26 members including 8 MVPs whose activities are the animation of technical sessions, the writing of articles. techniques and the promotion of Microsoft or Cloud technologies. Christophe works at Infeeny, a subsidiary of the Econocom group specializing in Microsoft Technologies. When he’s not reading books or developing software, Christophe spends his time with his three daughters, Edith, Lisa and Audrey, and also his parents, Jean-Marc and Mireille who are in Burgundy.

I am an Avanade Alumni and a Microsoft alumni.

I have written 2 books :

  • “Aide-Mémoire C++”, DUNOD, July 2020
  • “Aide-Mémoire C#”, DUNOD, January 2021

MIDI Technology is awesome

Using LMMS and VST plug-in from Korg and Roland, you can make music loud ! You can find midi files on  the web (example: and then you attach a VST to a track.

Don’t miss the rythm box with the famous Roland TR-909 and the bass line with the Roland TB-3030. I also put some legendary synths like Roland D50 and Korg M1. Look at  this screen pictures.

Creating Softwares is an art

When I add new features to my UltraFluid Modeler, I need icons for the ribbon. And When I found something good, I jump into GIMP to enhance my icons.


It is calculated to be 16×16 pixels width and height. Precision is important here. Then I export the world toolbar as PNG : writesmall.png. It’s my toolbar for small icons. My last icons are positionned at 38th, 39th, 40th, 41th block of 16 pixels wide. Here is how it is converted into the Ribbon code creation:

pPanelFormat->Add(new CMFCRibbonButton(ID_FORMAT_ALIGN_LEFT, _T("Align Left\nal"), 38));
pPanelFormat->Add(new CMFCRibbonButton(ID_FORMAT_ALIGN_RIGHT, _T("Align Right\nar"), 39));
pPanelFormat->Add(new CMFCRibbonButton(ID_FORMAT_ALIGN_TOP, _T("Align Top\nat"), 40));
pPanelFormat->Add(new CMFCRibbonButton(ID_FORMAT_ALIGN_BOTTOM, _T("Align Bottom\nab"), 41));

Then I need to add the ID for the event corresponding to my ribbon icons:


Then, I need to add the UI handlers to this events in the messages map in cpp file and header file:

ON_COMMAND(ID_FORMAT_ALIGN_LEFT, &CModeler1View::OnFormatAlignLeft)
ON_COMMAND(ID_FORMAT_ALIGN_RIGHT, &CModeler1View::OnFormatAlignRight)
ON_COMMAND(ID_FORMAT_ALIGN_TOP, &CModeler1View::OnFormatAlignTop)
ON_COMMAND(ID_FORMAT_ALIGN_BOTTOM, &CModeler1View::OnFormatAlignBottom)
 afx_msg void OnFormatAlignLeft();
afx_msg void OnUpdateFormatAlignLeft(CCmdUI* pCmdUI);
afx_msg void OnFormatAlignRight();
afx_msg void OnUpdateFormatAlignRight(CCmdUI* pCmdUI);
afx_msg void OnFormatAlignTop();
afx_msg void OnUpdateFormatAlignTop(CCmdUI* pCmdUI);
afx_msg void OnFormatAlignBottom();
afx_msg void OnUpdateFormatAlignBottom(CCmdUI* pCmdUI);

You can see there is a handler and an update handler that determines if it is possible that handler to be enable or not. In our case, it will enabled only if there is an active selection of objects. Look at the code:

void CModeler1View::OnFormatAlignLeft()

void CModeler1View::OnUpdateFormatAlignLeft(CCmdUI* pCmdUI)

void CModeler1View::OnFormatAlignRight()

void CModeler1View::OnUpdateFormatAlignRight(CCmdUI* pCmdUI)

void CModeler1View::OnFormatAlignTop()

void CModeler1View::OnUpdateFormatAlignTop(CCmdUI* pCmdUI)

void CModeler1View::OnFormatAlignBottom()

void CModeler1View::OnUpdateFormatAlignBottom(CCmdUI* pCmdUI)

Here is the code for AlignLeft() routine:

void CElementManager::AlignLeft(CModeler1View* pView)
 if (HasSelection())
  shared_ptr<CElement> pElementBase = m_selection.m_objects[0];

  for (vector<std::shared_ptr<CElement>>::const_iterator itSel = m_selection.m_objects.begin(); itSel != m_selection.m_objects.end(); itSel++)
    std::shared_ptr<CElement> pObj = *itSel;

    int width = pObj->m_rect.Width();
    pObj->m_rect.left = pElementBase->m_rect.left;
    pObj->m_rect.right = pObj->m_rect.left + width;
    pObj->m_point = pObj->m_rect.TopLeft();
    InvalObj(pView, pObj);


When a selection is made, you can align objects ! It works !




MVP Wall at Microsoft Ignite 2019

My name is on the wall… Thanks Estelle Auberix !

How to become a Microsoft Expert ?

Through the exchanges I have with my students at THE ESGI or on the forums, the question that often comes up is “how do you become a Microsoft Expert?”. Indeed, the stack of products and technologies is so wide that we do not know where to…

I will give you my opinion and it only hires me, neither Microsoft nor my employer.

For starters there are fundamentals: an expert is not a marabout. He doesn’t read in crystal balls but books. This could be the conclusion of this article…!

Tip 1: Read, read everything, be greedy, be voracious. Whether you are a bachelor, a bachelor’s degree, a master’s degree and even an engineer. You’re lucky, the technical works all exist in PDF format and are easily accessible live (I never said you had to go on but the idea is there) or on torrents … Use the “try before buy” Pattern: if you like a book, you buy it.

In the Azure, Windows world, there are many free books at Microsoft Press: see Look for example at the following books:

.NET microservices: Download .PDF
Docker – Microsoft: Download
Enterprise Application with Xamarin Forms: Download
The ideal is to know how to create an application architecture that looks like this:

The PDF on microservices explains this. From there, you are up to date with the latest technologies because the eShopOnContainers sample solution implements ASP.NET MVC, Docker, Azure, back-end, C- , SQL Server, cache and NoSQL, etc. The code source of the solution is available on Github:

The step can always be raised to be crossed at once. First, we have to start on a good footing.

Tip 2: Read the Windows V2 Architecture Guide; download here: This guide will explain the principles of architecture to achieve a good solution and a good application design. Here is the classic diagram of a layered application:

The C-language is one of the fundamentals. That is the basis of development. There are many specialized books such as:
– C 5 in a Nutshell
– C 7 Pocket Reference
– Pro C 7
– The C-Programmer’s Study Guide (MCSD)

Tip 3: If you want to be a true .NET development pro, there’s a reference book at Microsoft Press: CLR by C. It’s the Bible. Buy. He explains everything on .NET: BCL, JIT, garbage collector, CLR, etc.

Tip 4: Pass certifications. Start with something simple: 70-483 Programming C. Then choose your course. Web, Mobile, Azure. Your choice.

Then there are no secrets: you have to practice. Microsoft makes free editions of Visual Studio 2019 available with a Windows SDK, SQL Server is also available for download or Docker image, and Windows 10 provides IIS. In short, you have everything to become a Microsoft development pro.

Will you be an Expert? I don’t know, but in any case, I’ll give you all the information to do it. To be an expert it takes between 5 and 10 years of experience and practice on a daily basis; not before.

MVP Tip: Read Windows Internals. Don’t forget that the jewel is Windows…

And Windows is made of C/C so read too: Windows via C/C

Microsoft makes all of these products in 95% C/C so if you’re curious (real experts are), find out about Windows SDK and Win32’s C/C development. Windows, Office, SQL Server, Windows Server, Chrome, VLC: everything you have on your PC is done in C/C; Don’t forget it!

Disclaimer: The links given for the download here are given as an indication and does not commit to piracy but to “try before buy”. If you like a book, buy it!

Stupid coding games recruitment tests

Do you know the technical tests that companies take before recruiting a candidate for services? It’s to cry, I explain … In addition to providing a CV that holds the road, certifications, now fashion is to make you pass tests in the form of games. The problem is that it favors the competition animals and it does not demonstrate anything: I explain.

You are asked trick questions about language (C, C, Java, Javascript), and then there are exercises to perform.

Example: a Node structure – left, right, value – must be crossed. Make the Find feature that finds value in a Node tree. OK for that. It’s a recursive function, we have to manage the null, nothing to say. Don’t show anything.

Example: you have to return the change. There are 10-, five-, 2-pieces. How to make Struct [b10, b5, P2 – RenderLaMonnaie (int value)? It is a question of making transactions divided, multiplied and subtracted to get the tickets and the rest in cash … Nothing too complicated. Don’t show anything.

So far, I don’t think that proves anything. 10 lines of code to make. It doesn’t mean anything. Each time, it’s 20 or 30 minutes to complete the exercise. Delusional.

Next exercise: In an int[] ar table – 1.2,3,4,5,7,7,8,9,10.11 .. 98.99, you must add up the items one by one and following a bogus rule, keep only certain results in a result table. Beast and villain. Don’t show anything.

Next exercise: The function int VaDeDroiteàGauche (int value) materializes a dance. Once we take a step to the right, once we take two steps to the left. We start at 0, on the right it’s 1 2 3 4 5 and on the left it’s 61 -2 -3 -4 -5. Code the function VadeRight to Left (int) a returns an int. that’s the kind of thing that’s used for that slab and that’s taken from cabbage. That’s the essence of these crap tests, taking cabbage on screwed-up algorithms that serve no purpose. We’re asking the candidate to code something that’s useless!

Next exercise: we have a collection of orders – customer-name, price -. You have to make a LINQ query to find the customer-name so the orders are over x. Just make a where, then iterate via a foreach on the collection to create an intermediate collection of string… Possibly valid to find out if the candidate knows LINQ. But hey does not show anything, too simple.

Don’t move, I have 20 in stock.

For those who have an internet connection, they do technical tests, search the web; This is allowed as well as dev environments!; and it will come across Github rests that contain the solutions… Suffice to say that the candidates don’t get in the way.

I have complied for various reasons for these tests and I have average grades. It’s not my thing. It doesn’t make me want to.

On the other hand, the customer I can give him for his money: Show your code, and I do the audit live in 1:30 on your code at 1,500 euros a day as if you had called Microsoft. I’m sure you’re going to be more interested than phony algos, right? And then we could see if your code is well done and start apprehending a serious relationship or Else I could realize that your solution is “rotten” and that I do not want to waste my time on it despite you going to sell it to me telling me we are f Microsoft ull! I could explain to you scenarios of Architecture that you have not thought of, what to rewrite, what to keep, what to throw away. Wouldn’t that be more relevant?

Ask me some serious questions? Example: how to migrate a legacy solution to OOP? How do I rewrite an app or wear it on Azure? How do I migrate a VB6 app to .NET? How do I migrate a client-server application to .NET? Now I could talk to you about it for hours! I have dozens of certifications so it’s as if someone who has a master’s degree in finance, you ask him how much is 2’2? I’m not answering and I’m doing the next question, just to piss you off and show my displeasure! If I pass Microsoft certifications at 150 degrees each and that requires me weeks of preparations, it’s not to get me crunched by bogus tests. Niet.

In the last test that was forced to do, I had 8/100 and 13/100, the worst score of all the candidates. Not even scared. When the stupid test, I despise. I’m MCSD certified, MCAD.NET, MCSD.NET, MCTS.NET, Windows Expert and Contributor, MVP Developer Technologies so if you don’t want to waste time seriously just talking with bogus tests, we won’t do business together. Too bad for you.

Real-life Technical Interview – No bullshit

Here’s the kind of thing I approach with a client to earn his trust and show him that I could be useful to him…

How do I migrate a procedural legacy application to OOP (Object Oriented Programming)? The techniques, the choices…

How do I migrate a client-server legacy application to .NET based on REST web-services or micro-services?

You have a huge IT solution with multiple technologies from the Microsoft stack (time makes its law). We need to update everything. You don’t have the time or the budget to rewrite everything. How do you do it?

I have an IT solution of 4,000,000 lines of code. You have to audit the solution and give me an axis. We keep, we throw, we factor, we reorient, we do what ??? How do you do it: give me leads?

I own ASP.NET Forms, ASP.NET MVC (several versions), VB.NET, WinForms, WPF, there are everywhere, what should I keep? How do I get by with Microsoft technologies?

I want to switch from Oracle to SQL Server for cost reasons. . How do I do that? Best practices?

I want to migrate a set of applications to Azure, how do I do it? Where to start?

Can I do an audit of your IS just looking at your code in an hour and a half? Way microsoft audits at 2,000 euros a day. Do you like it? Ok let’s go…

These are real complex questions that you won’t find answered on StackOverflow. It’s more serious than coding games and its bogus tests whose solution is on any search engine…

My favorite tasks for customers

You have an IT solution with 4.000.000 lines of code. You want an audit ? What need to be rewritten, cut, reorganized. Want some ideas ? I can give you ideas with one hour !

You want to migrate your legacy apps into a modern Microsoft solution ?

You want to put some deprecated stuff on Docker, reorganize some others stuff ?

You need to look at a large amount of various source code ? You are lost with your source code, I can help !

You have old Microsoft technologies, ASP.NET Forms, various ASP.NEt MVC appz, WinForms or WPF APps, C++ Win32 or MFC Appz and you want to stay on the edge ? Call me !

My C++ Book

In January 2020, I will have finished my Book “Aide-mémoire C++“.

It’s a medium size book (300 pages) for students, engineers and professionals about C++17 and STL.

It covers the language, the C++17 features and the STL.

From the past…

I have played with GIMP and MSPaint… to reconstruct my blue badge.


Article for July-August 2019

During the summer, Programmez is a double issue. I have written an article about Reverse Engineering and virus analysis.


Articles for June 2019 in Programmez

For a NET Core 3 Folder, I have written two articles:


Visual Studio 2019 – version 16.0.3

Visual Studio 2019 updated with version 16.0.3.

Release Note available here:


Here is the latest version for Visual Studio 2017 and 2019:



Article for Programmez May 2019

You can find my new technical article about C++ Appz in Docker and Azure in May 2019 issue of french magazine Programmez.


Visual Studio 2019 – New features for C++

Look at Marian Luparu, Lead PM for Visual C++ Team talking about the new new features. The most important features in my opinion are:

  • 64 but debugging support as out of process.
  • C++ 17 feature complete



LMDBNet NuGet package is available

LMDBNet is aviailable :

The package contains the relase and debug version of LMDBNet.dll NET bindings with LMDBWindowsDll64.dll and LMDBWindowsDllD64.dll, the migrated Linux lib ported on Windows as a standard DLL.

VCREDIST is not inside the package.


MVP Summit 2019 in Redmond, WA, USA

It was a pleasure to be invited to the MVP Summit 2019 in Redmond… All photos in the Campus are authorized by Microsoft (photos in Conferences center rooms).

It’s a great wallpaper : download here

MVP Summit 2019 bis