June 2005 - Posts

DataSets vs. O/R Mappers

Sam has a very interesting post comparing DataSets and O/R Mappers.  I think he makes a good point that they aren’t really equivalent and shouldn’t be compared against one another.  They serve different purposes and are apporpriate in different application scenarios.  If your follwoing Domain Driven Design then an O/R Mapper is probably more appropriate, and if your a “Database Driven Design” kind of guy the DataSet may be more appropriate.  The important point is just give up on the DataSet and use an O/R Mapper for everything.  Ok, not really, but you had to suspect an OO bigot like myself would try and spin it that way wouldn’t you?

For more information from me on Domain Driven Design checkout my DDD category! and of course for more on O/R Mappers checkout my poorly named Entity Framework category.

Integrating Ruby and Watir with NUnit

Scott Hanselman has been experimenting with Ruby, Watir, and NUnit.  His goal is what all of us web guys are after, a better way to perform unit testing of the web interface.  We have NUnit to test all of our business objects, data acess code, and controller logic but we don’t have any real good options for performing unit testing on the web presentation layer.  Scott developed a WaitrAssert class for integrating Waitr into NUnit which he uses to do all the testing within his application.  Definitely cool stuff…

TDD And Unit Testing isn't Enough

This story, User Profiles and Exploratory Testing, from Jonathan Kohl is a very interesting one.  I often run into people who think that doing test driven development (TDD) and unit testing lessens the need for QA staff to perform their own testing.  If every line of code that is written has a set of unit tests driving it's design then exploratory testing is really just duplicated effort, right?  Not so much.  Test driven development is more of a design practice then a testing one.  It just so happens that we get a bunch of automated tests to back up our designs and tell us when changes in our design cause problems.  There are some issues that automated tests aren't going to catch.  Having a QA staff that is well versed in exploratory testing can help uncover many bugs that the best unit tests in the world will never catch.

Smart Client Offline Data Caching and Synchronization Demos

Brian Noyes has posted his Smart Client Offline Data Caching and Synchronisation Demos which he gave at TechEd.  If you're like me an have a new found interest in smart clients, data caching, and synchronisation you may want to check them out!

Windows Forms here I come

For the past 5+ years I’ve been doing web related work.  Over the year or two I’ve had a desire to find an opportunity that would allow me to get into the WinForms world.  That opportunity has just recently presented itself.  It’s going to be fun to learn the world of WinForms.  Does anyone have any must have book recommendations for a web guy moving over to WinForms?  Is this (Windows Forms Programming in C#) all I need?  What other must have WinForms books are out there?

Great series of Agile posts

David Hayden has been posting a ton of great content over on his blog (or should I say blogs).  He’s currently posting a series of posts on Agile Software Development, Principles, Practices, and Patterns which is one of my favorite books.  He also has a number of posts on design patterns which is top notch.

Tagging Support in a CMS and Blog engine

Yesterday I was checking out the beta of Technorati and it got me thinking about the role of tagging in a content management system and/or blog engine.  It seems like it would be a very useful feature to include for allowing authors to assign relevant categories that could be used in numerous ways within the application.  If tagging became a part of all the interactions within the engine it could lead to a system that could provide developers with a very interesting way to pull out all sorts of interesting information from the system that would otherwise have to be explicitly coded in.

For blogging systems I love the idea that Technorati has implemented in their beta.  If you do a tag search for something like “Star Wars” they load the 3 most recent posts tagged “Star Wars”, the top 20 posts for the keyword match.  They also show a list of photos from Flickr that match the tag as well as links from Furl and delicious that have the same tag.  Interesting stuff.

From a content management perspective it seems like tagging could be a valuable feature to implement into the core of a system.  One of the things that I often run into within CMS systems is the inability to setup relationships and links between “items” in the system.  By making tagging a core concept within a content management system you could open up a lot of possibilities when it comes to building interesting relationships among content items within the system.

Tagging seems to be showing up all over the web lately, is tagging within content management systems the next logical step?

Still a Number of Bugs to Work Out!

I've uncovered several bugs/issues with my current RSS feed that I'll be fixing shortly.  I apologize to those of you who have followed to my new home only to be provided a crappy feed.  One of the reasons I moved was so that I could ensure things were working the way I wanted.  And frankly the way I want things working is the way you want things working.  So let me know if there's anything annoying, frustrating, or broken with my new blog and feed!

Currently on the list are:

- Update the feed to be formatted properly so all readers get the full article text in the feed.  This was working but I screwed it up as I was updating the feed to include comments.  Sorry about that, it will be fixed shortly.
- For some strange reason the dc:creator element isn't being populated which means that my posts are showing up as "Anonymous" in some readers. 

Anything else?

Thanks for you're patience, I promise I'll have this all worked out soon!

UPDATE: Both the items listed here have been resolved, let me know if there’s anything else!

Designer CMS on Rails

Dan Rubin, of superflousbanter fame, is looking to create a Designer CMS on Rails.  I would have loved it if he said he was looking to create a Designer CMS on .NET .  My goals for ActiveType are very much inline with what he outlined in his post.

  • Easy to incorporate into existing projects
  • Easy to integrate with new projects
  • Easy to tweak without being a programmer
  • Easy to use (for designers, developers and clients)

I still have a ways to go before I get there but I think I'm making progress.  I recently had a designer create a new UI for the CMS Administrative interface (screenshots coming soon) which should make the overall experience of working the ActiveType much better for content contributors.  My overall goal is to allow most users to do 99% of the tasks required for managing their site directly through the in-context toolbars and menus.  More advanced tweaks to the system will still require launching the administration interface, but, the majority of users should be able to just browse to the page or folder they want to update and use the editor toolbar to quickly incorporate their changes into the site.

If Dan get's any traction with his Rails powered CMS I'll be sure to check it out for inspiration!

 

How to make a million dollars

Marhsall Brain has posted a talk that he presented at Duke University on How to Make a Million Dollars.  Within the talk he presented several ways to make a million dollars.  His key point was that you need to create a business in order to have a chance at making a million dollars (unless you have $5/day and 42 years to spare).  Very interesting read.  I was most interested in some of the book recommendations he had, as I've already read and/or heard the same basic points from many other people.  If you're interested in making a million bucks just go to the site, within minutes you'll be on you're way.  Ok, yeah, I'm lying.  There is some interesting stuff though

  • Rich dad, poor dad, by Robert T. Kiyosaki - A perfect book for getting you head in the right spot to start a business.

  • The automatic millionaire, by David bach - Teaches you how to manage your finances. A basic guide to "saving $5 a day to become a millionaire in the future." See also Understanding and controlling your finances.

  • The one minute millionaire, by Victor Mark Hansen - a little over the top, but encourages you to think differently about starting companies and building wealth.

  • How to be a billionaire, by Martin Fridson - Really makes you look at the world differently.

  • The Warren Buffet Way, by Robert Hagstrom - Not light reading, but helps you see how one of the richest men in the world thinks about the business world.
  • Never Eat Alone, by Keith Ferrazzi - Helps you to think about business relationships differently.
  • The Sam Walton Story, by Austin Teutsch - Tells how Sam Walton went from being a guy with one little store in Arkansas to the richest man in the world.
  • Dave's Way, by David Thomas - The story of Dave Thomas, the founder of Wendy's. He started as an orphan bussing tables in a restaurant, and he went on to create an empire.
  • Built from scratch - the subtitle says it all: "How a Couple of Regular Guys Grew The Home Depot from Nothing to $30 Billion"
  • Nuts!, by Kevin Freiberg - The story of Southwest Airlines.
  • Be my guest, by Conrad Hilton - The story of Hilton Hotels.

Get small. Think big.

This morning I came across an interesting "article" entitled, "Small is the new big" (via microsISV) written by Seth Godin (rss). 

Small means the founder makes a far greater percentage of the customer interactions. Small means the founder is close to the decisions that matter and can make them, quickly.

Small is the new big because small gives you the flexibility to change the business model when your competition changes theirs.

Small means you can tell the truth on your blog.

Small means that you can answer email from your customers.

Small means that you will outsource the boring, low-impact stuff like manufacturing and shipping and billing and packing to others, while you keep the power because you invent the remarkable and tell stories to people who want to hear them.

I think he sums it up perfectly with...."Get small.  Think big." 

Impressions of VS.NET 2005

As I mentioned in my "welcome to my blog" post I've been busy upgrading the software that powers this blog to .NET 2.0.  As a result of this I've had the pleasure of working in VS.NET 2005 for the past several weeks. 

Highlights:

  • Generics - I'm a big fan of generics.  I haven't completely converted the code base, ok I haven't even come close to converting the codebase to take full advantage of Generics but I'm definitely looking forward to getting rid of all the custom collections I have.  Predicates, Actions, Comparison's as well as Converter's are a "way cool" feature that I'll be looking forward to using as I continue the migration of my code to 2.0.
  • MasterPages - Overall I'm a fan of MasterPages.  They aren't that new of a concept to me since I checked out Paul Wilson's 1.1 version of MasterPages a while back.  Regardless, developing templates with MasterPages is an improvement over everything I've tried previously.
  • Intellisense in ASPX - I'm personally a fan of the code-behind model, however, the templates within this CMS have code inline so that it's easy to plug in new templates.  Since the software supports multiple websites running off a single instance of the software I wanted a way to make it relatively painless for people to create new templates.  Requiring a rebuild and re-deployment of a .dll didn't seem to fit the bill so I decided to have my templates use in-line code for binding data to the various controls.  In VS.NET 2003 I always hated updating the templates because I wasn't really sure if things were "right".  Within 2005, and the support of intellisense, the overall development experience for creating templates is much nicer.
  • Partial Classes - I haven't actually taken advantage of this feature as of yet, however, I'm looking forward to leveraging it as I continue the upgrade to .NET 2.0.  A lot of the business objects used by ActiveType (aka the software that powers this site) are generated via CodeSmith.  I've tried a couple different methods for managing these generated files such as creating a "Base" that my "real" object inherits from, however, nothing seems as clean as partial classes.  I haven't looked into the addin support for VS.NET 2005 as of yet but I'm hoping they've exposed the ability to make files dependent on one another via the DependsOn attribute in csproj files.  I'd really like my custom objects to have the generated files appear underneath them like a code behind file appears underneath it's associated aspx.  Anyone know if this is possible in VS.NET 2005?

Lowlights:
Not all of my experiences with VS.NET 2005 have been positive. 

  • SQL Server Tools - I'm not a big fan of the new SQL Server tools that we get integrated into VS.NET 2005.  The table design tools with the funky property grid at the bottom isn't as straight-forward as the tools in 2003.  I don't like the fact that the double click behaviour has been changed.  Previously double clicking opened up the table and displayed the data, now we're presented the design via a la Enterprise Manager.
  • Poor Database Project Support - For all my .NET project I have a database project that I use to manage tables, stored procedures, views, functions, and etc.  In previous versions of VS.NET I was always able to manage the scripts in an intuitive way.  I could right click on a set of objects and say "Generate Create Script...".  Each object that I had selected would have a separate create script created that would be added to my database project.  In 2005 all the database objects selected have a create script created and placed in a single file.  How am I supposed to manage individual object changes if they're all added to a single file.  As far as I can tell the only way to get the behaviour that I desire is to go to every database object individually and click "Generate Create Script...".  No thanks, how bout an option to pick how the scripts for database project are generated.  Disclaimer: I haven't really looked to deep in VS.NET 2005 to see if I have the capability to change this behaviour.  If anyone reading this knows how to change it back to the behaviour in 2003, please let me know!
  • Refactoring is Sloooooowwwww!  - I might just be spoiled by the refactoring support in ReSharper, but, the 2005 refactorings seem flat o