Skip Navigation Links

Posts for: Jul 2007

ADNUG/MSDN ASP.NET Dynamic Data Controls (Oryx) this Thursday (Aug 2nd, 2007)

 I see that Dave Glover is talking about Oryx at this week's user group meeting in Adelaide

make it along to this months ADNUG/MSDN Lunchtime Update, the session is a pre run of my TechEd Oz session and looks at rapid database centric web development with ASP.NET and the up and coming ASP.NET Dynamic Data Controls.  

Dave Glover "Down Under (Oz)" : ADNUG/MSDN ASP.NET Dynamic Data Controls (Oryx) this Thursday (Aug 2nd, 2007)

The Oryx stuff is seriously cool.  The Oryx bits were orignally previewed in the May 2007 Futures - see http://www.asp.net/downloads/futures/default.aspx for a screen cast.

posted on 7/30/2007 9:57:22 PM ( 0 Comments )


I just uninstalled Google Gears

Oh well, it seemed like such a good idea at the time. Smile

posted on 7/30/2007 6:48:52 AM ( 0 Comments )


Virtual/remote worker web site

Last week I wrote a post titled Which coffee shops do I work from in Adelaide.  As I mentioned in that post, there are many challenges to the remote worker who is looking to get a comfortable, productive day of work done away from home.  There's power, access to the Internet, comfort, and quality of coffee to consider Coffee-cup

I was thinking about this some more over the weekend and I wondered whether anybody has created a killer web site to keep track of the choicest spots?  I think that the ideal web app. might include things such as:

  1. Photo's of the place
  2. Comments
  3. Ratings
  4. Map
  5. Links to other places nearby
  6. Wiki functionality
  7. Information specific to: Coffee, Internet, Ambience, Power.

Has anyone created this web app yet?

posted on 7/29/2007 8:23:48 PM ( 1 Comments )


System Administrator Appreciation Day

Happy SysAdmin day Grant

July 27th, 2007 (Last Friday Of July)
8
th Annual
System Administrator Appreciation Day

System Administrator Appreciation Day

SysAdmins day

posted on 7/27/2007 4:48:22 PM ( 0 Comments )


Microsoft Shared View: Flash Messages - A feature I'd like to see

I've mentioned a few times before that we use SharedView in the Dev Centre to do remote pair programming.  It's quite an awesome experience and, even as I type this message, I'm watching Paul Stovell typing code from the screen on my other laptop.  In the following image I'm working from Adelaide in the screen on the left while Paul is coding in Sydney in the machine on the right:

pair programming

One of the things that is cumbersome at the moment is communication with each other when you are pairing.  I've tended to use the phone and hook my earphones up and have a phone-connected session while we are pairing but, invariably, the other person has tended not to have earphones for their phone.  So they either end up holding their phone to their ear (bad) or we just use IM to chat while we are working.  Phone is best because you can have a high bandwidth experience whereas with IM you only chat a few times an hour.

The biggest issue with using IM to chat is that you are constantly switching context between the app that you are using and the IM client app.  So if I send Paul an IM message, he will have to switch away from VS and into his IM client app to view and respond to my message.  It's not so bad for Paul (who is controlling the sharing session in this case) because he just tends to type me messages directly within the IDE when he has something quick to say.  So the problem is really with the non-controlling member having to use IM.

What I'd like to see is the ability to send Flash Messages that show up in the title bar or some other dedicated area within the Shared View client area that would display messages that I send to Paul.  That way I could be sending him messages and he could read them without having his workflow affected.

posted on 7/27/2007 2:53:29 PM ( 2 Comments )


2 little things I learned today

This week I've managed to get in and do some ASP.NET coding again and I thought that I'd make a note of a couple of little things that I noticed/learned:

Normally when you want to add client-side behaviors to an ASP.NET server control you use it's Attributes collection like so:

TextBox1.Attributes.Add("onblur", "Foobar(this);") ;

If you try that with a Checkbox control the javascript gets bound to a <span> element which encapsulates the <input type="checkbox"... />.  That means that the 'this' instance will not be the checkbox element that you are expecting.  To bind the event handler to the Checkbox element you use the InputAttributes property like so:

Checkbox1.InputAttributes.Add("onblur", "Foobar(this);") ;

The second thing that I noticed was if you attempt to format a date value in a BoundColumn like so, you will not get the results you expect:

<asp:BoundField DataField="SomeDateTime" DataFormatString="{0:MMM-yyyy}" HeaderText="Month" />

The problem is that, for date values, the BoundField HtmlEncode's the values before the format string is evaluated.  The trick is to tell the column NOT to HtmlEncode the output, like so:

<asp:BoundField DataField="SomeDateTime" DataFormatString="{0:MMM-yyyy}" HeaderText="Month" HtmlEncode="false" />

It's always the little things that throw you! smile_regular

posted on 7/26/2007 5:40:37 PM ( 3 Comments )


Which coffee shops do I work from in Adelaide?

Jason writes some kind words about my Code Camp SA presentation and then asks whether I can recommend any good coffee shops in Adelaide that have internet availability:

Code Assassin - Code Camp SA: Darren Neimke

Sorry Jason, but I can't really recommend any decent coffee shops in Adelaide based on either their Wi-Fi or their access to electricity smile_sad  We should create a Wiki to track that information. I have a Vodaphone Mobile Connect USB card so internet access seldom bothers me - just access to power. For power I've been working from the lobby at the Hyatt when I'm in town. For coffee I often work from the new Santos building because they have great, comfy chairs.

The main shops that I'm working from in Adelaide at the moment are:

  1. Gloria Jean's Coffee Shop, Westfield Marion
    I'll have to check what paid wireless internet options you have access to from there.  They make a mean Hazelnut Latte.  No power options.
  2. Santos Building, City
    This isn't the old Santos building in Currie Street but the new, "green" building in Flinders Street.  They've got awesome designer chairs that are really comfy to sit in and well-priced, large coffee.  No power options, not sure about wireless availability.
  3. The Asian restaurant on the ground floor at the Grand, Glenelg
    During the day this is really quiet.  You have access to power and drinks.  For lunch, you can't go past either the Laksa or the Green Chicken Curry smile_regular
  4. The Hyatt, City
    I don't go here that often but if I'm down that end of town or running out of power then I'll happily work from the foyer at the Hyatt.  Nice chairs, and a wide open atmosphere.

In addition to those fine places I should mention that I also got a new coffee machine for my birthday on the weekend, so happily I'm able to drink decent coffee from home nowadays too! coffee

posted on 7/26/2007 6:41:43 AM ( 0 Comments )


ELMAH

In this post, Phil reminds us to place our ELMAH pages behind secure paths so that they cannot be viewed by all visitors to our sites.  I implemented ELMAH on a new public-facing website that I've been working on for the past few weeks and, having not implemented it for a few years was surprised to see that it's now on Google Code

posted on 7/25/2007 7:39:15 AM ( 0 Comments )


Today is the day of all days...

Katroo, The birthday bird

 

Can't wait for the cake cooked by Snookers and Snookers smile_regular

And here comes your cake!
Cooked by Snookers and Snookers,
The official Katroo Happy Birthday Cake Cookers.
And Snookers and Snookers, I'm happy to say,
Are the only cake cookers who cook cakes today
Made of guaranteed, certified, strictly Grade-A
Peppermint cucumber sausage-paste butter!
And the world's finest cake slicers, Dutter and Dutter
And Dutter and Dutter with hatchets a-flutter,
High up on the poop-deck, stand ready to cut her

I found the remainder of Dr. Seuss's "Happy Birthday to YOU" here.

posted on 7/22/2007 9:16:35 AM ( 3 Comments )


Create a list of all countries

This might be useful for creating lists of countries to display in things such as DropDown lists on forms and so-forth:

List<string> GetCountries() {
    List<string> countries = new List<string>();

    countries.Add("Afghanistan");
    countries.Add("Aland Islands");
    countries.Add("Albania");
    countries.Add("Algeria");
    countries.Add("American Samoa");
    countries.Add("Andorra");
    countries.Add("Angola");
    countries.Add("Anguilla");
    countries.Add("Antarctica");
    countries.Add("Antigua and Barbuda");
    countries.Add("Argentina");
    countries.Add("Armenia");
    countries.Add("Aruba");
    countries.Add("Australia");
    countries.Add("Austria");
    countries.Add("Azerbaijan");
    countries.Add("Bahamas");
    countries.Add("Bahrain");
    countries.Add("Bangladesh");
    countries.Add("Barbados");
    countries.Add("Belarus");
    countries.Add("Belgium");
    countries.Add("Belize");
    countries.Add("Benin");
    countries.Add("Bermuda");
    countries.Add("Bhutan");
    countries.Add("Bolivia");
    countries.Add("Bosnia and Herzegovina");
    countries.Add("Botswana");
    countries.Add("Bouvet Island");
    countries.Add("Brazil");
    countries.Add("British Indian Ocean Territory");
    countries.Add("Brunei");
    countries.Add("Bulgaria");
    countries.Add("Burkina Faso");
    countries.Add("Burundi");
    countries.Add("Cambodia");
    countries.Add("Cameroon");
    countries.Add("Canada");
    countries.Add("Cape Verde");
    countries.Add("Cayman Islands");
    countries.Add("Central African Republic");
    countries.Add("Chad");
    countries.Add("Chile");
    countries.Add("China");
    countries.Add("Christmas Island");
    countries.Add("Cocos Islands");
    countries.Add("Colombia");
    countries.Add("Comoros");
    countries.Add("Congo");
    countries.Add("Congo, Democratic Republic of the");
    countries.Add("Cook Islands");
    countries.Add("Costa Rica");
    countries.Add("Côte d&#39;Ivoire");
    countries.Add("Croatia");
    countries.Add("Cuba");
    countries.Add("Cyprus");
    countries.Add("Czech Republic");
    countries.Add("Denmark");
    countries.Add("Djibouti");
    countries.Add("Dominica");
    countries.Add("Dominican Republic");
    countries.Add("East Timor");
    countries.Add("Ecuador");
    countries.Add("Egypt");
    countries.Add("El Salvador");
    countries.Add("Equatorial Guinea");
    countries.Add("Eritrea");
    countries.Add("Estonia");
    countries.Add("Ethiopia");
    countries.Add("Falkland Islands");
    countries.Add("Faroe Islands");
    countries.Add("Fiji");
    countries.Add("Finland");
    countries.Add("France");
    countries.Add("French Guiana");
    countries.Add("French Polynesia");
    countries.Add("French Southern Territories");
    countries.Add("Gabon");
    countries.Add("Gambia");
    countries.Add("Georgia");
    countries.Add("Germany");
    countries.Add("Ghana");
    countries.Add("Gibraltar");
    countries.Add("Greece");
    countries.Add("Greenland");
    countries.Add("Grenada");
    countries.Add("Guadeloupe");
    countries.Add("Guam");
    countries.Add("Guatemala");
    countries.Add("Guernsey");
    countries.Add("Guinea");
    countries.Add("Guinea-Bissau");
    countries.Add("Guyana");
    countries.Add("Haiti");
    countries.Add("Heard Island and McDonald Islands");
    countries.Add("Honduras");
    countries.Add("Hong Kong");
    countries.Add("Hungary");
    countries.Add("Iceland");
    countries.Add("India");
    countries.Add("Indonesia");
    countries.Add("Iran");
    countries.Add("Iraq");
    countries.Add("Ireland");
    countries.Add("Isle of Man");
    countries.Add("Israel");
    countries.Add("Italy");
    countries.Add("Jamaica");
    countries.Add("Japan");
    countries.Add("Jersey");
    countries.Add("Jordan");
    countries.Add("Kazakhstan");
    countries.Add("Kenya");
    countries.Add("Kiribati");
    countries.Add("Kuwait");
    countries.Add("Kyrgyzstan");
    countries.Add("Laos");
    countries.Add("Latvia");
    countries.Add("Lebanon");
    countries.Add("Lesotho");
    countries.Add("Liberia");
    countries.Add("Libya");
    countries.Add("Liechtenstein");
    countries.Add("Lithuania");
    countries.Add("Luxembourg");
    countries.Add("Macao");
    countries.Add("Macedonia");
    countries.Add("Madagascar");
    countries.Add("Malawi");
    countries.Add("Malaysia");
    countries.Add("Maldives");
    countries.Add("Mali");
    countries.Add("Malta");
    countries.Add("Marshall Islands");
    countries.Add("Martinique");
    countries.Add("Mauritania");
    countries.Add("Mauritius");
    countries.Add("Mayotte");
    countries.Add("Mexico");
    countries.Add("Micronesia");
    countries.Add("Moldova");
    countries.Add("Monaco");
    countries.Add("Mongolia");
    countries.Add("Montenegro");
    countries.Add("Montserrat");
    countries.Add("Morocco");
    countries.Add("Mozambique");
    countries.Add("Myanmar");
    countries.Add("Namibia");
    countries.Add("Nauru");
    countries.Add("Nepal");
    countries.Add("Netherlands");
    countries.Add("Netherlands Antilles");
    countries.Add("New Caledonia");
    countries.Add("New Zealand");
    countries.Add("Nicaragua");
    countries.Add("Niger");
    countries.Add("Nigeria");
    countries.Add("Niue");
    countries.Add("Norfolk Island");
    countries.Add("Northern Mariana Islands");
    countries.Add("North Korea");
    countries.Add("Norway");
    countries.Add("Oman");
    countries.Add("Pakistan");
    countries.Add("Palau");
    countries.Add("Palestine");
    countries.Add("Panama");
    countries.Add("Papua New Guinea");
    countries.Add("Paraguay");
    countries.Add("Peru");
    countries.Add("Philippines");
    countries.Add("Pitcairn");
    countries.Add("Poland");
    countries.Add("Portugal");
    countries.Add("Puerto Rico");
    countries.Add("Qatar");
    countries.Add("Reunion");
    countries.Add("Romania");
    countries.Add("Russia");
    countries.Add("Rwanda");
    countries.Add("Saint Helena");
    countries.Add("Saint Kitts and Nevis");
    countries.Add("Saint Lucia");
    countries.Add("Saint Pierre and Miquelon");
    countries.Add("Saint Vincent and the Grenadines");
    countries.Add("Samoa");
    countries.Add("San Marino");
    countries.Add("São Tomé and Príncipe");
    countries.Add("Saudi Arabia");
    countries.Add("Senegal");
    countries.Add("Serbia");
    countries.Add("Serbia and Montenegro");
    countries.Add("Seychelles");
    countries.Add("Sierra Leone");
    countries.Add("Singapore");
    countries.Add("Slovakia");
    countries.Add("Slovenia");
    countries.Add("Solomon Islands");
    countries.Add("Somalia");
    countries.Add("South Africa");
    countries.Add("South Georgia and the South Sandwich Islands");
    countries.Add("South Korea");
    countries.Add("Spain");
    countries.Add("Sri Lanka");
    countries.Add("Sudan");
    countries.Add("Suriname");
    countries.Add("Svalbard and Jan Mayen");
    countries.Add("Swaziland");
    countries.Add("Sweden");
    countries.Add("Switzerland");
    countries.Add("Syria");
    countries.Add("Taiwan");
    countries.Add("Tajikistan");
    countries.Add("Tanzania");
    countries.Add("Thailand");
    countries.Add("Togo");
    countries.Add("Tokelau");
    countries.Add("Tonga");
    countries.Add("Trinidad and Tobago");
    countries.Add("Tunisia");
    countries.Add("Turkey");
    countries.Add("Turkmenistan");
    countries.Add("Turks and Caicos Islands");
    countries.Add("Tuvalu");
    countries.Add("Uganda");
    countries.Add("Ukraine");
    countries.Add("United Arab Emirates");
    countries.Add("United Kingdom");
    countries.Add("United States");
    countries.Add("United States minor outlying islands");
    countries.Add("Uruguay");
    countries.Add("Uzbekistan");
    countries.Add("Vanuatu");
    countries.Add("Vatican City");
    countries.Add("Venezuela");
    countries.Add("Vietnam");
    countries.Add("Virgin Islands, British");
    countries.Add("Virgin Islands, U.S.");
    countries.Add("Wallis and Futuna");
    countries.Add("Western Sahara");
    countries.Add("Yemen");
    countries.Add("Zambia");
    countries.Add("Zimbabwe");

    return countries;
}

posted on 7/19/2007 11:11:28 AM ( 3 Comments )


Outlook 2007 TFS Addin

If you are working with TFS then I behoove you to install this great TFS add-in for Outlook:

Outlook 2007 TFS Addin

When installed this add-in surfaces as a little toolbar in Outlook and allows you to create work items directly from emails simply by clicking on a "New" button.  The workflow scenarios that this enables are very useful indeed.  Now I can shoot an email off to my customer with a question, get a detailed reply from them, and convert the whole conversation to a work item.  A great way to ensure that you don't miss any customer requests while helping keep your inbox empty at the same time!

posted on 7/19/2007 9:10:12 AM ( 0 Comments )


Setting a custom timeout for ASP.NET's "Remember me next time" functionality

The ASP.NET 2.0 Login control comes with an embedded piece of UI known as the "Remember me next time" checkbox.  By checking this checkbox when they login, a user can choose to have their authentication ticket persisted so that they do not have to login every time they visit the site.  By default this ticket will be remembered for a duration of 30 minutes before the user is again asked to login.  

As a user I find it a little annoying when I've asked a site to remember me that I have to login each time.  You can tweak the amount of time that the authentication cookie is persisted for by playing with the timeout and expiration policy settings of the forms element in web.config.  Scott has done a great job of describing the behavior of cookie timeout's in his article here:

A Potential Security Hole with "Remember Me Next Time"

posted on 7/18/2007 10:13:55 AM ( 0 Comments )


Want a good methodology? How about self-awareness for one!

At Readify we use a mixture of MSF Agile and Scrum as our project methodology but I've very much come to the belief that methodologies are the tools of procrastination (other than KPI's (Key Procrastination Indicators) but that's another story smile_regular).  It's actually funny the things that people will tell you that methodologies can give you:

  1. Improve your estimations
  2. Improve the quality of your software by writing tests
  3. Get your customers more engaged in the process
  4. Get your planning process nailed
  5. Putting the "fun" back in Functional Specs! smile_devil

I'll bet that all of your projects sound like that right?  Hrm, no eh?  Maybe you'd better go and buy another shopping trolley full of those methodology books:

  1. Testing debunked
  2. Estimation demystified
  3. Gantt charts for guru's
  4. Mastering scheduling  
  5. Project Plans for Dummies

Reading all of those books sounds like fun right?  Blech!  No way, me either.  I can almost guarantee that no matter how many books you buy on estimation that your estimates will not get better - just your excuses.  Regardless of the number of books you read on project planning and Gantt chart creation, your charts will be wrong - and you will be constantly need to change your scheduling.

Here's a little story about something that I've observed in the last year.  It amazes me, the number of developers who come onto projects and, before they've even had time to sex-up their cubicle, they're out adding a whole heap of stuff into the solution for tests.  Projects, tools, widgets, reports... you name it.  And it's not enough that they add all this gunk in with our code, they then proceed to spend the next few days feverishly working out how to automate their tests and publish data to the test report database.  Regardless of all these heroics the number of projects that achieve their stated testing goals is a very, very small number indeed.  And even for the chosen few that do manage to get some tests written against them... nobody reads those reports or runs the tests anyway.  Heck, when new developers come onto those projects the very first thing that they do is to cast doubt over the meaningfulness of the tests anyway.  I know that I go against the crowd when I say this... but it must make you wonder!

I've decided to announce that methodologies should not be taken so seriously - not in large doses anyway.  The thing that none of those books ever tell you is this... you either have it, or you don't!  You will rarely learn this in books, but to be successful in your projects (and it probably doesn't hurt in general life either) the main thing that you require is self-awareness.  Without it, you will unfortunately almost always fail.   And a good healthy dose of being decisive doesn't hurt either.

Good self-awareness will actually lead you to find the right answers and discover problem areas well before those TFS cubes ever kick into action.  And decisive decision making and communication will ensure that you do the right things too.  Next time you are on a project, listen to the heartbeat, use your eyes to see what's happening, and use your brain to think about your next moves.  You won't need a methodology to tell you something is broken or healthy.  Throw away your functional specs, cast your Gantt charts to the wind and deploy your app today!

posted on 7/17/2007 12:48:42 AM ( 0 Comments )


Have you reached your "Google saturation point"

Interesting discussion about reaching your "Google saturation point": 

John Battelle's Searchblog: Just Asking...

I've teetered back and forth on this for a while and while I don't really mistrust Google but I guess that it is interesting that a single company is capable of knowing so much about my digital profile.  But is that necessarily a bad thing?  It's probably good if they can tailor a web experience that suits me.  It's probably good if I want to leverage their ad network to do targeted advertising.  It's probably bad if you walk past my computer and start seeing Adsense ads for leather-and-chainmail bedwear smile_devil

posted on 7/13/2007 9:16:04 AM ( 0 Comments )


ROXIK | PICTAPS

This is a cool site.  You get to build a 2D image and a program then brings it to life in 3D: 

ROXIK | PICTAPS

Cool! smile_regular

posted on 7/12/2007 2:58:37 AM ( 0 Comments )


CodeCamp SA

Mitch and Greg have both posted their thoughts on CodeCamp SA so I thought that I'd better mention it too.  It was great to catch up and re-connect with several old Adelaide friends and also to spend time with colleagues again.  Greg's talk on DMV's in SQL Server 2005 that was very interesting.  There's a lot of functionality in there - particularly the new reporting features that come as a standard part of SQL Server - that I didn't know about.  Dave Gardiner has posted a more thorough analysis of Greg's talk here

On Saturday evening I went out for dinner with Mitch, Dave Glover, and Jey Srikantha (from K2) and we had some great food and conversation.

It was also great that Mitch could stay over at our house and catch up with our family again - the kids were delighted to spend time with "Mitchy Mitch" smile_regular  Mitch really helped me with getting my PowerPoint deck sorted out too!

My talk was a new topic that I'm working on and it was good to present it for the first time.  It's basically a "Tips and Tricks" session about managing a remote development process.  It was great to get it out there for the first time and I got some good feedback about the structure.  Below is my deck for anyone who was interested or who was unable to attend.  Next time I give this talk I'm going to change slides 15 and 16 from conversation-style slides and bust it out into maybe 6 more explicit "Tip and Trick" style slides.  It will vastly improve the structure and make the outcomes much more concrete.

 

Adelaide CodeCamp slide deck My opening slide
Adelaide CodeCamp slide deck It was originally advertised that I was going to talk about EntLib
Adelaide CodeCamp slide deck Nope
Adelaide CodeCamp slide deck Then it was advertised that I'd be talking about Enterprise 2.0
Adelaide CodeCamp slide deck Nup
Adelaide CodeCamp slide deck The topic of this talk
Adelaide CodeCamp slide deck Who I am - professionally
* Consultant
* Accounting/Finance background
* My blog
Adelaide CodeCamp slide deck Who I am - personally
* Coach of sporting teams
* Book author
* User Groups/Community
* MVP, ASPInsider
Adelaide CodeCamp slide deck Who I work for
* .NET Readiness Leaders
* Tech.Ed's, Code Camps, User Groups, ReMIX, etc
* Canberra, Adelaide, Sydney, Melbourne, Brisbane
Adelaide CodeCamp slide deck What I do
* [Showed video of Cat Herding]
* Herd cats smile_regular
* Manage the Dev Centre
Adelaide CodeCamp slide deck What is the Dev Centre
* Manage internal development
* Some special characteristics
Adelaide CodeCamp slide deck 1 - We are Remote
* You cannot see your colleagues
* Easy to go dark
* You need strategies to work remotely
Adelaide CodeCamp slide deck 2 - We are Mobile
* Many tasks need to be done on devices
* Need to make work processes more asynchronous
Adelaide CodeCamp slide deck Our processes
* Our SCRUM implementation had to change
* We have had good success at introducing the business to iterative development
* Manage expectations of people coming to do work
* IT rocks.  They work with us, not against us and are jointly a part of the delivery process.
Adelaide CodeCamp slide deck Our Tools
* TFS - don't just use, make it work for you
* TFS enhancements - TFSIntegrator, TFSDeployer, etc
* Shared View - pair programming
* Connected One Note sessions - our whiteboard
Adelaide CodeCamp slide deck How we Communicate
* Wiki-based open communications policy
* Good use of detailed check-in comments
* Outcome-based scrums as opposed to task based
* Message oriented communication
Adelaide CodeCamp slide deck Thanks for coming!
smile_regular

posted on 7/9/2007 1:27:52 PM ( 1 Comments )


My thoughts on EntLib

The other day I wrote this post poking fun at how ADNUG had me down - incorrectly - as speaking about EntLib at Code Camp this weekend. In the comments for that article Jeff inquired as to my opinion on EntLib - a question that I've been asked a few times of late.

The short answer is that I'm no fan of EntLib and actively avoid using it in any projects that I'm involved in. I have 2 major objections with EntLib:

  1. It's a massive dependency to take
  2. It's overly complex

The Dependency Thing
Last time I looked, EntLib was a collection of something like 20 projects. I don't know how many lines of code live in all of those projects but realize that when you take a dependency on EntLib that you are taking a dependency on every one of those lines.

Complexity
The argument for using EntLib (or at least the one that I've heard) seems to be that it's a framework that simplifies common tasks such as data access and adding tracing to applications. Having implemented distributed transaction support in EntLib I definitely do not agree that it simplifies data access! Oh sure it's all config file based and you could do things such as switch databases easily, but a) you can achieve that simply with standard ADO.NET code, and b) nobody ever does that anyway!

As for tracing, the tracing API's in .NET 2.0 along with their standard Listeners make tracing to multiple sources as simple as making a call such as:

Trace.TraceInformation(...) ;

So no. I really do not think that EntLib simplifies tracing either.

And then there's performance, but I won't go there without raw facts, other than to say... think about the cost associated with reading config files, the amount of reflection going on, and the overall number of objects that are being created.

Sorry EntLib - I don't love you.

posted on 7/5/2007 8:05:55 PM ( 6 Comments )


Talking at Code Camp SA this weekend

I haven't done a community talk for a while but it seems that I might have a few coming up - particularly in the Enterprise and Web 2.0 space!  This weekend I'll be giving a talk at Code Camp SA about managing a remote development process.  Here's the blurb:

Managing a remote development process.

For the past year, Darren Neimke has managed internal development within Readify.  Learn how Readify’s development processes have evolved to provide adequate support for distant/remote teams while still ensuring that they are able to capitalize on their own unique strengths.  In this talk Darren explains how the development process is managed within Readify both from a methodology perspective as well as by looking at what tools are used to support the process.

To learn more about Code Camp SA, please visit the following news page for ADNUG which summarizes the talks for the weekend:

http://www.adnug.com/news.htm

I love the blurb that they have up there for me right now smile_regular  I told them that my talk would probably center around "Enterprise 2.0" concepts and I think that they thought I was going to give a talk on EntLib!  Here's the blurb that ADNUG prepared for me smile_regular

Enterprise 2.0. The patterns & practices Enterprise Library is a library of application blocks designed to assist developers with common enterprise development challenges. Application blocks are a type of guidance, provided as source code that can be used "as is," extended, or modified by developers to use on enterprise development projects. This release of Enterprise Library provides similar functionality to the previous releases for the .NET Framework 1.1; however, Enterprise Library has been redesigned to use the new capabilities of the .NET Framework 2.0.

Believe me... I will not be advocating EntLib! smile_regular

posted on 7/3/2007 10:11:36 PM ( 2 Comments )


Dare provides us with a definition for "Walled Gardens"

In this post, Dare provides us with a usable definition of walled gardens in the context of today's modern social networking sites - such as Facebook:

Network Effects Mean Walled Gardens are Here to Stay

Following links from that article leads to another fine article by Dare which talks about why Facebook is bigger than blogging:

Why Facebook is bigger than blogging

posted on 7/3/2007 7:17:15 AM ( 0 Comments )