Thursday, November 22, 2007

Todo list

As always there is far to much stuff happening in the world.... I need a list!

Languages I want to learn (or at least learn more about):
  • Erlang
  • Boo
  • IronPython/Ruby
Things I want to play with:
  • VS 2008
  • Cruisecontrol.net (I have never actually implemented it myself.. which is bad)

Stuff I have been playing with recently:
Oracle. Its a big beast and is really quite different to MS/MY/T SQL. But I can see why it is the dominant RDMS...
Things I Don't like about my Oracle experience:
  • PL/Sql Developer by Allround Automations. I sucks and doesn't handler cut and paste functions properly (e.g white space characters it doesn't recognise breaks the code... why not just remove them?!?)
  • Shit schema's are not just the domain of T-SQL... they are everywhere ;) hehehe
MonoRail. The original MVC web platform for Asp.net. Its pretty cool, i have just built my new site, www.FullStack.co.uk on it and managed to get it together very fast, including the learning curve. Will i continue to use it? personally i have never really had to many issues with Viewstate and PLC. I don't put a lot of logic in my code behind so don't get in to too much troubles there.

PostSharp: I like it. It is a cool little AOP IL weaver that made my logging stupidly easy. Was going to try to add security with it too, probably wont tho...

Every day i would spend at least 2 hours read technical content, but mostly articles blogs and forums. I really don't read enough books...So lately i have been catching up on my essentials list.

Books I have just read:
The Pragmatic Programmer. Its hard to believe this is almost 10 years old. Sure it has been revised and there are some old references to languages like small talk (as opposed to newer languages like c#), but this is as relevant today as it ever was. Thoroughly recommend it.

Head First Design Patterns: I really wish i read this before GoF and Fowler... it makes the whole process a lot easier. I must say i felt like a dick buying the book as it feel like a high school book, but it is well worth it... i did make up for by buying Slash's Bio and the Flight of the Conchords dvd... sweeet.

Books i want to get
Erlang and NUnit from the Pragmatic series. I unit test every day but i would like to see "How Correctly" I am doing it. The xUnit testing book just far to big... its like 900 pages, come on...

On a side note; well done to the ever growing Open Source guys* that are getting snatch up by M$. Its nice for them to finally get some financial reward and its good to see M$ backing the real drivers of the community.

*Specifically Rob from Subsonic and Alex from Base4, but there seems to be many others at the moment too

Friday, November 9, 2007

Dependency on self?

I am worried that DI is the new singleton. A pattern with good intentions and fantastic helpful when used properly but slipping into the realm of the abused.
Wehn leaving Australia i was working on a project where there where dozen and dozens of unnessecary singletons. they really just ahd no reason to be there other than to slow things down.
Recently i have seen in quite bit of code using "constructor injection", no problem. But when you are passing in a object and then make this object dependent yopu are in effect providing circular references. However using interfaces this is allowed.
eg

My problem is: why?

I am seeing this specifically in the MVC pattern.
I dont need my views to know anything about my controller, so why pass the controller in as a constructor parameter. if it need to communicate with the controller raise an event, if the controller cares about this event it will subscribe to it.
I belive people are dodging using events because it seems tricky and DI is "cooler".
bollocks to that I say.

Strings

Strings are really beginging to annoy me. People need to think when they design API's if strings are really the best thing to use.
String are for reading, for humnas to read.
I am using a system where most of the strings should be replaced with enum or custom value. the reduction in runtime errors would be significant.
i have to campare time code in one exapmle, these are in string format. i now need to know and understand the other applications time code format so i can do a comparison instead of using
if(timecodeA > timecodeB)
{
//DO LOGIC
}
which would be the logical thing to do.