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

Sunday, 26 June 2016

Damo's Podcast Highlights 2016 #25

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.

[Arrested DevOps] Finding Signal In The Noise - modern monitoring, alerting, event streams https://www.arresteddevops.com/finding-signal-in-the-noise/
[yow nights 2016] Event sourcing, Martin Fowler https://www.youtube.com/watch?v=aweV9FLTZkU
[yow nights 2016] Infrastructure as code, Martin Fowler https://www.youtube.com/watch?v=ueAef9tNUck
[Google tech talks] Mary Poppendick the role of management https://www.youtube.com/watch?v=ypEMdjslEOI
[Focus 53] Time Management Tips - No More Excuses http://focus53.libsyn.com/f53-017-time-management-tips-no-more-excuses
[Focus 53] Strategies For Letting Go of Failures & Issues http://focus53.libsyn.com/f53-007-strategies-for-letting-go-of-failures-issues#AzMW0hsBWR4VcfSI.99
[Blinkist] How To Maximize Productivity With Mini-Habits https://www.blinkist.com/magazine/posts/maximize-productivity-mini-habits
[Tim Ferriss] The Truth About 'Homeopathic' Medicine http://fourhourworkweek.com/2014/08/19/homeopathic-medicine/

Monday, 20 June 2016

Damo's Podcast Highlights 2016 #24

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.

[Soft Skills Engineering] Negotiating offers and dealing with an oblivious boss http://podplayer.net/#/?id=15678547
[Alberto Brandolini] Event Storming https://www.youtube.com/watch?v=veTVAN0oEkQ
[Xamarin Evolve 2016] 5 Soft Skills Every Software Developer Should Know https://www.youtube.com/watch?v=cVC3DQvAAIA
[DevOps Cafe] The changing role of Operations and ChatOps http://devopscafe.org/show/2016/6/8/devops-cafe-episode-67-mark-imbriaco.html
[Agile.Fm] Scrum at its 21st birthday http://www.incrementor.com/agilefm/dave-west/
  • First 1/3 is interesting about the Issues commonly seen with scrum implementations
[Scrum Master Toolbox] The problems with the performance reviews http://www.scrum-master-toolbox.com/2016/06/podcast/paul-wynia-the-problems-of-performance-reviews-in-large-organizations/


Tuesday, 14 June 2016

Damo's Podcast Highlights 2016 #23

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] Slices of Big Truths http://masteringbusinessanalysis.com/mba075-slices-big-truths/
[Agile Weekly Crew] Design Thinking with Jeff Patton http://integrumtech.com/2012/07/episode-67-design-thinking-with-jeff-patton/
[Jeff Patton] Story mapping https://www.youtube.com/watch?v=AorAgSrHjKM
Story Mapping Quick Reference - Jeff Patton & Associates http://jpattonassociates.com/story-mapping-quick-ref/ 
[Mastering business analysis] User Story Mapping with Jeff Patton http://masteringbusinessanalysis.com/episode-016-user-story-mapping-with-jeff-patton/
[Scrum master toolbox] a Systems Thinking horror story http://www.scrum-master-toolbox.com/2016/06/podcast/vasco-duarte-and-tim-bourguignon-tell-a-systems-thinking-horror-story/

[The Tim Ferriss Show] The Choice-Minimal Lifestyle: 6 Formulas for More Output and Less Overwhelm 

http://fourhourworkweek.com/2008/02/06/the-choice-minimal-lifestyle-6-formulas-for-more-output-and-less-overwhelm/

The paradox of choice

  1. The more options you consider the more regret you will have (buyers regret)
  2. The more options you encounter the less fulfilling the final outcome will be

The choice minimal lifestyle

  1. Considering options cost attention that can't be spent on action (sense of overwhelm)
  2. Attention is necessary for productivity and appreciation

Principles

  1. Set rules to automate decision making
  2. Don’t provoke deliberation until you can take action
  3. Don’t postpone decisions just to avoid uncomfortable conversations
  4. Learn to make non-fatal or non-reversible decisions quickly (Set time limits for decision and options, set financial thresholds)
    1. Decision fatigue is a thing (we all have a limited amount of decision making power)
  5. Don’t strive for variation and thus increased options when it is not needed (routine routine routine, daily rituals (book))
    1. Embrace routine, remove decision making from what you can
    2. Nutrition vs enjoying food
    3. exercise vs enjoyment sport
  6. Regret is past tense decision making
    1. Stop making complaints (21 day no complaint experiment)
    2. Remove wasted past tense deliberation

Wednesday, 8 June 2016

Damo's Podcast Highlights 2016 #22

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.

[Domain Driven Design Europe] Vaughn Vernon: Challenges in Software Development of Today https://www.youtube.com/watch?v=4UZZjyQDgT8
[On Books] The clock of the long now http://castig.org/the-clock-of-the-long-now-by-stewart-brand/
[Continuous Discussions] CD Automation https://electric-cloud.com/blog/2016/04/continuous-discussions-c9d9-podcast-episode-39-cd-automation/
[Mastering Business Analysis] Lean Business Analysis http://masteringbusinessanalysis.com/mba074-lean-business-analysis/
Having a Lean mindset helps us to avoid some anti-patterns that lead to waste.  These eight forms of waste are:
  • Unfinished work – Analysis or requirements completed but not implemented
  • Unnecessary features – Features customers don’t need or want
  • Silos and hand-offs – Working without a shared understanding and transitioning work items
  • Unnecessary processes – Steps that don’t add value
  • Context switching – Moving from one task to another without focus
  • Waiting – Delays due to waiting for an answer or availability
  • Rework – Work that needs to be done over
  • Knowledge hording – Keeping knowledge to yourself
[Hello Tech Pros] Productivity, Getting things done http://hellotechpros.com/christian-genco-productivity/
  • 3-step productivity system that gives him perfect memory and allows him to always know what to do next.
[The Tim Ferriss Show] Lazy: A Manifesto http://fourhourworkweek.com/2015/04/03/lazy-a-manifesto/

Tuesday, 31 May 2016

Damo's Podcast Highlights 2016 #21

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 109] Fallacies of Software Developers - http://www.thisagilelife.com/109/
[On Books] Episode 15 - How to Learn Anything Fast - http://castig.org/the-first-20-hours-by-josh-kaufman/
[On Books] Episode 18 - Growth Mindset vs fixed mindset - http://castig.org/growth-mindset-vs-fixed-mindset/
[RunAs Radio 473] Hacking a Country with Troy Hunt - http://runasradio.com/Shows/Show/473
[Scrum Master Toolbox Podcast] The role of retrospectives on the path to success - http://www.scrum-master-toolbox.com/2016/05/podcast/allison-pollard-on-the-role-of-retrospectives-to-get-us-on-the-path-to-success/
[Continuous Discussions 41] Creating an Internal Dev/Test Cloud - https://electric-cloud.com/blog/2016/05/key-takeaways-continuous-discussions-c9d9-episode-41-creating-internal-devtest-cloud/
[Freakonomics Radio] How to Be Tim Ferriss - http://freakonomics.com/podcast/tim-ferriss/
[Software Engineering Radio 23] The role of software architecture Pt1. - http://www.se-radio.net/2006/07/episode-23-architecture-pt-1/