Monday, 18 May 2015

Setting up

Whether you are setting up a development workstation or swapping jobs, you probably want to make sure that you have all of the gadgets and utilities that make your work life easier which may not be on the default machine image supplied to you.

That is where posts like this come in. You'll find that most development blogs will have a post of this nature, where the author lists some of the cheap or free productivity tools that they have found useful.

Here is my list.

Notepad++

www.notepad-plus-plus.org
It's like notepad but better; tabs, tab persistence between sessions, find in all tabs, and that's just the tabs!! You can even define your own language syntax to create custom document highlighting (if you want).

Unlocker

http://filehippo.com
Resolve sharing violations by removing a troublesome lock that another process has on that file. For example: "Hmm, I can't delete this folder, and even though nothing and no-one should be using it." - Unlocker to the rescue, albeit a dangerous and crude one. If this sounds abhorrent, try investigating the issue using ProcessExplorer (mentioned later in this post).

F12

Okay so you'll have this one already, but non-web-devs often forget about it. Press F12 when you are using your web browser and you'll find a whole range of tools here for the web developer. From performance monitoring to browser emulation, JavaScript debugging and CSS editing. There are so many useful items in here that people often neglect.

ORCA

https://msdn.microsoft.com/en-us/library/aa370557(v=vs.85).aspx
Provides a GUI for Windows Installer packages. Not only does this tool highlight validation issues, it also allows you to edit and save the new package.

WILogUtl

https://msdn.microsoft.com/en-us/library/aa372811(v=vs.85).aspx
This tool will parse your Windows Installer log files to help you identify issues with the installation and suggest solutions. It beats the hell out of searching for 'Return Value 3'

Kaxaml

www.kaxaml.com
A lightweight XAML WYSIWYG editor. Keep things simple.

7Zip

www.7-zip.org
Compresses to 7z, TAR, ZIP and more, Extracts from 7z, TAR, ZIPm RAR and many more. If you've never tried it, run a comparison between the compression ratio of 7z compared to ZIP, you'll be pleasantly surprised,

ReSharper

www.jetbrains.com/resharper
This is a great productivity tool. It'll be interesting to see how quickly the new .net compiler helps the Visual Studio community close the gap, but at the moment you'll want to be using this plugin.

DotNetPeek

www.jetbrains.com/decompiler/download
Decompile dot Net assemblies to C#. Sometimes we all get a little bit nosey.

BareGrep

www.baremetalsoft.com/baregrep
Historically the Microsoft Windows search isn't very good, but this flexible tool will quickly search for files matching your search pattern.

BareTail

www.baremetalsoft.com/baretail
Another from BareMetal Software, this time a log file parser. This tool will show log entries in real time, highlighting different types of entries based on keywords.

ASoft - DotNetVersion

http://www.asoft.be/prod_netver.html
An easy way to find out what versions of .net are being used on a client machine. The beauty of this tool is that the clean interface means that any tom, dick or harry can use it and even download missing versions directly.

KDiff3

kdiff3.sourceforge.net
An easy to use file and folder differencing tool. Run a comparison against up to three directories for differences or missing artefacts. Drill into files to analyse the differences.

ProcessExplorer

https://technet.microsoft.com/en-gb/sysinternals
Find out about a process currently running on your system. Target processes with the cross-hair or search the running processes to find out the ID of your target process, and what resources they are using on you current system. If you didn't like the Unlocker utility, mentioned above, you may prefer this tool as a means for finding what process has a lock on your file.

PowerGUI

en.community.dell.com/techcenter/powergui/m/bits/20439049
Create and manage powershell scripts

And if that list has whet your appetite; checkout Scott Hanselman's list, it's much better than this one :)

All items listed are downloaded and used at your own risk. I have not been involved in the creation or hosting of any of these utilities and cannot make any guarantees over there safety. Please review all terms and conditions on the named applications and licensing before installing.

Thursday, 7 May 2015

Sorry about that...

I decided to change employers, which has kept me a little bit busy.
Now that is done, and I'm settled in, I'll continue blogging.

ps. If you're voting today, vote for the good guys.

Monday, 6 April 2015

It's a wonderful life

Reflection is important in many aspects of life. When we complete a project, when a new year begins and when we unwind with friends and colleagues. We reflect on events as a means to make sense of them, learn from them and move on from them.

As software engineers we are conscious of reflection as part of the Application Lifecycle Management process, and I thought that I would take this opportunity to reflect on my life as a software engineer.

The advice that I received from my parents before I went to college and university was: "You'll be working for a long time, make sure that you do something that you enjoy". This advice stayed with me. There where times when it seemed like it was bad advice, but I can look back over the last 15 years and say that I enjoy what I do as much as ever.

I'm a practical and creative person, and I have at my finger tips the means to create anything that I could want, Applications, Games, Data Visualization. I share these interests with friends and colleagues that make me want to be more than I am. And although a lot of my friends don't actually understand what I do and don't see what could be enjoyable in it, that's okay, 'not everyone's like you'*.

I chose to do what I enjoy, and I enjoy what I do. And on reflection, It's a wonderful life.

At DDDNorth with some likeminded people.

* 'In the mood for love' - http://www.imdb.com/title/tt0118694/

Sunday, 29 March 2015

From Meetings to Success

It can be all too easy for a projects user stories to be copied and pasted directly from the annotated minutes of a meeting where 'stuff' was discussed and declared. These stories tend towards suggested implementation. When this happens, the odds are that the structure (and requirements) will not be clear.
 

Pragmatic analysis and Clarity are key to Success.

 
When pulling stories from meeting minutes you'll end up with the flattening out of data producing spaghetti requirements, leading to spaghetti code. Based on the muddy stories, a hotch potch of testing will be produced, proving a risk to the  successful delivery of items buried (or missed) in the documentation.
 

Lets make the change.

 
Consider the following structre when writing user stories:
 
A User Story should be designed as follows:
As a …
I want …
So that …
This describes the need of the change.
 
These stories can then have Acceptance Tests in the form of:
Given …
When …
Then …
This describes the behaviour of the change.
 
Once we understand the behavioural change required, then we can work out what tasks are required to make the behavioural change. Once all of these tasks are completed then the Acceptance Tests should pass, the story will be resolved and importantly, all of that stuff that was declared in the meeting can be put to bed.
 

A successful meeting leading to a successful implementation.

Wednesday, 18 March 2015

It’s not you, it’s me

Motivational quotes; we hate them

poster of a road going into the distance: "determination". 
A picture cat in a tree: "go get them".

We've seen them at training venues and on office walls. But not only can motivational messages fail to make a positive impact, they can actually make a negative one.

Maybe we see the long road “determination” motif and think; "well, that doesn't make sense... The straight road is designed as the shortest distance between two places, what's that got to do with 'determination'? Are they saying that I'm determined if I drive on what looks like a nice open road?...etc"

And regarding that cat in the tree; "I’m a dog person, so I don’t even want to see any meaning here. Stop showing me pictures of cats." *
 
A fun example of a motivational message backfiring is this post on The Poke.
 
We hate motivational quotes because they are not aimed at us, they are for someone to whom this phrase or representation resonates. For us however the message and representation may not resonate, it may seem ridiculous, we may hate it.

 

Motivational quotes; we love them

A lyric from your favourite song.
A line from a memorable film.
A quote from a book.

The motivational quotes that mean something to us aren't an outside voice telling us to be 'tenacious', 'confident' or 'bold', It's our voice. Someone else may have found the words or image for what we need, but this is our message, it means something to us and therefore can motivate us.
 


Epilogue

It would be remiss of me to create a post regarding quotes and not logging a few that I like. I'm aware that you may not like them, but that's okay, as someone once said "Not everyone is like you".   

The World is Yours Ours”
La Haine 

When life itself seems lunatic, who knows where madness lies? Perhaps to be too practical is madness. To surrender dreams - this may be madness. To seek treasure where there is only trash. Too much sanity may be madness - and maddest of all: to see life as it is, and not as it should be!”
Man of La Mancha

Not everyone is like you.”
In the mood for love
 

 
 
* Although I'm a dog person I actually have cats. 

Thursday, 5 March 2015

Getting Started on Twitter

I love the casualness of twitter, where profundity and trivia have an equal footing. If you need a quick-start on your follow list, consider the following accounts.

@infosthetics Data visualizations that inform and/or intrigue.
  Edward Tufte has declared chartjunk as an enemy of clear, informative graphics of data. Chartjunk is everywhere, particularly in mainstream
@mtaulty I do some developer stuff for Microsoft in the UK. [[ pretentious job title goes here ]]. UK
@jonskeet Currently a software engineer at Google, London. Usually a Microsoft MVP
@thebeebs Microsoft technical evangelist. Currently working on mobile apps.
@YouAreCarrying A Twitter bot by Andrew Vestal that provides a fictional adventure game inventory. Users need only tweet the bot with “i”. (users have produced some lovely pictures in responce to 'what they are carrying')
Pretty Pictures
@shanselman Scott Hanselman is a programmer, teacher, speaker, technologist, podcaster, writer, diversity advocate and more.
@Jodie_Paterson Freelance illustrator and stationer. Owner & designer at Paper Pipit. Head of 'Charlie work'
@msdevUK Microsoft Developer UK
@RealBobMortimer I've just fell off my Honda .. My legs are in that tree..and yes I was wearing those shoes again.. The ones from Italy.
@codinghorror NET programming from a human factors perspective: thoughts on software usability and effective team development.
@Loki_Coki Design and illustration.
@boagworld Author of Digital Adaptation. Co-Founder of @headscapeltd. Host of the Boagworld Podcast. Over 20 years of helping organisations manage digital change.
@andybudd Andy started designing websites in 1998. He founded Clearleft with Richard Rutter and Jeremy Keith in 2005
@scottgu Scott Guthrie is an Executive Vice President of the Cloud and Enterprise group in Microsoft. He is best known for his work on ASP.NET
@IrisClasson .NET developer & Microsoft C# MVP
@kibooki Those are no actual toys, but some gorgeous and creative 3D dedicated to the allmighty glory of Edgar Wright, Simon Pegg and Nick Frost.
A community of passionate individuals whose purpose is to revolutionize software design, creation and delivery, while advocating for positive social change.
@DDDNorth Twitter account for THE premium developer event in the North of England.
@codefoster Developer Evangelist at Microsoft. Windows 8, HTML, JavaScript coder. Hiker. Sailor. Husband. Dad. Not in that order.
@ch9 Channel 9 keeps you up to date with videos from people behind the scenes building products at Microsoft.

Monday, 23 February 2015

Managing Objectives

One of the things that I decided to improve this year is how I manage my personal development objectives. I outlined the following requirements.
  • I need to manage a backlog objectives.
  • I want these objectives to be broken down into tasks of a granularity that can be completed in my spare time.
  • I want a task board so that I can see the tasks remaining broken into monthly sprints.
  • I'll need to access to this data from any location.
  • I'll want to collaborate with zangl ltd for some gaming and mobile development tasks.
 
For me, the next step was straight forward. I logged on to Visual Studio Online and created a new Team Foundation Service Project called 'Development Objectives'.
 
The interface is intuitive, the task management is straightforward, the backlog can be easily groomed and it even has a burndown chart to keep me on track.
 
My Personal Task Board

 
So far it is proving the perfect solution, get started.