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 http://masteringbusinessanalysis.com/mba081-user-story-mapping-david-hussman/
  • 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 https://skillsmatter.com/skillscasts/8003-event-storming-for-fun-and-profit
[Freakonomics Radio] Is the Internet Being Ruined? http://freakonomics.com/podcast/internet/
[AudioBookPodcasts.Microservices] Adrian Cockcroft - State of the Art in Microservices https://www.youtube.com/watch?v=nMTaS07i3jk
[YouTube] Kent Beck - The Return of the Waterfall https://www.youtube.com/watch?v=w4IncnNVzMA&feature=youtu.be
[ASP.NET Monsters - Channel 9] Configuration From Any Source in ASP.NET Core https://channel9.msdn.com/Series/aspnetmonsters/ASPNET-Monsters-Episode-50-Configuration-From-Any-Source-in-ASPNET-Core
[SE-Radio 263] Camille Fournier - Real-World Distributed Systems http://www.se-radio.net/2016/07/se-radio-episode-263-camille-fournier-on-real-world-distributed-systems/
[Vimeo] Catastrophic Backtracking ‒ When Regular Expressions Explode https://vimeo.com/112065252 http://www.regular-expressions.info/catastrophic.html
  • 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 http://www.paasmag.com/2016/07/07/net-and-beyond-12-factors-with-kevin-hoffman/
[Agile Coffee] Is QA an inhibitor to agile? Dysfunctional teams, more points please http://agilecoffee.com/episode49/
[Hello tech pros] Why Toyota Doesn't Manage From the Conference Room http://hellotechpros.com/jason-burt-leadership/
[Visual studio live] Async Patterns Deep dive for .NET Development https://www.youtube.com/watch?v=9o-xatqBnn4
[Software Engineering Radio] What is Software Quality with Bill Curtis. Agile, Lean and CMM http://www.se-radio.net/2016/07/se-radio-episode-262-software-quality-with-bill-curtis/

Wednesday 13 July 2016

First thoughts on asp.net core

I've been playing with asp.net 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: https://github.com/DamianStanger/go-stats-aggregation

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 asp.net 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.

ReSharper

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.

NCrunch 

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.netcore

moq as found on nuget.org 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: http://dotnetliberty.com/index.php/2016/02/22/moq-on-net-core/

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.

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 asp.net 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.

Docs

I'm liking the new documentation on the new sites: https://docs.asp.net/en/latest/intro.html and https://docs.microsoft.com/en-us/dotnet/index
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.

Finally

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.

Sunday 10 July 2016

Damo's Podcast Highlights 2016 #27

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.

[Hello Tech Pros] Why Great Dev Managers are Like Pirate Ship Captains, Jeff Maxwell on Leadership http://hellotechpros.com/jeff-maxwell-leadership/
[Yet Another Podcast] Humanitarian Toolbox with Bill Wagner http://jesseliberty.com/2016/06/30/yet-another-podcast-155-humanitarian-toolbox-with-bill-wagner/
[Hansel Minutes] Building remote-first teams with Karolina Szczur http://www.hanselminutes.com/533/building-remote-first-teams-with-karolina-szczur
[Developer Tea] Becoming a leader http://spec.fm/podcasts/developer-tea/40485
[TED Talks] Why Brexit happened and what to do next https://www.ted.com/talks/alexander_betts_why_brexit_happened_and_what_to_do_next

I've also been playing with .net core a lot this week
[channel 9] overview of asp.net core (previously asp.net 5) https://channel9.msdn.com/Events/Visual-Studio/Connect-event-2015/100
[build 2016] Introducing ASP.NET Core 1.0 https://channel9.msdn.com/Events/Build/2016/B810
[build 2016] ASP.NET Core Deep Dive into MVC https://channel9.msdn.com/Events/Build/2016/B812
[Visual Studio Live] Adam Tuliper ASP.NET Core in All Its Glory https://www.youtube.com/watch?v=xOppi_hsD2E

Tuesday 5 July 2016

Damo's Podcast Highlights 2016 #26

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.

[Hello Tech Pros] If You're Not Pair Programming You're Wasting Money http://hellotechpros.com/llewellyn-falco-productivity/
[Eat Sleep Code] All In With Three Amigos http://developer.telerik.com/featured/all-in-with-the-three-amigos/
  • Dev + QA + BA story kick-offs. Effective Three Amigos conversations cut confusion, reduce rework, and ensure the entire team clearly understands the why of what they’re building.
  • Teams ensure acceptance criteria are clear, nail down test data, discuss data flows, and clear up a myriad of other potential roadblocks—before a single line of code is written.
[DevOpsEnterpriseSummit-15] DevOps Kaizen Practical Steps to Start & Sustain a Transformation https://www.youtube.com/watch?v=RT542sffJpM
  • Why are so many orgs unable to improve? What do the best orgs do to get to and stay at the top
  • The management illusion of control, complex systems are complex and cant be 'fixed' by command and control
[Enterprise Devops Initiatives] The State of DevOps 2016 Recap http://www.cloudtp.com/2016/06/22/the-state-of-devops-2016-recap/
  • The report separates high performers by key metrics: deploy frequency, lead time for changes, mean to recover, and change failure rate
  • high performers had 200x more frequent deployments than low performers, and 2,555x faster lead times.
[Tim Ferriss] Productivity Tricks for the Neurotic, Manic-Depressive, and Crazy (Like Me) http://fourhourworkweek.com/2013/11/03/productivity-hacks/
[Tim Ferriss] How to 10X Your Results, One Tiny Tweak at a Time http://fourhourworkweek.com/2016/03/04/how-to-10x-your-results/
[London School of Economics] After the EU Referendum: What Next for Britain and Europe? http://www.lse.ac.uk/publicEvents/events/2016/06/20160628t1830vHKT.aspx