Aggregating Turk: My new link blog (sort of) – level ___

Many folks have link blogs or link posts, so I’ve decided to start contributing to the aggregation of interesting information, but I’m going to do it in a different way.  I’ll be using Google Reader to _share_ the posts I find interesting.

My link blog is here:

This is just a page that pulls in the posts I find interesting.  It also comes with a feed, so if you’d like to subscribe, add this feed:



As I find things, I’ll “share” them, and they will appear in this aggregated feed.  Feel free to use me to scour information on the web and provide a distilled down version of my interest segment.  You can probably find out a lot about me by seeing what I find interesting.  You will see a lot about Agile development, how to run a software team, OO programming, etc.

Technology for the masses: video – level 100

My good friend, Mike Hnatt, has release his video trailer for his last western vacation with his wife.  He did all the video, editing and producing himself on his Windows XP home computer.  He is not a filmmaker.  He just dug in and did it.  It's amazing what we can do with technology.  We wouldn't even dream of doing these things 30 years ago.

View the video here: 



Unable to sign up for OfficeLive with Firefox – level 100

I’ve given GoogleApps a trial run, and it seems “neat”.  I wouldn’t say groundbreaking, but I can see some companies that could put it to use.  This morning I decided to give OfficeLive a trial run at

No-go.  I barfed at me with:

“In order to use Microsoft Office Live, you will need to have Microsoft Internet Explorer 6 or later running on Microsoft Windows 2000, Windows XP, Windows Vista, or Microsoft Windows Server 2003.”


That’s a pretty big limitation.  Many potential viewers of my OfficeLive website will be using non-IE browsers, so I guess the trial ends here.  In the off-chance that it all works with other browsers but it’s just the _sign up_ that doesn’t work. . . .Really bad first impression, and the trial is over.

Party with Palermo: Tech Ed 2007 edition – save the date – level 100

UPDATE:  Details have been posted:


Party with Palermo: MVP Global Summit edition was a huge success with 235 MVPs and influencers in attendance.  My sponsors received even more attention than planned since I had originally planned for 100 but had to expand when interest _exploded_. 

Save the date for Party with Palermo: Tech Ed 2007 edition. 

Sunday, June 3, 2007

7PM – 11PM

The location is yet to be planned.

If you are interested in having your company sponsor the event, drop me a line at jeffrey _a@t_

Big News – MVC framework for ASP.NET in the works – level 300

This is big.  I arranged a special meeting (with the help of Karl) with Scott Guthrie today on the last day of the MVP Summit.  I brought along fellow CodeBetter bloggers Darrell Norton, Scott Bellware and Jeremy Miller.  Scott laid out a concept for how to make ASP.Net better support MVC much like Rails and MonoRail try to conform to this model. 

If you aren’t familiar with MVC frameworks, the most important thing to know is that the Controller is king.  The view only spins up and renders if the Controller decides it is the right thing to do. 

With Scott’s prototype, there is a new handler factory that infers from the URL which controller to instantiate and load.  The controller then decides what to do with the request.  The controller can load a view (.aspx file) and let it render.  The view can access properties of the Controller.  The ASP.NET lifecycle and control model and still be used in the view, or you can let the Controller render a view of customized templates.  Either way, the Controller is in control. 

This model allows the Controller to be unit tested easily since contact with the HttpContext, Request, Response, etc can be easily mocked with this model. 

The codebehind and markup is the view (what I’ve been saying all along), and it is completely subordinate to the Controller.  The view isn’t even created until the Controller decides it is time.

With the model, the need for Model-View-Presenter goes away for web apps.  I used M-V-P in the passed to  get around the control model and get control to a testable class.  With this new MVC framework, the Controller goes first and runs the show for the whole request.

A url might look like http://localhost/myApp/ShoppingCart.mvc/CheckOut where ShoppingCart is the Controller class and “CheckOut” is a method like:

public void CheckOut(){
    //do something


For post-backs, the control model still works and the view can delegate to the controller, but I have asked that this be looked at hard with the goal of putting the controller in charge of post-backs as well when needed.  Scott is very open to feedback, and he plans to involve community experts in the planning of this new framework.

It might be hard to imagine this new framework from just this blog post, but trust me.  This is very cool, and ScottGu is headed in the right direction.  I’ll vouch for that.  We’re going to end up with a new ASP.NET paradigm that so much easier to work with and, most importantly, easier to test!

Great concept Scott.  I love what you are doing.


UPDATE:  More info 

Linq to Entities: Microsoft’s first go at O/R Mapping (they need our feedback now!) – level 300

First, none of this is NDA.  Others discussing it are Ayende and Sam.   Here's a quick rundown of how you would get Linq to entities working:

  • Create the metadata file using the wizard.
  • Select some database tables to map to objects.
    • Wait for the designer to generate the mapping meta data.
    • Wait for the designer to generate some partial classes that might serve as entity objects.
  • Add code to these new classes to do interesting things within your domain.
  • Using Linq queries to work with these objects and watch the SQL be generated and sent to the database.

This sounds easy  when you remember that the designer is generating all the ugly goo that _has_ to be there.  First, the classes must inherit from the mapping base class.  They are working on a way to make it implement an interface instead.  This is a non-starter first of all because it would require the domain assembly to carry around a reference to a data access dependency.  Next, for dirty-tracking, each property mutator must raise an event to let the framework know that a property changed.  Every property.  Let me repeat:  Every property setter must raise an event for dirty tracking to work.  This is another non-starter.  The team plans to have all this generated for you in partial classes. 

I have email addresses for several people on the team, and I'll be letting them know what is so compelling about NHibernate and why the above issues have to be resolved before RTM and not after.

In some cases, you don't care if the classes are data-transfer objects instead of domain objects.  In that case, use Linq to SQL, not Linq for Entities.  With Linq to SQL, you can use DTOs all over the place and work with the data pretty easily.  Heck, you could even use Linq to SQL to create your own data layer for hydrating your domain objects manually from the DTOs you decorate with the Linq to SQL attributes.

Linq to Entities is a different animal and is meant to persist domain objects.  Domain objects ARE the most important part of the application.  The domain defines the business problem scope.  Persisting to a data store is secondary to the domain model's structure and behavior. 

I want Linq to Entities to succeed.  I want frameworks and tools to continually get better; therefore, I will be communicating with the product team to voice my strong concerns over the current direction.

Vote for my Tech Ed 2007 Birds of a Feather sessions – level 100

It’s time to vote for Tech Ed BoFs.  Go here to vote.

My submitted BoFs are as follows.  Please vote for them.

  • Techniques for writing less code (frameworks, libraries, and tools)
  • Join C# MVP Jeffrey Palermo for a lively discussion on frameworks, libraries, and tools that enhance productivity by reducing the amount of code required to deliver the same functionality in a program. The list is not a closed list. Attendees are expected to share success/horror stories about the frameworks, libraries, and tools they’ve used. Come quickly find out the secrets they won’t teach you in training courses.

  • Agile development with .Net
  • Agile development methodologies are gaining more and more traction in the software industry. Join Jeffrey Palermo and many others for this popular BOF that has attracted 70+ attendees in past Tech Eds. We’ll discuss basic principles of Agile development including people over process and delivering working software at the beginning of a project, not just at the end. We’ll share common successes and challenges from all the attendees, so bring your story.

Adobe’s Photoshop CS3 developed using Agile – level 200

I got the link from the AgileAustin online group:

A new VP at Adobe has introduced Agile methods to the Photoshop group, and they turned from waterfall to agile. . . with commendable results:  fewer late nights, work weekends. . .and. . . wait for it. . . fewer bugs with the same feature load delivered on schedule.

This is very important to me since I manage the Engineering department at Vital Insight, Inc.  It’s a given that my department is much smaller than the Photoshop department, but this is evidence that Agile methods scale from the small teams on up to very large organizations.

Read the full article here: