Monthly Archives: May 2012

CEO Read Books. Or, may be they should…

Like any other CEO, I am focused on sports, family and books. I love books. I love sports. But some books are greats. Any ideas ? My 0.02 cent.

Larson, Carl E. and Franck M. J. LaFasto. Teamwork : What Must Go Right; What Can Go Wrong. 1989. Relations, Objectives and Team Building.
Communications of the ACM, October 1993. Team Strctures.
Constantine, Larry L. Constantine on Peopleware. Englewood Cliffs, N. J. 1995. New Team Concepts.
Brooks, Frederic P., Jr. The Mythical Man-Month, Anniversary Edition. 1995
Thomset, Rob. When the Rubber Hits the Road : A Guide to Implementing Self-Managing Teams, December 1994
MacCarthy, Jim. 54 Règles d’or pour un grand logiciel. 1995. Microsoft Rules, Internals.
Heckel, Paul. The Elements of Friendly Software Design. 1984
Martin, James. Rapid Application Development. 1991. Chapter 10 for SWAT & RAD.
Peters, Thomas J. et Robert H. Waterman, Jr. In Search of Excellence. 1982. Multiple projects from castors teams.
DeMarco, Tom. Why Does Software Cost So Much? 1995
ChristopheP | Architect
Office 365 | Azure | Written using Office | Sent using Outlook |
Running on Windows 8 Consumer Preview 64 bits
C/C++ rocks | C++ 11 Ready.
.NET Ready.

MyModeler BETA2 source code is shipped on

MyModeler BETA2 (April 2012) is available on on this link:

The source code is heavily re-worked from Feb 2012 BETA1. It is now full Boost ( ready and it can build either on VC10 and VC11. 64 bit support is not achieved yet. Unicode not yet. Windows 8 migration and branching is under work. This April 2012 step was the initiator for the Windows 8 migration project with XAML technology. Windows 8 offers great opportunities to native applications. Write once. Run on multiple devices and platforms without pain.

MyModeler BETA1 is available – source code and MSI installer

To be ready on June 2012 for Windows 7 and September 2012 for Windows 8 on MS Store, my application is hosted on SCM is TFS. License model is MS-PL. IDE is VS2010 for publishing and VS11 Beta under Windows 8 for development purposes and enhancements. All the developments are done under Windows 8 and VS 11 BETA. Here is the publishing view for TFS usage on

MyModeler for Windows 7 – BETA (MSI)

Here is the BETA 1 of the MyModeler application prototype. Built in February 2012. Designed for my C++ talk about C++ 11 at TechDays 2012. The package is a just a 7 MB because it contains the debug version of the application. No more than 7 MB. Fully native. Fast. Fluid. Secure. Powered by Visual C++ and Windows API. To install the BETA 1, just download the msi and image files in the application folder. Run and send me emails for support information.

Download all on – MyModeler is published under MS-PL.

Microsoft Certificate of Excellence – Do it matters ? – Services vs Products.

When it comes to develop software for real, all these kind of posters disappears. Software developers know how to make softwares. Consulting guys know how to sell services. The jobs are different. The motivations are different. The skills are different. Jobs should not be considered as the same. Consulting vs Software development is a topic that is very difficult to address because the barrier is not so easy to draw under some circumstances. Software development is taking a different approach rather than Services consulting. Softwares are not designed the same way. It’s a long term design against a short term software design. In services, if the solution is re-build and a new architecture is adopted every year, it is not a problem. In the Software Development area, this not an option. Software Development means huge investment. Services just brings solutions and marketing in the perspective of a mission, most of the time with a short timeframe window. Even the marketing phase is completely different. For Software Development, the marketing phase is about product features and it is integrated into a product roadmap. Certifications and Courses are the first step to embrace the consulting services world and its marketing and Services materials but Software Development is another world, like a Y branch, a fork. Far away from the requirements steps, the road to take should be determined but some factors like accountability, quality, delivery requirements, challenges, mobility and team collaboration. Team work is different in both branches. In Services, human collaboration, interaction and communication are very important, more than technical skills or IT expertise. Services challenges are not easy. Software Development most important factors are team collaboration, visions and technical and architecture skills. Every software developer is an Architect and write source code. In Services, few of Senior Consultants write source code. Delivery is complex but different.

Software Development Learning Serie – Part I – The software learning and knowledge approach

Subject: Software Development Learning Serie – Part I – The software learning and knowledge approach

You want to learn about how Microsoft Development is made? How they do? What are the tools? How to join the circle? You want to find a job? It is not very difficult to embrace this world.

– Download the Windows SDK for .NET 4. It’s free.

– Download Visual Studio 2010 Express Editions with all the bundle (C#, VB and C++ ); It’s free.

All the Microsoft softwares (most 90%) are made with C++. So start to learn and climb the pyramid. Learn C++. It takes 6 months. You’ll begin with C, C with classes and then modern C++ 11 techniques. Then, learn the modern languages like Java and C#. It takes 3 months. Then, learn a modern solution product like SharePoint or CRM. It takes 2 months. Learn for a database engine like MySql or SQL Server. Some editions are free. In less than 1 year, you can reach a middle intermediate software development fellow without so much pain. Study. Learn. Train. Build. Enjoy software development. Software development is a noble art. There is not another equivalent job that let you move on board for a modern job with a decent salary.

Windows Architecture – WOSA you missed my little boy

In 1998, it took me 3 months to achieve (with 1 exam failure…) the WOSA Windows Open Service Architecture exam. This exam was really that made me proud to join the Microsoft software development community. Everything is explained, from the beginning. From Windows Strategy, NTOS Kernel, Data Access Strategy to first-class languages like VB, C#, OLE technologies to Unix interoperability. Windows is the root of a certain education for programmers in the Microsoft ecosystem. Wired magazine has 16 heroes for it’s 20th birthdays, there are Steve, Sergey and Bill. Bill had the vision of softwares and software development. This époque is dead. Who can own this now on the Microsoft eco-system? Do .NET makers have achieved their initial goals? Let’s take a look the TIOBE index… C# is only at the 5th rank for a 6.8% market share. C/C++ is 1st with 17.3+9.8. The native stack (C, C++ and Objective-C) is far away from the so called “modern” language. Why? Power and Performance. Fast & Fluid. Run with small memory. Run with few memory resources. C++ is superior. The mobile device competition and the small tablet coming market address a lot of challenges were “productive” language are kept over. Marketing rules have limits. C++ and processor have some but when it comes to run softwares on hardware ships, the native world rules the world. Who said C/C++ was not secure and difficult to maintain? A MBA marketing Director with an Armani tuxedo ? Marketing guys have goals but Strategy is driven by software guys. Thanks for that. Windows 8 is the perfect example where marketing guys has to sell a “complicated” message. Stop SilverLight, just do HTML5 and JavaScript with a WinJS 2MB framework not documented yet… oops. My preferred liquor salesman is when Chris Sells talk about Don Box and its Essential COM book. Hum…. Don Box is my god, I must admit it. WinRT is powered by COM. Don Box is my favorite liquor salesman.

Software Development Ideas and Opportunities

Software development is not easy but when it comes that you realize you use your own tool, it’s cool. In September 2011, I was upgrading some of my PCs and the Office 2007/2010 software activation has failed: too many activations. My new corporate laptop requires a modeling & drawing software to draw Architecture and Infrastructure diagrams during meeting with my company. Installing Visio was an option but I wanted more and because I installed a fresh and new OS, the corporate support was broken…. A friend told me, why you don’t build it?

It took me 6 months to design and build this software.

Now, I will embrace the marketing steps for the software to become a product with documentation, web site, support and may be a business model or a freeware stuff. I also enjoy thinking about a product roadmap where this prototype/demo will grow and may be a new challenge.

This software will be available either on Windows 7 and Windows 8 on the MS Store in some weeks in different versions, with different objectives : C#/XAML and C++/DirectX.

Secure, Native, Fast and Fluid software. Powered by Visual C++.

More to come on this web site :

In software development, you need to Test.

For my application, the testing phase is achieve by my daughter Lisa, 6 years old. She is wonderful little girl and know how to use the product without any help. The icons are self described. Even if the text is in English language, it does not matter. The user interface experience is the only criteria. Drawing shapes, adding bitmaps. Every features is tested. Compared to me who only checks the UI interactions with dockable panes, tabbed view, cascaded events among ribbon that should be propagated to property grid sometimes and sometimes not. It just take a lot of time on the plumbing that could be called the “Composite UI” because all my UI elements are independent. Every pane or windows is a dedicated class. It try to not break the object oriented philosophy but sometimes, I lost my mind. The number of classes that a single guy can handle is very limited. For me, I can remember about 25 classes and around 70%. Since 2 or 3 weeks, I reorganize my classes into dedicated namespaces because there are so many of a flat namespace that…. It becomes difficult to maintain. Sometimes, I am frozen. I don’t know how to handle some UI stuff (most of the time an UI interaction); There are so many classes involved in the operations. My daughter has done a lot of testing. I am very impressed. Without her, I would never have the patience to test again and again.

Exemple: the classes that represent the visible side of the iceberg are: CView .. CDocument.. CMainFrame.. CPropertyGrid.. CFileView.. CSolutionView.. CMDIChildFrame.. CTabbedView… CModeler1View.. CSourceCodeView.. CCommentView. See the bitmaps and you can had 20 classes more to do the real stuff like  enums and structures and some global variables.

But when it comes to change a property of a visible element, you can achieve it on the Ribbon, on the property grid of on the fly with keyboard. Then, the action is different to propagate the changes in all visible part. I have put a dirty class called CElementManager where I braek the document/view of the MFC architecture to put all the real application handler into. This is this part of the application I am currently migrating under Windows 8 RT using XAML technology. The class contains a lot of things. I am currently thinking about a routing mechanism more complicated to handle the UI stuff. Software development is a really challenging activity. It is not easy. It takes a lot of time and concentration. But it is cool.

#pragma once
#include "ElementContainer.h"
#include "Element.h"
#include "ElementFactory.h"

class CElementManager : public CObject
virtual ~CElementManager(void);

// Attributes
// Drawing objects
CElementContainer m_objects;
// Selection objects
CElementContainer m_selection;

COLORREF m_paperColor;
// Page size in logical coordinates
CSize m_size;
CPoint m_lastPoint;
// Current working object
CString m_objectId;
// Current Select action
SelectMode m_selectMode;
// Cursor hanlde
int m_nDragHandle;
// Zoom float factor (default 1.0f)
float m_fZoomFactor;

// Attributes Current UI interaction members
// Is in drawing...
BOOL m_bDrawing;
// Current selected drawing tool
ElementType m_type;
// Current selected shape type from Ribbon
ShapeType m_shapeType;

// Methods for Attributes
//SelectMode GetSelectMode()     { return m_selectMode; }
const vector<shared_ptr<CElement>>& GetObjects() { return m_objects.m_objects; }

// Debugging Operations
void DebugDumpObjects(CModeler1View * pView);

// Operations
void ConnectToMainFrame(CModeler1View * pView);
void ConnectToPropertyGrid();
virtual void Serialize(CArchive& ar);   // overridden for document i/o
void RemoveSelectedObjects(CModeler1View * pView);
void ViewToManager(CModeler1View * pView, CPoint & point);
void ViewToManager(CModeler1View * pView, CRect & rect);
void ManagerToView(CModeler1View * pView, CPoint & point);
void ManagerToView(CModeler1View * pView, CRect & rect);
COLORREF GetPaperColor() const { return m_paperColor; }
void Invalidate(CModeler1View * pView, shared_ptr<CElement> pElement);
void Invalidate(CModeler1View * pView);
void InvalObj(CModeler1View * pView, shared_ptr<CElement> pElement);
CSize GetSize() const { return m_size; }
void UpdateFromPropertyGrid(CString objectId, CString name, CString value);
void UpdateFromPropertyGrid(CString objectId, CString name, COLORREF color);
void UpdateFromPropertyGrid(CString objectId, CString name, long value);
void ActivateView(CModeler1View * pView, bool bActivate, CView* pActiveView, CView* pDeactiveView);

// Managing Object Positions
void MoveToFront(CModeler1View * pView);
void MoveForward(CModeler1View * pView);
void MoveBackward(CModeler1View * pView);
void MoveToBack(CModeler1View * pView);

// Managing Background drawing
void DrawBackground(CModeler1View * pView, CDC * pDC);

// Managing UI object connections
void FindAConnectionFor(shared_ptr<CElement> pElement, CPoint point, CModeler1View* pView);

// Managing UI dependencies (Ribbon UI, Property Grid, ClassView)
void UpdateUI(CModeler1View * pView, shared_ptr<CElement> pElement);
void UpdateRibbonUI(CModeler1View * pView, shared_ptr<CElement> pElement);
void UpdatePropertyGrid(CModeler1View * pView, shared_ptr<CElement> pElement);
void UpdateClassView();
void UpdateClassView(shared_ptr<CElement> pElement);
void UpdateFileView();
void UpdateFileView(shared_ptr<CElement> pElement);

// Managing Object Format
void FillColor(CModeler1View * pView);
void NoFillColor(CModeler1View * pView);
void LineColor(CModeler1View * pView);
void LineWidth(CModeler1View * pView, UINT nID);
void PageColor(CModeler1View * pView);

// Managing Zoom Operations
void ZoomIn(CModeler1View * pView);
void ZoomOut(CModeler1View * pView);

// Load Module Operations
void LoadModule(CModeler1View * pView);

// Managing Object Selection
bool HasSelection();
bool IsSelected(shared_ptr<CElement> pElement);
bool Select(shared_ptr<CElement> pElement);
bool Deselect(shared_ptr<CElement> pElement);
void SelectNone();

// Overridables
virtual void PrepareDC(CModeler1View * pView, CDC* pDC, CPrintInfo* pInfo);
virtual void Draw(CModeler1View * pView, CDC * pDC);
virtual void DrawEx(CModeler1View * pView, CDC * pDC);
virtual void Update(CModeler1View * pView, LPARAM lHint, CObject* pHint);

// UI Handlers
virtual void OnLButtonDown(CModeler1View* pView, UINT nFlags, const CPoint& cpoint);
virtual void OnLButtonDblClk(CModeler1View* pView, UINT nFlags, const CPoint& cpoint);
virtual void OnLButtonUp(CModeler1View* pView, UINT nFlags, const CPoint& cpoint);
virtual void OnMouseMove(CModeler1View* pView, UINT nFlags, const CPoint& cpoint);

My Windows 7 Application need a Capital Venture or a coach…

Regarding of the market and business reality, I really need some boost and features from my modeling application. Just download the source code and ask for more quality, features and ideas. The source code owner is CPIXXI Inc. All Right Reserved to CPIXXI Inc. By downloading the source code named Modeler1.7z.docx (rename it Modeler1.7z), you accept the following restrictions: 1° you cannot modifiy the source code except for learning purposes – 2° you cannot use to source code to make a commercial app. Stay fair. It took me months to have a working software and I have a full consulting job under real and complex Architecture and Infrastructure stuff around CRM, SharePoint, SQL Server, Windows, AD, IIS and so many Microsoft products with co-workers from MCS that, I often build my software during meetings. So because I am a part-time software developer and a Microsoft consultant field guy, I sometimes do not have the time to build so some routine are dirty coded. I admit it. But I keep confident, and my C++ experience allow me to just think of the code with pens and papers. I just use the “dog fog” theory. I use my own software to make my new software. All the conception of my May2012 code edition is built by mymodeler1 feb2012 edition. The source code is dated from February 2012, when I have presented to Tech Days 2012 C++ with a MCS co-worker consultant (AlainZ)…The source code from Feb2012 is just a demo, and it covers few aspect of C++11 except it can be build with boost under a command line with VC9 tools. The may2012 source code contains more stuff and a source code editor integrated into the view and tabbed views. It has a solution explorer, a property view and a file view. It is the prototype for the upcoming real software product : Code Name << UltraFluid Modeler >>.

Every archive (rename the docx to 7z) contains an EXE file under the Debug folder. Just rebuild the solution or use the EXE. Have a vcredit (VC10/VC11) and it should work. If you have probme when running the app, send me an email at :

download here the feb2012 demo

download a better version (more object oriented, with STL and C++ 11 stuff) but buggy version (loading files bug)

CPIXXI Inc. / It requires experts who know Microsoft. And know it well.

MyModeler on Windows 8 – Ready in T-20 days

MyModeler on Windows 8 is under construction. Compare the Windows legacy application with the Metro Style App. To be able to put my application on the MS Store, I have a strong list of requirements and Microsoft validations rules to respect. At this time, my application is built with C# XAML because it compiles fast and it is easy to learn the API and the visible side of the iceberg (not ::ComPtr<t> nor Platform:: stuff) but I just use the public API around the Shapes namespace. This is basic drawing stuff. The API is very minimalist so I just take my MFC classes and I migrate them from C++ to Windows 8. The enhanced GdiPlus like frameworks do not exists in Windows RT… You have to use another way, only XAML or DirectX. I will rewrite my software using C++ and DirectX but the time frame is short. I have tried the C++ way to built on my future platform & vision (native is superior). But the problem is that the C++ pair<Windows 8 CP, C++> is more complicated than legacy Windows C++ Win32 usage… oopps. My cpp handlers crashed in Metro Style Apps, not in C#…. My Excellence lab Windows 8 with Microsoft France occurs in 20 days so I don’t have the time to play with the Stack Trace. Productivity matters!

Learn. Train. Code. ReWrite; Code. Analyze. Ship.

Learning and Knownledge about Metro Style Apps

Few weeks ago, I started developing a real and professional Metro Style App using either C# XAML and C++ XAML. The fact is that because Visual Studio 11 and Windows 8 are only Beta or Alpha releases, there are some bugs in the API but it is not a problem. The XAML editor is really interesting because it is not slow.. It seems the WPF nightmare is out of this stuff or the Team has rewritten a lot of things (I choose the last option). Based on Spy++ and ildasm checks, there are a lot of different ways that differs from VS10 to VS11. The XAML technology could be nightmare for C++ developers who rely on legacy Windows API. Resource editor was easier than XAML/XML language but the mixed pane Editor / XML view has to be learned to be convenient to use. Visual Studio 11 is in my opinion a killer app from the perspective of multiple technologies audience it embraces. C++ is always the best language to write professional apps but the Windows 8 paradigm will welcome as a charm, all the C#, VB and JS developers. Even if every thing is native (XAML controls, WinRT, etc), the view for C#/VB and JS programmers is really attractive. Just build your software the way you want. Stay with your way and just use the wrappers that are shipped with the tools. All the code from VS10 / Windows7 works on my machine. For quick learning and sample explorations, I have done C# XAML prototypes but the C++ XAML is more attractive. I can reuse a lot of my existing code… So the final application (put on the Store) will be a native applications, build for ARM, x86 and x64. The C# version is only for learning purpose…

On the C++ side, there is not so many damages in migrating from legacy UI Windows platform to UI Metro Style App because C++ applications ; modern ones ; have a separation between the UI handlers, the business code and the technical plumbing code – a real and composition/aggregation technique usage that make apps alive for multiple generations of tools & OS. It might not be true for standard .NET applications because things go faster in this land. In C++, we think about software development in another way. C++ developers think for long-term code, not only for a dedicated platform or IDE & compilation tools version. C++ is portable and runs on several OS and can use several UI frameworks so C++ software makers known how to be depend or not of a dedicated piece of software. C++ guys know how to handle portability and compilation or some software components with GCC on the Linux platform for example. C++ is back and now the UI layer provided via XAML technology is one way to stay on the edge. C++ rocks !

Upgrade your VC10 project to VC11 !

Click “Yes”.

C:DevCPPModeler1Modeler1.vcxproj : warning : The builds tools for Visual Studio 2010 (v100) cannot be found. To build using the Visual Studio 11 (v110) build tools, either click the Project menu or right-click the solution, and then select “Update VC++ Projects…”. Install Visual Studio 2010 (v100) to build using the Visual Studio 2010 (v100) build tools.

—— Update VC++ projects started ——-
Updating project ‘Modeler1’…
Configuration ‘Debug|Win32’: changing Platform Toolset to ‘v110’ (was ‘v100’).
Configuration ‘Release|Win32’: changing Platform Toolset to ‘v110’ (was ‘v100’).
========== Update VC++ projects: 1 succeeded, 0 failed, 0 up-to-date ==========

For my project, the result is clean. No more warning. All the C++11 syntax is now warning free rather than VS10 where I had some warnings.

1>—— Build started: Project: Modeler1, Configuration: Debug Win32 ——
1>  stdafx.cpp
1>  TabbedView.cpp
1>  SourceCodeView.cpp
1>  ScintillaDocView.cpp
1>  ScintillaCtrl.cpp
1>  RibbonListButton.cpp
1>  PropertiesWnd.cpp
1>  OutputWnd.cpp
1>  Modeler1View.cpp
1>  Modeler1SourceView.cpp
1>  Modeler1Doc.cpp
1>  Modeler1.cpp
1>  MainFrm.cpp
1>  FileView.cpp
1>  ElementManager.cpp
1>  ElementFactory.cpp
1>  ElementContainer.cpp
1>  Element.cpp
1>  DrawingElements.cpp
1>  DrawingContext.cpp
1>  ClassView.cpp
1>  Generating Code…
1>  Compiling…
1>  ChildFrm.cpp
1>  CalendarBar.cpp
1>  AppInit.cpp
1>  Generating Code…
1>  Modeler1.vcxproj -> C:\Dev\CPP\Modeler1\Debug\Modeler1.exe
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

Why VS11 local documentation is important

Building Metro Style Apps is not so easy and the requirements are heavy. The Store is open for every app that meets all the requirements and all of them are described in the Visual Studio 11 local help. When selling an application becomes part of your business model, the requirement list is more than a software certification like “certified for windows x”. It’s not a marketing logo. If your app does not comply, it won’t be on the store. Check also the dependencies. Some applications have to provide both 32 and 64 bit versions. Some need x86, amd64 and arm targeted apps. Whey do many constraints?

The Windows 8 paradigm is provided and built upon native technologies so you have to understand the compilation steps. You can still rely on C#/XAML way to deliver an app but you miss a lot of features. Think about it. Windows 8 is native. WinRT is native. Windows Runtime Library is template library using native C++. Choose well because a lot of things differs from each way. Even if marketing tell that “all languages are first-class citizen”… there is only on first-class language witch is C++. Windows is always powered by C++. If you need to take the market advantage, stay native.

Windows 8 Metro Style Apps learning and knownledge

To really build good Metro Style Apps, you should download locally the documentation from the Visual Studio 11 BETA. Things are very well explained and documented. Because you can’t rely only on September 2011 BUILD conference presentations, this documentation is a required and you should read it because building a Metro Style Apps is different from building a Windows desktop applications, even if you are a .NET, SL or WPF developer. XAML and WinRT differ in a lot of ways. The learning curve is not really difficult but it takes some times.

Windows 8 Task Manager Improvments

Windows 8 has some changes on the task manager. My testing machine is an old one P4 with 1GB memory but VS11 and Windows 8 runs on it. The new Task Manager has a new look:

To take a look like the old TaskMan, just open the Resource Monitor:

Microsoft technology in Navy and defense warfare

Some IT technologies have changed more than software development for enterprise and corporations. For industries like defense, proprietary operating systems and languages were a requirement. In the last decade, things have changed. Some technologies like .NET Framework and Windows Core technology made some great moves. May be you’re not aware of that but Microsoft also works with Governments and specially the US government. There is a Microsoft for Government consulting services.

In the defense area and in with navy-marine corps, Microsoft have a strong partnership and made a lot of investment to help achieve a major step from old and deprecated proprietary IT to open and standard IT. It covers network, infrastructure and application architecture. In some cases, there was a specific language for every application. It was a nightmare for doing maintenance and new features in every piece of software. Every year, the navy-marine symposium held in Redmond, Microsoft and the Navy presented the coming evolution of the FORCEnet program. It is an IT system for warfare. Do you know the movie War Games? It is the same but 10x times more powerful.

See and


From the field, soldiers have embedded device (Pocket PC) to be able to receive instructions and operate on the field. The technology is deeply integrated into the operation theater. In this case, the Microsoft technology have been chosen to replace all the various others technologies. The devices have solid requirements: stable, robust and live safer.

Do you have built software that could save life using Microsoft technologies?

The softwares are made using Visual C++. Power and Performance, once again.

What else?