Vincent Thavonekham, CEO FactoVia, Microsoft Regional Director & MVP Azure 1/ Founder FactoVia 2/ Coach / Consuting : Microsoft Azure, DevOps, ALM TFS 3/ Looking for a challenging job with great conditions ? or need training ? Contact me via https://www.linkedin.com/in/thavo/ or https://twitter.com/vThavo
Saturday, November 30, 2013
What’s new in Microsoft ALM 2013, hosted in Windows Azure, VISUAL STUDIO ONLINE
Tuesday, November 5, 2013
Wednesday, October 16, 2013
Presentation: Take the advantage of Windows Azure to market your application in SaaS, with real-life testimonials and feedback
With a testimonial based on real case application that is used to predict sales' stocks deployed as a SaaS application into Windows Azure.
Quality enforced though FxCop / StyleCop / Resharper and NDepend v5 !
(An English version is planned to be written...).
Saturday, July 27, 2013
Book review : StyleCop Code Analysis How-to
http://bit.ly/19mPNkQ
I am a real fan of StyleCop and FxCop for the last 4 years or so (see how many rules FxCop+StyleCop).
Up until now, I have been only build up my knowledge from my own experience and reading blogs.
The small size of this book allows a broader vision rapidly, and covers things that I never had the time to implement on real projects (such as VS Templates, or files headers).
I also finally understood why my Resharper did not work with my StyleCop, which was an easy thing to fix.
It is worth reading !
Friday, July 26, 2013
And the most warriors of us stayed up until 1 in the morning where we were talking about TDD!
Free drinks and special hotdogs to accompany our discussions.
Wednesday, July 3, 2013
TFS Build number used as AssemblyVersion in AssemblyInfo.cs
Finally, after years of struggling with AssemblyInfo.cs files to be updated to track assembly versioning, here IS an EASY WAY to do this thing, which should have been made easy in the first place in TFS. In the past, I used a more sophisticated way of doing it.
The credit to this method goes to Steve Fenton, who explained his method called "Automatically Updating Your AssemblyInfo The Wrong Way".
To me it is less elegent than doing a full workflow foundation solution, but it solves my problem quick ! So that a good solution. Secondly, maintenability is also great, as it is based on a plain text Batch file. No need to recompile deploy, …
The secret lies the following steps :
|
- the only mini-change that one could barely notice the link icon on the AssemblyInfo.cs file. Here is a representation in both Visual Studio 2013 Ultimate preview and Visual Studio 2012 Ultimate
ZOOM ! on AssemblyInfo.cs |
The result is instantaneous … on every single step of my software factory, it is highly traceable with the unique ID of the TFS Team Build of 370, as illustrated below.
(1) Displays on an “About Page” the exact version of the application, based on the assembly version of the AssemblyInfo.cs,
(2) This version number is dynamically generated by TFS Team Build during the Continuous Deployment process (called _CD).
This guaranties the uniqueness of this number. In this example, it is Build# 370, which gives a version 1.0.0.370.
As a result, we could go up to 1.0.0. 65534,
where 65534 = UInt16.MaxValue – 1= 65535-1
Then you can open the TFS Drop Folder to verify that ALL your assemblies have the correct assembly version.
(3) From TFS Cloud, you’ll get a Zip file that has got the unique suffix “CD_370”, and in the App.publish, you could unzip the Windows Azure package *.cspkg
(4) Once unzipped into the folder “???CD_370”, you’ll see the DLLs
(5) Check the first DLL; we could see the magic happened: The assembly is tagged as 1.0.0.370
(6) Check another Assembly: still 1.0.0.370 !!
DONE ! and Enjoy !!
And the most time consuming part to was to find the proper solution, since many great alternatives are present in CodePlex. I’m sharing this trick hoping it’ll save you plenty of time… and another wish is that one day, an easy feature to activate will appear TFS / VSO !!
Note: If needed, here is an example of a batch file.
SET version=%~1 SET year=%DATE:~6,4% ECHO //// This file is auto generated by AssemblyVersion.bat >> %outfile% ECHO [assembly: AssemblyConfiguration("")] >> %outfile% ECHO //// Version information for an assembly consists of the following four values: REM %tfstool% checkin %outfile% /comment:"***NO_CI*** Assembly Info Increment" /noprompt |
Sunday, June 30, 2013
Win Azure with Visual Studio 2013 Preview on Windows 8.1
Since my previous post, after a fast reformat and the installation of Windows 8.1, the installation of Visual Studio 2013 Preview (with ALL options), was smooth and relatively fast. To avoid this pain, you could also mount a Windows Azure VM that is ready for you to try: http://visualstudio2013galleryimage.azurewebsites.net/ Because VS2013 supports the development of Windows Phone 8.0, the installation has activated and configured Hyper-V (image 1). | ||
A fast reboot allows us to start rapidly with VS2013 (Image 2). We can see how the new version handles an optional sign in into VS2013 (image 3). Then, another Windows Account is needed to log into you Team Foundation Service in the Cloud Azure. (Image 4). |
Once VS2013 is started I ran into TFS to open my Windows Azure project… and a now common error is this one:
The Azure SDK currently available is not compatible with VS2013. Although, I tried to cheat and used a “Microsoft Web Platform Installer 4.5”. |
This is confirmed by this MS documentation: https://www.windowsazure.com/en-us/develop/visual-studio-2013/#not-supported :
“Features that are not yet supported in Visual Studio 2013
The Windows Azure SDK for .NET is not compatible with the Visual Studio 2013 Ultimate Preview. This means that Visual Studio 2013 can not yet be used to author, debug, or publish cloud service projects. In addition, no Server Explorer support is available for features other than Mobile Services, and streaming logging is not available for web sites. An SDK release that is compatible with Visual Studio 2013 will be available later in the summer.”
And this one: http://msdn.microsoft.com/en-us/vstudio/dn250998.aspx
It doesn’t fully matter, because even without a Windows Azure Project, I could use the old fashion “Web Publish” to deploy into Azure on my existing Could Service.
The first thing I wanted to try was the handy “Peek Definition” which is a variant of “Go To Definition”, except that you stay on the same page, and the definition is displayed inline.
For the other new features available in VS2013, it is quite pleasing to see that it is getting better and better. However, the drawback of that is that one have to always keep up to date on what’s available to produce be best possible application !
Many attempts to install Visual Studio 2013 preview on Windows 8.1 preview
Sunday, June 23, 2013
Encounters with Trinity: Large-scale Implementation on Azure Platform
Thursday, June 20, 2013
Agile evening with Innovation Games(C) at Objet Direct !
4 hours of "Serious Games", game storming, beers and pizza ! Very instructive and great team building!!
Thanks to Maxime Bonnet, our Qualified Instructor, on the top of the 8th floor of Objet Direct :
Wednesday, June 12, 2013
Traps to consider when implementing "Software Factory" and DevOps
It's in French, and I can create an English version on demand.
Sunday, May 12, 2013
[DevOps / DevCloud] Wanna go beyond 'demo effect' and push your app into REAL production ?
- We want to produce to best of the best application according to all
possible "best practices" and recommendations (Code
quality, tools, methods, Agility vs. micro-management, waterfall, real
world constraints, ...),
- Things seem to be so easy, because we got
presented trivial demos or we only considered "Proof
Of Concepts".
- Taken into account real delivery and operation constraints :
- ITIL v3 (support, billing, delivery,
licensing, ...), DevOps or DevCloud, legal aspects, IT security
people, ...
- The IT industry is moving so fast that to beat competitors, many
software companies are claiming they can address your problem and is only
presenting you trivial cases and we tend to focus only on
development aspects. .
- No budget beyond development, to address many operational topics!!
- No time left because delivery and operational aspects are more
difficult than expected
- You don't know how to deliver on time because of unexpected purchases
you have to do (production licensing, buy an alternative deployment tool,
because the one considered only managed to deploy your easy trivial demo...),
- You forgot to consider backups, disaster recovery, SLA, maintenance,
and retirement of the application (with the associated cost of the
cleaning up all backups).
- Development, "true" test, deployment with real-world constraints
(true DNS, true SLL certification ...), monitoring of the production instance
...
This is to force you address topics that could be uncovered... and fail fast if you are stuck in front of a wall! - Use Agility and DevOps / DevCloud to face real
problems:
"Think big, act small, fail fast; learn rapidly" (cf. Lean software development)
- highlights real-life issues
- show how to address them (if possible)
- or find a hack around.
Wednesday, April 24, 2013
At Seattle / Redmond working with Microsoft for ObjetDirect
- ALM Software factory,
- Windows Azure,
- Microsoft consulting and development,
- any other Microsoft technologies.
I would like to thank ObjetDirect and Edouard Danel, our CEO, whom I had the chance to meet though my numerous network in Paris (ranging from Agile, .Net, to PNL and "Transactional analysis"...).
Monday, February 18, 2013
NDepends... or How to pass your code quality audit ?
As far as I am concerned, I appreciate it because it forces us to care even more about code Quality and maintainability (which includes security, performance, Design...). Maintainability is particularly important because once in production, the Dev team will hand-over their code to the Maintenance Team.
Because such audit consists in watching numerous aspects, it all brings me back to an old post of mine listing the number of rules that FxCop and StyleCop monitors. Where the various rules are grouped into the following categories :
FxCop (or its variation integrated within Visual Studio called Code Analysis, or CA, that compiles your code then analyse it):
- Design
- Globalization
- Interoperability
- Maintainability
- Mobility
- Naming
- Performance
- Portability
- Reliability
- Security
- Usage
- Documentation
- Layout
- Maintenability
- Naming
- Ordering
- Readability
- Spacing
- Developers find it painful to comply to containing rules, as opposed to "no rules" at all of "his own home-made rule",
- Since the developers DONT have to learn all 400 rules at before hand, but ONYL progressively, it is not too bad. Moreover, with the help of Resharper, this tool reformats tedious painful and repetitive work automatically (Resharper can connect to FxCop and StyleCop so that it changes your code accordingly)
- Because of the Software Factory preventing check-in in any code that is NOT compliant to the given rules (NOTE: You have to determine with your team, which rule are compulsory, and which ones are not), the developers HAVE to follow the rules,
- Finally, within few months of coding, a survey done in the teams I have been working with shows that developers got used to it,
- And last, it becomes irritating for them to read code that IS NOT compliant (just like reading a book with plenty of grammar and spelling mistakes).
It's where NDepends enters into play ! It's a software that I have been using for nearly 10 years, written by Patrick Smacchia (author of books and blog dedicated to .Net, C# and Code Quality).
As far as we are concerned, the auditor came in and has inspected meticulously all aspects of our projects technically (the audit consisting in evaluating our Agility/Scrum process was done by another company) :
- all our source code,
- our DLLs and PDBs
- our web services
- and architectural diagrams
One snapshot will not be sufficient, because it's only when you can play visually with your code through Drill-Down (up until the exact line of code) that you could understand its power.
Where to start ?
You have to "feed" NDepend with as much info as you can (*.Sln, *.csproj, DLLs, PDB, ...) in a Drag & Drop manner, then it could "answer" many of your technical questions concerning your projects.
Indeed, for me it considers your "project" (Source Code, PDB, DLLs, previous version of your source code, new code, ...) as a LARGE database, wich MANY different views (too much to fit in a single Snap shoot):
where you could :
- Query your code as if it was a SQL Database, based on the CQLinq (Code Query Linq language is based on LINQ).
from m in Application.Methods
where m.NbLinesOfCode > 30 && m.IsPublic
select m
// UI layer shouldn't use directly DB types
warnif count > 0// UI layer is made of types in namespaces using a UI framework
let uiTypes = Application.Namespaces.UsingAny(
Assemblies.WithNameIn("PresentationFramework", "System.Windows",
"System.Windows.Forms", "System.Web")
).ChildTypes()
// You can easily customize this line to define what are DB types.let dbTypes = ThirdParty.Assemblies.WithNameIn("System.Data",
"EntityFramework", "NHibernate").ChildTypes()
.Except(ThirdParty.Types.WithNameIn(
"DataSet", "DataTable", "DataRow"))
from uiType in uiTypes.UsingAny(dbTypes)
let dbTypesUsed = dbTypes.Intersect(uiType.TypesUsed)
select new { uiType, dbTypesUsed }
The list of the thousands of build-in rules is listed here.
- Among the various features, I noticed the feature consisting in monitoring shifts in your code coverage and another one to prevent code quality regression, but I did not have the chance to use it: http://codebetter.com/patricksmacchia/2013/02/07/ruling-code-quality-regression
As per today, I am using the version 4.1.0.6871 (which incorporates a stand alone version as well as a VS 2010 and VS 2012 add on to play directly with your source code).