Posts

Showing posts from 2010

Low effort, high impact

This is a bit off topic, but I’d like rant a bit about bottled water, of all things.  It has always seemed like bottled water was both an obvious marketing trick and a huge environmental disaster.   My impression has long been that corporations take what is basically tap water, and in some instances literally tap water, and sell it to us at hundreds or thousands of times the cost.  An obvious rip off.  Even worse it has to have an enormous negative environmental impact.  Manufacturing plastic, pumping, bottling, shipping, stocking, refrigerating and disposing, all for what?  For a convenient on-the-go disposable container?  Because it tastes fresher?  I’m not at the forefront of green initiatives, not by a long shot, but this one just seems so obvious that anyone who is and environmental advocate has to be enraged.  But it never seemed to bother anyone else.  Well, the other day I watched the documentary Tapped .  Finally, a comprehensive overview of the bottled water industry that c

The ViewState, the SessionPageStatePersister and the Memory Leak

  We recently encountered frequent performance degradation due to high memory utilization in our ASP.NET application.  I won’t go into the details of how we actually identified the source of the leak, unless there’s a considerable public outcry for such an explanation.  Suffice it to say that we were able to track it down with Windbg and a few essential blog posts (below).  In this case what we learned is more noteworthy than how we learned it.  What we found to be the cause of the memory leak was more or less a classic mistake, with a twist.  Deep in the bowels of a fairly complex page, nested several UserControls deep there lived a DropDownList control which was being assigned to ViewState.  That’s not a particularly good idea, but ordinarily that wouldn’t cause a memory leak, although it would create considerable ViewState bloat (if the DropDownList is even serializable which I never confirmed).  ViewState is serialized into gobbledygook and stuffed into a hidden field.  Howeve

If I wanted privacy would I post this?

  Seth Godin’s recent post suggested that we don’t really care about privacy when it comes down to it.   Because we use credit cards and phones which inherently allow someone to track our behavior and eavesdrop on us, we are admitting that we don’t really care about our privacy.  I don’t think that’s necessarily true. I think we do care about privacy and would care about it if there was some way to achieve it, if we really understood how little we had.  The problem is, realistically, its getting harder and harder to achieve privacy and thus we essentially settle for the illusion of privacy. To take Godin’s analysis to the extreme, we wouldn’t speak aloud if we cared about privacy, we’d practice moderating our expression and suppressing our tells if we cared about privacy.  Obviously, that is unrealistic.  Of course, every conversation has the potential to be overheard.  Rooms could be bugged, lip readers and body language specialists could be monitoring us and stealing our secre

Visual Studio 2010 and CruiseControl.NET

Recently we upgraded from Visual Studio 2008 to 2010, which impacted our continuous integration and automated build process.  For continuous integration we're using CruiseControl.NET.  At the beginning of our Visual Studio 2010 upgrade we decided not to install Visual Studio 2010 on our continuous integration server.  Because CCNET is basically just running an MSBuild script, I figured all I needed was .NET 4.0 framework installed which would be a quicker, easier, cleaner (and more best practice-y) than installing the full Visual Studio 2010.  Well it didn't quite turn out to be that way and I eventually just ended up installing Visual Studio 2010 on the box.    Here are my reasons: After converting my solution and project files, and then modifying the CCNET config to use the .NET 4.0 version of MSBuild instead of .NET 3.5, the first build attempt barfed with a bunch of errors like this: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (1835,9)

My eBook is out!

  Ok, well maybe its not my book, but I did contribute.  If you want to get started with Azure this is the place to start.  Checkout the PDF found here: The Windows Azure Platform: Articles from the Trenches: Volume One or the slide share: The Windows Azure Platform: Articles from the Trenches: Volume One Technorati Tags: Azure

Updating Visual Studio 2008/.NET 3.5 RIA Services applications to Visual Studio 2010

With multi-targeting, upgrading to new versions of Visual Studio should be painless right? Not so if you’re using Ria Services. My God, what have we done? We’ve recently built a few Silverlight 3 applications using Visual Studio 2008, .NET 3.5 and WCF Ria Services.  These applications are fairly small sample applications built on top of and inside of our existing.NET 3.5 business applications, a fairly large multi-project Visual Studio solution.  Now that it’s time to upgrade that solution to Visual Studio 2010, we’ve found some difficulties with WCF Ria Services.  Oh Yeah We plan to upgrade the Visual Studio tool first and later begin a migration plan to move our projects from .NET 3.5 to 4.0.  A fairly straightforward and mainstream approach. What we’ve found right off the bat, however, is that Visual Studio 2010 doesn’t support the WCF Ria Services Beta that we used with Visual Studio 2008, in fact those projects won’t even compile with 2010.  You’ll likely get a goofy me

All the answers to all the questions you want to know are inside that light

With Silverlight being the preferred development platform for the Windows Series 7 Phone , Novell's release of MonoTouch on the IPhone , and a release forthcoming of MonoDroid for Google Android based phones it appears that .NET developers may have, in Silverlight, a realistic shot at building applications that can be ported and run on all three major device platforms. Technorati Tags: Silverlight , Moonlight , MonoTouch , IPhone , Android , MonoDroid , Windows Series 7 Phone

Inversion of Control

I was talking to a former boss the other day about career growth and titles, what they mean and how they’re interpreted in the marketplace.  That conversation got me thinking about the differences between the traditional career path and the path that I’m on.  But we're getting the job done, so let's stay on course, a thousand points of light I think its generally assumed that as you progress through your career you move from individual contributor and doer, to planner and delegator.  You do the work for a while, and then over time as you grow or the company grows you move ‘up’, farming out the work you used to do to newer employees.  Eventually, you get farther and farther from actual work and become more of a manager, overseer, delegator, delegating more and more of the ‘work’ so that you can oversee a larger number or workers.  You get involved in planning, strategy and meetings and the other trappings of rank and authority.  Along the way you have to make certain leaps o

Binge and Purge

A recent refactoring effort has caused me to reflect on the therapeutic nature of the ‘delete’.  As developers we’re continuously creating, building, adding and enhancing.  Pride and accomplishment are achieved through the act of creation.  We’re builders.  But like any builders sometimes in the course of building we have to tear down what was there before, and who doesn’t enjoy demolition? I’m not sure exactly when it happened, but I’ve definitely felt a shift in the parts of my job that I enjoy.  Maybe its because for years I’ve stumbled around the debris and vestiges of features and functionality scattered throughout systems, not knowing why they are there or what they are for.  Maybe its because, similarly, I’ve too often encountered complexity and duplication in those systems but not felt like I had the time to do anything about it.  For those reasons and maybe others I find that I now relish the opportunity to drop a table, remove a method, combine or eliminate files and even,

Like I need another connectionstring

One of the annoyances with Entity Framework v1 is that it requires a specialized connection string. This is particularly annoying if you are introducing EF to an existing code base that already uses ADO.NET in some capacity. If you are, you already have a connection string in your app.config, web.config or machine.config that looks like this: < connectionStrings >     < add name ="EFDb" connectionString ="Data Source=.;Initial Catalog=EF;Integrated Security=True" />     </ connectionStrings > Now say you want to create an Entity Model against the same database. When you create that model you get a second connection string for EF. < connectionStrings > < add name ="EFDb" connectionString ="Data Source=.;Initial Catalog=EF;Integrated Security=True" /> < add name ="EFEntities" connectionString ="metadata=res://*/NoConnectDb.csdl|res://*/NoConnectDb.ssdl|res://*/NoConnectDb