<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Jezz Santos</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/jezzsa/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/jezzsa/feed.xml</link>
    <description>From Software Factories to Software Automation</description>
    <lastBuildDate>Wed, 17 Apr 2019 04:12:03 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Automated Code Signing</title>
      <link>https://docs.microsoft.com/archive/blogs/jezzsa/automated-code-signing</link>
      <pubDate>Sat, 15 Jun 2013 15:37:46 GMT</pubDate>
      <dc:creator><![CDATA[Jezz Santos]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jezzsa/2013/06/15/automated-code-signing/</guid>
      <description><![CDATA[I’ve just finished a significant push on automating our signing process over at the NuPattern...]]></description>
      <content:encoded><![CDATA[<p>I’ve just finished a significant push on automating our signing process over at the <a href="http://nupattern.codeplex.com/">NuPattern project</a>. And the results are so good that I felt like I need to share them with others, so you can also benefit from this important process step in your software projects.</p>  <p>So what’s the big deal?</p>  <p>I am sure that every .NET developer has some experience with creating strong named assemblies by now. All you need to do is create yourself a *.snk file (sn.exe –k) that contains both a (public and private key by default), and then configure a couple of assembly level configuration in your project and you are done. This is all fine and good if you are permitted to create and access your own private keys. But if you work in an organization and want your software identified to that organization, chances are that your organization wants to control access to those private keys. Because compromising them amounts to a security vulnerability, and you may have to jump though hoops to get your bits signed in the organization. Many organizations wish to have, and have defined strict processes and governance around getting bits signed using their private keys which they keep under lock and key, quite understandably.</p>  <p>The NuPattern project is a member of the <a href="http://www.outercurve.org/">The Outercurve Foundation</a>, and as well as attributing the projects ownership to the foundation, we also sign and certify our binary deliverables using certificates provided by the Outercurve Foundation. We DelaySign our code with the public key which we store in the source code tree. But in order for the project to sign the bits for public consumption, we need to sign our bits with a private key, which we don’t have access to.</p>  <p>Like many software projects, we strive to build an identity and trust with our customers, and ensure that the authenticity and the integrity of our deliverables are protected. As part of that, we like to strong name and Authenticode sign our assemblies, we also like to Authenticode sign our deployable packages (i.e VSIXes and MSI’s) so they can be downloaded and trusted. Have you ever downloaded something to be told by your browser that it does not look to be trusted, and you should perhaps not install it? So, signing and certifying deliverables is pretty key to building trust with customers, and is a very common practice in use by many software organizations to ensure that what you download and consume are genuinely from the source, and have not been tampered with.</p>  <p>Back when we first developed and released NuPattern (then called VSPAT) before it was open sourced, it was a proprietary product from Microsoft. At Microsoft, any released binary deliverable must go through a rigorous release process to ensure it meets many compliance standards&#160; - as do all software deliverables from Microsoft. There are some very good tools around Microsoft for managing this process as a whole. But one of the critical steps in that process is to get your deliverables signed by the organization. Microsoft, like other large software vendors don’t give their staff access to the private keys of their certificates and asymmetric signing keys. Those private keys are guarded carefully, locked up and protected well behind authorized processes. So how did we get our assemblies strong named signed, and other deliverables Authenticode signed at Microsoft?</p>  <p>Well, at Microsoft they have created their own in-house tools and process flows for getting your deliverables signed for you on behalf of the organization. It is a tightly controlled process, and not that easy to navigate to be fair. The basic idea is that you get time-boxed access to the signing tools in a convoluted approval process. Then you login to a internal corporate web site, you go through an online wizard where you configure the kind of signing you want, then you upload the deliverables to sign, and then at some time later (like days) you get an email to tell you they were signed and can be downloaded from a file share, which requires authorized access as well. </p>  <p>I remember that when I first went thought this process: it took about 4 days to get authorized access from some administrator over email. Then I had to meet strict software configuration on my machine, and dependencies in my browser. Then it forced me to download specific version of some ActiveX control, which was problematic in many browser versions, even Internet Explorer! Then, I got immediately stuck on what option to select for what kind of signing I needed. I just wanted assembly strong name and Authenticode signing at first. But there were many options for all the different kinds of things and keys they have to support. (As you might expect in a company that size, that sign anything from every Microsoft product on the marketplace ever!) After someone (with prior-experience with the tools) gave me the right coordinates, I was away. I would submit my batch job and wait a few days for the results. Overall, end-to-end the process took several days to release the bits – just from signing. It required intense manual configuration in the signing tool, and multiple rounds of signing in our case (see later). Naturally, I was never really very comfortable that I hadn’t forgotten a signing step, or configured each step correctly. The only sense of comfort I could find that things were done right, was intensive, tedious and manual verification that the bits were indeed all signed in the right places, for which there are very rudimentary tools available to help.</p>  <p>When the project was finally assigned to Outercurve and made open source, we faced the same issue of how to get our bits signed with the private keys held by the Outercurve Foundation. At the time, signing bits for other .NET projects at the Outercurve was not in high demand! Which I have to say surprised me, but on reflection appears to be representative of many software organizations. Why? Simply, because providing tools that do such a task in an automated fashion (even partially automated) are HARD to implement correctly and reliably. This is evident from the lack of any online services that can provide such a service to software organizations. [There an idea for an online entrepreneur. Not without its trust challenges I might add].</p>  <p>At the time however the Outercurve strongly desired to support such a key scenario to its projects, and work began in earnest to provide this signing service to its project owners. The results of that push are now realized and fantastic. We have <a href="https://twitter.com/EricOutercurve">Eric Schultz</a> to thank for all his hard work and dedication for getting us there, and furthermore, for enabling the NuPattern project to continue creating regular releases. But first let me explain how we got there.</p>  <p>At the start, there was nothing except a couple of private keys for both strong naming and Authenticode signing assets, and a will to create a signing process.</p>  <p>Eric began working on providing services for automating the signing of project assets. I actually don’t know the details of what Eric started with or how Eric began the work (perhaps you can ask him yourself), but at some point, shortly after, we were working together intensely on Skype signing our assemblies and packages, by exchanging binaries over a online file share (Skydrive), and some time later (minutes to hours) Eric would pass me back my bits signed.</p>  <p>From the project side, initially we had no automation to help us provide Eric with the right bits at the right time. We started off with an automated build that yielded our built packages (VSIXes in this case, which are renamed ZIP files), and an MSI installer. But our VSIXes contain other VSIXes like a Russian doll they nest inside of each other, and every VSIX contains one or more assemblies that would need strong name signing. We also needed to Authenticode sign every assembly, every VSIX package and the MSI package. The signing process, end-to-end requires several steps, with multiple signing phases, it goes something like this:</p>  <ul>   <li>Extract all assemblies from all built VSIXes (we have 8 VSIXes, and about 50 assemblies)</li>    <li><strong>Sign all 50 assemblies (both Strong-Name sign and Authenticode sign)</strong></li>    <li>Reconstruct all 8 VSIXes with the signed assemblies.</li>    <li><strong>Sign the 6 nested VSIXes (Authenticode sign)</strong></li>    <li>Reconstruct the 2 containing VSIXes with the 6 nested VSIXes</li>    <li><strong>Sign the 2 containing VSIXes (Authenticode sign)</strong></li>    <li>Recompile the single MSI installer which packages the 8 signed VSIXes</li>    <li><strong>Sign the 1 built MSI installer</strong></li> </ul>  <p>That’s four <strong>signing steps </strong>each with different assets, each with different signing keys.</p>  <p>Even though we could automate the building of the code to yield the VSIX packages and MSI package, and automate the extraction of the unsigned assemblies&#160; from those VSIXes with some basic batch files, the reconstruction of the VSIXes with signed assemblies had to be performed manually using tools like 7-Zip on the desktop. Over the course of a few hours, we had built a few automated batch files for performing one or two of the steps. None of which automated either the signing or reconstruction steps. You could see those initial batch files in a previous version of the source code (now removed).</p>  <p>The first time around the process, it was basically Eric and myself on Skype uploading the files to a Skydrive, and then Eric downloading them and running his signing routines on them, then uploading back the signed results to the Skydrive. The overall process took about 6 hours to complete. We both had various interruptions with meetings, home life, meals etc., as we were also spanning an 8hrs time zone difference. We finally go it done just before 11pm at night for Eric, and so he signed off for bed. That left me to verify the results and upload the release to our project site. And wouldn't just you know it, it was only at that point that I discovered I had missed a step in the process, and we had signed the wrong bits!! At this point, I had no choice but to wait another half day until Eric and I could get back together again online, and rather frustratingly/embarrassingly (for us both) go over the whole process again. We got lucky that time, at least that’s how it felt given the number of steps and opportunity to miss or muck up a step – hardly a robust and reliable procedure. But it worked that time, thankfully.</p>  <p>Several weeks passed after that first experience, and Eric suddenly announced that the Outercurve signing service had been created and is now available online!!! He even created a <a href="https://github.com/outercurve/SigningService/wiki/How-To-Sign">GitHub open source project</a> for it! And wouldn’t you know it, just in time for us to create a new release of NuPattern, which would need signing again. It has to be said at this point, that although we strive to create regular maintenance drops of the projects, the signing process and its overhead had caused some resistance to dropping whenever we wanted to. Clearly, not the best position to be in.</p>  <p>After Eric had provided our project with the necessary credentials to use this new signing service, and some examples of how to programmatically use it (in both PowerShell and MSBUILD) we were entirely unblocked from building a totally automated process around signing our bits. One that could be executed anytime! like after a CI build! perhaps not that frequently, but certainly that easily.</p>  <p>Work began in earnest at NuPattern. We had already discovered the process we needed, we had already <a href="https://nupattern.codeplex.com/wikipage?title=Building%20Releases&amp;version=18">documented it fully</a>, and had it partially automated it with some rudimentary batch files. All we need to do was convert the batch files into MSBUILD scripts, and weave into that the signing pieces using the new signing service, using the MSBUILD tasks that Outercurve had provided.</p>  <p>The results of this MSBUILD code can now be seen in a single file in the NuPattern project: <a title="SignBinaries.targets" href="https://nupattern.codeplex.com/SourceControl/latest#Src/SignBinaries.targets">SignBinaries.targets</a>. We needed to add the MSBUILD tasks/assemblies provided by Outercurve in our source tree, and also include the 7-Zip binaries in our source tree for this to all work. And we have a simple batch file (<a title="Make-AllAndSign.bat" href="https://nupattern.codeplex.com/SourceControl/latest#Src/Release/Make-AllAndSign.bat">Make-AllAndSign.bat</a>) that builds the code and executes the signing process in one click.</p>  <p>&#160;</p>  <p>The outcome is phenomenal! in one click (or one step added to a CI process) we get our bits built, signed, repackaged and re-signed (as described above)! The overall process takes close to 1 hour to complete. (Most of that time taken to upload and download the various assets to and from the signing service).</p>  <p>In terms of productivity, we have gone from tying up 2 people for about 6hrs, to tying up a CPU for 1hr. But the most important improvement has been the reliability of the overall process. No longer do we have to worry about making manual human errors at any step in the process. The process is entirely automated, and as long as we got the automation steps right, we can guarantee the results are 100% reliable. And that cost saving (in verification and rework) is priceless to us.</p>  <p>At anytime, anyone on the project can now sign the bits. and perform a release. The instructions are <a href="https://nupattern.codeplex.com/wikipage?title=Building%20Releases">fully documented</a> as well.</p>  <p>&#160;</p>  <p>If you are reading this and are interested in how to reap similar benefits in your project, you may want to talk to <a href="https://twitter.com/EricOutercurve">Eric</a>. The code for this signing service is open sourced, and I believe its based on a set of simple Azure services. So why not build one in your organization? and save heaps of time and money getting your projects bits signed the right way?</p>  <p>Perhaps this signing service could be the first of its kind to lead the way in a new set of services that could be provided for *any* organization? who knows?</p>]]></content:encoded>
    </item>
    <item>
      <title>Software Development Automation Conference 2013</title>
      <link>https://docs.microsoft.com/archive/blogs/jezzsa/software-development-automation-conference-2013</link>
      <pubDate>Wed, 22 May 2013 13:49:18 GMT</pubDate>
      <dc:creator><![CDATA[Jezz Santos]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jezzsa/2013/05/22/software-development-automation-conference-2013/</guid>
      <description><![CDATA[I just came across this announcement. Seems like a perfect fit for where NuPattern contributes its...]]></description>
      <content:encoded><![CDATA[<p>I just came across this announcement. Seems like a perfect fit for where <a href="http://nupattern.codeplex.com/">NuPattern</a> contributes its value.</p>  <p>We need someone to attend or present NuPattern.</p>  <hr />  <p>On May 29th, 2013, the first Software Development Automation Conference (SDAconf) will be held in Amsterdam. SDA is a conference for anyone who wants to learn more about automating software development, using model-driven development (MDD), domain-specific languages (DSLs), code generators and language workbenches.</p>  <p>SDA specifically targets software developers, architects and managers. So, not only technical issues, but also organisational and commercial aspects of software development automation will be addressed. Main purpose of the conference is to exchange knowledge of and experience with model-driven development, across industry and academia.</p>  <p>Model driven development has enthusiastic supporters, but also has to face sceptical critics. By means of this conference, we want to revive this subject. Efficient construction and maintenance of software is becoming more and more important. Change is constant. Software is more and more becoming a living organism. Software has to evolve continuously in order to satisfy its users. Model driven development is the answer to this.</p>  <p>Many tools exist for model driven development. These are evolving towards complete language workbenches, for rapid development of domain specific languages and code generators. Next to these, one can also find out-of-the-box model-driven solutions for business automation. The SDA conference is the place to see these developments at work.</p>  <p>So, do you want to increase quality, efficiency and predictability of your software development process? Then join us at SDA 2013, on May 29th, 2013.</p>  <p>Our web site: <a href="http://www.sda2013.nl/">http://www.sda2013.nl/</a>     <br />Our email address: <a href="mailto:sdaconf2013@languageworkbenches.net">sdaconf2013@languageworkbenches.net</a>     <br />Follow us on Twitter: @SDAconf </p>]]></content:encoded>
    </item>
    <item>
      <title>NuPattern Updated!</title>
      <link>https://docs.microsoft.com/archive/blogs/jezzsa/nupattern-updated</link>
      <pubDate>Thu, 16 May 2013 14:47:20 GMT</pubDate>
      <dc:creator><![CDATA[Jezz Santos]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jezzsa/2013/05/16/nupattern-updated/</guid>
      <description><![CDATA[We just released our first minor update to NuPattern, version 1.3.21.0. No big deal, it just fixes...]]></description>
      <content:encoded><![CDATA[<p>We just released our first minor update to NuPattern, <a href="http://visualstudiogallery.msdn.microsoft.com/332f060b-2352-41c9-b8dc-95d8ad21329b">version 1.3.21.0.</a> No big deal, it just fixes some minor issues for the previous major release.</p>  <p>However, for the first time EVER we <em>appear </em>in the ‘Updates’ of the Extension Manager in Visual Studio.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/54/40/metablogapi/2844.AutoUpdate_75BCAD8A.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-40-metablogapi/2844.AutoUpdate_5F00_75BCAD8A.png"><img style="display: inline; background-image: none;" title="AutoUpdate" border="0" alt="AutoUpdate" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/54/40/metablogapi/4073.AutoUpdate_thumb_0674326C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-40-metablogapi/4073.AutoUpdate_5F00_thumb_5F00_0674326C.png" width="568" height="394" /></a></p>  <p>I have to tell you that this <strong>IS </strong>a <em>big </em>deal to me, and perhaps others on the project who started with the project back in late 2009. We have had to wait a very long time (more than 3 years) to have presence in this nifty piece of UI with our stuff in it. Helping make sure everyone stays up to date with the technology! It is huge for us.</p>  <p>&#160;</p>  <p>If you are wondering why we have had to wait so long for this, here is a summary:</p>  <ul>   <li>The NuPattern project started in late 2009, and our first release followed 3 weeks later. We had something like 15 regular releases in 2010 as the project was incubated, proven and hardened. However, all these releases were hidden from public view as part of a ‘internal’ enterprise initiative between Microsoft and Raytheon. You can learn more about that <a href="https://nupattern.codeplex.com/wikipage?title=Project%20History&amp;referringTitle=Documentation">here</a> and <a href="https://nupattern.codeplex.com/wikipage?title=Project%20Thanks&amp;referringTitle=Project%20History">here</a>. After that initiative concluded, VSPAT (as it was known at the time) continued to be hardened and applied to other Microsoft initiatives, for other enterprise customers, none of which saw the public light of day. It was used in a public ‘Microsoft Amalga’ product release as their tooling platform, but ‘Microsoft Amalga’ is not really the sort of product you would buy shrink-wrapped, or for general consumption. The platform of VSPAT was as such, kept internal at Microsoft.</li>    <li>In late 2011, Microsoft finally open sourced the project on CodePlex, and we had the 19th release (1.2.19.0) on the Visual Studio Gallery. This being the first celebrated public release. </li>    <li>Then disaster struck. Further releases of VSPAT were seriously hampered because of the critical <a href="http://blogs.msdn.com/b/jezzsa/archive/2013/04/16/microsoft-contributes-feature-builder-to-nupattern.aspx">‘Feature Builder Power Tool’</a> dependency that we had was not being supported for VS2012 by Microsoft. Prevented us releasing any updates, and that held us up for another 8 months!</li>    <li>That issue finally resolved, in March of this year we released the 20th version (1.3.20.0) of NuPattern, but the branding, identity and binary compatibility had to be seriously overhauled because of the transition from Microsoft ownership to Outercurve ownership, and with the support for VS2012, and integration of the ‘Feature Extension Runtime’ – i.e. no chance possible for an automatic update of NuPattern there.</li> </ul>  <p>Not until yesterday could we finally put out there a release (1.3.21.0) that could ‘automatically’ continue the journey of NuPattern.</p>  <p>&#160;</p>  <p>We hope you all update soon, and look forward to new updates as we move the technology forward.</p>  <p>Congrats again to all that made this journey possible.</p>]]></content:encoded>
    </item>
    <item>
      <title>Feature Builder Power Tool Future</title>
      <link>https://docs.microsoft.com/archive/blogs/jezzsa/feature-builder-power-tool-future</link>
      <pubDate>Thu, 09 May 2013 03:08:29 GMT</pubDate>
      <dc:creator><![CDATA[Jezz Santos]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jezzsa/2013/05/09/feature-builder-power-tool-future/</guid>
      <description><![CDATA[The ‘Feature Builder Power Tool’ was originally built by the Visual Studio Architecture team as a...]]></description>
      <content:encoded><![CDATA[<p>The ‘Feature Builder Power Tool’ was originally built by the Visual Studio Architecture team as a component of an overall vision to deliver software factory tooling to enterprise customers. The work started in earnest in 2008, and the FBPT project concluded within about 6-8 months. The project had a grander vision, but never received further funding to reach its full potential. Since its first release on the <a href="http://visualstudiogallery.msdn.microsoft.com/67b720f4-9a50-41cb-86a2-82e33b7c5fc4/">Visual Studio Gallery</a> in 2009, the project has attracted some success. </p>  <p>The project delivered two parts:</p>  <p>The first part, the core part, was a Visual Studio extension that hosts Guidance Workflows in Visual Studio bringing contextualized and automated guidance into the IDE. It delivered both a ‘Guidance Workflow Explorer’ window which illustrated the workflow, and a ‘Guidance Browser’ window with which to browse the content of the individual elements in the workflow. A ‘Guidance Workflow’ is composed from of a set of instructional or informational steps, that can be sequential and multi-branched, and can be conditional on both manual gestures (like a tickbox) and automated conditions calculated form the development environment. The benefit of using such rich workflows is that they can not only help you understand a process where you could check off steps as you perform them manually, but also the workflow itself can calculate completed steps based on what you have done in your solution. The workflows allow multiple threads of concurrency in the workflow, which enables teams to complete complex or long running processes concurrently. As steps are completed in the workflow, new steps and paths through the process light up. You progress through the workflow until it is completed. Basically, it is an automated workflow processing engine. Very powerful indeed, especially for instructional kinds of guidance.</p>  <p>The second part of the power tools was the set of developer authoring tools that you used to design such guidance workflows. </p>  <p>Both part one and two were bundled together in the <a href="http://visualstudiogallery.msdn.microsoft.com/67b720f4-9a50-41cb-86a2-82e33b7c5fc4/">‘Feature Builder Power Tool’ extension</a>.</p>  <p>At the time, the Visual Studio Architecture team decided to base the ‘authoring’ tools of the FBPT on the new UML Activity Diagram that they were marketing heavily. As such they purposely decided to restrict the building of guidance workflows to Visual Studio Ultimate customers only. A huge oversight in my mind, as it put contextual guidance out of reach for many who could have benefited from utilizing guidance. This move also inadvertently stifled the uptake and adoption of guidance workflows across the marketplace for ordinary developers, since they were not privileged enough to create it. IMHO building guidance should have been a thing Microsoft should have encouraged to all and any Visual Studio user, building bigger momentum around this new technology and approach. But alas, the authoring experience with the UML Activity designer turned out to be super clunky, very tedious and ultra esoteric. And furthermore, the guidance that shipped with the authoring tools, that was supposed to help you build better guidance workflows!, was a very poor example of why there was any value in building guidance workflows in the first place! A lot of hard but important lessons were learned from that release, especially how not to treat and address your potential marketplace. However, the technology did speak for itself, and as such has seen some adoption and praise.</p>  <p>Unfortunately, soon after the public release of the FBPT tools, the team that built them was disbanded quickly, and the tools have had little support since. Its predecessor: the Guidance Automation Toolkit (GAT) was being made obsolete around the same time. And when VS2012 was being announced there was no plan from Microsoft to support the ‘Feature Builder Power Tool’. Unaware of this, FBPT customers who had taken a bet on the technology were left high and dry and without an alternative, or roadmap, as was the whole software factories community.</p>  <p>Until very recently, the ‘Feature Builder Power Tool’ project has been slowly languishing. With many bugs, installation issues, a poor authoring experience, bad ratings, and no encouragement and support from the Microsoft Visual Studio team. Sadly, the project has suffered a great deal of loss over the last few years, and has even angered a few.</p>  <p>However, there is now some great news about the FBPT project. If you remember, at the start of this post, I mentioned that the FBPT was a component of a larger strategy around delivering a full suite of software factory tooling. The other components of that strategy came together, with the guidance workflow piece, into the <a href="http://nupattern.org/">NuPattern project</a>. There is a great story to tell here one day, but the short story is that NuPattern was designed to build upon the guidance component that was shipped in the FBPT, and extend it out much further to complete the overall tooling strategy, and it is still evolving. NuPattern was to be the set of domain specific development tools and integration platform that you built and ran your software factories upon. However, the NuPattern project called ‘PLATU’ at the time, was concealed from public view and so this remaining part of the strategy was invisible to people interested in how the FBPT technology was going to evolve, and what Microsoft was doing in that space. </p>  <p>The NuPattern project has always had a very large and deep binary dependency on the runtime component of the FBPT, right from the start. This is because it not only drove the requirement for building the FBPT technology in the first place, but it also needed to deliver the missing piece around domain specific development tooling that was needed to build a software factory or toolkit. About a year ago NuPattern (called ‘VSPAT’ at the time) was finally released.</p>  <p>As the FBPT wasn’t supported for VS2012 or later, the NuPattern project faced the reality of having a stagnant foundational dependency, that prevented shipping NuPattern for VS2012. After several months of negotiation and due process with Microsoft, they contributed the source code of the runtime components of FBPT to the NuPattern project. This single and celebrated collaborative act enabled the NuPattern project to finally ship a VS2012 version, and removed the crippling stagnant dependency. And with that one move, support for the core runtime components of the FBPT have moved to the NuPattern open source community. Great news for anyone who was either interested in, or still interested in the ‘Feature Builder Power Tool’.</p>  <p>NuPattern has always had guidance workflow support. And its has always had its own supported authoring experience for building guidance workflows, that is a great deal easier and far more intuitive than using UML Activity diagrams. Which makes creating guidance workflows available to all Pro/Prem and Ultimate customers in NuPattern! </p>  <p>If you are still using, or used the ‘Feature Builder Power Tool’ extension to build ‘Feature Extensions’, and you saw value in the concept of sharing guidance workflows. And you want to create more of them - look to building a NuPattern Toolkit instead. A NuPattern toolkit brings a far superior platform for your guidance and automation to be experienced by your Visual Studio users. (and just quietly, its a great deal easier to create and support than a feature extension).</p>  <p>That said, there is no direct and supported path to migrate a ‘Feature Extension’ built with FBPT to a NuPattern toolkit. You can however, keep the code and guidance you may have had in your feature extension, and with some rework, repurpose them in a NuPattern toolkit. The concepts are almost identical because NuPattern has always used the foundation of the FBPT runtime. Same concepts, same classes, but now a different namespace, and richer context for your guidance.</p>  <p>&#160;</p>  <p>In a nutshell: for all those on the ‘Feature Builder Power Tool’ or those who lost faith in the FBPT project, and still have an interest in the technology - check out the <a href="http://nupattern.org/">NuPattern project</a> and give us your suggestions and feedback on how to continue to evolve contextual and automated guidance for you.</p>]]></content:encoded>
    </item>
    <item>
      <title>Narrator Inquire Within</title>
      <link>https://docs.microsoft.com/archive/blogs/jezzsa/narrator-inquire-within</link>
      <pubDate>Fri, 03 May 2013 03:58:00 GMT</pubDate>
      <dc:creator><![CDATA[Jezz Santos]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jezzsa/2013/05/03/narrator-inquire-within/</guid>
      <description><![CDATA[We have long needed a decent video screencast that helps explain what NuPattern is all about for...]]></description>
      <content:encoded><![CDATA[<p>We have long needed a decent video screencast that helps explain what NuPattern is all about for first time visitors to the NuPattern project. Something that gives a first timer an inkling of an idea what NuPattern does. It does not have to make logical sense even, but to walk away with a clear idea of what you would use NuPattern for. </p>  <p>Well now we have such a candidate video <a href="https://www.youtube.com/watch?v=_cauA-TUuBk">on YouTube</a> - but it is silent – no voiceover!</p>  <p>The director and producers have done the hard work in scripting the video and producing it, but we are missing the most vital element, someone to explain what’s going on in the video!</p>  <p>The producers of the video don’t feel that their voices are suitable for the narration, so just for fun we are going to try a new idea, and recruit a narrator from the community. </p>  <p>So, the project is looking for anyone who would like to step forward, who likes the sound of their own voice, to be our voice of NuPattern, and bask in the glory of influencing many people to step in the direction the project is tracking.</p>  <p>Please apply within, post your interest on <a href="https://nupattern.codeplex.com/discussions/439710">this discussion thread</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Why is NuPattern relevant to you?</title>
      <link>https://docs.microsoft.com/archive/blogs/jezzsa/why-is-nupattern-relevant-to-you</link>
      <pubDate>Tue, 30 Apr 2013 20:00:17 GMT</pubDate>
      <dc:creator><![CDATA[Jezz Santos]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jezzsa/2013/04/30/why-is-nupattern-relevant-to-you/</guid>
      <description><![CDATA[Perhaps you blog software technology solutions, or write technical articles or presentations for...]]></description>
      <content:encoded><![CDATA[<p>Perhaps you blog software technology solutions, or write technical articles or presentations for your organization that are intended to document for others what you have learned about implementing the solutions that you have built. Perhaps you hope that others will reproduce your proven results. Perhaps you have a role in ensuring those without your knowledge and mastery of software implementation follow your guidelines and wisdom. The success of any approach is limited to how much time you can invest in explaining the details of your solution to people who don’t have your level of expertise. Such as: explaining the context of how your solution is applied and when, how it may vary based upon other people's needs, the need to know details about the technologies and frameworks it applies to, and any choices about its implementation that could be made to tailor it to their needs. It is a ton of information to cram in any kind of document that just anyone can read and understand well enough to comprehend fully the way you do. Let alone, how someone else without perhaps your deep knowledge and experience should practically and reliably integrate your solutions into their existing solution, or how to adapt the solution for their own requirements or constraints, which will surely be different from yours.   <br />&#160; <br />When you master proven implementations that can be reused, you tend to derive generalized and extensible patterns in them that you may see value in re-applying to other projects or solutions. So, how do you teach someone else to repeat those solutions and patterns the way you understand them? </p>  <p>Well, instead of just documenting step-by-step instructions on how to implement these patterns, best practices or solutions, and then just hope someone understands it as well as you do to a degree they can repeat it reliably – you could instead build a Pattern Toolkit that applies and automates the implementation of your solution or pattern reliably, consistently and correctly for them. </p>  <p>A toolkit that not only includes all the assumptions, details and information about the solution to be built, but includes custom tools and guidance to build it, and integrate it into an existing solution. A toolkit that has a simplified user interface, with templates, wizards, custom automation, menus, drag &amp; drop and integrated guidance etc. that can be configured to suit the specific needs of those using it. </p>  <p>Your Pattern Toolkit will allow others to make choices and selections about how the pattern can be configured to apply and accommodate their specific requirements and constraints. It can even allow other pattern toolkits to plug into it, extending it further. </p>  <p>It will integrate and apply your best practice or patterns automatically, correctly and rapidly, and still allow manual customization of the final solution if needed. And, if your Pattern Toolkit does not quite or exactly meet the needs of the next project/community, anyone can install NuPattern, take your Pattern Toolkit, and extend or customize it for their specific needs (requirements, technical constraints etc.) without having to start from scratch again – and without your source code! </p>  <p>Finally, it’s important to understand that the intricacies of building and deploying custom tooling in Visual Studio are conveniently taken care of for you. A Pattern Toolkit is generated for you and is packaged in a single deployable package that can be emailed, posted on a blog, or downloaded from the Visual Studio Gallery. You will never need to learn all about the complexities of Visual Studio commands, menus, tool windows. It is all generated for you.</p>  <p>If this sounds like something you should be doing, go and <a href="https://nupattern.codeplex.com/">get NuPattern</a> today!</p>]]></content:encoded>
    </item>
    <item>
      <title>NuPattern Released!</title>
      <link>https://docs.microsoft.com/archive/blogs/jezzsa/nupattern-released</link>
      <pubDate>Mon, 29 Apr 2013 20:07:29 GMT</pubDate>
      <dc:creator><![CDATA[Jezz Santos]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jezzsa/2013/04/29/nupattern-released/</guid>
      <description><![CDATA[It is with great pride and some trepidation that I would like to announce the release of the first...]]></description>
      <content:encoded><![CDATA[<p>It is with great pride and some trepidation that I would like to announce the release of the first version of NuPattern (v.1.3.20.0). Go get it <a href="https://nupattern.codeplex.com">here</a></p>  <p>I say first version version, because prior to this moment in time the product was called VSPAT, for which we have 19 previous releases. But NuPattern isn’t just a new name for the thing, it is a new direction and alignment that marks the independence of this product from its prior benefactor Microsoft, and opens it to a new community direction in developer tooling. NuPattern is now free to evolve by the development community to address broader market concerns around domain specific development and custom tooling development in Visual Studio. It is a huge milestone in this space.</p>  <p>One of these days, the story of NuPattern will emerge for those interested in its roots of development. For now though, we are hoping to start to build a new community around the project and take it in a new direction that adds value to any and every software development or deployment project. Please get involved.</p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft contributes Feature Builder to NuPattern</title>
      <link>https://docs.microsoft.com/archive/blogs/jezzsa/microsoft-contributes-feature-builder-to-nupattern</link>
      <pubDate>Tue, 16 Apr 2013 20:02:24 GMT</pubDate>
      <dc:creator><![CDATA[Jezz Santos]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jezzsa/2013/04/16/microsoft-contributes-feature-builder-to-nupattern/</guid>
      <description><![CDATA[Today, Microsoft contributed the ‘Feature Extension Runtime’ components (the engine) of the ‘Feature...]]></description>
      <content:encoded><![CDATA[<p>Today, Microsoft contributed the ‘Feature Extension Runtime’ components (the engine) of the ‘<a href="http://visualstudiogallery.msdn.microsoft.com/67b720f4-9a50-41cb-86a2-82e33b7c5fc4/">Feature Builder Power Tool</a>’ to the <a href="http://nupattern.codeplex.com/">NuPattern</a> project!</p>  <p>This is fantastic news, and the NuPattern community is very grateful to all those at Microsoft who have made this generous contribution.</p>  <p>&#160;</p>  <p>For those that may not be familiar with the significance of this move, the ‘Feature Extension Runtime’ (FERT) engine is the foundation upon which the NuPattern project was build, a key strategic dependency, and FERT exposes not only the some critical runtime components for NuPattern, but also provides the ability to run contextual and stateful guidance in Visual Studio. The ‘Feature Builder Power Tool’ is no longer supported in Visual Studio 2012, and having this contribution allows NuPattern to move forward to support Visual Studio 2012.</p>  <p>The ‘Feature Builder Power Tool’ was created by the Visual Studio Architecture Team as a first step in the direction of a new generation of contextualized automation tooling, which NuPattern then extended to add an automation platform and model-driven development approach for creating a new wave of domain specific tooling in Visual Studio, now available to everyone.</p>  <p>Now that the FERT components are integrated into the NuPattern project, we shall be able to support and extend this technology moving forward in current and future Visual Studio versions, and provide the ability to all developers to benefit from in-solution contextual guidance.</p>  <p>It marks a great moment in the history of the NuPattern project, and brings to light the work that Microsoft had invested over the last 5 years in a new generation of automation technologies that continue the to deliver on the vision of ‘Software Factories’ and ‘Domain Specific Development’.</p>  <p>&#160;</p>  <p>More than anything though, this contribution now makes it possible to complete a new version of NuPattern for Visual Studio 2012. Which has been long awaited, and is now imminent.</p>  <p>&#160;</p>  <p>We would like to recognize the efforts of the following people who have been key in this contribution: Brooke Hamilton, who has done all the hard work in driving and shepherding this contribution from Microsoft to the NuPattern project. This task which has taken months to complete, has been monumental in both effort, patience and tenacity to bring this valuable asset to us. To Gareth Jones from the Visual Studio Ultimate team who has worked closely with the project to make this key contribution. The team that originally created this contribution: David Trowbridge, Jack Greenfield, Michael Lehman, Christof Sprenger, Daniel Cazzulino and Mariano Rodriguez. And finally to the efforts and care of the Microsoft legal team, and the Outercurve Foundation team for getting us to this point.</p>  <p>Roll on the VS2012 version of NuPattern!</p>]]></content:encoded>
    </item>
    <item>
      <title>Need a New Challenge</title>
      <link>https://docs.microsoft.com/archive/blogs/jezzsa/need-a-new-challenge</link>
      <pubDate>Mon, 11 Mar 2013 13:57:00 GMT</pubDate>
      <dc:creator><![CDATA[Jezz Santos]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jezzsa/2013/03/11/need-a-new-challenge/</guid>
      <description><![CDATA[Bit of a shameful plug for myself, but finding work seems to be a little difficult right...]]></description>
      <content:encoded><![CDATA[<p>Bit of a shameful plug for myself, but finding work seems to be a little difficult right now.</p>
<p>I&rsquo;ve been consulting globally for Microsoft for the last 11 years and been helping software development organizations across many industries and geographies, assuring delivery of their solutions and products. Now that I have left Microsoft as a Principal there, I am now looking for new opportunities in the local or global marketplace where I can contribute my experience. Ideally, I would wish to have a significant impact in generating new value for a progressive software organization or community, who perhaps need help in moving to more efficient and sustainable product development practices and processes. Keen to pursue new opportunities or existing ones.</p>
<p>Ideally, the organization or community will recognize that they have significant customer value and revenue to grow, and that their IT capability may not be realizing its full potential in delivering business value efficiently, or at a level of quality and integrity that delights their customers, and grows their social capital in the marketplace. They probably recognize that their current IT capability may be wasteful and slow to apply itself to new market opportunities, or unable to change to serve changing business needs cost effectively. They recognize that fostering self-empowered teams, continuous improvement and the requirement to drive delivery excellence and higher quality is critical in moving forward in today&rsquo;s business environment. They are looking for strong and experienced leaders to help develop and mature their IT capability.</p>
<p><a href="http://nz.linkedin.com/in/jezzsa"> <img src="http://www.linkedin.com/img/webpromo/btn_profile_bluetxt_80x15.png" alt="View Jezz Santos's profile on LinkedIn" width="80" height="15" border="0" /> </a></p>
<p>Please let me know if you may know of any opportunities you think I should pursue.</p>]]></content:encoded>
    </item>
    <item>
      <title>Desperately Seeking Contributions</title>
      <link>https://docs.microsoft.com/archive/blogs/jezzsa/desperately-seeking-contributions</link>
      <pubDate>Sat, 16 Feb 2013 19:23:16 GMT</pubDate>
      <dc:creator><![CDATA[Jezz Santos]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jezzsa/2013/02/16/desperately-seeking-contributions/</guid>
      <description><![CDATA[As we reach the next milestone of the NuPattern project, the 1.3.20.0 release, I need to be looking...]]></description>
      <content:encoded><![CDATA[<p>As we reach the next milestone of the NuPattern project, the 1.3.20.0 release, I need to be looking to grow a new group of contributors to the project.</p>  <p>The acceptance and adoption of the technology has evidently been very slow to date, and this is understandable given that most people who encounter the technology are given little draw to it from any real visual example or illustration of what it can do for them. Its a great platform, so we say, but who has used it?</p>  <p>If there was only one thing I would wish for right now, its that someone could create a screencast of a toolkit built with NuPattern. </p>  <p><a href="http://nupattern.codeplex.com/discussions/433400">We Need Help!</a></p>  <p>We don’t even need someone to build a new toolkit to do this. We have such a toolkit over at the <a href="http://mvcpat.codeplex.com/">MVCPAT project</a>, and I have even documented each step of a walkthrough showing off all the cool features of it. It is just that we need a video of that walkthrough to excite people and given them a quick look at what NuPattern can do for them or their communities. This is such a critical asset for generating interest in the project, that without this first step it it is extremely hard to sell the value of the NuPattern platform.</p>  <p>After the screencast we will need more examples of toolkits other have built in the public domain. Its not that no one has built any toolkits with this technology, there are many 10’s of them out there within enterprises, its just that none of them can be shared with the public. Which again does not help demonstrate the effectiveness of the NuPattern technology. We need more publically available toolkits to show off the benefits of building and using toolkits. </p>  <p>If we had the above two things, I believe that is all it would take to get the project moving in the right direction, and have the community involvement to keep it moving. I never in a million years imagined that NuPattern would be pleading for new contributors moving forward given the history and success of the project, but the reality of the situation is that here we are.</p>  <p>So humbly, I am <a href="http://nupattern.codeplex.com/discussions/433400">requesting your help</a>.</p>]]></content:encoded>
    </item>
  </channel>
</rss>