Weighing in on the WPF book debate.

April 30, 2007

Eric Sink recently commented on the book debate that’s started up.

Part of me agrees with Eric Sink. It is definitely in a developers best interest to have a deep understanding of what they are doing. But I’m also in the camp that thinks that software development has gotten so complex that I personally cannot afford to be a generalist. I need to be able to balance my family time, my work time and my education time. This means that I need to be a bit more focused on what I am learning. When it comes to something like building a Solid Core I will take the time and effort it requires to gain a deep understanding.

But WPF is not something that at this point I feel that I need to grok. That doesn’t mean I don’t want to play with it, and hopefully use it in a project. But for now my needs are going to be more a long the lines of “How do I use it to accomplish what I want” and based on what I’ve heard Unleashed is going to be a better fit for that need. In the future if/when I need to “grok” it I’ll look at my options at that point. Maybe the Petzold book will meet my needs. Maybe I’ll need to attend a course or maybe both.

So in the end I guess I’m just a fence sitter who sees a need for both types of books depending on the situation. I’m guess it’s a good thing that there are smart people out there writing both types of books.


FogBugz & Subversion

April 30, 2007

Well some good actually came from the TFS vs OOS/whatever war that is going on over in Ayende land. Ayende linked to an article on setting up FogBugz (Good!) to work with Subversion (Great!) so you can link check-ins to bugz.

This is one of the features of TFS that I was super jealous of. Now that I know there is a way to get the same functionality without TFS (I’ve tried it and I am not a big fan..) I’m a happy developer.


Singleton Serialization

April 27, 2007

One of the techniques that I’ve found to be of some value is the usage of class instances as enums. An example of this is…


public class MonitorType
{
    public static readonly class BenQMonitor = new        MonitorType("BenQ");
    public static readonly class SamsungMonitor = new        MonitorType("Samsung");
...

One thing I haven’t had to deal with yet was serializing one of these.

If you think about it though this would cause a problem though since de-serialization would cause a new instance to be created, when really you want your singleton instance. But thankfully this little problem has been solved via this little article. Good thing to keep in the back of your brain if you follow this enum approach (or any other approach where you would serialize a singleton.).


Happy Birthday Edmug!

April 27, 2007

Well yesterday was the the Edmonton .Net User Group aka Edmug’s 1st Birthday. While there was no birthday cake or singing but there was an interesting presentation and lots of cool prizes.

The event itself was held downtown at the Maverick Brewery. Personally I really enjoyed the location. The seating was comfortable and there was a good view of the screen from pretty much every spot in the place. It would definitely be cool to have other events at this location (especially if it’s a bigger name coming..?)

As for the presentation the topic was Domain Specific Languages. I’ve heard about these a bit in the last while, including the Microsoft DSL tools. In fact I’m pretty sure there is a project targeted at helping with NHibernate that uses it. I just can’t find it right now. Christians Izquierdo is a very good presenter and kept the audiences attention even though the subject itself can be a bit dry. The one problem I see with the presentation is that there wasn’t much discussion about how you could actually use a DSL. Or more specifically problems that have been solved using a DSL. Knowing about the existence of DSLs is definitely a good thing but it helps to see how people are actually making use of them. Well okay there was mention of 4 existing DSLs but not much discussion about them.

As a side note, Martin Fowler has a good presentation online called Introduction to Domain Specific Languages . I recommend giving it a watch if the subject interests you.

At the end of the presentation prizes were given out. There was a ton of licenses for software. There were 5 licenses of the JetBrain’s pack which included dotTrace and Resharper, 10 licenses of CodeSmith (of which I won one!) and 2 licenses (don’t quote me on that #) of the ComponentOne pack. There was also some hardware given away. A couple keyboards, a few mice and most importantly an XBox 360 Premium of which I am the new proud owner!! A special thanks goes out to the guy who won this puppy first but decided to pass up on it because he already had one.

So with that I congratulate Edmug on a very successful first year and expect many more to follow!


Jean-Paul gets CoDe-ified!

April 27, 2007

Congrats to Jean-Paul for getting CoDe-ified!. Another well done article that will hopefully inspire some as much as Jean-Paul’s earlier work inspired me.


Code Guardian – Amazing how far CG has come…

April 26, 2007

BoingBoing has a post up about a CG short movie called Code Guardian. While I’m sure a ton of work went into this project it still amazes me that we can produce short films with CG of this quality and give them out for free.

Definitely worth checking out.


Defining YOUR design style

April 17, 2007

Design…

It’s a simple word really but for me personally this has been one of the hardest skills to implement. I’ve spent a lot of time over the last while learning from others. I’ve attended a course.. read code.. discussed with people and during all that time I’ve come to see how many different views there are. Design is a very personal skill. And your personal design beliefs are something you have to define over time. There comes a point when you have to stop saying “Well I heard about such and such..” or “So and so says this..” and decide what you believe. Then you need to start to express those beliefs as your own. I believe this is a very important step in being taken seriously as a designer. Of course your beliefs will change over time as you are exposed to new things. This isn’t a bad thing. If you ever find yourself working the exact same way you did 6 months ago then something is wrong. But at the same time you need to seriously consider each new thing you learn and decide for yourself where it fits.

I personally have started to define my own style. While what I believe is heavily based on Jean-Paul Boodhoo, Martin Fowler and various others it has become mine. When I have a discussion with someone, or when I recommend something it has to be done with my own personal beliefs. A large part of defining your own style is to take time to test out your beliefs. If you’re a believer in ORM then make sure you’ve worked with it. Spend a little bit of time writing your own mapping layer. I personally don’t think you can truly believe in something until you can explain and defend your belief in it. And the best way to do that is to have at least a bit of experience in the alternatives.


Prioritizing Education…

April 6, 2007

One of the hardest things I’m trying to decide right now is how to prioritize my life. I’ve got the following list of things to do in 2007.

1. Learn NHibernate
2. Learn Ruby
3. Catch up on DNR
4. Learn C# 3.0
5. Learn WPF
6. Touch WCF
7. Learn SmartClient & ClickOnce deployment
8. Grok Dependency Injection
9. Grok Pragmatic Programmer
10. Implement each pattern in
a) Design Patterns
b) Patterns of Enterprise Architecture

So.. as you can see that’s a pretty big list. I do have a lot of time though since I try to spend about 12-20 hours a week of personal time on education. I think though that the latest post from Jean Paul
makes a lot of sense. Thought I think I will tweak it a bit. I’m thinking 60% core and 40% new technology. I’m actually reading a book called Object Design Roles, Responsibilities, and Collaborations to help improve my object design skills.