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! 

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.

Party with Palermo: MVP Global Summit edition – official announcement updated

Party with Palermo

Party with Palermo: MVP Global Summit edition (220+ and
climbing)
website:  http://partywith.palermo.cc
March
11th, 2007 @ 7PM – 11PM
Jillian's Billiard club –
http://www.jilliansbilliards.com
731 Westlake Ave N
Seattle, WA 98109
(206)
223-0300

Bring a business card to drop in the pot for door prizes!!!!

  • Prizes:  1 XBox360 (courtesy of PreEmptive) , 1 license of ActiveReports.Net
    3.0 Standard.
  • Free to attend
  • Free pool
  • Free food
  • Free drink
  • Free t-shirt
  • Free swag
  • Any MVP gets a free license of Dotfuscator Profession from PreEmptive
  • Any MVP gets a free license of Telerik's control suite.
  • Any MVP gets a free license of DeveloperExpress' product line.
  • Any MVP gets a free license of JetBrains Resharper
  • Newsgator Premium (Newsgator Inbox,
    FeedDemon and Newsgator Go) free for the first 500 attendees.

Sponsors:

I'm going to maintain a list of everyone who has indicated they are
coming.  Please let me know if you are coming so I can plan accordingly.

Jeffrey Palermo (host)
Carl Franklin (.Net Rocks –
DNR)
Lorenzo
Barbieri

Bil Simser
Don Demsak (DonXml)
Sam Gentile
Mark Miller
Jeff Lynch
Noah Coad
Miguel Castro
Darrell
Norton

Keith Elder
Scott Hanselman
Scott Watermasysk
Mighell
Paul Ballard
Brian
Noyes

Brendon
Schwartz

Marc Adler
Nick
Parker
Dave Laribee
Jean-Paul S. Boodhoo
Raymond Lewallen
Tomas
Restrepo
Scott Bellware
Jeremy
Miller

Rob Howard
Javier G.
Lozano
Mario Cardinal
Milan Negovan
J. Michael Palermo IV
James
Kovacs
Shawn Weisfeld
Jeff Julian
Miguel Jimenez
Jim Wooley
Jim Duffy
Rod Paddock
Etienne Tremblay
William (Bill) Vaughn
Claudio Lassala
David Silverlight
Riccardo Golia
Daniele Bochicchio
Jon Flanders
Alan Griver
Beth Massi
Walt Ritscher
Dennis Vroegop
Sander Gerz
André Obelink
Armand du Plessis
Ernst Kuschke
Mauro Servienti
Ian Cooper
Samer Chidiac
Wessam Zeidan
Doug Seven
Chris Brandsma
Frans Bouma
Tim Gifford
Miha Markic
Peter Ritchie
Jorge Serrano
Tim Shakarian
Ivan Gonzalez
Rodrigo Corral
Marco Amoedo
Pablo Pelaez
Martin Woodward
Joe Brinkman
Ngoc-Huong
Nguyen
David M. Kean
Mateusz Kierepka
Karl Sequin
Leigh
Pointer
Rob Farley
Darren Gosbell
Maarten van Stam
Yonghyun
Kim
Paulo Morgado
Chris Dufour
João Pedro Martins
Hilton
Giesenow
Oliver Sommer
Scott Willhite
Rob Windsor
Aaron
Jensen
Jose Luis Manners
Kevin McNeish
Shawn
Wildermuth
Aneesh
Anjana
Cristian Civera
HimaBindu Vejela
Jason
Olson
Keith Rull
Shreeman
Greg Low
Laurent Duveau
Stuart
Celarier
Mike Ryan
Erik
Porter
Deepak Kumar
Vasudevan
Rich Claussen
Rory Blyth
Lorenzo Benaglia
Luca
Spolidoro

Cathal Connolly
Chris Tavares
Jim Zimmerman
Luca Bianchi
Adam
Kinney
Josh Holmes
Denny
Boynton
Andrea Gallazzi
Cory
Smith

Tobin Titus
Mark
Rosenberg
Savas
Parastatidis

Andrea Montanari
Scott Koon
Doug Robbins
Gerardo Fransecky
Michal
Stanislawek
Woody Pewitt
Daniel
Larson
Bob Mixon
Eduardo Quintás
Eli Robillard
Caleb
Jenkins
Rafael Munoz
Scott
Nonnenberg
Serge Baranovsky
Misha Zhutov
Dmytro Lapshyn
Richard
Campbell
Gregorio P
Kirk
Jackson
Craig
Murphy
Victor Garcia Aprea
Fernando Garcia
Roberto Hernández
Humberto Martinez
Gabriel Torok
Bill Leach
Sebastian Holst
Sandy Khaund
Vishal Singh
Jose Alarcón
James Newkirk
Brad Wilson
Piotr
Dobrowolski
Fabio Camara
Mauro SantAnna
Ramon
Durães
José Antonio Leal de
Farias
Aurelio Minerbo
Wallace Santos
Daniel Cazzulino
Ricardo
Oneda
Wesner Moise
Hugo
Kornelis
Nilton
Pinheiro
Ricardo Oneda Pereira de
Toledo
Fernando Guerrero
Brian Loesgen
Leonardo
Tolomelli
Abhilah M
Shanmugan
Michael Wiley
Chris
Muench
Amy Bang
Ronald van der
Putten
Dwayne Lamb
Jason Alexander
Fabio Vazquez
Hugo
Rodríguez
Jaun Pablo
García
Ruben Dario Sanchez
Abhilah M Shanmugan
Pilar Mueckay
Todd
Bohlen
Steven Smith
Jose
Berrios
Miguel Mendoza
Ryan Olshan
Matt Cassell
Keith Nicholson
Ricardo Gonzalez
Sean O'Driscoll
Morten
Wennevik
Blake McNeill
Asia Grzywna
Daniel Matey
Octavio Hernandez
Angel Hernández
Manuel
Mendez F.
Yonathan Arrivillaga
Pat Wright
Leandro SGallari
Reymarx
Gereda
Bruce Thomas
Oscar
Soto Casali

Bonnie Berent
Joe
Fawcett

Nick Gillott
Scott Dockendorf
Luis Fraile
Laura E. Hunter
Mark Arnold
Joel Semeniuk
Brian Baker
Simon Sabin
Julio Campos
Tim Landgrave
Sondre Bjellås
Miha Pihler
Bruce Hopkins

Are you a developer-tester or tester-developer? – level 200

Every programmer tests, but does every tester program?  I submit that the good ones do. 

Jason Darling sent me these two great articles that dig deeper into this discussion.

http://www.testobsessed.com/2007/01/17/tester-developers-developer-testers/
http://chrismcmahonsblog.blogspot.com/2007/01/developer-testers-and-tester-developers.html

Visual Studio setup projects (installer) experience report – level 200

Recently, my team needed to produce an installer for our software package.  We wanted a neat setup package that installed prerequisites as well (.Net 2.0, and SQL Express 2005).  We decided to try out the Visual Studio 2005 setup project.  Here’s my experience report:

  • Creation of the project was easy, but added files to include wasn’t so easy.  The setup project was default output of other projects as deployment artifacts.  This assumes a developer is building the GA release on a workstation.  My team uses a clean build server for all builds.
  • Adding custom steps was nontrivial.  There were no hook points where I could pass in a command line to run.  I ended up creating a C# class derived from “Installer” just to Process.Start() a shell command.  Once I had that, I ran the shell commands necessary to set up the software.
  • Creating a start menu shortcut was very difficult.  It appeared that it could create one for default project output, but again, I already had my GA release candidate.  I just needed to package it up for install.  I ended up creating another C# custom action to run Windows Script Object to create a .lnk shortcut file.
  • Prerequisite installs worked like a breeze.  The installer detected the need for .Net 2.0, and Sql express and installed both seamlessly without unnecessary questions to the user.  Very pleased with this.
  • The uninstall is good.  I have opposite steps for my custom actions, and the uninstall performs well.  Users get the standard experience of uninstalling from Control Panel.
  • I have the option of including file a raw, loose file or bundled into a single .msi file. I opted for loose files to keep the install package flexible.
  • PAIN POINT: I wasn’t able to automate the creation of the setup package.  The .vdproj file is not an MSBuild project file, and it requires Visual Studio just to build that project.  This means that I have to create the installer from a developer’s machine, not my build server.  This might be a deal-breaker for me, I haven’t decided yet.  It’s very important that everything be automated, and the only alternative is to install visual studio on the build machine (I’m not going to do that).

Overall, with a few caveats, the setup project is doing it’s job, and we’re shipping.  We’ll use it for the time being, but I’ll keep my eye on Nullsoft, Wise, and InstallShield.