How to compress a Team Foundation Server backup

You may have noticed that a Team Foundation Server backup is about the same size than your collection database. It’s “normal” because the backups are usually not compressed. There is no compression option in the backup wizard on the administration console: this feature is controlled on the data tier, in the SQL Server database configuration.

In Server properties > Database Settings, there is a “Compress backup” option. After the Data tier is restarted, the new backup is now smaller:


You’ll see a big difference when the database contains a lot of artifacts about test results and code coverage for example. All the details on the TFS backups are on MSDN.


[EN] Synchronize visual studio 2013 across several different screens

My new laptop has a really great screen with a resolution of 3000×1800. Of course it is not possible to work on a 15” panel without help, so Windows let me use a zoom factor (200% in my case). Visual Studio 2013 works great with this resolution and zoom but I still had to make some little adjustments for the font size.

Continue reading

[EN] Professional Team Foundation Server 2013

Last month I received a free copy of the brand new book “Professional Team Foundation Server 2013”. TFS and visual Studio 2013 have a lot of features, and it is more and more difficult to have a consistent reference. Even if I work on TFS since 2007, it is not possible to always know all the functionalities of TFS. Unconsciously, we always focus on the most well-known features. This book helped me to update my skills on some new customization details I didn’t noticed.

I prefer the paper version (even if the book is heavy: more than 850 pages)  because I can take the book with me to my clients and use it as reference, especially when I need to deal with IT services or project managers. This book is also a perfect start if you plan to pass the MCSD exam on TFS and Visual Studio. With the book and the virtual academy videos, it should be easy.

If you migrate from TFS 2012 or less, I suggest you to read the chapter 7 on Git and chapter 20 on Release management: it is maybe too early, but you’ll probably use them every day in the near future. So it is important now to see how they can change the way you work.

Good reading!

[EN] My last year on pluralsight

I have been enjoying my  pluralsight MVP license for a year now.  Let me share with you some of the courses you should also see:


JavaScript for C# Developers: best course to start learning javascript. I stopped reading javascript as C# code after this course. Now javascript is no more a mystery for me

jQuery Fundamentals:  this is the logic next course. Very important course to see if you want to start web development

ASP.NET MVC 5 Fundamentals: have seen a lot of ASP.Net MVC courses, but this is the last one. I decided to watch it for the Web API 2 and SignalR parts at first.


SQL Server: Why Physical Database Design Matters: Every .Net developper should watch this one. Very interresting.

MDX Fundamentals: As javascript: to stop reading MDX like SQL.

Programming & Langages

The Testing Framework: simple and powerful test framework. even better if you use it with nfluent.

Clean Code: Writing Code for Humans: to watch on a regular basis, to be sure to write awesome code.

C++ Advanced Topics & Modern C++ Libraries: I tried to refresh my old c++ skills. Need to practice now!


[EN] Git, TFS & access rights: leave my master branch alone!

Where are my access rights!?

If you switched from TFVC to Git, you’ll notice that there is no access control at file level. This is because the Git model is not adapted to have this kind of access rights. Git is still a secured source control system and TFS/VSO have a large set of access rights to configure.


From a developer’s point of view, the most important rights are:

  • branch creation (repo level):  with this right you can control who can create branches on the server repo. That does not mean that developers cannot create branches locally (branch and repo level):  they just cannot push them to the server without this right.
  • Rewrite and destroy history: very dangerous, but can be useful to avoid already synced commit rebased and pushed to the server
  • Tag creation (repo level): as branch creation, this right is useful to manage the repository structure

If you have several repositories, you can also define the default behavior for all repositories at project level:


By default, contributors can push new branches and tags to the repo. You can change that directly at project level and define a specific group for these operations.

Limited access to the master branch

Another possible scenario is to isolate the master branch: no developers are allowed to push commits on it. A dedicated team is in charge of merging developers branches into the master branch: very useful if you have feature teams. This scenario can be applied to any branch of your repository.

How to switch to Git if you have different access level per directories?

The git approach is different. In this case you should create several repository with specific access rights for each one.  Git submodules is maybe your solution. Submodules are not handled by Visual Studio, but you can change that.


[EN] How to configure notepad++ with git as default editor

The multisession mode of notepad++ can create some issue with git when Git needs to open a temporary file. notepad uses the current opened instance and closes the one opened by Git. This behavior makes Git think that you have finished to update the file. The best thing to do is to modify the default editor with a specific instance of notepad++

Start by opening the configuration file: here the system one:

git config --system –edit

Now add this line in the “[core]” part:

editor=\"c:/program files (x86)/Notepad++/notepad++.exe\" -multiInst -nosession

The “-multiInst” flag forces notepad++ to open a new instance for the file and the “-nosession” flag is used to not retrieve the files of the previous session. The “-notabbar” can also be used.

[EN] Wilinq–Generated classes & queries

With the last version of Wilinq, you can now generate classes that are mapped to your workitems types (how to here):

if (scrumProject.IsSupported<bug>()) 
{ // this query only works for Scrum template 2.0 
  var bugQuery = from bug in scrumProject.SetOf<bug>() 
                 where bug.Title == "Build Failure in Build: MonApp_20130328.2" &amp;&amp; bug.AssignedTo == QueryConstant.Me 
                 select bug; 
  var bugResult = bugQuery.ToList(); 

Wilinq is available on nuget and uses the TFS 2012 object model.

[FR] 2 semaines avec Here Drive + et CR-200

Mon précédent GPS m’ayant lâchement abandonné en me laissant un simple message: “assert.c failed assertion… (je vous passe les détails)”, j’ai décidé de franchir le pas en me servant de mon téléphone (Lumia 920) comme GPS. J’ai donc commandé le socle CR-200 qui permet un rechargement via induction. Me voilà donc équipé d’un GPS grand écran d’un socle simple à utiliser et en plus avec une prise USB supplémentaire qui permet de charger un autre téléphone. Le trajet était le suivant: partir de Paris et arriver à coté de Montpellier et m’en servir pour se balader dans la région.

Dans l’ensemble je suis satisfait: Here Drive + fonctionne très bien. J’ai adoré la possibilité de naviguer dans la carte et de revenir sur la position courante juste avec des gestures simples. Les voix sont claires et précises (sauf peut être sur les sorties ou entrées d’autoroute). Mais quelques détails sont venus un peu gâcher la fête:

Détail #1: l’induction c’est bien, mais pas suffisant.

J’ai eu la désagréable surprise de découvrir que Here Drive + consommait plus de courant que le socle fournissait. Techniquement je n’aurais pas pu faire 4h de trajet avec le GPS allumé. Heureusement que 97% de mon trajet était de l’autoroute. C’est vraiment désagreable de faire un trajet en voiture et d’avoir son téléphone déchargé

Détail #2: bien attacher le téléphone et vérifier 2 fois.

Le CR-200 utilise 2 bras avec de la mousse qui enserre le téléphone. La fois où j’ai mal vérifié le serrage, le téléphone est tombé à la première accélération

Détail #3: Here Drive + connait pas le “faites demi-tour le plus tôt possible”

En campagne, m’engageant dans la mauvaise route, Here Drive a préféré me faire rouler 10km dans le mauvais sens plutôt que me dire de faire demi-tour

Détail #4: Les cartes pourraient être meilleures

Problème de vitesses, routes qui n’existent pas sur les cartes… Mais j’imagine que c’est le problème de tous les fournisseurs de cartes

Détail #5: le manque de POI

A part les POI de base, rien ne s’affiche sur la carte. Exemple: chercher une station “Total Access”: pas réussi.

Détail #6: la prise en compte et la visualisation du traffic

C’est surtout ce détail que j’ai regrété par rapport à mon ancien GPS. Ce genre de chose d’évite un gros “fail” qui se caractérise par un amboutteillage lors des retours de vacances.

Malgré cela, je suis satisfait. J’espère que le traffic arrivera bientot!