September 2005 - Posts

MVP Summit - Code Slam - GotDotNet Workspaces, Ward Cunningham and BlogML
Wednesday, September 28, 2005 1:59 PM

Last night, the CodeSlam event took place at the Microsoft Company Store / Visitor Center (organized by Korby Parnell).  The list of .NET developer celebrities was impressive and too numerous to mention!  The purpose of the event was to evangelize the great things already happening and coming up in the GotDotNet Workspaces.  Microsoft is taking online collaborative development seriously and there are exciting things on their way!  (wish I could say more...)

I was lucky to spend some time at the event with Ward Cunningham, Daniel Cazzulino and Pete Coupland.  Ward was especially interested in thycotic's TDD activities and how we are applying the principles to small and medium size businesses on an hourly billable basis.  We also talked about our techniques for applying TDD to databases - such as our DatabaseInitializer in the Thycotic.TddStarterKit and the DatabaseScripter.  Ward mentioned how pieces of Extreme Programming are slowly making their way into various groups within Microsoft.  We talked about how tough the sell can be to clients and best strategies for marketing TDD and Pair Programming to clients.  Unfortunately this marketing so often depends on developers who are stereotypically weak with such skills.

There was a strong Australian contingent at the event (mostly from readify, I think), with most of the guys running on fumes after 20+ hours of travel.  I met Darren Niemke and Paul Glavich for the first time.  Darren showed me his BlogML project (which is already on GotDotNet's CodeGallery!).  The project is a great idea - basically a way to import and export an entire blog.  It defines a standard format (BlogML) for serializing a blog (including comments, images, attachments) into an XML format.  This obviously has important implications for migrating blogs from one blogging platform to another but could go further by making other things easier, such as:  cross posting, offline viewing and further smart ways of distributing content for syndication.  There is a pet project at thycotic, to build a decent offline blog reader for the PocketPC (believe it or not, the ones available - that we have found - all depend on online capabilities!) - BlogML has great potential for this project since it provides an easy way to serialize a blog for offline viewing.

 

Jonathan Cogley is the CEO and founder of thycotic, a .NET consulting company and ISV in Washington DC.  Our product, myclockwatcher.com is a time and expense tracking system specialized for billable professionals built on ASP.NET, C# and SQL Server using Test Driven Development.

Printable or ReadOnly pages in ASP.NET (code snippet)
Wednesday, September 21, 2005 11:36 PM

You have an ASP.NET page that is full of great controls, functionality, etc. but now you need to print it or render a "readonly" view of the page.  Wouldn't it be nice if there was a little ReadOnly property that you could flip to true on the page and that was it?  Well ... there isn't.  However with a little recursive code, you can achieve the same effect. 

This code snippet is provided to help a few other souls with our same need:
DISCLAIMER:  This code is not perfect but does work as intended and is unit tested (in our application).

Click here for code snippet

The basic approach is loop through all Controls from a certain control down (Page if you choose, since Page is-a Control) and make certain control replacements based on the control that is being evaluated.

The use of Reflection can probably be avoided entirely with a bit of refactoring and use of interfaces instead. Using the string representation of the type name of the Control is a little ugly and could be improved.  Also note that this code makes certain controls not visible such as Button which may not be desirable.  Another approach is to derive your own controls from the base controls and provide a "ReadOnly" rendering - this is probably more work than a simple recursive loop as above.

Comments are welcome.

 

Jonathan Cogley is the CEO and founder of thycotic, a .NET consulting company and ISV in Washington DC.  Our product, myclockwatcher.com is a time and expense tracking system specialized for billable professionals built on ASP.NET, C# and SQL Server using Test Driven Development.

 

by thycotic | 2 comment(s)
Filed under: ,
New Microsoft Partner Competency is coming for custom development shops!
Tuesday, September 20, 2005 12:54 AM

Many companies are deeply embedded in pure Microsoft development (such as thycotic) but do not necessarily use any of the Microsoft server products (MS CMS, BizTalk, SharePoint) in their solutions.  These shops are typically building applications using custom WinForm/ASP.NET, C#/VB.NET and a Microsoft SQL Server back end.  This makes the Integrated E-Business Solutions competency impossible to attain and most of the others are not a good match either.  Another option sounds like the ISV competency but this doesn't always fit either ... do you build a product to sell that can be tested?  Often times the "product" is custom software that you don't own and can't share with anyone.

The solution? (I didn't know about this until I asked at the Microsoft Partner booth at PDC!) ... Microsoft has introduced a new competency for Microsoft Partners that will go live in late October 2005 - the Custom Development Solutions competency.  This is a much needed competency and matches all those custom development shops out there!

Requirements for the Custom Development Solutions competency:

  • 2 MCADs or MCSDs
    (the website then talks about 1 exam from the listed so maybe MCP is sufficient?)
  • 3 customer references about implementations using required technology

The competency also makes mention of 3 specializations (Application Infrastructure Development, Smart Client Development, Web Development) but doesn't go into much detail on their importance.

 

Jonathan Cogley is the CEO and founder of thycotic, a .NET consulting company and ISV in Washington DC.  Our product, myclockwatcher.com is a time and expense tracking system specialized for billable professionals built on ASP.NET, C# and SQL Server using Test Driven Development.

myclockwatcher.com - FREE coupon from PDC for all blog readers
Monday, September 19, 2005 1:58 AM

The release of myclockwatcher.com 1.2 was timed for PDC.  We strolled around PDC handing out business cards with coupons and wearing our red hats and buttons.  Here is a picture from the Dr. Dobb's Journal booth where I had my picture taken:

   Yes, the red hat says "myclockwatcher.com".

The coupon from PDC gives an extra $10 when you sign up for myclockwatcher (a great time and expense tracking system for billable professionals built in ASP.NET and SQL Server), you also get the first month free:

GET $10 ADDED TO YOUR ACCOUNT!

COUPON CODE:   M9HFN7AL
EXPIRES:       9/30/2005

SIGN UP HERE:  http://www.myclockwatcher.com/cw

 

 

by thycotic | with no comments
Filed under:
PDC 2005 - Day Three Review
Monday, September 19, 2005 1:41 AM

PDC is now over and I finally have time to tell you about Day 3. :-)

It started with an outstanding session "Advanced Data Access Patterns" by Pablo Castro.  We saw Pablo in a great Data session (DAT200) the day before (he coded by hand avoiding code snippets which drew some jokes among the speakers) so we knew we were in for a good one with a whole session by him.  The format for the session was fantastic - he planned the agenda based on the 4 most common ADO.NET problems based on customer feedback and then proceeded to answer them all with examples and implementations in ADO.NET 2.0.  He showed off the new SqlDependency class and how it can be used for "smart" caching with notifications of changes being sent back from SQL Server (wow!).  He also delved into how DataSets can now be used as an efficient caching system (harking back to the late 90's idea of the "in memory database") and then proceeded to layer a series of custom Qxxx classes with the DataSet to show how joins, projections and filters could be used on the tables in the DataSet.  Pablo stated that the new DataSet in ADO.NET 2.0 has been significantly reworked to improve performance - putting a million records in it is no longer a problem.  They have eliminated the exponential performance issues where things degraded based on the volume of data.  Definitely look for Pablo's session (DAT408) in the post-conference slides and downloads. 

I caught a Team System presentation (TLN312) in the afternoon but it had a few glitches (the first I had seen at PDC).  The demonstration of testing (both unit and web/recorded tests) and coverage analysis seemed a little rough around the edges.  Being seasoned TDD'ers, we might be a little critical but the IDE seems a little cluttered and might not be optimal for productivity.  The web/recorded tests are also a strange thing for TDD since they appear to require the UI to exist to generate the test.  The presenter did show a "convert to code" feature so maybe the recorded is still useful.  To explain: writing the test first (as TDD requires) is difficult if the UI has to already exist.  Bearing in mind that Team System is a first release and carries loads of features, I think it is fair to give a little slack and say that it is a remarkable platform and achievement by Microsoft.  I can't wait to free up a full system (not a VPC) for an install!

I got to meet up with our local Microsoft Developer Community Champion, Geoff Snowman, in the Track Lounges to compare PDC impressions.  Geoff was impressed with the tracks to date and pointed out the strategic vision across all technologies that PDC provides which was something that hadn't occurred to me.

Bob (yes, the Bob) and I also started discussions on a new thycotic venture, project ihawu, in the afternoon.  Keep posted for more info on ihawu.

The trip was rounded out by a fantastic steak dinner at the local Morton's that evening which was a fabulous end to an exciting week.

PDC 2005 - Day Two Review
Thursday, September 15, 2005 8:36 AM

LINQ and DLINQ are very powerful technologies.  DLINQ seems very similar to Gentle.NET which we use on some projects.  The mapping capabilities seem a much better solution to writing lots of data access to business objects glue code ... and let's not even get started on the evils of code generation.  LINQ definitely seems to be the new announcement at PDC with lots of buzz and people talking about it.

I was fortunate to be invited to a private lunch with Soma along with other influentials and MVPs.  The questions put to Soma were really interesting and provided some inside info on the future of Microsoft's developer tools.  Let's just say that it is going to be a very fun ride!

MSBuild has certainly matured since I saw the early betas in 2003.  It now appears to be an equal partner to NAnt and in fact surpasses NAnt in some features.  The integration and use of MSBuild by Visual Studio is the killer feature in my opinion.  Having the same build process inside and outside of your development tool is a huge win!

The most overused phrases of the day:

  • "super excited" (again!)
  • "impedance mismatch"
by thycotic | with no comments
Filed under: ,
PDC 2005 - Day One Review
Wednesday, September 14, 2005 12:31 AM

The keynote was interesting, exciting and exhausting!  The technology innovations and overall coolness just ran on for ages and became draining.  It was also a first opportunity for me to see billg speak for the first time which was an experience.  He had far less presence than I would have expected for a man of such remarkable success but was still an entertaining and highly informative speaker.

The highlights of the keynote for me:

  • Seeing the upcoming Vista OS (they also have hands on machines to play with in COMMNET area - nice touch!)
  • Getting a better feel for Avalon's (I mean WPF's) impressive capabilities with the Netflix, North Face and Microsoft MAX presentations.
  • Seeing LINQ and the Gentle.NET (and every other persistence framework's) esque version of attribute-based O/R mapping that must have been "ObjectSpaces" at one point.
  • Seeing the LINQ example become integrated with Indigo (I mean WCF) and ultimately Avalon (WPF)
  • Noticing over 30 available wireless networks available in the presentation hall!

The most overused phrases of the day:

  • "super excited"
  • "super cool"

The best sessions of the day:

  • Monad is just awesome - really well thought out and extensible.  Microsoft might be late to the scripting shell party but what an entrance!!
  • Thinking about the user experience - Hillel Cooperman did a great job - I am firm believer in aesthetics *and* function!
  • Stefan Schackow did a nice job on custom providers in ASP.NET 2.0 - much of the presentation could be summed up with the word abstraction and learning to extend existing object frameworks.  This said, I still think it is a worthwhile effort as many people are still just starting to figure it all out.

The exhibitor party was interesting - I got to hang out with my friend Steve Smith and meet Scott Guthrie (Microsoft) , Scott Cate (myKB) and Chris Page (MaximumASP).  The Microsoft Influentials party at the trendy LA club, White Lotus, was fun and I also met the Enterprise Architect for Dell - Brent Jackson and had an interesting discussion about TDD and how it is being used to further enhance Dell's software development practice.

Jonathan Cogley is the CEO and founder of thycotic, a .NET consulting company and ISV in Washington DC.  Our product, myclockwatcher.com is a time and expense tracking system specialized for billable professionals built on ASP.NET, C# and SQL Server using Test Driven Development.

myclockwatcher.com 1.2 is released - just in time for PDC!
Monday, September 12, 2005 10:33 PM

Nothing like a deadline to focus the mind.  Our goal is to promote the new version of myclockwatcher.com this week at PDC in Los Angeles.  We have worked hard to get some great new features into the latest version in time for the conference.

I arrived this morning from Washington DC to an airport in the middle of a blackout ... the escalators were out but the baggage claim worked!  It seemed that the city was slowly coming back to life, outlet by outlet, as the city restored power.

thycotic will be promoting the new version of myclockwatcher.com with a handout coupon of $10 and a one month trial period (no obligation - money back guarantee!).  Find me or Bob to get a coupon and talk more.

Bob and I will be wandering the halls wearing red myclockwatcher.com baseball caps (picture coming) and silly buttons, stop us to talk about:

  • myclockwatcher.com
  • thycotic
  • Test Driven Development
  • Pair Programming
  • NUnit, NAnt and CruiseControl.NET
  • Two Factor Authentication
  • PayPal integration with ASP.NET

myclockwatcher.com is a time and expense tracking system specialized for billable professionals.  Whether you are an accountant, lawyer or contract software developer - this system is for you!  It is built in C# on ASP.NET with a SQL Server backend ... and you guessed it, wholesome TDD throughout!

 

When your code is reused
Sunday, September 04, 2005 7:20 AM

I am back from a weeks break in one of my favorite places - the Outer Banks in North Carolina.  After much sun, playing with my new toy and getting to spend quality with the family - it is time for a "just back" blogpost.  I am sifting through the inevitable pile of email and came across something that warms my heart ...

It is always a great compliment when something you developed is used in places that you never imagined.  I wrote this article in June 2004 to share my sorting method using late binding which has proven to be very useful to thycotic on various projects over the years.  I have received lots of feedback on Thycotic.Collections since then including very useful performance tweaks from Niels Lunn (thank you!).

Today I was informed by John Winstanley that he has included Thycotic.Collections in a new set of CodeSmith templates that he has put together as a rapid starter kit to get developers up and running with ASP.NET and a SQL Server back end.  John, as you can guess, is using Thycotic.Collections for its generic sorting power in his DataDictionary class.

Where has your code been reused in a surprising way?

by thycotic | with no comments
More Posts

This Blog

Syndication