Monday, 29 October 2012
Committing to Software Trials
JIRA is both fun and easy to use provided you use their workflows. With the GreenHopper plugin you can move things around in the backlog just by dragging them (you can do this in TFS 2012 but that's not what we're using), drag tasks around the workflow to indicate progress, drag issues from one release to another and so on and so forth. All the charts you really need are also bundled in with the Green Hopper plugin including a real-time burn down (not just a daily summary like TFS), cumulative flow and more. There are also easy prioritisation and voting tools to help project managers prioritise work.
Despite the awesomeness of JIRA I am not enjoying our trial. Unfortunately for Atlassian it is not their fault and there is not a lot they can do about it. You see the original plan for the trial was to switch our small team from TFS to JIRA for a sprint so that everyone could marvel at it's wonder. Being an eager beaver I was on it from the start and had the next sprint of items from the backlog into JIRA in no time. But then things went wrong. Product Management were not aware we were using the new tool and there was a hold up getting usernames out to the other developers. This lead to the abysmal situation of me, and the other developers as they joined, having to keep both JIRA and TFS up-to-date with progress. It also meant that there were 2 places to look for activity feeds (my twitter like group and the feeds in JIRA) and that if a PM made a change it was in TFS not in JIRA. So now the development team are left disliking JIRA because it is just more work for them to do, project management are still oblivious to it's existence and the whole thing has really been a waste of time.
This is actually a common mistake with trialling new procedures and software. If you are trying something new you should just go for it. Don't try out a new system while maintaining and old one because even if you spend 90% of the effort maintaining the old system you will dislike the new one for giving you more work. I see this a lot when I recommend ReSharper to people too. They don't trust the quick fixes and hints so they don't use them. If they don't use them they just see them as cluttering up their environment and completely miss the point of the product!
Thursday, 4 October 2012
Visual Studio 2012 - At a Glance
I suppose I have to start with the lovely grey interface that has been the talk of the town since it was released. I know that the world and his wife has already had their 2 cents about this but I really don't understand why they made this decision. I have heard it said that the reason they chose it is because they think that the colourful nature of previous versions is too distracting. I honestly don't know who they were observing to draw this conclusion. It is simply ridiculous. Go into any UK office on a grey day and I would bet that everyone is glummer than they are on a sunny day. I generally see that if people are happier they work better and grey things do not make people happy. So in my eyes all that they have achieved is to make office life that little bit more miserable. Luckily for me I can make it pretty with a plugin so I will survive - although it doesn't change the icons.
![]() |
Does anyone else see the resemblance? |
Loading times appear to be just as slow as, if not slower than, 2010. It also crashed after we opened it the first time so we had to sit through it twice. The creation of an MVC project took a whole second to add each file that would be in the new project before we could do anything. I could tell because there were handy status notifications for each one. I am starting to think that this is a trend with Microsoft products. The main difference I noticed between Office 2007 and 2010 seems to be that the later takes twice as long to load. They have tried to disguise this by giving you status updates on how loading the application is coming along but I am not fooled. But who cares about load times anyway? It's not like we need to open and close Visual Studio all day so I think I could let it off for that.
The thing that I really don't like, and you are welcome to call me petty, is the shouty capitals. If the colourful icons were too distracting then I am sure being constantly shouted at will be too. I really hate them. Luckily you can turn them off so that one shouldn't be a problem either.
So now I have got that out of my system all I need to do is get over it and start using it because lets face it... I don't have much choice.
Sunday, 30 September 2012
Computing talks in Herts
Friday, 28 September 2012
Twitter as a Development Tool
It actually works really well in a development team. It is like having a continual start of day that lasts all day. If an impediment or question is raised everyone in the team will see it at once. If anyone has a question they can post it and anyone in the know can answer at their leisure. This means you don't need to disturb people while they are in mid-flow. Even better the team leader knows exactly what is going on at all times and does not need to ask.
Treating bug/feature ids and key words as topics starts to build up a knowledge base that can be searched so that the same questions need not be re-answered. It also helps organise the tweets into useful streams of conversations.
While this is a very new idea to most of my colleagues it is not really that new in the software development world. Issue trackers like JIRA have in built activity streams that allow tagging of users and issues. We are just being left behind because we use TFS.
Saturday, 22 September 2012
Team Foundation Server
- The web interface does not work in Chrome
- The My Work list on the web homepage lists all the work I have ever done and I can't seem to change the query.
- When you move PBs and Bugs to different sprints the tasks do not go with them.
- Queries that span multiple projects cannot be exported.
- The web interface is slow (granted probably not all Microsoft's fault).
- When you are looking at a change-set everything comes out at you as a modal popup so you can't get back to the actual code.
- Every now and again the modal popups decide to launch a browser window instead of a Visual Studio one.
- The query windows close when you select close all open tabs.
- If you edit a task while it is in the results of another open query you have to close the whole lot down if you choose not to save.
- 2 users cannot change a task at the same time even if one of them is TFS linking a change-set.
- The combination of the previous 2 is incredibly annoying when you have just checked in and then cannot update your work item as TFS is attaching the changeset.
- All attachments are downloaded with the same file name rather than their actual name - something like 'AttachmentHandler.aspx'
- The reports are really complicated to process and require a 'cube' to create the simple reports that all other systems seem to be able to create in real time.
- There is no support for evidence based scheduling.
- The workflow diagram's layout engine is ludicrously bad at laying out.
- The builds on the build server are given a completely different file structure to those on a dev machine making it much harder to write post build and packaging events.
- There is no in build auto increment version number feature.
- Scheduled reports don't know about the current sprint so have to be reconfigured every sprint.
- You cannot copy the PB number and name in one go - actually I did it once but it was by accident and I can't work out what I did.
- Unit tests have a different structure on the build server so they can't find any of the test resources unless they are embedded.
- The source location on your local machine is logged on the server so if someone else has ever used that machine you cannot check code into the same folder that they did.
- Get latest version is unreliable and I often find that I have to overwrite my local code to get the actual latest version.
- It uses visual studio to work out what changes you have made so actions like excluding a file from the solution ends up deleting it from version control... if I wanted it deleted I would have selected delete.
- It can't tell if I edit a file outside visual studio.
- The source control is not distributed.
- Cannot export certain queries if there is a space in your TFS collection name.
- The build workflow is complicated and not something you can just go in and tweak.
- It seems that every issue about it that I Google gets me to an Microsoft forum that starts off with them denying the problem and ends with 'we are looking into it'.
Friday, 21 September 2012
Entity Framework Bug
joinedSc.Is executed as:NullableBoolProperty != true
cast(1 as bit) <> [Extent1].[When in fact it should be (depending on your database settings):NullableBoolProperty]
[Extent1].[NullableBoolProperty] is not null
or cast(1 as bit) <> [Extent1].[Well done Microsoft!NullableBoolProperty]
Saturday, 8 September 2012
Literate Programming Once Removed
As I mentioned in my last post the annoyance about Literate Programming is that you write a lot more and end up with the same amount of code (though it may be of a slightly higher quality). This old article puts forward a view very contrary view to the one I made in my last post by saying the comments are mostly just clutter. The funny thing is that until I tried this literate programming thing I would have probably just gone ahead and agreed with him.
I still do agree with basically everything he says. If you write in a language surely you should be able to read it too? If you can't then it is probably because the paragraphs, grammar and punctuation are all in the wrong places. The only thing I will say is that he brushes the times that comments are useful off quite lightly.
1. In the styles of Javadoc, RubyDoc, et cetera for documenting APIs others will use.Yes it is most important that you document your API methods for external users but they are not the only users. If you write even a private method it is likely that people in your team are going to be using it before long. I would suggest that they would spend less time reading the intellisense than reading the method contents (or asking you how to use it).
4. Explaining why the most obvious code wasn't written. (Design decisions)I believe this one should include explaining why any of the code was written in the first place. The best code is already written, it does exactly what it should do, it's been tested and it does not need changing. When I read code I can usually tell exactly what it does at a glance. The hard thing to understand is why it does it. Sometimes there are business rules that are buried in a two year old spec somewhere, other times it is a severity 1 bug fix that never got documented and sometimes it is just a lack of thought when it was written.
When you write your reason for writing a piece of code you validate it's existence. Every bit of code is written for a reason and where better to document that than in the code itself. I think that is the thought that spawned literate programming and that is why I still think literate programming is still worth considering. Usually I find that the answer to this sort of issue lies somewhere in the middle of the two extremes.
Wednesday, 5 September 2012
Literate Programming
It turned out that some guy named Donald Knuth once had a thought that code was not really all that easy to read when you compared it to a novel (at least that's what Wikipedia said). He reckoned that you have to write the code differently in order to make it easily understandable. You should write it as a narrative where the code is more of a foot note than actual content. A utility application should pull the code out of the novel and reassemble it into source code which can then be compiled. To me this sounded a very convoluted process, especially if you introduce a bug. How would you reference back to your novel from a stack trace? So I decided that I would try and have a go at writing code in a Literate style using no more than regular comments.
My first attempt really turned out to be a small amount of code with lots of narrative comments. Some of the advantages were apparent immediately. Writing code comments as if you were actually writing a novel requires you to explain and justify even the smallest decisions. I found myself writing comments like:
/* First I check the parameter for null because it is good practice and I don't want to get some obscure NullReferenceException later on. */And:
/* The previous implementation of this involved such and such which was a bad idea because ... */Maybe I just hadn't commented my code well enough before but I was sure the next developer to change that code would appreciate knowing that we already tried said approach. I even found myself double checking my most basic assumptions because I knew people would be scrutinising my choices in the future. The obvious drawback was that it took me a lot longer to write the code.
Another less obvious advantage was that writing Literately encourages code reuse. If you write a code novel every line of code has to be explained as otherwise it is there for no reason. Things don't tend to happen in novels unless the author has written it. I may not mind repeating a very simple function in a couple of places in code (that's a lie I mind it very much) but I really don't want to be documenting my choices for doing it over and over again - and then maintaining that documentation in the future.
Really though I have only scratched the surface. Don't worry if you are a Literate Programmer and think I have completely missed the point. I am very aware that what I have done so far is simply commenting my code verbosely. There is much more to Literate Programming than lots of comments and I will be diving deeper into it you mark my words. The point is that if I had not read Jeff Atwoods chapter I would still be completely ignorant of it's existence so thanks Jeff.
Sunday, 2 September 2012
Cash Back Galore
I believe that Amex are charging an annual fee to new customers so if you want a cash back card I would check Money Saving Expert for the best cash back credit cards. You must also always pay the card back in full every month because any interest you have to pay them will be around 20 times the cash back they give you.
Further to this I have recently discovered online cash back sites like topcashback.co.uk. These sites allow you to click through to all the usual internet sellers like Amazon and Play and shop as you would normally. The difference is that when you go through these sites they will give you some or all of their referral fee as cash back. The going rate on these sites seems to be about 3% so if you then pay with your cash back credit card you are getting 4.25% back in total and that is not to be sniffed at. If you are really hard core at cash back you may be interested in Money Saving Expert's cash back site comparison tool.
Just to let you know I am not a financial advisor and this article is not advice. Never rely on cash back as it often takes a long/unpredictable amount of time to come back to you.
Wednesday, 29 August 2012
The Need to Write
In his book Jeff says that one of the reasons for creating stack overflow was to trick developers into communicating with each other. He says that if you do not use your writing skills enough, whether it be through a blog, stack overflow or another medium, you are not likely to be a very good communicator. Further to this he sets the challenge:
If you're not writing because you're intimidated by writing, well, you're likely to stay that way forever.When I first read this I thought that it was a good point and ran home to write a blog post immediately. Unfortunately I couldn't think of anything to write. So I went onto StackOverflow to impart some knowledge onto my peers.
I do not get on with StackOverflow. As far as I can see it is a platform that allows lazy people to get their work done by those with too much time on their hands. It seems that 90% of the content is made up of two types of questions:
- The ones written by people who just don't know how to code and haven't bothered to learn. These can be answered by just about anyone for easy rep.
- The ones about weird and complex bugs or design decisions that other people have to go away and investigate. I have better things to do than investigate other peoples bugs.
Luckily for me it is much easier to moan about things than to come up with a constructive article and my growing annoyance at Jeff for setting me a challenge I was not able to complete gave me the inspiration to write this post!
Thursday, 19 July 2012
Amazon Discounts
Saturday, 14 July 2012
Tesco Value?
If this really were £2 per 100ml it would be £5 not £1.
MVC DataGrid
MVC is a fantastic improvement on the old ASP.NET web sites. It completely gives you back control of your website and no more ViewState! The one thing that does not come out of the box in MVC is a datagrid implementation. You can create tables in no time at all but when you want to start paging, filtering and sorting it starts to seem a bit like hard work compared to the good old ASP.NET DataGrid. But do not despair this jQuery grid can be up and running in no time.
In its simplest form you can just dump all your data in a html table and call the datatable method. But it is also very quick to implement server side paging, sorting and filtering too.
The grid is fully skinable with default styles for paging, sorting and a throbber making it very quick to develop with. It also supports custom column rendering to suite your every need, though if you are using server side you have the option to do it on the server.
DataTables is made available under both the GPL v2 license and a BSD (3-point) style license. You can select which one you wish to use the DataTables code under.
Wednesday, 15 February 2012
Resharper Plug
Using an object that is in a different namespace
Without Resharper
- Type the full name of the class 'BowlingBall' in your code block and look for the Visual Studio icon to add an import statement.
- Wonder why it hasn't come up and get frustrated.
- Delve into the solution explorer to try and find the class.
- Finally find the class and see that the person who created it has made an unfortunate typo and that it is actually called BowelingBall - I will leave renaming for another day.
- Curse the idiot who made the typo.
- Return to your original code file and correct the typo.
- Use visual studio to add the relevant import statement.
With Resharper
- Type 'BB' into your code block.
- Press Shift+Alt+Space
- Select from the short list of classes displayed (also including BouncyBall and BreadBoard).
- Laugh at the unfortunate typo and those doing it the manual way.
Friday, 10 February 2012
Man Riding a Pig
Wellies
The Fiesta
The Dalek
Thursday, 9 February 2012
Airbox Aerospace
It has also won the Royal Institute of Navigation’s prestigious award for Technical Excellence, been recognised by the CAA as an outstanding contribution to flight safety and been credited with a major role in reducing Airspace infringements.
All in all I'm pretty proud of that little project.