Rauschenblog

Jon Rauschenberger's blog
in

June 2005 - Posts

Making Web Apps Suck Less
ASP.NET team is adding native support to the platform for building AJAX applications:
http://weblogs.asp.net/scottgu/archive/2005/06/28/416185.aspx
 
Couple of thoughts on this:
  • As a general rule, I have a deep/strong hatred for Web applications.  They have their place in the IT world (much like rats have their place in the animal world...), but in general I think they are the WRONG tool for the job 90% of the time when it comes to corporate line of business (LOB) applciation development.  I learned to develop writing green screen applications on UNIX - when I moved to VB2 development I felt like I could finally build a useful application that wasn't an insult to my users - when I wrote my first Web application I felt like I had taken a huge step back...reminded me a LOT of build green screen apps just with some new bells and whistles.
  • AJAX has changed my opinion on that somewhat.  I remember the first time I ran the Outlook Web Client for Exchange 2000 (the first AJAX app in my book...we just didn't have a cool name for it) ...my first thought was "this doesn't suck"...high priase for a Web application in my book.  Google has done an amazing job of using this technology to change the way people think about Web apps.  
  • Google took it to another level in the past year.  Between Gmail and Google Maps they have changed people’s expectations of what a Web User Experience should be like - it is possible for them not to suck.  Put it another way, Web applciations are rapidly closing in on the level of user experience developers could deliver with VB3...also high praise in my book.  Funny thing is that MS did it first with the Exchange web client, but because that is limited to corporate customers it didn’t have anywhere near the impact that something like Google Maps did. 
  • MAN the ASP.NET team has their stuff together.  More so than any other MS team they have consistently delivered products that were rock solid, VERY well thought out, and leapfrogged the competition.  Not surprising that they are adding support to this to the platform given their track record, but still great to see.
Bottom line - do I think AJAX (and the fact that ASP.NET will support it...) changes the decision matrix in terms of when to build a smart client and when to build a Web app for corporate LOB apps?  Not really.  I still contend that if you solve the deployment challange, 90+% of LOB apps will deliver a better/more efficient user experience via a smart client than a Web app.  If ASP.NET allows me to build an AJAX app quickly and easily that percentage might drop to 80%, but no lower than that in my opinion. 
 
That said, for the 10-20% of LOB apps and probably 75+% of external facing applications for which Web apps are the right way to go (you know...the 'rats'), I am really excited about how we can leverage the combination of AJAX technologies and the developer experience that the ASP.NET team delivers to make more and more Web apps not suck.
 
Didn't make it to TechED this year?
Then you also may find this useful (I did not make it this year...):
 
Installing Team Foundation Server - Beta 2
I installed Team Foundation Server last weekend...actually took me about a week to get an install to work, but I finished it last weekend.  Given teh mix of Beta products required to get the product to work it's not a surprise that hte install is difficult.  That said, this was one of the more painful products I've even installed.  I had to start over (i.e. start with a clean Windows 2003 server image...) 4 times to get it working.  After the third install I broke down and asked for help on the Microsoft Regional Director alias and was pointed to a detailed installation guide avaialble here.  If you follow this precisely, the install should work fine.
 
My first reaction to the product (after a total of abut 1 hour investiagating it...) is more confusion than anything else.  The product is not discoverable simply by installing it and looking at what it can do.  From what I could find in the hour I spent the product is:
  • New source code control tool that on the surface looks and feels like Source Safe, but uses SQL Server for storage and Web services as an access protocol.
  • Issue tracking system integrated into Visual Studio.  Nice, but not earthshattering.
  • Integrated Sharepoint site for a development project.  Again, nice but not earthshattering.
  • Integrated build management tool that I couldn't get to work for a Hello World app
The frustrating thing I came away with is that I know there is more to the tool than this - I just wasn't able to discover how to use any of the 'cool' features in the first hour.  This is clearly a complex tool with a learning curve that will take some time to get up.  To do that, I need a plan:
  • Invent a Project:  Can't use VSTS for any current client projects because it is still in beta and my current clients aren't beta friendly.
  • Recruit Some Help:  Doesn't do much good to learn how a team mangement tool works by myself.  I also won't have time to learn everything myself.  Need to recruit some of my fellow Clarity co-workers to participate in my experiment.
  • Run it By The Book:  Manage the project 'by the book' according to the MS methodology that ships with the product to learn what works well and what doesn't with their methodology.
That's the plan, just need ot make it hapen....watch for updates.
MSN Search Aggregation
I have to admit that I am not a big fan of MSN Search.  I tried hard to switch over to MSN as my primary search tool, but nded up reverting back to Google simply becuase I got consistently better results from Google.
 
I did find one feature in MSN Search, however, that I absolutely love and still use today - RSS feeds for search results.  On any search results page on the MSN search site there is an XML link at the bottom that you can subscribe to the search(see below).  If you subscribe to that feed you will be notified when any new results are found by MSN Search matching your criteria.  It's great for tracking new content for topics you are interested in...also works great for vanity searches if you have a unique name...
 
Jam Revisited

Ok, now that I've lived with the i-Mate Jam for a couple of weeks my opinion has changed - I no longer like the device, I LOVE it.  Seriously, this is the best gadget I've bought in a long time.  Not only does it do all the things I want a device like this to do (check email, sync calendar, compose emails...) - it's also a lot of fun. 

Stuff I've come to enjoy:

  • RSS reader (I use Pocket RSS...):  Very handy to read feeds on the devcice.  Screen is big enough to comfortably read lots of text and syncing over GPRS isn't bad at all.
  • Music - I love Yahoo Music more and more every day and having all the music I want on the device for $50/year is tough to beat.
  • Weather:  ADBWeather is fantastic - updates periodically and gives me quick access to the forecast.
  • Lastly, I recently falshed the device with the latest ROM image from i-Mate and found a killer addition - support for smart dialing!  One annoyance down, one left to go (lack of single-hand navigation...).

Regarding single-hand navigation, I know how to fix it!  Just add the soft buttons that the Smartphones have to the PPC form factor.  Two buttons with context sensitive behavior could address 90% of the situations that currently require me to 'resort' to using the stylus...which I hate.

Posted: Jun 21 2005, 03:23 PM by jrausch | with no comments
Filed under: ,
Hanselman's Top Ten List
Scott Hanselman has posted his list of his Top 10 Utilities/Tools.  MAN are great tools on that list.  Using the right tool for the job can make a developer dramatically more productive.
 
Scott did a 'Grok Talk' on the tools that should be posted here shortly.
Book Review: Improving .NET Application Performance and Scalability

I read through (i.e. didn't read it cover-to-cover...) a really interesting book from MS Press last night "Improving .NET Application Performance and Scalability".  Looks like most/all of the contents of the book are available online here.  This is hands down the best book I've read on designing and implementing performant and scalable applications in .NET.  It is the sort of book that every .NET developer should read.  It doesn't go into a great deal of depth on any one topic, but it does a really good job of covering all the basics in terms of .NET performance and scalability design issues and at least gets you aware of the things you should look at if perf/scalability are important issues for your application.  For experienced developers most/all of the content is stuff you probably already know, so it may not be as valuable, but for anyone new to development in .NET it's a must read.

 
Couple of things I learned reading through chapter 5 (Improving Managed Code Performance):
  • Calling virtual members is slower than calling sealed members.
  • Threads spawned from timers are allocated out of the system thread pool.
  • IO bound operations benefit from parallel execution.
  • I was not familiar with the ReaderWriterLock class...looks like a much more efficient mechanism for synchronizing for multiple reader/single writer scenarios.
  • The best way to sum up this book is it contains the kind of content that I would LOVE to be able to assume that every developer on any project I am working on is familiar with.
Trek 100 2005
I rode the Trek 100 yesterday for the third year in a row.  The ride is aboslutely my favorite ride of the year.  It is by far the best organized ride I've ever done and I enjoy getting back up to Winconsin (grew up in Milwaukee...). 
 
The ride yesterday was fun, but really tough.  It was hot (85) and windy which made the last 40 miles really hard (all into the wind...lots of hills).  I finished in just under 6 hours on the bike at an average speed of 17.2 mph.  Not my best ride, not bad considering the conditions.
Performance Comparison: Generics vs. Untyped Revisited

I posted the results of my performance analysis on our internal discussion board and Don pointed out that there IS is siginifant performance improvement if I change my test to use a value type rather than an object (e.g. push/pop Ints on and off the stack).  Doing that results in the typed stack performing roughly twice as fast as the untyped.  The difference is that the typed stack does not have the box/unbox the int while the untyped stack does.  The work required if you are pushing/poping objects is basically the same with the typed and untyped implementations.

I was also somewhat surprised to see the performance delta between value types and ojects.  Running a loop of 100,000 iterations with an int took ~50ms while 100,000 iterations using the Employee class took ~5 seconds.  I always knew working with value types was faster...didn't realize it was 100x faster.