Obviously anyone who uses MSDN online knows it been updated and now looks like a really poor MySpace page!But I did find one feature I really like today - 'ScriptFree' mode, this is a god send in a company environment pages now load in near light-speed, check out the 'Switch View' options on the righthand side of this page.Hopefully they'll bring out a '1992 Times New Roman' version soon ;)Awkward Co...
Monday, 14 December 2009
Thursday, 3 December 2009
Schrödinger's Service
Posted on 05:46 by Unknown
Where I currently work the team has a set of SOA services that are used by alot of different app teams in the bank. In the UAT environment we occasionally get support issues where people can't access the services - they're receiving 404 errors!When ever we check the services locally or remotely they're working fine and have been all the time - it appears the problem is in the infrastructure between the app team and the service endpoints. This doesn't really help our perception to rest of the bank and it's a bitch to resolve!So we've come up with...
Wednesday, 2 December 2009
Can I make a value object from an entity?
Posted on 03:05 by Unknown
I've built a rich domain model for a private app I'm working on, it feels right, it got the correct mix of business functionality and models the domain problem very well, it even has flexibility for the future. I consciously had to keep focusing the domain expert and myself on the current iteration and not the future!So I reached a point where I want to expose a 'view' depending on the 'context' of usage.Simply put I want to expose data from some of the entitles as a 'catalog'. This catalog is immutable - the users of the catalog can't change or...
Wednesday, 18 November 2009
Continents move faster than the software industry!
Posted on 03:39 by Unknown
Read this last week and it shows how dynamic and fast moving the software industry really is!Awkward Co...
Removing friction from the process
Posted on 03:35 by Unknown
Oren has a great blog post about friction in the delivery of software and how it should be evaluated and removed ASAP.Awkward Co...
Wednesday, 11 November 2009
build for test != build for release
Posted on 02:17 by Unknown
This might seem obvious to a lot of people - the people who actually do testing, but to everyone who doesn't or just waves a derogatory hand in the general direction it isn't...The differences manifests it's self in how the codebase is structured in your source control system. A codebase setup for test will have all the dependencies in the correct structure so when you pull the codebase, build the code and execute the tests you don't have to know what or how it's installed when the application is released - seems obvious right!I've just attempted...
Friday, 6 November 2009
When I'm a new team member
Posted on 09:06 by Unknown
Jsut had a meeting about how to improve the build process for the team - the current structure of the code in the source control system means I can't just get the code out and build it - this to me is the sign of a failing project\team!I believe every project should be structured so that the following use cases are valid for any new developers coming onto a team, there's nothing more demoralising to new team members when you have to some kinda of voodoo to get a project to build;As a developer I want to install the IDE So that I can compile source...
How to reduce url length in C#
Posted on 04:20 by Unknown
I needed the other day to reduce the length of a URL - so I decided to use a URL reducing service like tinyurl.com And I thought I would share the C# .Net code - nothing new I'm sure and there are plenty of examples out there.public sealed class TinyUrlReducer : IReduceUrls{ private readonly string _tinyUrl; private readonly string _proxyUrl; public TinyUrlReducer(string tinyUrl) : this(tinyUrl, null) { } public TinyUrlReducer(string tinyUrl, string proxyUrl) { _tinyUrl = tinyUrl; _proxyUrl = proxyUrl; } ...
Bad developers love 'The Daily WTF'
Posted on 03:47 by Unknown
When 'The Daily WTF' started up back in 2003/2004 it was a great laugh looking at shocking code other developers wrote, but after a bit it became repetitive and boring and a sad indictment of the industry.Now on my contracting travels around the industry the people who continue to love and read this site definitely fall into the 'bad developer' bracket on the whole, why? Simple because they subconsciously believe this is the way the industry is and always will be and they find it comforting to their bad practices.Example: This guy tries to ridicule...
Monday, 2 November 2009
When will it be finished...
Posted on 02:34 by Unknown
Developing software is synonymous to writing to a book, not because it's a creative task - which I do believe it is, but because when you write a book you go through many drafts before getting to the final released version. Just because the writer completes the first draft doesn't mean the publisher thinks it's ready for publication etc...Software development is the same unless you (the developer) is prepared to think in an iterative approach you'll never be able to break free from classical development paradigms, you have to accept the first version...
Friday, 23 October 2009
Auditing user actions
Posted on 06:12 by Unknown
I want to be able audit user actions on the domain model - I want to track when & what they've changed. Now I can do this at the course grained level using nHibernate event listeners, they can tell me when an entity is loaded, saved, updated etc. But without interrogating the state of the entity in depth I'm unable to determine what's gone on between loading an entity and it being saved.This is where the idea of domain events comes the rescue - the idea of generating events from the domain model. Now this could be done using the standard .Net...
Wednesday, 21 October 2009
Unstructured development opportunity
Posted on 10:07 by Unknown
Anyone spot the oxymoron in the snippet of a job spec I received today:Ability to handle multiple competing priorities, work with minimal formal specifications, and deliver at the highest levels.It then goes on to say:Experience of designing, building and maintaining sophisticated automated trading applications with a large userbase and significant business dependency. Equity, future and option experience and working closely with business users.There really must be some telepathic developers out there - no specification but expected to do some...
Monday, 19 October 2009
Property setters are just wrong!
Posted on 01:43 by Unknown
In general I think the use of property setters on classes is a sign of bad class design and a lack of OO principles - in most cases when you modify the 'state' of a class some 'behaviour' is invoked whether it be implicit or explicit;e.g. when I change the address on a user account I want to make sure the address object has been populated (at least).So these days I've started to design classes that have public getters & private setters, and if you want to modify state you are required to call a method, e.g. 'ChangeAddress'. This is nothing...
Sunday, 11 October 2009
Lambda beats magic string
Posted on 09:16 by Unknown
Okay magic strings are a pain, in the worst cases they're bugs waiting to happen but I've been living with the following for while and it's always been nagging me when ever I look at the code.public abstract class Observable<T> : IEntity<T>, INotifyPropertyChanged{public event PropertyChangedEventHandler PropertyChanged = delegate { };private T _id;public virtual T Id{ get { return _id; } private set { ChangePropertyAndNotify(ref _id, value, "Id"); }}protected void ChangePropertyAndNotify<T2>(ref T2 value, T2 newValue, string...
Thursday, 8 October 2009
Using repositories inside a domain entity
Posted on 08:51 by Unknown
If you follow the principles of DDD you'll be well aware of the persistence ignorance discussion\argument. I believe domain entities should be agnostic of the persistence layer and therefore not statically bound at compile time. Overall I'm happy with this approach but it does give issues when trying to place certain business logic on the entity that requires access to some service (read repository).Now obviously you can use the 'double-dispatch' approach and pass in the repository via an interface and only couple the entity to an interface, but...
Wednesday, 7 October 2009
Functional intro
Posted on 02:37 by Unknown
Jeremy Miller has a great article in this months MSDN magazine introducing functional programming for the OO developer. If you've been using the features of .Net 3.5 - Func, Action, etc. you've probably been using these techniques & patterns without realising. I know I have.It's a good read!You might also be interested in Jon Skeet's new book release later this month.Awkward Co...
Tuesday, 29 September 2009
Mocks, Fakes, Stubs - why bother?
Posted on 03:44 by Unknown
Ever wondered why there are so many different names for the objects that mimic behaviour of the 'real' objects in a system - mocks, stubs, fakes, doubles...I can't help looking at the tables of definitions on this page and think why bother!Why have all these mocking frameworks gone and raised the bar of understanding for people who don't like TDD or who don't currently do TDD. To me everything is a mock if it's not the real thing - pure and simple. So when I write tests I call everything a 'Mock' so the tests are easy to read & understand by...
Monday, 28 September 2009
Distributed Systems are Coupled - Period!
Posted on 08:55 by Unknown
If you're doing distributed systems development your systems will be coupled together - period! You can't get away from this statement it's a fact of life. Now how much you're coupled is another question.After the revelation I had last week that most REST systems aren't REST at all and are in fact just over-elaborated RPC (oh look we've reinvented CORBA again!) - link. I've come to the conclusion that REST systems aren't easy to implement and anyone who tells me otherwise doesn't know anything about distributed systems!If REST systems were as easy...
Friday, 25 September 2009
Devlicio.us boys run out of duct tape!
Posted on 08:24 by Unknown

trying to reply to a blog about duct tape programmers and guess what ;)Awkward Co...
Test Harnesses are counter productive...
Posted on 06:33 by Unknown
How often do you hear:'Why do I need to write tests when I've got a perfectly good test harness?'Now I hear this often and I'm not surprised anymore when I hear it, it's a sign of a dis-functional team where team members don't value the team they only value their output.I've highlighted the words that give it away:'Why do I need to write tests when I've got a perfectly good test harness...'There is no 'I' in 'TEAM'!Anyone who insists test harnesses are just as good as automated tests is plain wrong.They're selfish developers who only care about...
Wednesday, 23 September 2009
So you thinking you're doing TDD?
Posted on 02:37 by Unknown
I work freelance and like most freelancers I change job relatively frequently so therefore I do a lot of interviews. One thing I've noticed when being the interviewee is the amount companies lie!One of the common technical lies I hear is 'We use TDD, all code is under test and we run automated builds...'I use to take this at face value - being a trusting fellow and not wanting to judge someone to quickly ;)So if I want to know how much truth is in the statement I could follow up by asking about mocking frameworks, BDD & Dan North etc...But...
Monday, 21 September 2009
I know nothing moments...
Posted on 10:00 by Unknown
I was researching RESTful APIs today, it's couple of months since I worked on a RESTful project and I'm thinking of doing a small project with a RESTful API.I discovered this link and found out that all my previous RESTful APIs aren't really RESTful ;)So after discussing this on Yahoo groups I feel like I know nothing about REST now :(Feeling stoopid now...Awkward Co...
Saturday, 19 September 2009
The secret all developers should know...
Posted on 09:08 by Unknown
Dave Laribee gives away the secret ingredient! http://codebetter.com/blogs/david_laribee/archive/2009/09/08/the-secret-sauce.aspxnuff said...Awkward Co...
Friday, 18 September 2009
How to test a static dependency used inside a class...
Posted on 06:28 by Unknown
This is a question that keeps coming up and I know if you're practicing it's a no brainer but I keep getting asked this by devs (I'm no testing God!).The long answer is to read this book and pay attention when talking about 'inserting a seam'.The short answer is carry on reading...Now several people (read Jimmy Bogard) have already answered this but here is my take on this looking at my current client, they have a lots of deeply nested static dependencies - these are implicit dependencies and what you really want to is explicit dependencies because...
Thursday, 17 September 2009
Application auditing - an example why I don't work at the weekend...
Posted on 07:20 by Unknown
Ever had a situation where you're OLTP requirements are impeded by your OLAP implementation, well to put it another way - have you ever come across an auditing solution that causes transactions to timeout when you're trying to save data into your production database.Well the answer for me is far to often for my liking and this is an example of 'synchronous auditing' and I believe this is an anti-pattern in the making. I'm firmly in the camp that believes auditing should be done asynchronously by a different (application) process. The reasons why...
Repository pattern - my preferred implementation...
Posted on 05:29 by Unknown
Okay it's nothing new and not even original but I wouldn't to get down my currently preferred implementation of the repository pattern. I suppose this was prompted by a blog by Jimmy Bogard and Oren's statement a couple of months ago the repository pattern may be near then end of it's life.I still think in the .Net world they have great relevance as most .Net devs can't organise code for toffee and when you try and introduce layering into an application the use of an explicit repository layer is the first layer they seem to understand.So here is...
Auditing with nHibernate...
Posted on 02:02 by Unknown
Long time since I've posted anything but I came across an interesting problem the other day whilst I was working - 'How can I audit changes to specific entities when using nHibernate?'There are several implementation out there already (see Oren's & others posts) but of ones I've seen they are to low level for my liking - they push the auditing of changes into the NH infrastructure away from the Service implementing the business behaviour. I want my service to control and define what is audited I don't want everything audited in the same manner....
Thursday, 2 April 2009
Maybe courage is the key...
Posted on 04:37 by Unknown
I went to an all day planning session yesterday for the next set of sprints for a client, they're doing 3 sprints for the next release with each sprint being 2 weeks long. I was there to provide architecture advice on the implementing the functionality using their newly adopted MVC(P) pattern and layered architecture.I sat in on several sessions for one team and they where going great guns at producing a development backlog. By the end of the session they had a good break down of the technical tasks required for the sprints, this included estimations...
Monday, 30 March 2009
Applying context to a model...
Posted on 06:32 by Unknown
I didn't attend QCon earlier this month, but I followed several attendees blogs and co-workers responses to the Eric Evans opening presentation. Alot of people mentioned the fact that Evans wished he'd dealed with 'Bounded Contexts' earlier in the book.I'm now getting this feeling very much on my current assignment - over the last week we've had a great realisation that the application is a chameleon or if I'm feeling less generous a 'wolf in sheep's clothing...'The minute you realise you've multiple different user types using your application...
Sunday, 29 March 2009
IT - a fall back opportunity...
Posted on 07:15 by Unknown
I don't mean to demean teachers & teaching but 'IT' has become what teaching had become to any university graduate before 1995 - a fall back opportunity in case you couldn't think of anything more interesting to do with your life. I remember quite a few graduates of the early 1990's who did teacher training just because they couldn't be bother to work out what they wanted to do with their lives, not exactly an encouraging state of affairs for the education system. It was only a fictitious TV show but Teachers hit the mark for me.And now we're...
Thursday, 19 March 2009
No one owns the Domain Model...
Posted on 13:42 by Unknown
May be I should be more precise, and say 'No one developer owns the Domain Model...'. We all share the 'code ownership' and no one coder is responsible for the state of the domain model. Now you're probably thinking I'm going to elaborate on the fact the team I'm currently working with don't take code ownership seriously - they don't - but I'm not going to mention that. I'm talking about when you're a tech lead\coach you don't have 'first dibs' on the structure of the model and how it's implemented. To be honest in a DDD environment we don't have...
Sunday, 8 March 2009
ReadOnlyCollection<T> meets BindingList<T>...
Posted on 06:26 by Unknown
Okay my first post and I was going to jump right in and try a fill a gap in the blogging worlds knowledge about having a read only collection that supports notifications of modifications to collection members when programming in .Net - what happens when ReadOnlyCollection<T> meets BindingList<T>? The simple answer to that question is ReadOnlyObservableCollection<T> in version 3.0 or higher - it provides the exactly functionality I require and gets away from the awful 'Binding' prefix name which has to...
Subscribe to:
Posts (Atom)