Lori Lamkin, Microsoft’s Director of PM on Shifting to Azure DevOps – Episode 007

In this episode, Jeffrey speaks with Lori Lamkin, Microsoft’s Director of Program Management. She has been leading the Visual Studio Team Services program management since the conception of Team Foundation Server in 2002 that’s 16 years in the space of better shipping software using Microsoft technologies! She led the transition of the team to Agile methodologies, to open source reuse, to Cloud services, and Azure.


Lori and Jeffrey discuss what’s next for Lori in and of her role as Director of PM, her strategy behind leading the big shift from VSTS to Azure DevOps, the current roles and duties within Microsoft Azure DevOps, what she sees as the biggest shift in progressing from Agile and adopting DevOps, and how DevOps has become more and more efficient.


Topics of Discussion:

[:51] About today’s guest, Lori Lamkin!

[1:18] Jeffrey welcomes Lori to the podcast.

[3:22] Lori speaks about the strategy behind leading the big shift from VSTS to Azure DevOps.

[5:42] What’s next for Lori in and out of her role as Director of PM? What has she been up to?

[8:18] Lori gives some background on Azure DevOps history.

[15:37] Lori talks about the current roles and duties within Microsoft Azure DevOps.

[18:08] A word from Azure DevOps sponsor: Clear Measure.

[18:34] How the organization for Azure DevOps is structured much differently than many other organizations.

[20:38] What Lori thinks is the biggest shift in progressing from Agile and adopting DevOps.

[23:34] Why everyone in Lori’s team is a Software Development Engineer.

[25:08] Did Lori’s team used to have Systems Engineers (otherwise known as IT Pros)?

[27:18] The broad set of skills that is required of the developers to operate the components of Azure DevOps that the Azure Data Center is running on.

[28:55] The change in business with DevOps and how it has become more efficient.

[31:21] Lori’s take on the culture change CEO Satya Nadella is driving as well as his 1ES (one engineering system) plan.

[35:26] Is there no software Git can’t handle?

[36:18] Where Lori suggests you further your learning after listening to this episode.


Mentioned in this Episode:

Azure DevOps
Azure DevOps Services
Azure Cloud

Clear Measure (Sponsor)

Microsoft Secrets: How the World’s Most Powerful Software Company Creates Technology, Shapes Markets, and Manages People, by Michael A. Cusumano

Satya Nadella on transforming Microsoft’s culture

More about Satya’s One Engineering System initiative




Want to Learn More?

Visit AzureDevOps.Show for show notes and additional episodes.


Follow Up with Our Guest:

Lori Lamkin’s LinkedIn

Check out this episode!

Edward Thomson on All Things Git, libgit2, and Azure DevOps – Episode 006

This week, your host, Jeffrey Palermo, brings you a recording, live from the Microsoft Ignite conference. He interviews Edward Thomson, the Principal Program Manager for Azure DevOps, the maintainer of libgit2 (the git library), a host of All Things Git (a podcast about Git), and the curator of Developer Tools Weekly (a weekly newsletter with developer tool news). After the tight-knit company Edward was a Software Engineer for Teamprise was acquired by Microsoft, Edward transitioned into the role of Software Engineer with Microsoft, then GitHub briefly, 6 years later. After Github, Edward returned to Microsoft in 2017, this time as their Senior Program Manager and most recently, as their Principal Program Manager (since two months ago).

Edward is a huge mover and shaker in the Git area of Azure DevOps Services. And in this episode, he answers questions that tons of teams continue to ask in the space. He also speaks about his many side projects: libgit2, All Things Git, and Developer Tools Weekly.


Topics of Discussion:

[1:11] About today’s episode and guest.

[1:37] Jeffrey welcomes Edward to the podcast.

[2:13] A bit about the Microsoft Ignite conference.

[3:31] How Edward landed the role he’s currently in, with Microsoft.

[6:38] Does the work Edward has been doing with Git, precede him joining Microsoft?

[9:58] A word from Azure DevOps sponsor: Clear Measure.

[10:24] What is libgit2? What does it do?

[13:11] Is there any source code that won’t work with Git?

[16:18] Version control of binary files — where does it all break down?

[18:11] Is there a file size that’s too large for Git?

[20:14] Does Edward recommend checking in your NuGet packages?

[24:12] When did the use of shallow cloning (for repositories) come about?

[26:44] What is Edward and the Azure DevOps team thinking about pushing forward with the Git engine (when Microsoft acquires GitHub)?

[30:03] Edward talks about his weekly newsletter, Developer Tools Weekly.

[31:29] What was in Edward’s weekly newsletter that he sent off just this morning (of recording this podcast).

[34:36] All about Edward’s podcast, All Things Git.

[36:27] Edward answers some FAQs in the Git area of Azure DevOps!

[47:03] Edward’s parting words for listeners on today’s podcast.


Mentioned in this Episode:

Microsoft Ignite

Microsoft Ignite’s Twitter
ADP: Buck Hodges episode

ADP: Donovan Brown episode
ADP: Sam Guckenheimer episode


All Things Git Podcast

Developer Tools Weekly


Visual Studio


Clear Measure (Sponsor)




Azure Repos

Game Developers Conference (GDC)


Shallow Cloning
Azure Pipelines



Want to Learn More?

Visit AzureDevOps.Show for show notes and additional episodes.


Follow Up with Our Guest:

Edward Thomson’s LinkedIn

Edward Thomson’s Twitter

Check out this episode!

Performance tuning an Azure DevOps build configuration

We’ve all seen the culprits that constantly add time to builds.  One might observe that your NPM install or Nuget restore can take several minutes.  I remember back to the times of CC.Net in 2005 when a small application build could happen in 45 seconds, including unit tests.  And 10 minutes as a “thou shall not go over this” threshold.  So we cannot allow NPM or any other step to take minutes.  We have to ferret that out.
The answer is the same as code performance profiling.  Find out where every build is spending the same time doing work that adds no value or doesn’t vary often. Then we cache the result.  For so many builds, these are the culprits that take time but typically aren’t the changes that are being tested from build to build:
  1. Obtaining a build server (when choosing hosted build agents)
  2. Cloning the source
  3. Package restores
  4. Copying/archiving build artifacts
Here are my common solutions for reducing these common culprits (I’d be interested to know how others have eliminated these time sucks)
  1. Use our own Azure VMs as the build agents (running multiple agents on a single VM) – always available at a moments notice
  2. Let Azure Pipelines be a little less aggressive with cleaning source and instead have the build script delete the build directories at the beginning – removes need for a full clone and can just be a pull (works most of the time and requires probably a monthly purge for a clean clone, but saves SOOO much time)
  3. a) retain cloned working tree so that the previous package restore is used for subsequent builds or b) check in packages so that package restores are not necessary for every build
  4. Once builds are working and reliable, only archive the build artifacts that are directly used by the release pipeline (typically the nuget packages that house the application components)

Dave McKinstry on Integrating Azure DevOps and the Culture of DevOps – Episode 005

This week, Jeffrey Palermo is joined by his guest, Dave McKinstry. Dave is a Program Manager with the Azure DevOps Services Community Team — connecting with partners and customers, spreading modern practises, and helping developers succeed with DevOps and Azure. Prior to his position at Microsoft, he has been in software services and technical sales for over 18 years. As a consultant, principal consultant, co-owner, and manager, he has always helped people efficiently build better software. He loves what he does as a technologist and enjoys being a part of today’s rapid technology evolution.


In this episode, Jeffrey and Dave talk about changes for Dave since the launch of Azure DevOps, what his journey has been like in the DevOps industry, his thoughts on companies looking to integrate Azure DevOps and move forward with automated deployment and reaching the continuous integration mark, how he thinks developers can move forward in terms of quality and Agile 101, and the modern skillset of what a developer and/or system engineer should look like in today’s DevOps environment.


Topics of Discussion:

[:39] About today’s guest, Dave McKinstry.

[1:00] Jeffrey welcomes Dave to the podcast.

[1:14] How it has been for Dave since the launch of Azure DevOps.

[1:25] Which side does Dave work on? Azure DevOps Services or Azure DevOps Server?

[2:58] Is Dave going to be at the Ignite event?

[3:10] What has been Dave’s journey through (what we now talk about as) modern practices and shipping software?

[5:25] How is it with Dave’s customers in regards to getting to continuous delivery and the continuous integration mark.

[8:03] The general nature of smaller and larger companies from a business perspective.

[10:03] Dave’s thoughts on the companies integrating Azure DevOps looking into moving forward with automated deployment.

[12:20] A word from Azure DevOps sponsor: Clear Measure.

[12:48] How developers can move forward with quality and Agile 101.

[15:10] How did the culture of DevOps (Dev and Ops) come together?

[17:57] Dave’s take on the relevant tasks of 15 years ago, no longer being relevant in today’s DevOps environment.

[20:28] The modern skillset of DevOps and what developers and system engineers need to be doing in the current DevOps world.

[21:29] About the benefits of Dave’s standing treadmill desk (that he’s currently using during the recording of the podcast)!

[25:40] Dave and Jeffrey’s early schooling, programming, and typing experiences! And the contrast with modern day schooling and the changing world.

[28:59] Dave describes the term ‘machine learning’ and the impact it has.

[33:15] What Dave recommends listeners should do next.


Mentioned in this Episode:

Azure DevOps

Azure DevOps Services

Azure DevOps Server

Microsoft Ignite event
Application Lifecycle Management (ALM)
Team Foundation Server (TFS)


Better Business Bureau

Clear Measure (Sponsor)

Agile 101

Mythical Man-Month: Essays on Software Engineering, by Fred Brooks




Want to Learn More?

Visit AzureDevOps.Show for show notes and additional episodes.


Follow Up with Our Guest:

Dave McKinstry’s LinkedIn

Check out this episode!

Why I started the Azure DevOps Podcast

I wanted to share a little bit of my reasoning for starting the Azure DevOps Podcast.  The above video is about 4 minutes long.  Please take a look.  Feel free to play at double speed.  The gist of it is I like seeing developers having fun.  Busted releases are not fun.  All-weekend deployments are not fun.  New things breaking when you make a code change are not fun.  And software development can be SO MUCH FUN!  I’ve spent 21 years so far as a professional programmer – not counting the toy apps and websites outside that time. I still love it, and I would like to share that joy with anyone I can.

Here are some links I mention in the video:


Steven Murawski on Infrastructure as Code – Episode 004

Welcome to the 4th episode of the Azure DevOps podcast! Today, Jeffrey Palermo is joined by special guest, Steven Murawski. Steven is the Lead Cloud Ops Advocate at Microsoft and leads the Cloud Ops Advocacy team focused on DevOps SRE and Cloud Native scenarios with Azure. He is an active member of the Chef and WinOps communities and a maintainer for several open source projects including Chef, Habitat, and Test-Kitchen. Steve focuses specifically on infrastructure within Azure DevOps.

This episode, Steven Murawski explains the basics of infrastructure, which tools and infrastructures he recommends for those putting together their DevOps tool belt, the value in defining your infrastructure as code, where to get started and how to modify your infrastructure on the fly, and how to minimize your opportunities for failure.


Topics of Discussion:

[:51] About today’s topic and guest.

[1:31] What is Steve currently up to in regards to work?

[4:49] The basics of infrastructure.

[8:11] As people are putting together their DevOps tool belt, which tools and infrastructures does Steve recommend for the Microsoft shops?

[9:21] Steve explains what Terraform is and what you can do with it.

[11:35] How Steve sees the value in defining their infrastructure as code.

[13:31] Where to get started in this “infrastructure as code” world (and modifying your infrastructure on the fly.)

[18:07] A word from Azure DevOps sponsor: Clear Measure.

[18:33] Steve speaks about tweaking infrastructure, minimizing opportunities for failure, and applying testing principles to the infrastructure’s code.

[20:00] What format do these tests live in and where are they running from?

[23:55] At what level of granularity do you break up the ARM files?

[28:45] Once an application has been running for a while, what does the path look like to change something that’s already there when you don’t want to start completely fresh?

[31:20] When do you release a new build?

[33:47] Do you push a new release through the release part of the Pipelines with an existing build?

[36:55] Steve speaks about the Chef and WinOps communities he is a part of, as well as the open source projects he helps maintain.

[44:41] Where to get started with infrastructure as code.


Mentioned in this Episode:

Azure DevOps

Infrastructure as Code (IaC)





ARM Templates

Azure DevOps Portal

Visual Studio Code



Azure QuickStarts on GitHub

Clear Measure (Sponsor)

InSpec for Chef


Azure Powershell

Azure CLI

Working Effectively with Legacy Code, by Michael Feathers


Donovan Brown’s project: yoTeam

Stack Overflow


Want to Learn More?

Visit AzureDevOps.Show for show notes and additional episodes.


Follow Up with Our Guest:

Steven Murawski’s Website

Steven Murawski’s LinkedIn

Check out this episode!

Sam Guckenheimer on Testing, Data Collection, and the State of DevOps Report – Episode 003

This episode, Jeffrey Palermo welcomes his guest Sam Guckenheimer, to the podcast! Sam is the Product Owner for the Azure DevOps product line at Microsoft, and has been with the Microsoft team for the last 15 years. He has 30 years of experience as an architect, developer, tester, product Manager, project manager, and general manager in the software industry worldwide. His first book, Software Engineering with Microsoft Visual Studio Team System, was translated into 7 languages and recognized as a de facto guide for teams adopting Agile practices. He’s also a frequent speaker at industry conferences.

Sam explains the exciting new offer around Azure Pipelines for open source teams, changes he has seen in the industry from his many years of working at Microsoft, and some of the biggest changes in how users work with Azure DevOps. He also provides tons of key insights into the findings and research around predicting the impact Microsoft’s changes will make on user interactions, good practices around gathering live site telemetry and data collection, architectural (or design decisions or patterns) that help or hurt the live site supportability of a complex system, and key takeaways from his own internal learnings and the State of DevOps Report.

Check out this episode!

Donovan Brown on How to Use Azure DevOps Services – Episode 002

Welcome to the second episode of The Azure DevOps Podcast — with your host, Jeffrey Palermo. Jeffrey is joined by his guest, Donovan Brown, to discuss how to use Azure DevOps services. Donovan is a Principle DevOps Manager at Microsoft, helping developers do great things with DevOps methods on the Microsoft platform. He has been with Microsoft since December of 2013, and has been a developer for 20 years.


This episode, Jeffrey and Donovan talk about the whirlwind it’s been since the launch of the new Azure DevOps, key information new developers might want to know when beginning to use or incorporate Azure DevOps, some of the changes to their services, what’s available for packages in DevOps, the free build capabilities Microsoft is giving to open source projects, some of the new capabilities around GitHub integration, and more!


Topics of Discussion:

[:52] About today’s topic and guest.

[1:02] Jeffrey welcomes Donovan to the podcast and he speaks about the name change and what it’s been like since the launch.

[4:25] Donovan shares his background in developing and his day-to-day duties at Microsoft.

[11:47] How the Team Foundation System has morphed through the phases to Azure DevOps.

[14:59] The key things new developers need to put into the various pieces (the continuous integration build, the deployment, etc)? What concepts should they think of?

[19:27] Donovan explains some of the changes to Azure DevOps services that allow you to pick and choose what you want to use.

[21:08] A word from Azure DevOps sponsor: Clear Measure.

[21:37] Donovan talks about some of the new capabilities around GitHub integration.

[24:00] What is YAML?

[27:44] How developers manage YAML.

[29:10] Donovan speaks about what’s available for Packages in DevOps.

[34:22] About the new open source pipeline listing.

[36:20] About the free build capabilities Microsoft is giving to open source projects.

[37:00] What Jeffrey and Donovan love about the free availability of Azure DevOps for open source projects.

[38:58] Donovan explains the concept of an unbreakable pipeline, its capabilities, and what makes it so exciting.

[43:30] Donovan’s suggestion for listeners to go do after listening to this week’s episode.


Mentioned in this Episode:

Azure DevOps

yo Team


@DonovanBrown on Twitter



Clear Measure (Sponsor)




Dynatrace’s Podcast: PurePerformance


#LoECDA on Twitter (for any questions on Azure DevOps)

Channel 9


Want to Learn More?

Visit AzureDevOps.Show for show notes and additional episodes


Follow Up with Our Guest:

Donovan Brown’s LinkedIn

@DonovanBrown on Twitter


Check out this episode!

Buck Hodges on the introduction to Azure DevOps Services – Episode 001

Welcome to the first edition of The Azure DevOps Podcast! Your host, Jeffrey Palermo is joined by guest, Buck Hodges, to announce the global release of Azure DevOps Services. Buck is the Director of Engineering for the Azure DevOps product group and has been at Microsoft for over 15 years.

Check out this episode!


Applying 4+1 Architecture Blueprints to Continuous Delivery

imageYou may just be learning about the iterative, emergent architecture method known as “4+1”.  You can read the original paper here.  Written by Philippe Kruchten in 1995, this 15-page paper lays out the views that are needed in order to communicate the architectural elements of a software system. Coursera has a good summary video in their course catalog here.

Architects in other professions go through similar thought processes as software architects, so it can be useful to borrow the graphical outputs that these other architects generate as illustrations of the decisions made while finding a solution suitable to the problem.

Continuous Delivery is an umbrella terms used to describe the process for an automated system that takes changes to the source and configuration of a system and flows those changes through a process and ultimately to a running production system while catching quality issues. Jez Humble maintains a very useful site dedicated to continuous delivery here.

I recently presented a sample 4+1 architecture to the Cloud Austin user group. Since I received several requests for the diagram, I’m posting it here. If you have any additional questions, contact me.  I’m always happy to help.  Additionally, I have a high-resolution PDF of this diagram (ARCH D in size, if you would like to print it on a plotter).

DevOps 4 1 Architecture Blueprints 200