Monday, 20 July 2009

Brighton ALT.NET Beers: Tuesday 4th August, 7pm at The Prince Albert


I know we talked about possibly of doing this one outside, but the weather has been too changable of late, so let's convene indoors.
At the pub.
Ace.
So I'm delighted to announce that the next Brighton ALT.NET beers will be:

Tuesday 4th August, 7pm at The Prince Albert.

If you're a .NET developer in the area and you haven't been yet, do come along. The group is super-welcoming. We want to hear your ideas about how you think software should be written.
Hope to see you there!
P.S. Hopefully we'll get a chance for the even-less-formal beers on the beach in Septemeber.

Tuesday, 26 May 2009

Brighton ALT.NET Beers: Tuesday 2nd June, 7pm at The Prince Albert

Once again, a big thank you to all of those who turned up to the Brighton ALT.NET beers on Tuesday 5th May.  Despite being the first day after a bank holiday, numbers were still good and many topics were discussed in an informal setting over a pint or two.

More drinking and thinking this coming Tuesday:

Brighton ALT.NET Beers, Tuesday 2nd June, 7pm at The Prince Albert.

The topics voted for discussion in the previous session were:
  1. Data Transfer Objects (DTOs)/View Presentation Models
  2. Do you Fitnesse?
  3. Why are Singletons considered harmful?
  4. Except for C#, what is another good language to know/learn now?
  5. Functional Programming.
  6. Which view engines are you using?
  7. Liskov substitution principle.
  8. Is the Entity Framework any good?
  9. How do you make youself a better developer?
  10. Favourite programming books.
  11. How can you make money from software?
A healthy list of topics! 

I'm not going to go over each one, but some lists came out of a couple of discussions.

They were:

4. Except for C#, what is another good language to know/learn now?
10. Favourite programming books.

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:

  1. What’s your favourite way of doing data access?
  2. Why do you do .NET?
  3. Joining a non-ALT.NET team.
  4. Do you DDD?
  5. Alternative frameworks such as S#arp Architecture.
  6. Avoiding generics hell.
  7. '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.

What: Brighton ALT.NET meet up/beers.
When: Tuesday 31st March 2009, from 7pm.

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.


[photo source: here]

What is ALT.NET?

“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/]


Which boils down to you coming and talking to other developers about .NET development best practices.

Alan Dean had a good tweet on the ALT.NET dynamic:

"This is my definition of the alt.net dynamic: we all agree what is bad, we all agree what is good but we'll disagree what is best."*

Open Spaces
The session will be loosely based on the ‘Open Spaces’ philosophy:
  • 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.

PI is exactly 3
Everyone is encouraged to take part. In the spirit of Jeff Atwood’s Strong Opinions, Weakly Held blog post, don’t be afraid to have an opinion without wrapping it up in a big ball of disclaimers.

Don’t feel intimidated
Unsurprisingly this becomes less of an issue when even the most reticent are on the way to completing their second pint. Ayende came and sat next to me at a London ALT.NET meet and I still piped up. I doubt there has been, or will be a greater skill differential than there was on that table that evening so, really, don’t worry about it. We are all learning together.

Reply below and let us know you are coming
You certainly don’t have to - just turn up on the evening, but it would be great to give us an idea of numbers. You can let us know that you are coming by posting a reply below. You can also let us know on the UpComing page. Please note that if you want food, say so below as the kitchen usually closes by 7. They will stay a little longer if enough people tell us in advance or you will have to turn up earlier to ensure you get fed.

Hope to see you there!

*If we were a bit, what James May would describe as ‘poncey’, that would sound great in Latin on a ALT.NET coat of arms: De malo consentimus. De bono consentimus. Disputamus quid optimum sit.

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:
  1. Pencil
  2. Kitchen timer
  3. To Do Today Sheet – today’s date, my name and a list of my activities planned for today
  4. Activity Inventory Sheet – my name and a unordered list of my upcoming activities in the near future
  5. Records Sheet – my sampled process metrics to be used for my process improvement
I followed Uncle Bob and bought a kitchen timer that looks just like a tomato. The problem is that it's very noisy. The ticking was starting to get annoying, so I knocked up a very simple software timer.

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.