CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Jeffrey Palermo [MVP]

Software management consultant and CTO, Headspring Systems

March 2007 - Posts

  • 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: http://www.google.com/reader/shared/06565136891718494073?c=CNz6iqX2nIsC

    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:

    FEED:  http://www.google.com/reader/public/atom/user/06565136891718494073/state/com.google/broadcast

     

    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.

  • MVPs can contact JetBrains for Resharper for free - level 100

    David Stennett, from JetBrains will hook up all MVPs with Resharper for free.  JetBrains was one of the great sponsors for Party with Palermo, but their flyers didn't make it in time.  Just email David, and he'll hook you up:  David Stennett: david _a@t _ jetbrains.com

  • 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: http://youtube.com/watch?v=wTJ9O8ysJr8 

     

     

  • Pictures from MVP Summit 2007 and Party with Palermo - level 000

    I've created a Flickr group for all of you who attended the MVP Summit.  Please add your pictures to the group.  I have added 107 photos.

    http://www.flickr.com/groups/mvpsummit2007/
     

  • 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 http://office.microsoft.com/en-US/officelive/default.aspx.

    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:  http://partywith.palermo.cc

    ----------------------------------------------------------------------------------------------------------------------------------- 

    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_ palermo.cc

  • 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:

    [Action]
    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 http://codebetter.com/blogs/jeffrey.palermo/archive/2007/10/05/altnetconf-scott-guthrie-announces-asp-net-mvc-framework-at-alt-net-conf.aspx 

  • 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. https://www.msteched.com/BOF/Voting.aspx

    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:  http://groups.google.com/group/AgileAustin/t/e0370f2d6a210e40

    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:  http://www.regdeveloper.co.uk/2007/03/08/adobe_cs3_development/

  • Scott Guthrie on integrating ASP.NET security with classic ASP - level 300

    This is not a trivial topic, but it's necessary at times to have classic ASP pages controlled by security in ASP.NET.  Scott gives some tips on how to accomplish this.

    Scott also refer's us to Stefan Schackow's excellent book: ASP.NET 2.0 Security, Membership, and Role Management.  This is really a GREAT book.  I've read every word of it.  In fact, I was a technical editor for the book, so I can attest to its excellent technical content and depth.

  • What would I do without an automated refactoring tool? - level 200

    Today, I made a commit to Subversion that encompassed over 200 code files.  What was the change?  I moved a delegate from sharing a code file with a class to be in its own file and put it in another namespace.  Pretty harmless change, but so much code uses this very common delegate.  As you know, I'm using Resharper, so here are my keystrokes:

    • F6 to "move" the Type.
    • TAB
    • down arrow (to move delegate to new file).
    • ENTER
    • F6 (to move to new namespace)
    • {type in new namespace}
    • . . . wait 10 seconds for Resharper to make appropriate changes to "using" statements in over 200 code file.
    • CTRL+SHIFT+S (save all)
    • CTRL+SHIFT+B (compile)

    I run my automated build (with 1450+ test), and check in.

    I remember back to when I didn't use a refactoring tool.  You know what I would have done?  I wouldn't have made the change.  The overhead would have been too great.  I would have left the misplaced delegate definition.

    Please.  Do yourself a favor.  Don't develop with POVS (plain old Visual Studio).  Use a coding add-in.  Use Resharper.  Use CodeRush/Refactor.  Use JustCode!  Use something! 

  • Happy birthday, Texas - level 000 (no techy stuff here)

    Texas is 171 years old today.  Check out Noah Coad's post (it's a lot prettier than mine).  Make sure to watch the video.  I was on that dance team in college.

  • Gmail has been down all day! 3/1/2007

    I use Gmail for most of my mail these day.  Today has been hard.  Gmail has been down since mid-morning, so I can't access my mail.  Not with FireFox, not with IE, not with WAP, not with the Java Mobile phone applet I have. 

    With all the rave about software as a service and applications and data "out there in the cloud", this highlights a downside - there is no one I can call, no one I can fire for this mishap.  My only recourse is to wait, and wait, and wait. . .and then switch to another email account!

  • Just passed 1400 automated test cases - level 200

    I just HAD to write this up.  My company's software has just crossed the 1400 automated test cases line.  I still remember when the software was new and when I was coaching my team on why we should write unit tests.  Now, the number of tests just climbs and climbs.

    We have 1417 (as of right now) NUnit unit tests, NUnit integration tests and FIT integration tests.  We test the following types of things:

    • That each public method of each class does the right thing.
    • That each database table is the correct structure and has the right permissions.
    • That each NHibernate mapping is configured correctly.
    • That each logical service does the right thing.
    • That the system as a whole operates when integrated.
More Posts Next page »

This Blog

Syndication