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.

The Avanade and Azeo french weeding


The news is fresh:

LinkedIn marketing site let people think it’s cool and beautiful. It’s more complex and not black and white.

Based on my experience and my knowledge of the MS ecosystem (25 years of experience), I give you my feeling and it’s only my opinion and do not reflect the view of my company. I always welcome new champions but I know both companies very well and I have worked direclty and indrectly with both of them and I know a lot of stories from the field about them during more than a decade; stories that can’t be written here. It looks like Shrek and Fiona’s wedding. One is an ogre and the other is a beautiful young girl, thin and refined. One lives in the forest and the other in a castle. I find it hard to believe that Shrek’s friends will become comfortable with Fiona’s friends. It’s not the same world, not the same mentality, not the same way of doing business. Different goals, different objectives. I understand the enthusiasm of the President of Azeo but not sure that all Azeo employees will find their interest in the deal. The good life is over and the life of a field consultant for some will change dimension. I give you a rendez-vous in some weeks to advise and see if the best elements of Azeo find their balance in the Accenture/Avanade world and feel comfortable and see if they stay or leave this weeding of interests. Good luck.

To better understand my thoughts, it’s a bit like the marriage between Mc Donalds and Big Fernand in the land of hamburgers. It’s almost the same thing but in fact it has nothing to do with it; it is not comparable.

Some things Azeo employees should know about:

Avanade is a big company that is not driven anymore by Microsoft in the Accenture/Microsoft joint-venture. It’s a Accenture sattelite managed by Accenture Directors on the Board.

Avanade is acting as a technology company, the Microsoft consulting services like subdivision, in the Accenture ecosystem. But it’s not a partnership, it’s a parent child partnership. Accenture gives orders and Avanade follows the orders without discussions. The business line of conduct is clear.

Avanade is telling that they are the leading integrator in the world of Microsoft Technologies. The argument is used also in France. I doubt that after one decade and a half of understanding their business and working with them and shareing customers projects. To better understand Avanade in real life, let’s talk about one or two things.

The way of doing business at Avanade and Accenture is based on the scorched earth policy. It’s: “la politique de la terre brulée”. They destroy the systems on the basis of a questionable audit to rebuild everything and sell technology for the technology, quit to overcomplicate the system so that only they are able to maintain it and thus guarantee themselves substantial margins.

Woe to anyone who gets in their way in business. He will be dismissed, put in the dock and placarded and pressured to discredit him, even if he is one of his own employees. At Avanade, there is no morale: it’s work or die and all plans are good to succeed in winning. The end justifies the means. The sums involved are considerable and the mechanics are fragile. Not much is enough to break the trust between a client and a project team so that we can want to look at and have access to Architecture documents and the issues and solutions implemented.

The problem is that the Microsoft technology world is a complex world with layers and technologies piling up. Some are deprecated, say legacy, but we interoperate between the old world and the new world and we also spend our time modernizing information systems. And now, with the emergence and domination of the cloud era, it’s becoming more and more complex. They have to make decisions and their working phases are organized like with several stages:

  • audit of the existing solution or system
  • discredit the existing infarstructure and IT system
  • scare the customer by indicating major risks
  • build a complex solution at high cost using recent technologies and customizing products and solutions as much as possible
  • ensure the maintenance of this system exclusively
  • launch a new modernization project a few years later
  • The customer is trapped. He paid dearly for a project the first time around in his first deal, and now gets stuck. He often engages his own involvement in the project and his credibility. His interest is to drive the Accenture / Avanade couple home again, this time trying to better pilot the project and not to get caught up in crazy technological solutions.

You might think that this business is a winner every time, but it is not because some rebel set clients fight against this way of proceeding. The best way is to make a dela with Microsoft to put them in front against Avanade and Accenture or to assign another Gold Partner to audit the solutions recommended by the firm with the orange logo.
In this case, the technique for Avanade is to bypass said integrator and to drown it in the documents and make it more complex with the solution. Do not be delusional spas, decisions are decided in advance and the client will always agree with Avanade through the fact that the Partner Accenture deal directly with the CEO or CEO of the client. This is the reality.

Once you’ve said that, how do you get out of it? You have to surround yourself with Architects and auditors who will take the Architects of Avanade Solutions at their word. These are people who only intervene at the beginning of the project to design the architecture of the solution and then, they are only present in dotted lines. They often offer turnkey solutions with pre-wired PowerPoint. We must ask them to commit to the quality and response times. And there, you will win the iron bars because the developers who will realize the solution are not very experienced despite the daily rate to which they are charged. The solution is often cumbersome and not as reliable and as perfect as announced in the slides during the Kick Off or the response to the call for tenders.

Once again, the nerve of war when working with Avanade is not to be rolled in the flour by their marketing and solution approach. You have to challenge them and compare the theoretical figures and measurements on the solution under construction.

Do not hesitate to bring in Microsoft and in this case their attitude will become more understandable and less arrogant and condescending. Microsoft will not pass up tech scams or flawed solutions. the key is Architecture. Don’t compromise on Architecture

Software development is more than business and money. We build IT systems for people and not to make only the promotion of the latest technologies from the company of Redmond, Microsoft. The system must be masterized and controlled and managed by the client who pay us a lot of money to have a modern and good IT system. Performance and security and scalability should be on mind on the Architects but teher are too busy to focus on their annual review notation to address and fill their customer needs and reach the level of Excellence in delivery.

Having Core Values written on corporate web site is one thing. Ensuring it’s applyied on the field is another thing. Here are the Core Values of Avanade:

  • We change things for the better.
  • We innovate with passion and purpose.
  • We deliver with excellence.
  • We believe everyone counts.
  • We act with integrity and respect.

My wish is that these rules should go away of the marketing department and be delivered by consultants on the field. But Marketing is easier. It costs less.

I always welcome new champions but I know the reality of the field and how the world is dangerous and brutal.

Let’s see in the coming months if the Azeo employees integrate the model of business from the giant Accenture and their technology subdivision Avanade. The major pitfall for most of its news employees will be facing a total different way of managment. To be a successful consultant at Avanade, you don’t have to be the one who knows the best the various technologies from Microsoft (NET, C#, ASP.NET, SQL Server, Azure). No, it’s not the way it works. You have to be successful in your projects on the billing area. Only the billing and sweet attitude can lead you to be a good employee and have a decent notation at annuel review stage. Other problem is that jean-basket is not the dressing code at Accenture. The differents between the two companies are so huge that I could write to the end of the night.

I am always surprised to see all those small companies, acquired by large companies to have more and more employees. For most of the customers I had in my entire carreer (since 1995), they call me because I am Christophe Pichaud and not for the name of the company who pay me. I have been freelance, employee, contractor, partners, shadow partners and some exotic status but always, my customers call me for various services because of the trust they have with me and because they know I can save their business out of the attacks of the wolves… like Avanade and Accenture.

Killing a wolf, holding it in respect or scaring it away is a long-term job. You know how they think, you known how they behave under all situations, and you know their qualities and defaults. But in business, the key is trust and when a project goes to trial court or is supposed to go, it reveals a lot of informations.

A lot of projects went to trash and customers were furious. Don’t wait for miracles. Protect yourself and bet on Architecture whether you trust Microsoft or not. The problem is not the technology, its’ the way we use it.

I have worked several months for top priorities projects with Accenture, Avanade and Microsoft and I saw so many things that now, I adopt always a good cop attitude:

  • Never trust anyone
  • Verify all the facts and interview customers myself
  • Learn the technology even in its deepest internals
  • Do not make any assumption like “it should wrokd like this I think…”
  • Ask some friends at Microsoft about use cases and real world scenarios
  • Partner with MVP friends to avoid dealing with the “best billable consultant” who will sell me PowerPoint made by Seattle…
  • Partner with Microsoft and sharing informations with them to deliver the best solution and the best Architecture

The question is: is it a good thing for a consultant to join the Avanade company ? It depends on what you expect from them. If you want to deliver projects in a big team, may be it could fit your needs but don’t expect to have a excited life. You will deliver with speed and it’s a not a slave job but it is closed to. You will earn a good salary but you will spend a lot of times on work duties. Don’t expect to do a long carreer, they will explain it to you very soon.

If you are rock’n roll star, passionned with technology and a with a good mindset, who read books and work well, with The Clean Coder and Clean Code rules and both hands, who want to deliver on the edge project with latest technologies with secure, scalable and performance in mind, think it twice. You could be dissapointed at sure. I encourage you to apply direcly to Microsoft, it’s better because they are comitted to better Excellence than Avanade because they make the technologies so, it’s not their interest to build something bad but billable. For Microsoft it’s more than money, it’s more than consulting. Understand the reality of the both companies. Avanade sells services. Microsoft create products and tehcnology and they have an entity called Microsoft Consulting Services who sells services.

Best consultants works for Microsoft not Avanade. There is no debate at all. between the two subdivision, it ‘s a well knwo secret, they don’t love each other because they compete on the higher rate of billing. The day of consulting above $1000 and more. The empire of the wolves.

I have worked for both companies, Microsoft and Avanade and I have learned a lot of studied a lot about the way they do business. I begun my carrer as a freelance during 10 years so I was very interested in the way to do business with Microsoft Technologies. When I joined Avanade in 2005, it was headed by Mitch Hill and it was fantastic. I worked on big big projects, I was satisfied because I was Architect and already with top skills prior joining the company but I had a conflict with a french toxic Director in 2007. A guy who is representative of the french mentality in some IT business who think money is the most important thing, more important than knwonledge and professional attitude. It was an asshole and a guy like Machiavel. I told him face to face what I was think if him. It was necessary for me to fight and leave the company. I could have shut my mouth and continue working in the company but working with was a problem for me and it’s not my coneption of life to work with assholes. I was so happy working at Avanade with so many pleasure that It was a deception for me to leave because of bad guy.


Because the place of Paris is small for Microsoft business, I shared a lot of projects with ex-consultants I worked with and we are all working on the CAC40 on Microsoft projects and the stories and well known from a lot of people. I have a lot of respect for Avanade in US and other places but the way things have evolved among the years in France is very “complicated” to be optimist for Azeo new employees to be well integrated. Things have radically changed from when I was in in the company. I hope Azeo people will find a way to survive in this jungle environment. Good luck and don’t let the wolves eat you. Be prepared. It’s my best advices.

I hope the financial operation costs no more than $10 millions or $15 millions because it does not worth more. Azeo always wanted and tryied to be a top player but I am not sure the have achieved that goal yet. In my opinion, it should have been better for the market that Azeo merge with Exakis-Nelite which is Avanade best competitor for the place of Best Gold Partner in France or even on a challenger which is Open-NeosSdi or vNext. Because I know all of these companies, if I need to advice a customer to chosse between Exakis-Nelite, Open-NeosSdi, vNext or Avanade-Azeo, which company would I choose ? If I want a good solution, I bet on the company who accept to deal with Microsoft and with transparency in mind so it won’t be Avanade.

Also, the fact is Avanade France does not have many MVPs which is the ultimate recognition from Microsoft for externals consultants. See Nowadays, I bet on small companies like  Cellenza, Infinite Square, Infeeny or dedicated individual MVP contributors who delivers best of the mix and match of on the edge solutions without asking customers millions dollars for slides I can find for free on the Microsoft Partner portal.

But the most important, I deal directly with Microsoft with both objectives: A link to the architects team for partners and a link to Microsoft Services for assistance in Architecture and long terms orientations. I don’t dream anymore of big companies. I rely on individuals who know how it works, talk directly and honestly with customers, have a real truth attitude ; they move from one company to another often. I trust them. Not these big companies because they need to do business, whatever it costs. It’s insane. I know them too much. The difference between a Services company and a Software company is that ofr a Services Company like Avanade, you make softwares with money as an ultimate objective. For a Software company and a little compnay, you have different objetcives and requirements. Trust is more important. Quality of the software is a requirement. Performance and Security need not to be an optional billable package. Optimization and scalabilty is not also a high-rated optional package discussed when delivering softwares to users and while discovering the result is ugly.

When I leaved Microsoft, I discovered some small companies and it’s the best environments because trust is made by real people, not resources names on an Excel sheet nor dirty managers in a tuxedo. Avanade and Accenture was a good experience for me when I was young and idealist. My chance was to already be skilled with certifications and knownledge in Microsoft technologies so I could spend my time observe and learn business technique and delivery was easy. I was already had bad annual review because of my attitude that I was said. I was laughing at that. I was shocked too many times by the way of management of thsese directors. Did they read Machiavel before going to sleep to apply it in the company ? I think so. They were adept of demotivation and it was hard to hear some consultants having pain but attached to their job, so they were not complaining and were spending so many hours to complete their duties, more and more and with the esperance of a good annual review. It was not in this mindset, I am a boxer. if there is problem, I ask you directly and we talk. I don’t accept any orders. I am not a slave. You are not my master. I can work for any company. It’s not a problem. My attitude is not deloyale, it’s based on confidence. I have skills, certifications and experience. Event if you are a Director of a multinational corporation, if my audit gives me red indicators that proove your system is full of shit, I will tell you directlty, whathever you paid Avande $2 millions for one year for building and developping a system with the latest Microsoft Technlogies or have 20 contractors working daily on it on a high rated price. This is the job I do day by day. I help customers to not be cpatured by the wolves. I am free.

How I survived after my Avanade Years

I am proud of my Avanade years and I may have missed an opprtunity. A conflict not well managed by me and bad director. All my ex-friends are now Directors at Avanade France. But the fact to work for others Microsoft Gold Partners (Pi Services, Sogeti, Neos-SDI, Devoteam) was a chance to see others way of doing business and projects. After 6 years of the .NET Rangers activities at Sogeti, in 2017, Microsoft recruited me for my C++ and C#/NET skills and I lived a dream. I was happy to join the Redmond company. But a world reorganisation (5000 jobs cut worldwide) took my job after less than a year of good services. It was sad. But I have skills to find a job easily so 15 days later I was joining another Gold Partner, Neos-Sdi, a small company in Paris. People were very cool at Neos-Sdi. The HR Director, Aurelia, is cool. Trust me.

The growth mindset

After Microsoft, I became a MVP at the end of 2017 and I work closely with Microsoft Products Teams and specially Visual C++ Team. Previosuly, I had contact with the VC++ Team but with my MVP award, it was more and more important. It’s was real revival for me with all thoses NDA activities. I discovered the real face of Microsoft technologies and I went away of all those insane debate on business and conficts. It saved me. I joined Devoteam for a young Gold Partner creation around Azure Cloud technologies and .NET modernization applications in 2018 but it failed due to a conflict in the vision of doing business and a point of view on technologies usage between me and the founders of the company. Then I took 4 months off and begun to write a book based on my experiences with C++ for a french publisher named Dunod. In January 2020, My book “Aide-Mémoire C++” was achieved and I joined a small company named Infeeny because of one man who interviewed me during a meal and I trusted him. He is Regional Director and MVP Azure now I work with him. The Mitch. We share the same way of doing business and the same view (90%) on Technologies, specially one Microsoft ones. I learn a lot of him. He will recognize himself if he read this post. I am happy to work with him on Azure and Microsoft Technologies. We make Cloud Solution Architects missions, from DevOps to Azure and Kubernetes and NET and a lot of marketing activities and it’s cool and great.

Don’t be a number

For people who will face the fact that integrating a big company let them becoming a number, there is still a way to escape. There are others Gold Partner in France. Do not desperate, even in small companies, you will be managed better than in a big company. A if you have a problem with a Director or the HR department, leave the company and find another one. There a are so many opportunities that you can change every year and you may even earn more, without asking questions. Don’t work for people who don’t threat you well. It’s my position. Don’t be a slave for an hypothetical 5% bonus at the end of the fiscal year. You deserve more. Life is short.

Good luck to Azeo people

I hope it will work. May be I am too dark and too pesismist. Let’s make a diagnostic in January  2021. I know some guys so I will have some feedback. It won’t be exposed on LinkedIn but consultants share their experiences and Glassdor is an exemple of site where employees can have a revenge over a bad manager of something like that. Talk, don’t keep it for yourself. The economic context is too bad to let a CEO threats you like meat. Fight for your rights. It’s time to choose who you want to work for and what you want to do! A good job is where you do your prefered atcivities. Your job should let you have the possibilities to be creative and do your work with passion.

We have some feedback on last Exakis-Nelite fusion and the result of their weeding in the reality is not yet what they believed it could be when then married some months ago. We wil see how the couple Avanade-Azeo will manage the situation and if they do better. Stay tuned.

My next book, based on 25 years of field experience

This text will be integrated into a book called “Accenture, Avanade, Microsoft : Stories from the Field” which is under working.

Send me comments on


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

My book is for sale !

My book “Aide-Mémoire C++” published by DUNOD is available in stores and at Amazon, FNAC, Lelcerc, Hachette, Dunod and others. Available the 7th July.

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.

C++ Code and Assembly traduction in Release

Do you know why C++ is the best ? Because it can be high level and very focus on optimized asm code generation. Here a sample of code:


#include "pch.h"

class Param

template<typename T>
class Factory
static shared_ptr<T> CreateObject(const Param& param)
shared_ptr<T> pObj = nullptr;
pObj = make_shared<T>();

_pLastElement = pObj;
return pObj;

static shared_ptr<T> GetLastCreatedObject()
return _pLastElement;

static shared_ptr<T> _pLastElement;

template<typename T>
shared_ptr<T> Factory<T>::_pLastElement = nullptr;

class Employee

class Product

template<typename T>
class Vector
Vector(int size)
_size = size;
_data = new T[_size];

delete[] _data;

T GetData(int index)
return _data[index];

void SetData(int index, T value)
_data[index] = value;

T* _data;
int _size = 0;

int main()
Vector<int> v1(10);
v1.SetData(2, 20);
int value = v1.GetData(2);
cout << value << endl; //20

Vector<string> v2(1000);
v2.SetData(10, "string 10");
v2.SetData(100, "string 100");
string value2 = v2.GetData(10);
cout << value2 << endl; // string 10

Vector<Product> v3(200000);

Param param;
shared_ptr<Employee> p1 = Factory<Employee>::CreateObject(param);
if (p1 != nullptr)
cout << "OK" << endl; //OK
shared_ptr<Employee> p2 = Factory<Employee>::CreateObject(param);
shared_ptr<Employee> p3 = Factory<Employee>::CreateObject(param);

shared_ptr<Employee> pLast = Factory<Employee>::GetLastCreatedObject();
if (pLast == p3)
cout << "OK ptr" << endl;

The result is an associated asm code generated : here

There is approximatively 1000 lines of asm for 100 lines of C++ with templates and shared_ptr. It’s amazing !

C++ rocks.

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 !




How to become a Windows Expert ?

This article is the continuation of How to become a Microsoft Expert? (

Windows has been Microsoft’s technological flagship for 25 years. You will tell me, yes but now there is Azure. OK but what is Azure? It is ; if I ignore the Linux part; Windows Server and Service Fabric… and that’s Windows. It’s C / C ++. And yes, again! There is no secret. it must work quickly and well. It must be reliable, robust, fast and secure.

In one of my last post “C ++ unsafe and unsecure?” (, I explain why C / C ++ is the best and why Microsoft is doing 95% of its products with. Microsoft is the # 1 company in the software industry. It’s not an advertising agency like Google or Facebook, it’s pure juice Tech. Microsoft sells Products and Services. Anyway next…

How to become a Windows expert? The question is asked. First, we learn about the operating system principles via Microsoft Docs (ex: MSDN LIbrary) on -components

Then, we read the passage on User mode and Kernel mode via

From there, we know the basic architecture of Windows. now we attack the elements on the operating system, namely the kernel and the thread scheduler. Windows order threads, Linux order processes. These two systems do not work the same way. The Processes & Threads doc is here:

Then we go to practice, how to create a thread, a process, reach the end, etc. the API doc also called reference doc is here:

The easiest examples can be viewed via and more specifically the CreateThread function: and its example: / win32 / procthread / Creating-threads

To test this, you must install Visual C ++ available in Visual Studio 2019 for example, Community Edition or Pro 30 day trial. If you received money from Santa Claus, buy the following books:

Windows via C / C ++ by Jeffrey Richter and Christophe Nasarre

Windows Internals ex-Inside Windows NT (

I bought Inside Windows NT in 1992 and got the virus.

Windows is huge. It’s powerful. You read the Windows Internals book and you will have vision; you will understand how the OS works. It’s very interesting and you will have no trouble understanding new Microsoft technologies with that. Microsoft NET, CLR, BCL, it’s done with C ++ and parts of the Windows API aka Win32. Watch the code on GitHub of CoreCLR (

There are urban legends that Microsoft rewrites Windows from scratch; this is for managers and IT 01. For technicians, the truth is that Windows is sitting on the same code and has been evolving for 25 years. The code is improved and regularly revised in Modern C ++. I can certify it because I have the source code of Windows NT 4, Windows 2000 and access to the latest source code of Windows 190x. The code is made in:

C for kernel and drivers
in C / C ++ for the rest.
What is Modern C ++?

automatic memory release with smart points
using the Standard Template Library (STL)
use of C ++ 11/14/17 with auto, lambdas, etc.
Windows uses COM technology a lot. A COM component is registered in the registry and is invoked via APIs (

A COM component is a class with AddRef, Release, QueryInterface and methods:

The COM component is created via CoCreateObject and the COM factory:

For more information on COM components, I made in 200x a translation of some elements of “Inside COM + Base Services”: Apartments | Threads | Apartments types | Threading for In-Proc components | Apartment and languages

For more information on COM, get your hands on Inside COM + Base Services ( or on docs but on docs, the doc is spartan.

201x saw Microsoft turn to open source so you can find Windows components in open source:

Windows Terminal (
Windows NET CoreCLR (
Do like me, study these two modules and try to contribute in GitHub. And who knows, one day, you may work for Microsoft!


Christophe |

My Microsoft’s resolutions for 2020

Friends Softies,

(EMail sent to my old Microsoft coworkers)

Here are my good resolutions for 2020…

Let me make an announcement: I want to work again for Microsoft and more particularly for Corp. It may go through Services before, I don’t know, but I’m working on it. As I told my friends Alain and the zErics, working at Microsoft was a dream but it stopped suddenly. I would not go back on this episode and the reasons for this stop, the page is turned.
Since I’m an MVP, I’ve had access to a lot of things and it’s great. Microsoft is the number 1 software company, there’s no question about it. You are working on it and you know it. This company is magnificent, the products are nickel and especially the technology is fantastic. Who doesn’t have a passion for an SDK or a product? Our job is made of passion, laughter and tears. Today’s failures will be tomorrow’s successes.

When I read Windows code, it’s complex but it’s beautiful. C ++ code contains something that other languages ​​do not have. The Microsoft style based on COM is very special. The mix between Windows types (COM strings, VARIANT, UINT, DWORD, UNICODE LPWSTR, wchar_t and char *) and C ++ types (wstring and string) means that the code is made with several styles. We find the business code mostly made in COM components or in C ++ ISO code and the specific glue in Win32 API. Don Box said “COM is love”. That is true. A coclass of a COM component is a C ++ class. We have a class in shared_ptr mode, an ambiguous AddRef ctor, an ambiguous Release dtor, a QueryInterface cast to obtain the different interfaces (a C ++ class can implement several interfaces and can inherit from several classes unlike C # which can only inherit from d ‘only one class).

In the Windows Terminal code, there is for example the WinUI code of the frame (tabbed and Window and popup menu and menu) written in pure Windows API and XAML Islands, the code of the cmd with its char buffer engine, its interpreter and the code Ancestral Windows rewritten in modern C ++. The code is improved. It’s like a good Burgundy, it gets better over time. The C ++ 98/03 code is improved in C ++ 11/14 code and gradually this Modern C ++ makes the code nickel, it is beautiful! For example, I made a contribution with PR (pull-request accepted on June 19, 2019 which consisted of putting a shared_ptr on a raw pointer and doing the plumbing that goes with it to play with a reference behind. The memory is released automatically via the smart pointer. It’s beautiful. There is plenty of TODO and FIXME in the code to improve the Windows legacy code. I saw that it has been 4 years since the CMD code has been refactored and improved. It may be my memory that betrays me but I think that’s it; seen in code comments. You don’t realize the power of Windows tools. The GitHub code archive for Windows Terminal ( alone is 9.3 MB. There are 6.3 MB of .h and .cpp files. It’s not bad already. Huge for a single individual to understand. CMD is a complex tool that goes beyond a simple dir c: \! It’s a pillar of Windows. Our system admins know this. I intend to continue to invest a little more on Windows Terminal because it is exciting. This is my first resolution.

Then there is the CoreCLR ( which is the NET runtime. There I put myself thoroughly because it is a part of my future that is playing on it. I will learn and potash the beast to understand how it works. The archive is 99MB and unzipped is 777MB. It’s huge but good, there are unit tests & co but good C ++ code is about 76MB in size without the tests. Suffice to say that this is huge from huge. OK Windows is 1 GB of source code but we are just talking about the Windows \ NET Framework folder mscoree.dll and company… with the DLLs of the BCL & co. I have 3 months to navigate, explore and understand the code. This is my second resolution. Then I try the Isue … I have to find something easy at first, a FIXME or TODO basic to get into it.

Then there is the Windows code via the NDA Shared Source Initiative and there it is my regular favorite: read the Windows source code. For those who do not know C ++, this is the opportunity to get started. Buy my book “C ++ Aide-Mémoire” and ask for access to the Windows source code and admire the quality of the Windows Engineers code. I have a lot of respect for Windows code. Since I got my hands on the Windows NT4 and Windows 2000 leak (2 GB of source code) in the years 2000/2002, I have spent many hours studying this code. The kernel, RTL NTUser & co dlls, Shell, File Explorer. This is a Star Wars novel in 350 Volumes. It’s beautiful. It’s complex but at the same time subtle and organized. Damn, it’s good! That’s why I have so much admiration for Bill Gates. Windows is a flagship of technology. OK sometimes it’s good old C / C ++ but it works fast and well.

When I discovered Windows Internals (7th edition Part 16th Edition Part 16th Edition Part 2) in the 2000s, I saw the virgin because it helped me understand Windows sources then when I discovered Windows Protocols ( ms-protocolslp / 9a3ae8a2-02e5-4d05-874a-b3551405d8f9), that was the grail. When I was at Services in 2017, I was surprised, people don’t know that. The culture of the NET means that people are very little cultivated on Windows while it is the flagship of the company. OK, now there is Azure but hey Azure is Windows Server and Service Fabric and all that is Windows. I ignore the Linux part … Each Microsoftie should be offered to deliver Windows Internals for its arrival in the company!

In short you will understand, my goal is to work for Corp. I’m working on it. Being blacklisted at Services France, I will find a way to get out of it via GitHub and my relationships with the Visual C ++ team in the US. My friend Simon Brand is a good C ++ advocate and yet lives in Edinburg, UK. France is very special … C ++ is limited. The companies for Services make, for the development with Microsoft Technologies, C # / NET.

Happy New Year to all the girlfriends.

Kisses to my mentor EricV. Kisses to EricMitt. Kisses to Alain.

Kisses to Agnes, my HEXV2 Project Director of OBS in 2006…. We got on well with GGray, PCP, Nicolas. I’m still in touch with the ex-OBS colleagues for whom we had to replace their Linux system (700,000) BAL POP / IMAP with Exchange Server via HMC… We meet regularly over a beer with Gael Roualland, the little genius from OBS who gave us a hard time and his friends at the time. Since I also switched to Debian Linux and Ubuntu (C ++ requires), they accept me but chamber me by saying that Microsoft is my best enemy so I love you either. They tell me to dump everything on builder than on Linux and that I would be more successful than with Microsoft … I disagree. 25 years of C ++ Microsoft, it does not give up, on the contrary, it is currency. And when you love, you don’t count your efforts.

Christophe |

C++ unsafe and unsecure ?

My colleagues in the Microsoft world and others tell me that C ++ is outdated, too difficult, too old, too hard to master and there are even some who tell me that it is unsafe and unsecure!

I laugh.

If C ++ had all of these flaws, Microsoft wouldn’t make 95% of these products with it. I’m going to come back to unsafe and unsecure because it’s very interesting. But before a reminder: EVERYTHING YOU HAVE ON YOUR PC AND MAC IS DONE IN C ++. Windows, Office (Word, Excel, PowerPoint, Outlook), IE, Chrome, VLC, Notepad ++, Calc, MSPaint, Photoshop, File Explorer, Process Explorer, etc…

To sell .NET Marketing has tried to discredit C ++ because it is too rich, too powerful and does not need advertising or marketing. In the 2000s, marketing tried to sell the idea that a language that manipulates memory finely is likely to crash and that the panacea was the Garbage Collector. This reasoning is an intellectual scam.

Just because a language like C or C ++ allows you to manipulate memory finely to the byte does not mean that it crashes or corrupt memory. Marketing, which is a contingent of people coming out of business schools, knows nothing about the technique and therefore these people are making crude short cuts. It must be said.

For those who are curious, the NET or CLR (Common Language Runtime) virtual machine is made in C ++ so here, the loop is complete. If C ++ was that bad, CLR would not be done in C ++. The garbage collector and the JIT either! The problem is that NET has to fight against an opponent that was there before it, namely Java and that the competition is raging. Java is much more established in companies than NET and that in spite of billions invested in marketing and publicity.

So I ask the question: was trying to discredit C ++ a good way to sell NET to the developer world? I do not believe. C ++ is ISO standardized and has millions of developers. The C ++ language does not need advertising, it is the language of industry, medical, software publishing, games, etc. C ++ has been there for 40 years and has undergone extensive renewal. It’s no longer C ++ at Papa, the famous C ++ 98 or C + 03. We moved to Modern C ++, the one that frees memory automatically via intelligent pointers or smart pointers, that of lambdas, that of move semantic. Marketing doesn’t talk about it, of course… Marketing isn’t mathematics, it’s not scientific and that’s why we should be wary of it.

In the field of software design, you should never believe in marketing and always rely on scientific reasoning. You have to test the technologies and make your own opinion and always be factual.

I have access to the Windows source code and everything is done in C / C ++. It’s modern C ++ and it’s clean. Windows will always be written in C ++.

The last news of the moment is to push Rust as a kernel language to solve memory problems. This is a false debate because the kernel includes a Memory Manager (mm) which manages virtual memory and only C ++ can write such a module. Some researchers have no knowledge of operating systems and are trying to make the buzz around Rust with a marketing approach … that’s it, they are setting the scene. Let them speak, Microsoft will never rewrite Windows in Rust. There are millions of lines of code. And contrary to what newspapers say for managers like 01 Informatique, Microsoft does not rewrite the OS from scratch. That would be known. Microsoft has been evolving Windows for 25 years. And it’s C ++. No offense to Marketing.

Large software is made in C ++. Another Nth example? Chrome and NodeJS. We cannot salute the JavaScript revolution without thinking of C ++. NodeJS is pure C ++ and Chrome too. Microsoft has made it its new browser with Chromium. Chrome is browser-based software that powers billions of computers and is fast, reliable, and powerful. Long live C ++!



“THE WORLD IS BUILT ON C ++”, Herb Sutter.

Send me your comments on my email:

Visual Studio Online Test

I have tested C# compilation under VS Online.

This kind of paid products is not for me. As a developer, I build on a local machine and I want to be offline and not always connected. More, I don’t want to pay for and IDE and a free compiler.

MVP Wall at Microsoft Ignite 2019

My name is on the wall… Thanks Estelle Auberix !

Microsoft’s UI development model

The future of graphic world (UI) at Microsoft is called WinUI. WinUI are the XAML controls of Windows 10. They’re made of C/C++.

Windows 10 makes extensive use of them and offers them (finally) full access to everyone: NET, C++, Win32.

Microsoft is committed to C++. Windows too. Microsoft makes its software in C/C++ because It’s fast and efficient. Do you understand my innuendo? On the Microsoft site, if you are looking to do software development, you are referred to .NET by default. I ask the question: but why?

Microsoft doesn’t. Why would I? Microsoft is no longer in dog-fooding as before. There is an internal discourse and an external discourse.

Internally, there is no debate, we do almost everything (90%) C/C++. Windows, Office, Edge, etc.

Externally, we only promote .NET, the web, JS/TS, Angular and python!

Where I laugh is that Microsoft evangelists who spend their time taking pictures of their hamburger meal on twitter know nothing about the native world and there is a problem for example, on WinUI. There is no one left to explain the real Microsoft, the one from the inside.

On WinUI, you have to promote XAML Islands, Controls in C++ and how to explain how to mix it with MFC and Win32 controls for example. Result: nothing. There’s no one who knows how to do it.

As an MVP, I’m going to focus on that. but it’s not normal for Microsoft not to fulfill its share of Learning.

Sometimes I have discussions with developers who think that Windows is made in C#???? WTF! The level of knowledge of the Microsoft company is leveled from the bottom. .NET architects believe that desktop graphics interfaces should be made in WPF. Oh, yes? Why doesn’t Microsoft do it then?

The future is C++ and .NET Core. It’s not ony .NET and C#. NET and its CLR is powered by C++.

Multiplatform development with C++

To develop multi-platform applications, there are not fifty possible choices, there is only one that is free and efficient: it’s C++.

Only the C/C++ can take advantage of the latest developments in Windows, Linux, Android and iOS SDKs because the system and its environment are made with it. The advantage of C++ is that it ‘builds on the metal’: there is no faster. It takes advantage of the software architecture of the operating and hardware systems of the latest x86, x64 and ARM processors. For forty years, C++code optimizers have guaranteed the best possible quality of code.

C, It’s the new assembler. C++, It allows the object oriented: abstractions, inheritance and polymorphism (virtual functions), overload of operators, templates. With its STL (Standard Template Library) bookstore and in conjunction with a bookstore such as Boost (, the C++ a-has a universal toolbox that handles strings, containers (collections), algorithms, I/O, threads, smart pointers, communications, etc.

Take the plunge. Install Visual C++ Windows, GCC Linux, XCode on Mac and share business code. Make rich graphical interfaces and take advantage of the best development language that’s C++.

You will tell me there are hybrid solutions like NET or Java? These solutions are a set of thousands of heavy, slow sheets that do not create world-class applications. In cars, there are Fiat 500s and Ferraris. At the same price (see cheaper), what do you take? There’s no photo…

Article for Programmez November 2019

In Issue n°234 or French magazine Programmez for November 2019, I have written an article about How to become a Microsoft Technical Expert.

Article for Programmez October 2019

In the N°233 Issue of Programmez magazine, I have written a technical article about Windows Subsystem for LInux v2 (WSL2).

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…