Saturday, 3 September 2016

Damo's Podcast Highlights 2016 #35

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[RunAs Radio] The Science of DevOps
  • Nicole is one of the key people behind the State of DevOps report (published by Puppet).
  • The conversation digs into some of the findings in that report, including the proof that stability and speed are not mutually exclusive - you can bring new features and products to market quickly while keeping your systems stable.

[.NET Rocks!] Feature Toggles
  • The conversation starts out talking about different kinds of features toggles, starting with the classic one that allows you to build features over time, but keep the code in the trunk, just not visible to the users until you're ready.
  • In some cases, that feature toggle because permanent because it is a tool for ops to reduce load on a server at peak times.
  • Toggles are also a strategy for A/B testing of different features, styling and advertising

[Focus 53] What Football Has Taught Me About Business and Life
  • Short memory
  • How to lose
  • How to spot leaders
  • How to be a leader
  • Controlling your emotions
  • Setting, working for, and achieving goals
  • Life isn't always fair.
  • Hard work
  • Knowing who you are
  • Discipline
  • Responsible for yourself
  • Managing time
  • Focusing on what you can control

[Eat Sleep Code Podcast] Six Figure Developer

[Startups For the Rest of Us] Our Favorite Tabletop Games
  • Many games mentioned here, if your into table top games this is worth a listen. They put the games into 3 different categories by age range and difficulty and share some stories on how their families and kids enjoy them.

Tuesday, 30 August 2016

Damo's Podcast Highlights 2016 #34

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[RunAs Radio] Building a Blameless Post-Mortem Culture
  • How do you build a blameless post-mortem culture?
  • A methodology embraced by the safest and most reliable organizations - think aircraft safety. Having everyone involved in an incident able to discuss everything they did and saw helps to get a clear picture of the truth. Without that information, it's very hard to make real improvements in our organizations.
  • ChatOps as a strategy to get there, using tools like Slack to let people see the conversations going on and capture the critical information during an incident to address problems.

[Hello Tech Pros] Motivation
  • Neither the carrot or the stick are advantageous. Tap into intrinsic motivations: passion and purpose.
  • Everyone wants to count.
  • It’s important to have a support group around you that believe in your vision.
  • Quit because you don’t like it. Don’t give up if you think you can’t.
  • Convince yourself you MUST follow your dreams.
  • You don’t need to take MASSIVE action, you just need to take some action. Start now rather than later.
  • Get clear on your passion and purpose. What’s your underling emotional benefit for what your going for?

[Troy Hunt] Understanding account enumeration, the video tutorial edition
  • What is account enumeration?
  • How do you protect against it?

[London devops] 18 - London DevOps #18 @ Facebook
  • This is the event that Ruben and I attended back in June
  • Getting Bits from Developers to Users: How we ship
  • Continuous Integration in the Data Center Provisioning Space
  • IoT Project Canned: Let's Use Docker.

[.NET Rocks!] Patterns and Anti-Patterns
  • Developer Habits, good and bad
  • Discussions about anti patterns in software development

[Developer Tea] 3 Things Aspiring Developers Should Be Doing Today
  • Not easy, require effort
  • Eliminate the bottom 20%, remove all activities that do not provide value
    • Focus on the things on the critical path
  • Make one single value statement for the next 6 months 
  • Make learning about yourself a priority

Tuesday, 23 August 2016

Damo's Podcast Highlights 2016 #33

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[This Agile Life] Moving from Scrum to Kanban
  • What is Kanban and how does it compare to scrum
  • Scrum vs. Kanban
  • Kanban board
  • WIP limiting
  • Flow of work
  • Pull versus push work-flow

[Developer Tea] Focus
  • how to cultivate focus

[The Static Void Podcast] .NET Core RTM
  • Jeff Fritz from Microsoft joins Jess, Todd, and Chris to talk about .NET Core and we challenge our discussion of .NET Core RTM in the previous episode.

[The School of Greatness with Lewis Howes] 8 Lessons the Olympics taught me about greatness
  1. Vision is the beginning of the journey.
  2. Develop your talent.
  3. Have obsession with your passion.
  4. Don’t try to do it alone – have coaches and a team.
  5. Embrace pain and adversity.
  6. Play for something bigger than yourself.
  7. Understand that all we can do is our very best.
  8. Acknowledge and appreciate your accomplishments.

[The Ruby Rogues] Contempt Culture with Aurynn Shaw

Thursday, 18 August 2016

Damo's Podcast Highlights 2016 #32

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[This agile life] The Version One 10th Annual State of Agile™ report. Pt 2.

[Eat Sleep Code] JavaScript Messaging Patterns
  • How to use messaging patterns like RabbitMQ to create scale-able applications.
  • We also learn how messaging promotes asynchronous behavior throughout an application.

[.Net Rocks] Data on DocumentDB with Ryan CrawCour
  • Ryan talks about how DocumentDB provides a fast, scalable place to store objects and write your queries any way you like. You write the rules for how your data partitions between collections, as well as the performance of each of those collections, and you can change them on the fly. More sophisticated than a simple key-value-pair store, but less structured that a relational database, DocumentDB sits in a great spot in your data storage needs. 

[audiobookpodcast.Programming] Software Craftsmanship by Sandro Mancuso
  • video -
  • After over ten years since the Agile summit, software projects are still failing and developers are still behaving and being treated as factory workers. The software development industry is still very amateur when compared to other professions. How can we change this? Why Agile was not sufficient? Why so many clients are unhappy with their software projects? Why is it so difficult to find good developers? Our industry needs more professionalism and that's what Software Craftsmanship brings to the table

[.Net Rocks] Building Multi-Tenant Applications with Paul Stovell
  • What does it take to make an application support multiple customers?
  • As with most things, making multi-tenant apps is more complicated than it seems! Paul talks about making architectural decisions around separation between various customers - do they each get their own database? What about web server and/or app-pool? What about customizations and deployment. Do customers get new features immediately, or do they have the option to wait? How does the cloud impact your decision making? It's a complicated subject with a variety of trade-offs!

[Devnology Podcast] David Anderson - Kanban
  • From the Theory of Constraints to Kanban and the benefits of visualizing the workflow and limiting Work-in-Progress

[OnBooks] Ego Is The Enemy by Ryan Holiday
  • Early in our careers, it impedes learning and the cultivation of talent.
  • With success, it can blind us to our faults and sow future problems.
  • In failure, it magnifies each blow and makes recovery more difficult.

Wednesday, 10 August 2016

Damo's Podcast Highlights 2016 #31

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[Software engineering radio] James Phillips on Service Discovery with consul
  • what is service discovery and how can consul help?

[Adventures in Angular] New Developer Problems
  • Getting Setup to Develop in Angular 2, how hard should it be? and why does the default quick start contain 40,000+ files?

[Planet Money : NPR] Episode 548: Project Eavesdrop
  • Planet Money's Steve Henn wanted to know just how much someone could learn about him by just sitting back and watching his internet traffic slide by. So he invited a couple hacking experts to bug his internet connection for a week.

[MS Dev Show] .Net Core with Scott Hunter
  • A talk with Scott Hunter about the amazing things going on with .NET core and ASP.NET.

[.NET Rocks!] State of DevOps at DevTeach
  • The conversation focuses first and foremost on culture - the chant of People, Process and Products around DevOps is not accidental, without a commitment in culture, nothing much can happen. 
  • How do we create organizations that are willing to admit failure and make improvements? 
  • Does it always have to come from the top? 
  • How do you get started down the DevOps path?

[Quiet: The Power of Introverts with Susan Cain] Episode 1: The Long runway
  • The first in a 10 part series. Susan Cain introduces you to the neuroscience of introversion and shares tips on how to help quiet kids navigate the world at their own pace.

[Start ups for the rest of us] Ten Lessons Every Startup Founder Should Learn from Bill Walsh
  • From the book ‘The Score Takes Care of Itself: My Philosophy of Leadership.’ by Bill Walsh who was the head coach of the San Francisco 49ers, one of the greatest football coaches of all time.
  1. Everything starts with work ethic.
  2. Blame yourself for poor team performance.
  3. Don’t win by fluke.
  4. Make friends not enemies.
  5. Take pride in your effort as an entity. Separate yourself from the result of that effort.
  6. Demonstrate respect for each person in the organization.
  7. Be deeply committed to learning and teaching.
  8. Demonstrate and prize loyalty.
  9. Know what constitutes greatness for every role.
  10. Control what you can control then let the score take care of itself.

[Blinkist] David Epstein on the Olympics and Why 10,000 Hours Won’t Make You Great

Monday, 1 August 2016

Damo's Podcast Highlights 2016 #30

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[The Cognicast] Michael Nygard - The new normal, failure is a good thing
Blog series the new normal
  • "What we need is a new approach where “continuous partial failure” is the normal state of affairs"
  • "Instead of expecting everything to run like clockwork, we should anticipate the opposite. We must embrace failure as a means to build IT infrastructures and organizations that not only withstand threats but profit from them."
  • Everything breaks. It's just a question of when and how badly.

[Scrum Master Toolbox Podcast] Yves Hanoulle - How systems influence individual and team performance

[This Agile Life] You Can’t Handle the Truth
  • Constructive criticism as a gift
  • How have we (the hosts) established safety (trust) on teams?
  • Can we have trust without transparency?
  • Can we have safety without trust?

[This Agile Life] The Version One 10th Annual State of Agile™ report
The team discuss the bottom 10 of the agile techniques employed on page 10 of the 'Version One 10th Annual State of Agile™ report'
Can you be 'Agile' with out TDD, BDD, refactoring, and pairing?

[AudioBookPodcast.Microservices] Daniel Bryant - The Seven Deadly Sins of Microservices
  1. LUST – Using the latest and greatest tech…
  2. GLUTTONY – Excessive communication protocols
  3. GREED – All your service are belong to us…
  4. SLOTH – Creating a distributed monolith
  5. WRATH – Blowing up when bad things happen
  6. ENVY – The shared single domain fallacy
  7. PRIDE – Testing in the world of transience

[Mastering Business Analysis] Addressing Bottlenecks with Theory of Constraints
The Theory of Constraints is an approach to improving organizational performance created by Dr. Eli Goldratt and is explained in his book, The Goal.
  • Step 0: Define the Goal
  • Step 1: Identify the Bottleneck
  • Step 2: Exploit the Bottleneck
  • Step 3: Subordinate Decisions to the Bottleneck
  • Step 4: Elevate the Bottleneck
  • Step 5: Repeat

Sunday, 24 July 2016

Damo's Podcast Highlights 2016 #29

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[Mastering Business Analysis 81] David Hussman - User Story Mapping
  • A map is simply a collection of information with orientation
  • User stories aren’t just a pile of things to do. There’s an underlying structure that helps you see the big picture from the customer’s point of view.
  • By organizing the story cards into a map, we can better understand the customer journey and identify small slices of value to deliver.
  • User Story Maps are an arrangement in which story cards from left to right follows people’s interaction with the system and top to bottom to decompose that interaction
[Skills Matter] Dan North - Event storming for fun and profit
[Freakonomics Radio] Is the Internet Being Ruined?
[AudioBookPodcasts.Microservices] Adrian Cockcroft - State of the Art in Microservices
[YouTube] Kent Beck - The Return of the Waterfall
[ASP.NET Monsters - Channel 9] Configuration From Any Source in ASP.NET Core
[SE-Radio 263] Camille Fournier - Real-World Distributed Systems
[Vimeo] Catastrophic Backtracking ‒ When Regular Expressions Explode
  • Limit nested quantifiers
  • Ensure only one way to do the matching
  • Use atomic grouping
  • Use DefaultRegExMatchTimeout in .net apps
  • Always, always consider the failure cases (esp. the almost but not quite matches)

Monday, 18 July 2016

100,000 is todays magic number, sponsored by folding air

Just thought I'd do a really quick post to say thanks to everyone who has ever read my blog, and ever will read it. I hope that I've helped more than a few people out here.

We all as software devs use the internet to find tutorials, examples, solutions to bizarre problems, resources, ideas, and many many more things. I know I have. I don't think a day goes by without searching for something tech that I'm currently working on. I wanted to give a little back and today I've just hit my one hundred thousandth visitor :-)

Here are a few highlights most recent posts at the top

Unique visitor count - Title and URL

416 - From Monolith to Microservices
1170 - Blue green web deployment with powershell and IIS
743 - Visualising the Thoughtworks Go pipline using Cradiator
4909 - Search the whole SVN repository for a given filename
5471 - Personal Backup strategies 
2167 - Debug your android applications by capturing/monitoring their http traffic using wireshark
2013 - Using JMeter to profile the performance of your web application
2018 - A PowerShell script to count your lines of source code  
3059 - Installing node.js on windows 7 machine 
2865 - Kanban inspired card wall. Our example 
13234 - How much does your slow machine cost your company? 
1228 - Unit testing your unity IOC wiring 
2768 - The true cost of TFS, is it really "free"?
1681 - 20 things that are wrong with TFS, and counting 

I remember when I posted the How much does your slow computer cost, all my stats went mad for a week, I even got in some Canadian tech publication as a 'fastidious tech geek', is this a good thing?

Fame, if you can call it that, is nice, but I don't do it for that. I generally don't expect a lot of visitors, I just want to help out others that have similar issues.

Finally It's also a selfish thing. I do it because I forget things and want to remember more, the number of times I've done a search and found my own posts or my own questions on stack overflow, it's surprising.

Thanks to everyone who got me to this milestone, its only taken me 8 years, what humble beginnings.

Blog posts by year to date:

Damo's Podcast Highlights 2016 #28

I subscribe to many podcasts, you can see the list as it was in 2015 here: Developer podcasts v2 but I thought I would start to keep a weekly log of the episodes that I found interesting or useful in some way.

[All Things Pivotal] .NET and Beyond 12 Factors with Kevin Hoffman
[Agile Coffee] Is QA an inhibitor to agile? Dysfunctional teams, more points please
[Hello tech pros] Why Toyota Doesn't Manage From the Conference Room
[Visual studio live] Async Patterns Deep dive for .NET Development
[Software Engineering Radio] What is Software Quality with Bill Curtis. Agile, Lean and CMM

Wednesday, 13 July 2016

First thoughts on core

I've been playing with core recently and thought I'd share a few of my findings, good and bad. I always need some sort of little project to keep my interest when learning something new and I had something perfect, small-ish but very useful for work.

We have 4 go servers at work, each manage a different group of microservices which form a business capability. We have ~50 services, each one is built and deployed to different environments via go pipelines of which we have 400+ (we deploy to 3 regions and have prod/preprod/test environments in each). What we need is a way to visualise the state of all the value streams, to easily see if there are any problems and what the deployed versions of each service is. I will blog some more on this when I get an actual working solution, for now I've just being doing project setup and tests. You can find the project here:

So .net core, what are my findings so far?

dotnet command line

I do all my dev in VS2015 so why do I need this? Often you don't but I've found the command line to be faster than building through VS, and as for running tests, that is no competition.
You can create projects, restore packages, build, run and test all via the command line with ease. Is it too soon to wave goodbye to msbuild?
Checkout the docs on the command line tools and the getting started with .net core.

I do lots of the DevOps work at the office and I can see the command line coming in to its own on the build server. Although I don't see myself running anything on linux anytime soon its nice to know its an option, and its forced a rethinking around the command line which is nice.

Project structure

Its been really interesting to see the evolution of the project structure. No more hefty csproj files where you mix config with project setup, now you have a lightweight xproj file and a number of json files holding your config. I like it, it's moving in the direction of other web technologies in how the contents of the folders form the code base rather than a big file list maintained and merged in a csproj file.
I'm also a big fan of wwwroot, finally you don't have to mix source code with static files.

Kestrel HTTP server

This was an interesting find for me. I like node (although i don't find much excuse to use it these days) so it's great to see a light weight single threaded HTTP server as part of the core framework. Lots of options, you can quickly and easily get the app running in iisexpress or in the console with the command "dotnet run".
Added to this, gone are the days where people complain about the performance of IIS, Kestrel has some rather impressive benchmarks behind it.


In general ReSharper is it's usual awesome self whilst developing .net core apps. But, (and there is a theme here, see NCrunch below) testing of a .net core app with a .net core test dll is not supported yet. From the ReSharper blog "One thing to note is that this build does not yet support running tests for DNX projects, this will hopefully be included in a future build". I can only hope this changes soon, come on JetBrains, do it.


Sad times with NCrunch too I'm afraid. It does not yet support .net core development. Check here for updates to this issue and here for updates and what frameworks are supported


moq as found on is not compatible with .net core :-( but Microsoft have created a version that is :-) it is located on the Microsoft internal nuget feed myget. Instructions can be found here:

integration tests

Amazing, I'm so pleased this is now as easy as this. You can spin up an in memory HTTP server and use it to do testing with. Really good. I've not looked at hooking it into selenium or anything that can understand the DOM yet so most of the uses I'm finding right now are with pattern matching and regex. Check out the integration tests I've written and the docs on integration testing.


So ReSharper has let me down, NCrunch has failed to rise to the challenge which leaves me with the runner in visual studio (It works and i can debug tests but it's so so slow) or the command line. So as of right now for testing I've been mainly using the command line "dotnet test". Ive even written a little powershell script to run all my tests. It's really fast, it could be faster yes but I'm happy with this for now, and compiles your source before running for a bonus.

browser link

Sadly I've not had much luck with this. I think its because core does not yet support signalR. I've not spent a vast amount of time investigating but other than reloading browsers whilst running I've not had much success.


I'm liking the new documentation on the new sites: and
Well organised, easy to navigate and actually useful, makes a change. I hope they keep it up to date and keep the samples relevant to new versions as they come out.


I'm really pleased I've begun to dig into this new world of .net core, not because I'm interested in any cross platform abilities but just because it gives some really nice features.

What are your thoughts on the good and bad about .net core and the direction asp is heading right now? I've only been playing with this at home but getting a good feeling bar the tooling which I'm sure will catch up soon enough.