-
-
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.
-
-
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.
-
-
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.
-
-
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
-
-
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.
-
-
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"
-
-
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.
-
-
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!
-
-
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?