Monday, 20 July 2009
Brighton ALT.NET Beers: Tuesday 4th August, 7pm at The Prince Albert
Tuesday, 26 May 2009
Brighton ALT.NET Beers: Tuesday 2nd June, 7pm at The Prince Albert
- Data Transfer Objects (DTOs)/View Presentation Models
- Do you Fitnesse?
- Why are Singletons considered harmful?
- Except for C#, what is another good language to know/learn now?
- Functional Programming.
- Which view engines are you using?
- Liskov substitution principle.
- Is the Entity Framework any good?
- How do you make youself a better developer?
- Favourite programming books.
- How can you make money from software?
- Code Complete
- The Pragmatic Programmer
- Head First Design Patterns
- C# in Depth
- Don't Make Me Think
- UML Distilled
- CLR via C#
- Principles of Artificial Intelligence
- Working Effectively With Legacy Code
- Agile Patterns and Principles
- Agile Web Development with Rails
- Joel's Best Software Writing I
- Pro C# and the .NET Platform
- Patterns of Enterprise Application Architecture
- F# for Scientists
Monday, 27 April 2009
Brighton ALT.NET Beers - Tuesday 5th May 2009 - 7pm @ The Prince Albert

The next Brighton ALT.NET beers will be this coming Tuesday 5th May 2009 - 7pm @ The Prince Albert public house in Brighton.
It's very easy to find as it's right next to the station:
http://tinyurl.com/PrinceAlbert-Brighton
The last one was a great success, with a range of interesting topics discussed in a very friendly open forum.
You can see previous posts on what the format will be and a review of the first meeting.
Hope to see you there!
Thursday, 2 April 2009
Brighton ALT.NET Beers - A Review
Huge thanks to everyone who turned up to the inaugural Brighton ALT.NET beers. There were 16 of us in total (a fittingly nice binary number) and we had a lively discussion on a wide range of topics. I definitely came away with my mind opened about a couple of things, which is certainly the whole point.The topics voted for discussion were:
- What’s your favourite way of doing data access?
- Why do you do .NET?
- Joining a non-ALT.NET team.
- Do you DDD?
- Alternative frameworks such as S#arp Architecture.
- Avoiding generics hell.
- 'Walking skeleton' architectures.
What follows certainly isn’t an exhaustive dissection of the conversation but I hope a reasonably accurate reflection of the mood in the room. Please post amendments/corrections below if you feel it’s inaccurate or I missed an opinion.
1. What’s your favourite way of doing data access?
The general consensus was that using an O/RM was the best method of database access. The main reason cited was the massive reduction in effort in writing/generating stored procs etc and then having to maintain them. Linq-to-SQL and SubSonic were discussed but the overriding choice was NHibernate.

It was clear that pretty much everyone had done the stored-procedure maintenance or DAL generation gubbins before (many, many times over) and if you’re not using NHibernate or something almost as good, you’re probably doing far more work on your data access than is necessary.
(There has been criticism in that the ALT.NET movement can be a little dogmatic when it comes to NHibernate. However you can’t escape the fact that the experience that most of the 16 people in the room have had so far, has been overwhelmingly positive. I think that everyone who had used it in anger agreed that it is currently by far the quickest/most mature/easiest/cleanest way currently of doing data access.)
2. Why do you do .NET?

As this was the first meeting it was nice to go around all 16 participants and ask what attracted them to .NET development. Generally people discovered it via VB, classic ASP and C++. First impressions of the .NET framework were pretty positive and it compelled people to find out more. I think I’m right in saying that everyone in the room including all the ex-VB developers now use C# as their primary language for .NET.
3. Joining a non-ALT.NET team

This discussion was centred on what happens when you join a team with little or no awareness (for whatever reason) outside the Microsoft eco-system. Do you try and convert people with death-by-PowerPoint? Probably not the most effective stratagem. Is it better to start with small bits of projects at first and ALT.NETify them to show people very plainly that it will make their lives easier? What’s the first thing that should be introduced? Unit testing? TDD? Continuous integration? IoC? The was a feeling that a lot of the ALT.NET stuff doesn’t really work to its full potential in isolation, but it’s probably best to start small, with things that show immediate value and build up from there. One suggestion was have a CI build server first, then write some breaking tests when fixing defects.
4. Do you DDD?
It was acknowledged that a secular tome of significance on Domain Driven Design (DDD) is Eric Evans’ ‘Blue Book’. (See Mike Hadlow's blog post here).

There were some great points made about how to identify an object, does using the ID generated by the database break the goal of persistence ignorance? Is using the ID a sensible pragmatic solution to the common problem of establishing identity/equality? Can using the ID in URLs help when it comes to REST and SEO? If an entity is incomplete in some way, does that signify that another intermediate entity with a different business meaning is required?
5. Alternative frameworks such as S#arp Architecture
Just over half the room was aware of Billy McCafferty’s excellent S#arp architecture framework. There was a brief discussion on why SharpArch is currently easiest way to rapidly build a ALT.NET type ASP.NET MVC system with NHibernate, NUnit, Castle Windsor and Rhino mocks.

If you haven’t tried Sharp Architecture yet and you do ASP.NET MVC, do check it out because it is fabo:
http://www.sharparchitecture.net/
6. Avoiding generics hell
Dare Obasanjo has a nice summary of what this can mean here. There doesn't seem to be a clear answer to the problem at this time. Covariance/contravariance coming with C# 4.0 will help.
7. 'Walking skeleton' architecture
This topic was about merits of whether or not is was worthwhile to have a separate framework you use for smaller/simpler projects. What happens when the requirements expand and the simpler framework gets in the way because it’s so brittle? Is using IoC total overkill on a brochure site? Where does one draw the line? Does it take more effort to maintain a separate framework than bend the framework you use for complex projects to simpler ends? Is everything else outweighed by the comfort and predictability of a smoother complexity gradient?
Conclusion.
This was an excellent meeting. It showed the massive enthusiasm in the Brighton development community for wanting to seek out the best way of creating excellent software.
Let's do it again.
So as not to clash with the London ALT.NET beers (last Tuesday of the month), we will hold our beers on the first Tuesday of the month so I'm delighted to announce that our difficult second meeting will be at the same time at the same place on Tuesday 5th May 2009, 7pm at The Prince Albert, Brighton. I will mention it again nearer the time, but you can pencil it in your PDAs right now. If you're following me (@iainholder) or Mike Hadlow (@mikehadlow)on twitter you deffo won't miss it.
Hope to see you there.
Friday, 20 March 2009
Brighton ALT.NET Beers: Tues 31st March 2009. 7pm.
Are you ALT.NET? Are you Brighton? Well if you’re one, the other or even neither of those but would like to know more, you are hereby cordially invited to the inaugural Brighton ALT.NET meet-up. So there you have it. A meet-up in a back room called the 'Red Room’ in a pub called the ‘Prince Albert’ with an original Banksy of two policemen kissing on the side. It couldn’t be more Brighton if Fatboy Slim turns up dishing out sticks of rock.
“We are a self-organizing, ad-hoc community of developers bound by a desire to improve ourselves, challenge assumptions, and help each other pursue excellence in the practice of software development. Our movement is new. The conversation just started. All are welcome to shape and form the dialog in blogs and lists and face-to-face gatherings both local and global.” [Source: http://altdotnet.org/]
- Whoever comes is the right people.
- Whatever happens is the only thing that could have.
- Whenever it starts is the right time.
- When it's over, it's over.
We will spend the first 30 minutes or so, arriving, saying hello and writing potential topics of discussion on post-it notes. When we’ve done that, we gather all the ideas and vote on the couple we would like to discuss together in depth.

Thursday, 19 February 2009
Nullable<bool>

I don't like Nullable<bool>. The cognitive dissonance is louder and more dissonant than a Sepultura guitar solo. [3'00]
A boolean is defined as: "Of or relating to a data type or variable in a programming language that can have one of two values, true or false."
Two. Deux. Zwei. Dos.
TWO!
Not three.
But that is what exactly Nullable<bool> is. True, false and null. Three states.
What does null mean? It's got to mean something. You're either pregnant or you're not. You can't have a third state. A light switch is either on or off.
If a light switch doesn't exist then it's potentially very dangerous. Almost as dangerous as having a nullable bool.
If it has three states, it isn't a bool.
Tuesday, 17 February 2009
The Pomodoro Technique aka Tomatoes!
You say tomayto, I say tomahto.One of the things buzzing around the blogosphere and twittersphere recently is the Pomodoro Technique.
The idea is fairly straight forward. You create 25 minute segments in which you concentrate on a single task. Nothing gets in the way of what you're doing. If you think of something during a task, or you realise that the task will need further sub-tasks, you are permitted to take a note, but you must finish your 25 minutes focusing on the task in hand. If the task takes 15 minutes, you still stick with the task. You "over-learn" it.
From the link above here's what you need:
- Pencil
- Kitchen timer
- To Do Today Sheet – today’s date, my name and a list of my activities planned for today
- Activity Inventory Sheet – my name and a unordered list of my upcoming activities in the near future
- Records Sheet – my sampled process metrics to be used for my process improvement
This is what it looks like while it's running. Note that the form title also has the time on it. This is useful because you can see how much time is left in your task bar.

When it's finished it beeps once and looks like this:

You can press start at any time to reset the timer to 25 minutes.
You can download the application here. The source code is here. No unit tests as this is a quintessential 'trivial' application.
You will need .NET 2.0 or later installed for the application, and Visual Studio 2008 for the source.
