Archives

Archives / 2009
  • Hide Windows Language Updates in Windows 7

    Setting up a new machine and going through the Windows Update Dance as I install the various updates that are available now (Windows 7 has been out for almost 3 months now and you know).  And of course once I've installed the required updates, it's always nice to see what's in the Optional list.  However, I'd like when I'm done installing everything I intend to install for Microsoft Update (note that like 99.9% of Windows users, I installed Microsoft Update because there's no reason not to let Office, et al, get updates as well), I don't want the Update application to think there are more/new updates available. However, some of these optional updates I don't think I'm ever going … more

  • Presentation Zen

    I picked up Presentation Zen by Garr Reynolds earlier this year, and finally managed to finish it.  It comes highly recommended by many excellent presenters, and there are quite a number of positive reviews of it on Amazon.  Naturally some of them refer to the PresentationZen blog, which if you haven’t read you may wish to check out (there’s a great Hans Rosling post and recent TED-India video at the moment – I’m a huge Hans Rosling fan and so is Garr).  I wonder if I can integrate Gapminder’s presentation of statistics along with some interesting data in some kind of developer talk.  I’m not sure where I’d find the data, but that would be pretty cool, I think.  But … more

  • DEVLINK 2010 Call For Speakers

    The call for speakers for DEVLINK 2010 is now open.  They are opening the call earlier this year to allow everyone ample time to consider the best session ideas.  If you don't know about the devLink Technical Conference, please visit the website (www.devlink.net).  The conference will take place August 5 - 7, 2010 in Nashville, TN, and had over 675 people at the event in 2009 from across the United States and some international presence as well.  Please feel free to forward this note to others who might be interested in presenting.  You can also direct them to the website where the official announcement and link to the application are available. Download Speaker … more

  • Using RAMDisk to Speed Build Times

    Now that computers with 64-bit operating systems and 8 or 12 GB of RAM are pretty affordable, there are some fairly easy things you can do to speed up your build time for large project.  Jeffrey Palermo wrote about six months ago about a few options for using RAM drives to speed up builds, and at the time my primary laptop only had 3GB of RAM so I wasn’t able to take advantage of his advice.  However, recently I’ve gotten a new laptop and maxed it out with 8GB of RAM and Windows 7 64-bit. Like Jeffrey, I have a ClickToBuild.bat file that will run my build as well as run all of the unit and integration tests for a given project.  I set up a 1GB RAMDisk using Dataram RAMDisk … more

  • View Binary Encoded WCF Messages

    If you’re doing any work with WCF (and perhaps Silverlight, for example, but any client will do) and you’d like to maximize the performance of your messages, you’re probably using binary encoding as it’s much less verbose than other options.  However, this makes tools like Fiddler much less useful when it comes to debugging why the thing isn’t doing what you thought it was doing, because by default Fiddler doesn’t have a useful view of such messages. Well, look no further.  There is a WCF Binary-encoded Message Inspector for Fiddler which solves this need.  It’s free and hosted on code.msdn.microsoft.com.  You can read more about it on the Functional Fun blog. more

  • Where is the Fix button in Windows Photo Viewer in Windows 7?

    I love Windows 7.  I’m using it now on my new primary laptop computer, and going through pictures getting ready for the holidays.  And of course, a few of them need cropped, or red eye fixed, etc.  Simple things that Vista included in the Windows Photo Viewer that was one of the things I loved about Vista vs. XP (yes, there were things improved in Vista over XP).  But wait, where’d the “Fix” option go? Eh? Well it turns out Microsoft has pulled the functionality from the built-in Windows Photo Viewer in Windows 7 and moved it to the Windows Live Photo Gallery application.  You can download the Windows Live Photo Gallery at http://download.live.com/photogallery … more

  • Microsoft Will Ship When VS is Ready

    I’m very pleased to see Microsoft respond to customer feedback requesting a little bit more time before the release of Visual Studio 2010.  There has been concern with the current beta release that its performance is not where it needs to be, especially in certain specific scenarios.  Microsoft is aware of these issues and has a number of fixes under way or already checked in, but the concern among the community was that there wouldn’t be time for another broad beta or RC release of Visual Studio where any remaining issues could be reported back and corrected prior to release. Changing a launch date for something like Visual Studio is a big deal.  There are partners and … more

  • Joining The Code Project

    Those of you who follow my blog (both of you) may have noticed an absence of posts of late.  The reason for the lapse was simple: Michelle and I were in the process of selling two of our business properties, Lake Quincy Media and ASPAlliance.com, to The Code Project.  It’s been almost a month since we announced the acquisition at PDC, so this isn’t exactly news, but if you want the full story, check out this press release: Lake Quincy Media Joins The Code Project to Deliver Unprecedented Developer Market Reach. I’ve also joined The Code Project team as a Senior Architect.  I’ll be working remotely from Ohio, but visiting the company office in Toronto periodically.  I’ll … more

  • A First Pass at PotterKata

    Tonight at Hudson Software Craftsmanship, I paired with another group member and worked on the PotterKata for the first time.  I’d seen NotMyself write about it a few days ago, which prompted me to suggest it for the group to work on (summary of the meeting here). Briefly, this kata is a fairly real-world exercise in that it has to do with business rules for a shopping cart that are non-linear.  In this case, the rules are: One copy of any of the five books costs 8 EUR. If, however, you buy two different books from the series, you get a 5% discount on those two books. If you buy 3 different books, you get a 10% discount. With 4 different books, you get a 20% discount. If you … more

  • Which Visual Studio 2010 is Team Suite?

    The new VS 2010 has a new lineup of versions which you can find described on the Visual Studio 2010 Products page.  Some things to note: Ultimate is the new Suite The “Data Dude” SKU is now fully incorporated in the Premium and Ultimate versions Premium and Ultimate come with a production license for Expression Studio 3, as well as Visio and Project 2010. All versions now come with some Windows Azure pieces for dev/test use All versions ship with Team Foundation Server (which now supports running on the client as a lightweight alternative to a full server-side install), providing version control, build automation, bug tracking, and continuous automation out of the box … more

  • How to Install Windows 7 from USB Drive

    I decided to reinstall Win7 on one of my laptops because it was acting up – turns out that’s not helping and I think at this point it’s a hardware problem (either memory or hard drive – I’m going to try memory next).  In the course of troubleshooting the problem, I decided to rule out a bad installer DVD for Windows 7 (the installer was failing, saying it couldn’t access certain required files).  So I created a USB installer for Windows 7 x64.  And since I’ve been meaning to install Win7 on my Dell mini10 for a while (which has no CD/DVD reader), I also created a separate USB installer for it for Win7 32-bit x86. I found this post to be helpful, but it has some problems in … more

  • Avoid Entrenched Dependencies

    Last year I wrote about Avoiding Dependencies and described some Insidious Dependencies (with help from many commenters) that many developers might not immediately recognize as dependencies.  It occurred to me today that I should point out that dependencies themselves are not intrinsically bad design – all software has dependencies.  The important distinction here that I think is a best practice is that one should make efforts to avoid entrenched dependencies on things that are likely to change. As an example, I write most of my software using Microsoft .NET.  I’m inherently taking a dependency on the CLR.  If at some point the customer’s needs dictate that I need to … more

  • Find String in Files with Given Extension Using PowerShell

    This week I found myself wanting to search within files of a given extension for a particular substring.  I often find myself missing UNIX’s grep tool.  In any event, I tried using the default Windows Vista file search dialog, but found that if I wanted to search for “connection” or “database” within all files ending with “.cs” or “.config” I was unable to do so.  I’m guessing there actually *is* a way to do this from the GUI, but after spending a couple of minutes either searching all files for the text “.cs” or else searching for files named “connection” I opted to just do it from the command line using PowerShell. PowerShell is just freaking amazing.  Seriously.  … more

  • Don’t Repeat Yourself

    (this is a submission I made to the upcoming 97 Things Every Programmer Should Know book) Of all the principles of programming, Don't Repeat Yourself (DRY) is perhaps one of the most fundamental. The principle was formulated by Andy Hunt and Dave Thomas in The Pragmatic Programmer, and underlies many other well-known software development best practices and design patterns. The developer who learns to recognize duplication, and understands how to eliminate it through appropriate practice and proper abstraction, can produce much cleaner code than one who continuously infects the application with unnecessary repetition. Duplication is waste Every line of code that goes into an application must … more

  • N Tier Design Lessons Learned Part 1

    Eight years ago this month I gave my first presentation at a conference.  It was DevConnections’ Fall 2001 show, and it was held in Scottsdale, Arizona at the Princess Resort.  The show was delayed a couple of weeks from its originally scheduled dates, and took place Sep 30 to Oct 3rd, as a result of the events of 11 September 2001.  I still vividly remember the alarm with which my seatmate on the flight over (an older lady) observed that they had given us all plastic knives with our meals.  I reassured her, “It’s OK, we all have them.” As a result of the times and the rescheduling, the resort was a ghost town and the conference attendance was, shall we say, … more

  • Principles, Patterns, and Practices of Mediocre Programming

    This is my first pass at a list of anti-principles, anti-patterns, and anti-practices that make up mediocre programming.  I’m hoping to refine this list and update this listing based on community feedback, so please leave a comment or contact me to let me know what I’ve missed, and I’ll gladly credit you with a name and a link if you’d like.   Principles Fast Beats Right (FBR) – It’s more important to get something done that probably works, or that works right now even if it will be hard to change later, than to spend time ensuring that it is correct or is well designed.  This is classic “cowboy coder” or “duct tape … more

  • Why not Classic (Legacy) ASP?

    Yesterday I got the following email, which I thought raised some good points that I thought were worth addressing here in my blog in addition to the reply I sent directly. Hi Steve, I've been following your blog (as well as Rob C. and Scott H.) as I look into dipping my toes into MVC. I just read you "How I Got Started in Software Development" and your description of the joys of lightweight ASP development really hit home. So I have a perfect question for you. I've been in the MIS/IS/IT/ICT field for, well, as long as it's taken me to collect all those acronyms. I've been doing lightweight webapp development since the late 90s, starting first in CDML, then … more

  • Gmail Problems

    Hmm, GMail has been increasingly inconsistent both for POP3 and browser usage for me lately.  Is anybody else seeing the same thing or is it just me (twitter seems to indicate it’s not just me).  I guess I shouldn’t expect much from a 0.5.32 release (of Gears), though… more

  • SQL Divide By Zero Error Solved

    Recently a report that had been running fine for months began failing with a Divide By Zero exception.  This report is a summary of a lot of data and is contained in a stored procedure which uses quite a few table variables to do its job.  Here’s part of it: declare @AccountManagerRevenueByFormat table (FormatID int, AccountManagerRevenue money) insert into @AccountManagerRevenueByFormat select CreativeFormatID, sum(AmountEarned) from lq_AccountManagerRevenueDetail amr inner join lq_Placement p on amr.PlacementID = p.ID where DateRecorded between @StartDate and @EndDate group by CreativeFormatID Ultimately, after a bunch of such … more

  • GiveCamps Get a new Sponsor

    If you haven’t heard of GiveCamps before, they’re a way for developers to give back to local charities and non-profits by providing their services over the course of a weekend.  GiveCamp was an idea hatched by Chris Koenig, a Developer Evangelist for Microsoft, a few years ago and now there are many GiveCamps organized around the country, including several in the Ohio-Michigan area (Ann Arbor GiveCamp, Columbus GiveCamp, Lansing GiveCamp, Grand Rapids GiveCamp). In addition to developers, a GiveCamp also needs organizers, volunteers, and sponsors.  If you’d like to help out or start your own GiveCamp, there’s a nice Cookbook describing what’s involved in putting one together on … more

  • Lake Maintenance and Fish Stocking

    I’m fortunate enough to live on the shore of a small lake, Lake Quincy, which I’m responsible for maintaining.  One of the things I love about Ohio, and our location in particular, is that it’s so easy to shift from urban to suburban to rural living.  For instance, where we live is in a township, not a city, so among other things we have the potential benefit of avoiding city income tax (unless we work in a city, which at the moment we do – Hudson).  However, we’re surrounded by cities like Kent, Streetsboro, Hudson, and Stow.  If we want to go to the store, order a pizza, go to a restaurant, or do anything else that requires civilization, all of these cities are within … more

  • The Ultimate Developer Desk

    Recently we moved from one end of our office building in Hudson, Ohio to the other, and while we wait for some space to open up and get renovated, a few of us are working out of a conference room with a 10’ or so long heavy duty table in the middle of it.  So we decided to deck it out with as many computers and hi-res flat screens as possible.  Sitting on one side, there are 3 keyboards, 3 mice, and 5 monitors (driving 3 computers with a combined 18GB of RAM), which makes for a pretty good pair programming experience (the laptops on the ends are for email/IM). Once we move to more permanent quarters, it’ll be tough to duplicate this much hardware in such a compact space, but … more

  • Imitation is the sincerest form of

    My SOLID Principles of OOP and ASP.NET MVC talk from this year’s TechEd is seeing some new life this week in Vancouver, Canada.  Daniel Flippance is giving a presentation based on my session’s powerpoint and code.  Good luck, Daniel, and thanks for letting me know.  Let me know how it goes and if you have any suggestions for making the presentation better. more

  • Use LINQ Aggregate to Multiply a Series of Digits

    The LINQ Aggregate() extension method uses a Func<int, int, int> to operate on items in a series.  If you want to use it, for example, to return the product of each value with its successor, you can do something like this: Func<int, int, int> producter = (one, two) => one * two; var result = subString.ToCharArray().ToDigits().Aggregate(producter); Of course, you don’t need the intermediate value.  You can simply use a lambda directly for the Aggregate()’s parameter: //Func<int, int, int> producter = (one, two) => one * two; var result = subString.ToCharArray().ToDigits().Aggregate((p1,p2) => p1 * p2); With a loop to … more

  • Euler 7 Trivial with LINQ and Generators

    Euler problem 7 requires returning the 10001st prime number.  It notes that the 6th prime number is 13 in the problem description.  Having already done some work with iterators and various number generators, including a Primes generator for previous Euler problems, the base case given in the problem can be reduced to this NUnit test: public void SixthPrimeIs13() { Assert.AreEqual(13, NumberGenerator.Primes().Take(6).Last()); } Replacing the 6 with 10001 takes care of the rest.  I’m really starting to dig using LINQ for this stuff. more

  • Windows Auto Sign On In Locked Mode

    Earlier this week, after enduring yet another windows update, I came up with a feature request for Windows that would make me a much happier user.  We’ve all heard about requests for speeding up boot times and there has been some progress on this (and of course there are hardware solutions like SSDs that can help here).  What I’m looking for is related, but not quite the same.   Background I had just turned on my computer, after shutting it down at the end of the day and letting it install updates.  That took a few minutes, but not too bad, but then it wanted to finish installing 3 updates as it started up.  Ok, fine, so I went and did something else for a … more

  • SQL Azure Database Deployment Tool

    If you’re playing with SQL Azure, the current (pre-release) process of moving an existing local SQL Server to SQL Azure can be greatly improved using a new SQL Azure Migration Wizard tool that’s being hosted at CodePlex.  Wade Wegner blogged about the tool yesterday, and his post includes a screencast showing how to use the wizard.  Check it out if you’re interested in hosting your data in the Azure cloud. more

  • PDC 2009 Sessions Posted

    They’ve recently updated the list of sessions for PDC09.  You can read the full list of PDC sessions here.  A few highlights include:   Scrum for Microsoft Visual Studio Team System Patterns for Building Scalable and Reliable Applications with Windows Azure Developing Advanced Applications with Windows Azure Windows Azure Monitoring, Logging, and Management APIs SQL Azure Database: Under the Hood Developing Rich Reporting Solutions with Microsoft SQL Server 2008 R2 Introduction to Microsoft SQL Server 2008 R2 StreamInsight Future Directions for C# and Visual Basic The Sessions are Tagged on the site, so if you’re only interested in, say SharePoint or WCF, you can … more

  • Conway&rsquo;s Life in WPF

    The “Game of Life” was invented in 1970 by John Conway, a British mathematician.  The rules of the game are simple, but the resulting behavior of the system that results is often surprising and in any event difficult to predict.  There’s a great deal of information available online relating to this game and many implementations of it exist.  I found an article called Life with XAML from 3 years ago by Scott Allen that got me started quickly getting something working in WPF.  I was led to Scott’s article by Mark Betz’s blog, which has a series on his work in this space and which also led me to the Life Lexicon, which describes many of the patterns that exist in these … more

  • Practice, Code Exercises, and Code Katas

    One of the ways we improve as software developers is through practice.  Practice isn’t just something that’s done as you go about your job – it has to be focused on improving your skills.  Practice can take many forms, but two of them include practicing doing something the right way and practicing something new that is outside of your comfort zone.  Often in our day-to-day work, our focus is on delivering something within a given timeframe, and not necessarily on doing it the right way.  Further, without exploration and practice learning new things, we may not be aware of what the “right” way is to accomplish certain tasks.  There are individuals with many years … more

  • Iterators, Expressions, and LINQ for Euler

    Recently I’ve been doing some Project Euler problems as exercises to help improve my coding skills.  We do this internally at NimblePros periodically and also at last weeks Hudson Software Craftsmanship meeting, which I co-run.  In doing these problems, I’ve been trying to approach them both from a traditional C# 1.0 standpoint as well as using newer constructs such as lambda expressions, LINQ, and iterators.  It’s amazing how much more flexible a design can be through the use of these tools. For example, the first Euler problem simply asks that you add together all natural numbers that are multiples of either 3 or 5 and less than 1000.  A simple design of this problem … more

  • Code Review Singleton Pattern Issues

    One of my applications relies on a singleton pattern to create a single instance of a server which processes requests from many different ASP.NET handlers.  It is created using pretty much standard Singleton code:

    public static Context CreateContext()

    {

    return CreateContext(new ConfigurationFileSettings());

    }

    Recently, this server needed to be made aware of whether requests were coming into it via SSL or standard HTTP.  The solution that was checked in (and which worked and passes local tests) is to create a new property of Context called IsSecureConnection, and to allow this to be passed into its public constructor like this:

    public Context(ISettings … more

  • Caching Key Generation Considerations

    Recently I was reviewing some code and ran across this – can you spot the problem? var parameters = new List<SqlParameter> { new SqlParameter("@SomeID", someId), new SqlParameter("@SomeOtherID", someOtherId), new SqlParameter("@ServerDate", serverTime) }; string cacheKey = string.Format("ResultSetName-sid{0}-soid{1}-date{2}", parameters.Select(x => x.Value).ToArray()); var resultSet = Cache[cacheKey] as List<Foo>; if (resultSet == null) { // do … more

  • MSDN Subscription Installer

    As I write this, I’ve just installed Windows 7 on my development/presentation laptop, and it’s currently installing a bunch of apps using the Web Platform Installer.  If you haven’t tried this tool, you should definitely check it out.  It’s free and easy to use and available here.  Basically, instead of hunting around in 15 different places online and on your various CDs or DVDs to install your basic dev platform tools (web server, frameworks, SDKs, etc.), you just check a few boxes in the installer and it downloads and installs everything for you without the need for further interaction.  It’s even smart enough to start installing some apps while it’s still downloading … more

  • Ad Landing Pages and Customer Conversations

    One of Lake Quincy Media’s clients recently wrote to me in response to my previous post about the Principle of Least Surprise and its relationship to online advertising.  Their question revolved around whether it was appropriate in their case to use their company’s home page as the landing page for their advertisements, something they were doing across the board.  I suggested to them that, in my experience, having a dedicated landing page that ties into a specific call to action in the advertisement is the best way to achieve a high response rate.  Removing the names to protect the innocent, here’s my recommendation with regard to optimizing landing pages for online … more

  • Ohio Towns Top Money Top 100 Small Towns List

    Money recently released their 2009 list of America’s best small towns (which, living in a small town, I was curious about).  Their Top 100 List includes towns in 32 US states.  I’ve long felt that the Midwest is an excellent place to live in terms of quality of life and cost-of-living, and likewise I’ve always preferred living in the suburbs over urban life.  I’ve done both, but I much prefer the privacy and convenience of the low-traffic, free parking, actually having a yard lifestyle found outside of concrete jungles. In any event, in looking at their list, I noticed that Ohio, while not in their Top 10 Towns, did do well as a state.  Ohio tied with Texas for the most … more

  • Free eBook Developers^4

    Recently, Microsoft released an eBook called Developer Developers Developers Developers which you can download for free or order a print copy from Lulu for under $10.  In the book are over 15 useful articles written by Microsoft MVPs, Regional Directors, and other experts.  From the site: In the book: Working with Brownfield Code by Donald Belcham (Microsoft MVP) Beyond C# and VB by Ted Neward (Microsoft MVP) Remaining Valuable to Employers featuring Barry Gervin, Billy Hollis, Bruce Johnson, Scott Howlett, Adam Cogan, and Jonathan Zuck All I Wanted Was My Data by Barry Gervin (Microsoft Regional Director and MVP) Efficiency Upgrade by Derek Hatchard … more

  • Thrive for Developers

    Recently, Microsoft launched a new developer community aimed at helping career software developers facing challenges in the current economy.  The site is called Thrive, and I think the idea is that not only should you be able to survive the current economic climate, but if you play your cards right, you can thrive.  There’s a lot of good material here from folks you probably already know (or should know): A 10-part podcast from .NET Rocks on “Development in a Downturn” including interviews with many well-known developers A 32-part screencast series on “How to be a better developer” Step by Step resources to help get into new technologies Job Search functionality … more

  • Microsoft PDC 2009

    PDC 2009 will once again be held in Los Angeles, but rather than October the event will take place in mid-November (17-19 November 2009).  The web site hasn’t been completely updated yet, but you can see the new logo and dates and sign up to learn more about sponsors and  “Partner Opportunities.” Lake Quincy Media will once again be a Silver Media Sponsor for the event, which tends to coincide nicely with our focus on Microsoft Developers.  I believe we’ll be sponsoring the exhibitor lounge once more, where the hard-working booth staff all are able to grab a bit to eat or catch a bit of rest after manning the expo hall.  [shameless plug]Look for us at the show if you’re … more

  • Advertising and the Principle of Least Surprise

    Advertising on the Internet is here to stay, and love it or hate it, good advertising is certainly preferable to bad advertising.  One thing that is important for advertising is that it follow the Principle of Least Surprise, which I recently discussed as it pertains to software application development.  In online advertising, this principle can be applied in a couple of ways. First, recognize that advertisements in general are an annoyance to users.  Given the choice, 99.3% of users (remember, 75% of all stats are made up on the spot) would do away with advertisements if they could do so without an consequences.  Further, for every cool web application or site on the … more

  • Principle of Least Surprise

    When developing software, and especially when building user interfaces, it’s a good idea not to surprise the end user.  This is known as the Principle of Least Surprise (or Astonishment if you want to go for maximum drama).  It may seem obvious, but in practice it’s often easier said than done.  This is why user interfaces are often difficult to work with, especially if they’re built according to how the programmers think about the system with no input from actual users. For example, in a data entry scenario where some data entered could cause an inconsistency with other data in the system, there are several options one might consider.  To make this more concrete, let’s … more

  • Silverlight Contest

    ComponentArt recently announced their Summer Silverlight Coding Competition, running June 22nd to September 22nd this summer.  Already there are a bunch of submissions to the contest, although there’s still lots of time left before the contest is over.  The winner will be determined based on the results of community voting combined with a panel of judges, so you can help decide which of these apps deserves to win the huge $10,000 prize for being the best application. Check out the list of contestants and their apps here.  Some of the applications submitted so far include collaborative whiteboarding/teaching applications, games, virtual in-browser operating systems, and online … more

  • Silverlight 3 on XBox 360

    Scott Guthrie earlier today twittered about a sneak peek shown today of Silverlight 3 running on an XBox 360.  I’ve been waiting a long time for this and I really hope that the XBox platform will be able to take advantage of some of the opportunities that Silverlight has to offer.  I’d really like to see the XBox opened up into a more flexible app server, as well as having access to the rich variety of online games that Silverlight already offers.  It’s a definite win. more

  • Excel 2007 Named Ranges and Data Validation

    It’s hard to find information on Excel Named Ranges for Excel 2007 using a search engine.  The problem isn’t that there’s no information available, but rather that most of it refers to older versions of Excel.  And of course, that would be fine, if Excel 2007 didn’t go and move everything around and add that darned Ribbon thing to make it impossible to find anything.  But I digress. Today I’m working on something in Excel and I want to be able to limit the available values the user can enter into a cell.  Should be pretty easy, but I’m having a hard time finding how to do it and it’s been like 5 years since I had to do this so I’m searching for help.  Of course, I’m … more

  • INVESTing in User Stories

    User Stories describe features from the standpoint of the user, and should identify small units of work that can reasonably achieved within a short (1 or 2 week) iteration by a programming pair.  A useful acronym for remembering how to write good user stories is INVEST (more elsewhere and here).  A “good” user story is one that serves the needs of all of the stakeholders in the software development project, including the customer, the team lead (or PM), and the developer(s).  Ideally the story is recorded in short form on an index card (or electronic equivalent) and is a placeholder for a longer conversation that has taken place between the customer and the developer … more

  • Determine Whether an Assembly was compiled in Debug Mode

    I’m working on a little application right now that provides some insight into the assemblies in use for a given application.  One of the things that I want to be able to show is whether or not each assembly was built in Debug or Release mode.  As you’re no doubt aware, running applications in production that were built in Debug mode can be a major performance problem (at a minimum – depending on what else you have turned on in Debug mode it could also be a security issue). So I did some binging (followed by some purging? no, wait, that with a hard G sound) and quickly found some sample code that I was able to use in some test code to confirm that it is working.  Fellow MVP … more

  • The Fibonacci Blog Post Formatter

    Sarah suggested Tuesday that I write a blog PostFormatter that only changed the format of blog posts created on days that were Fibonacci Sequence days (e.g. 1, 2, 3, 5, 8…).  I’d hoped to code something like that up during my Ann Arbor talk last night but ended up not having the time, so just to show how easily this could be done, I threw something together today. First, this is for a demo application that I used in my talks this week – if you want to follow along, grab the code from my last post. I already had a well-tested but not at all optimized Fib generator/tester class from some Euler problems I’d worked on as part of a coding kata, so I just reused that … more

  • ASP.NET MVC and SOLID Programming Principles June 2009

    This week I presented “Introducing ASP.NET MVC and SOLID Programming Principles” (aka SOLIDify Your ASP.NET MVC) to the Cleveland .NET SIG and the Ann Arbor .NET Developers group.  Thanks to everyone who came, it was standing room only at the Microsoft office in Cleveland and a great turnout at the SRT Solutions office in Ann Arbor, too.  I thought the presentation went well and had some good discussion in both locations and I enjoyed getting to see a lot of folks I know in the area whom I hadn’t seen in a while.  And the projector didn’t turn off every 5 minutes like the last time I spoke in Ann Arbor (always bonus). Download ASP.NET MVC and SOLID Programming Principles … more

  • Binding in ASP.NET MVC

    At my ASP.NET MVC + SOLID Principles talk in Cleveland last night, I had a couple of questions about binding in ASP.NET MVC.  For instance: Can you still do something like <%= Bind(“Foo”) %> in your form? How does the controller that receives a POST get back the Model that was used in the form that was posted?  Does it have to be serializable? What if I need to bind custom types to my Model class? Doesn’t having the Model referenced in the View eliminate the need for the Controller? I answered these last night but I thought they were common enough as a theme that they deserved their own answers here as well. Does ASP.NET MVC Support Two Way Binding … more

  • DRY - Don’t Repeat Yourself - Motivator

    I’ve been meaning to create a DRY (Don’t Repeat Yourself) motivational poster for a while now, ever since seeing Derick Bailey’s SOLID posters.  To me, DRY is at the heart of many software patterns and principles, and sums up much better the similar Once and Only Once principle (which, to me, violates DRY right in its own name).  Duplication is waste.  Repetition in process calls for automation; repetition in logic calls for abstraction.  Refactor to remove wasteful repetition as often as you possibly can, and watch your software design improve.  Post this on the wall in your team room (along with others) to keep this principle in mind as … more

  • Speaking in Cleveland and Ann Arbor this week

    This week I’ll be presenting my TechEd session on SOLIDifying ASP.NET MVC applications to the Cleveland .NET SIG in Independence and the Ann Arbor .Net Developer’s Group (in Ann Arbor, MI).  The talk’s main purpose is to introduce developers to “Uncle Bob” Martin’s principles of software design (which can be arranged into the acroacronym SOLID) and to drive home the point that just because you’re using ASP.NET MVC doesn’t mean you’re writing better code.  I show a very simple (and poorly designed) ASP.NET MVC application, and, after identifying its many “issues,” I implement changes based on the SOLID principles until the resulting code is much better. If you don’t know who “Uncle … more

  • Upgrading HP MediaSmart ex470 to 2GB of RAM

    After the horrible experience of trying to restore some files from my Windows Home Server while it was continuously thrashing due to insufficient memory, I picked up a 2GB stick of RAM (which arrived a couple of days ago) and am in the process of doing the upgrade with the help of this step-by-step guide which was the first result in my Bing Search.  So far it’s smooth sailing, though as you can see I have my computer pretty much 75% disassembled at this point and I still haven’t gotten to the part where I can access the RAM.     I have to say that so far the tutorial is quite good.  No gotchas thus far (as of step 9).   Pulling out the motherboard. … more

  • Regular Expressions Cookbook

    I just received a notice that O’Reilly is publishing a new Regular Expressions Cookbook.  It’s not available yet, so I can’t offer a review, but I’m certainly a fan of Cookbook style books (like this one), because of their simple, problem-solution organization.  The authors are notable regular expression experts, so I expect there will be some good material here. Other regular expression resources and tools: Regular Expression Library – hundreds of pre-written and tested expressions covering many common use cases Regular Expression Construction Forum – get advice on writing and optimizing your regular expressions more

  • Vista Disconnect From Network Share or UNC Path

    Occasionally I’ll try to connect to a UNC share or network device and I’ll forget my proper username and password for the device (NAS, router, another box, etc.).  In the case of one of my NAS drives at home, it will let me guess three times what my credentials are, and then it will just connect me as whatever my last guess was, but at that point I’m basically attached as guest.  Once that happens, I can see the root of the drive in Windows Explorer, but I can’t get to any of the subfolders due to lack of permissions.   If I try to reconnect,  it won’t let me.  If I try to map a new network drive, it tells me I can only have one connection open to this … more

  • TechEd 2009 Session Aftermath

    I’m a bit later than usual in posting my slides and demos from my talks, and for that I apologize.  TechEd this year was a lot of fun, albeit a little disappointing due to its being a smaller show than in past years.  However, it was great to see a lot of my friends whom I typically only interact with electronically, and to meet a few new people as well.  I do wish that this show would have had a bit more to offer developers, but I guess I’ll just have to wait for PDC for that. My two talks both were related to ASP.NET MVC, but neither was specifically an ASP.NET MVC talk.  What I mean is, yes, I used ASP.NET MVC for all of my demos and briefly mentioned what ASP.NET MVC … more

  • XmlSerializer FileNotFoundException

    Recently a buddy of mine ran into this problem trying to serialize a custom object.  The error message he got back was the ever-so-helpful An unhandled exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll Additional information: File or assembly name uwzg3j_w.dll, or one of its dependencies, was not found. After a fair bit of research, he found the answer, which I thought would be worth sharing here for anybody else who’s stuck trying to figure this out.  The class already had the [Serializable] attribute on it, but of course the issue was with one of the members.  One way to help diagnose these kinds of issues is with the XmlSerializerPreCompiler … more

  • IgnoreRoute in ASP.NET Routing is Order Dependent

    I’m wiring up the IoCControllerFactory from MVCContrib into an MVC application and I kept running into an issue where a request was coming in looking for a ContentController.  The reason for this is that in my CSS file I have a property like this: background: transparent url(images/logo.gif) no-repeat scroll left top; which is in the Content folder.  The resulting request for “/Content/images/logo.gif” was matching the default routing rule: routes.MapRoute(     … more

  • TechEd 2009 Sessions

    This week I’m at TechEd 2009 in Los Angeles.  I’m giving two talks and would love to get some feedback from attendees on them.  Naturally you can use Commnet to add your evaluation (and I hope you will do so, unless you’re one of those cruel all 1s people), but if you have anything constructive to say, I’d love it if you’d post comments here or contact me directly.  It’s a challenge to present topics in such a way that you please everyone in the room, and usually the biggest issue has to do with the level of the content.  Most of the time, at least 10% of the people say it’s too technical and at least 10% say it’s not technical enough.  The best I can strive to do is … more

  • Stir Trek

    Last Friday I presented at the Stir Trek event held in Columbus, Ohio.  This event was by far one of the best local events I’ve been a part of, and I’m eagerly looking forward to a similar event already scheduled for next year.  You can learn more about it at its web site, but the event’s primary goal was to provide local developers with content that was presented at MIX09.  My talk was on What’s New in ASP.NET 4.0, and I got a lot of positive feedback on the presentation.  I’ve sent my slides and demos to the organizers of the event, so I’m sure they’ll make their way onto the official site somewhere, but if you need them you can grab them here: … more

  • Azure Developer Contest

    If you’re into cloud computing, you should check out the new CloudApp(): Azure Services Platform Developer Contest.  You can learn more about it at newCloudApp.com.  The contest opened up on May 4th and submissions are due by 18 June 2009.  Winners will be chosen and announced by the end of June.  The contest is US-based and includes categories for .NET applications, PHP applications (PHP is supported on Azure), and a Community Winner.  Prizes include up to $5,000 cash (Visa gift card) as well as being featured on Azure.com and Channel 9.  You can also follow the contest on twitter at #newCloudApp. Have fun and good luck! more

  • Outlook Send Mail Infinite Loop - Message in Outbox

    Last week I encountered a problem with Outlook that I’m happy to report I’ve just solved.  I found a bunch of things on the Interwebs that looked like they might be useful, but none of the fixes there did the trick for me (of the ones I tried – some fixes were more extreme than I wanted to attempt).  Here are some resources that may help you if my fix does not:

    Outlook Send-Mail Infinite Loop

    Message stuck in Outbox

    How to troubleshoot mail stuck in Outbox in Outlook 2000

    Delete a stuck Read Receipt

    Download MDBVU32.EXE (see previous link for why)

    Forum with some tips for trying to delete messages

    The Problem

    I tried to send an email on Sunday and for … more

  • TechEd 2010 Back In New Orleans

    As previously announced, it’s official!  TechEd 2010 will (finally) be back in New Orleans!  The dates are June 7-11, 2010.  It’s been several years since I’ve been to New Orleans, but I always have a great time there and I’m very much looking forward to returning.  The food, music, and atmosphere are wonderful.  I hope to see you there! more

  • Moving a Business

    This week we’re moving our businesses from an office in Kent to one in Hudson, Ohio.  I thought I’d write a little bit about some of the things we’re having to deal with as part of this process, and some lessons learned.  In our case, this is going to be a multi-step move, in that we are moving in to space that is not yet full renovated so that we can be onsite while further renovations are completed (and then we’ll move again into the final space). Firstly, if you’re moving an office, you’re going to need to deal with all the usual things involved with moving in terms of services and utilities.  This includes: Electricity Gas (unless all electric) Water Sewer … more

  • Cloud Computing with Force.com

    Lake Quincy Media uses SalesForce.com as our CRM to manage our leads and customers and keep our salespeople organized.  Overall we’ve been very pleased with the solution, and we know plenty of others who swear by SF.  So when I heard about their foray into Cloud Computing via Developer.Force.com (DFC), I figured I should check it out.  Similar to Azure, you need to register to get an account and the SDK.  They also havea free white paper and tutorials.  The download looks something like this: The first PDF contains 11 tutorials that help you get started building your first app in the cloud: The second PDF is a 30 page white paper on “Force.com: A … more

  • Space Coast ASP.NET MVC and SOLID Principles Talk

    Last week I visited the Space Coast .NET user group in Florida (courtesy of INETA) to talk about ASP.NET MVC and SOLID software development principles.  If you’re interested, you can grab the slides and demos from the link below: Download slides and demos Big thanks to Robert “UncleBob” Martin, Mark Nijhof, and Derick Bailey for many of the slides and ideas in this talk. more

  • Speaking Wednesday at Space Coast .NET User Group

    This Wednesday I’ll be in Florida presenting on ASP.NET MVC and Robert Martin’s SOLID principles of software development.  The Space Coast Dot Net User Group is hosting me, and INETA is sponsoring the talk.  If you’re in the area, please stop by to join in the event.  More details: When: 630pm, 15 April 2009 Where: Space Coast Credit Union Corporate Headquarters 8045 N. Wickham Road Melbourne, Florida 32940 I gave this same talk last week to the Kent State ACM chapter and it went pretty well.  I plan to tweak the demos a bit before this presentation.  Ultimately, I’m giving this same talk at TechEd in LA in about a month, so these events are providing … more

  • GeekFest 2009 at TechEd

    Developer Tools Marketing at Microsoft is hosting a party at TechEd in Los Angeles once again this year.  Here are the details: Let’s face it, going to a technical conference is good for your career but it’s not a whole lot of fun. You need an outlet. You need to have fun. Cheap beer and lousy pizza. We are bringing back GeekFest! Join us at Lucky Strike for a night of pizza, beer, and bowling. There is limited invitations available, so what are you waiting for? If you are attending the TechEd 2009 conference and you are a developer, you are invited. To register pick up your "duck" ticket (and wristband) in the TechEd Technical Learning Center (TLC) at the Developer Tools … more

  • Use HttpApplication.CompleteRequest Instead of Response.End

    HttpApplication.CompleteRequest is preferable to use for aborting a request in an ASP.NET application over Response.End, because it has better performance characteristics.  If you’re using Response.End, you’ve probably at one time or another encountered the ThreadAbortException that goes along with it. The behavior of CompleteRequest changed with 2.0, as Rick describes here.  However, the reason why you’ll most likely want to call CompleteRequest rather than Response.End is that, while it still short-circuits the ASP.NET pipeline (jumping immediately to the EndRequest event), it does so without throwing a ThreadAbortException. (thanks to Stefan Schackow for this tip) more

  • Where Are The Developer Machines?

    I’m really tired of the fact that computer manufacturers in general have yet to recognize developers as a separate demographic.  If you do a search for “developer workstation” in Google, there are no links to any computer manufacturer on the first page (sponsored or otherwise). Search for “gaming computer” and suddenly there are all kinds of links: And no, Live Search isn’t any better: Search for “developer laptop” and at least Toshiba gets in the game with some sponsored ads.  What’s my point?  Computer manufacturer’s simply don’t find developers worthy of their attention.  In fact, developer’s as a whole know this, which is why if you want to get a decent … more

  • Speaking at Kent State University ACM Chapter

    I’m giving a talk this week at Kent State University on ASP.NET MVC and SOLID principles.  It will be at 3:45pm on Wednesday, April 8th, in room 228 of the Match and Comp Sci building. It’s sort of a dry run for a session I’ll be giving at TechEd in May, but also geared more toward students.  I’ll be sure to post the slides and demos here as usual afterward.  If you’re a student at KSU or are in the area, please feel free to stop by (the event is open to the public).  My plan is to spend a very small amount of time describing MVC (and ASP.NET), and the bulk of the time discussing best practices for OOP culled mainly from Robert C. Martin’s books, such as these: Agile … more

  • Stir Trek Event in Columbus Ohio

    I’ll be attending and speaking at Stir Trek on 8 May 2009, which happens to be the date the new Star Trek movie opens (coincidentally).  What is Stir Trek, you ask?  Well, let me tell you (by means of cutting and pasting from the above-linked site, to save you from exercising your mouse-clicking finger): Stir Trek is an opportunity to learn about the key announcements from the Mix 09 conference, at a location that is a little closer to home, and in the comfort of a movie theater. There will be 10 sessions, in two tracks, so you’ll be able to pick the content that interests you the most. In addition, the day will include lunch, a raffle with some significant prizes, and … more

  • DevConnections Spring 2009 Slides and Demos

    Apologies to those in my sessions whom I promised to upload these by the end of last week.  As often happens, things came up that prevented me from doing so, which is why I’m finally getting these uploaded after midnight almost a week after my talks (I also had to reset my Azure keys/tokens since I showed some of them during the talks).  In any event, although I didn’t have a huge turnout for my Azure talk (at 8am last Tuesday), generally the responses from the crowd seemed positive both about my sessions and the show in general.  For this show, now formal evaluations were collected, so I won’t get my usual feedback telling me I was both too advanced and too basic, but I do … more

  • CODE Magazine Upgrade

    If you’re a .NET developer, you’re probably familiar with CODE Magazine, which is pretty much the only industry magazine that isn’t owned by a large corporation, and which has always been known for delivering quality content.  Recently, the magazine upgraded its look, as you can see at right, and a refresh of the web site is imminent as well.  The most recent issue, in particular, caught my attention because it really does have some amazing content.  There’s the 2nd part of a DSL article by Neal Ford, who gave the keynote at last year’s CodeMash conference.  Ted Neward writes a new “Thoughtworking” column on the subject of languages and their future in the next five … more

  • Cannot Connect to Windows Home Server Solution

    I have an HP MediaSmart 470 Home Server (previous post) that I like very much for its ease-of-use and simple ability to back up my home network’s computers and act as a streaming media server.  However, one of my computers stopped being able to connect to it.  Since it was my laptop, and I have another WHS at my office that is also backing up the same machine, I didn’t worry too much about it, but eventually it bothered me enough to investigate and ultimately fix.  The primary culprit, it turns out, is OpenDNS. OpenDNS OpenDNS is a DNS provider that offers some additional services, such as web content filtering and anti-phishing protection.  Since our daughter is old … more

  • SDS Now Offering Real SQL

    SQL Data Services (SDS) will offer “real” relational data access in the future, according to the latest MSDN Flash newsletter I received today.  This is great news, since prior incarnations of SSDS/SDS have all been restricted to Astoria/REST implementations that required HTTP access to data.  These are fine for some scenarios, but most apps that exist or are being built today are built on relational databases (like SQL Server), and it would be nice if there were a simple way to push these up into the cloud when they needed to do so in order to achieve better scalability or availability.  According to the announcement, SDS will become the first relational database service … more

  • Azure Thermostat Service

    By now I assume most readers are familiar with Azure, Microsoft’s cloud service offering.  Azure provides theoretically limitless scalability to online applications, which can be built using existing Microsoft developer tools and skills.  As part of the deployment process for an Azure application, the number of nodes required to support the application is specified (in configuration or via the web portal).  There are two kinds of applications (referred to as Roles, unfortunately) supported with the current CTP of Azure: Web Roles and Worker Roles.  Web Roles are essentially ASP.NET applications; Worker Roles are basically constantly-running services.  An example … more

  • Azure Tooling Suggestion for Web Roles

    With Azure today, there are two projects, you can create a Web Role which is basically an ASP.NET Web Application that is configured to automatically deploy to the local dev fabric (local cloud proxy).  When you Run the application, with F5 or Ctrl-F5, it will package up the application and deploy it to your local dev fabric, along with starting other services like AzureStorage locally, so that you get a nice dev experience. However, since it’s really an ASP.NET Project under the covers, the Web Role project also supports (in the solution explorer) the Right-Click, View in Browser command that ASP.NET apps all have.  And it (mostly) works!  However, it doesn’t actually run on … more

  • ASP.NET Control Panel

    Something I think would be a nice addition to ASP.NET (ideally shipping in 4.0 or N.0, but a community effort would also work) is a control panel that can be plugged into any application.  A control panel would provide some or all of the following capabilities to a web site administrator: View Page Trace output View Recent Exceptions View Cache Contents and Clear Cache Other tasks as plugins (manage membership, db connections, whatever) With ASP.NET 1.0, support shipped out of the box for viewing a site’s trace output using an HttpHandler, by default called trace.axd.  This can provide valuable diagnostic information, and of course can be locked down using standard … more

  • Some Code Quality Links

    Caught a couple of nice links from @unclebobmartin via twitter this morning that I thought were worth sharing.  The first one is a very nice summary of the Software Craftsmanship conference that took place last week in London.  From reading this review, it sounds like there were a lot of very interesting and interactive sessions.  The author, Kerry Buckley, shows off his own mind-map of software development practices which I think is pretty cool (using Graphviz and including such things as TATFT, TDD, and YAGNI.  I’d be interested in seeing how others’ graphs differed and what a composite graph might have looked like.  I’m also intrigued by the ideas of katas for … more

  • Visual Studio Silent Crash with Designer

    If you’re encountered an issue where Visual Studio 2008 SP1 crashes silently whenever you try to open a web form or master page (which by default will open the design view), there is a hotfix that will likely solve the problem.  I ran into this recently while working on the Azure MVC templates that Jim Nakashima posted in November.  I brought this to his attention (as I’m sure others did as well) and last week he published the details of a hotfix that takes care of this (and other) issues.  Eric Hexter and Jeffrey Palermo have also confirmed that this fix has resolved issues they were seeing as well. more

  • Brief Response to Corey on Software Craftsmanship

    Corey’s blog’s comment box is failing, so posting my response here.  Read his response to my post for context.  Below is simply cut-and-pasted from a comment I was trying to leave on his blog: Hey Corey, thanks for the well thought out comments.  Let me consider my response and most likely post it on my blog, but while I'm writing here I'd like to describe a very real scenario I'm faced with right now that plays into my thinking on this subject. I am providing some coaching to a small business owner and software developer.  This shop has been around for about 18 years and has a shipping product written in a legacy (as in, no longer shipping) platform.  He has … more

  • Entrepreneurs and the Economy

    ScottW pointed me to Entrepreneurs Can Lead Us Out of the Crisis, which has some very interesting ideas.  As an entrepreneur and small business(es) owner myself, I have to say that I agree with the ideas presented in the article pretty strongly.  I’m not an expert on the stimulus plan that was recently passed but I can say with some confidence that thus far it hasn’t turned around the economy (though of course it’s a bit early to have expected it to do so).  However, I do believe that the way to fix things is to stimulate growth and innovation, not to try and protect industries that have proven themselves to be uncompetitive in the marketplace. Hiring employees is … more

  • Craftsmanship, Quality, Dogma, and Pragmatism

    Craftsmanship In the last year or so, there has been an increasing amount of discussion on software craftsmanship, and what it means and whether or not it’s a good thing.  There’s an online email list, a conference with the same name, and at least one user group devoted to the subject (in related news, I’m helping to organize a similar group in Hudson, Ohio).  There is some good discussion going on in this sphere about what it means to be a craftsman, but there are other discussions (mostly happening elsewhere) that question the value of craftsmanship with equally valid reasoning.  I’ve heard from several successful business owners that they don’t … more

  • Lost in Texas

    Last year Brendan and I had the privilege of attending Jeffrey Palermo's agile bootcamp, put on by HeadSpring Systems in Austin, Texas.  It's a great class and Jeffrey is an excellent instructor.  After the class, Jeffrey invited us to dinner, and being the high tech folk that we are, he texted us the details of the restaurant.  For whatever reason my phone wasn't receiving, but Brendan got the message, and we had a GPS, so we figured we were all set.  I've forgotten the actual restaurant and address, but it looked something like this: We hopped in our rental car, pulled up the GPS, and dutifully plugged in the Ranch Road address and 12345 street number, but could not … more

  • Learning To Code with the Azure SDK - Show Me The Code

    I’ve been working with Azure off and on since last summer, and like any new API or platform, there are hurdles involved with the learning curve.  This is especially true for pre-release software that is rapidly changing and of course has neither official documentation nor much in the way of info on blogs or developer community sites like ASPAlliance.com.  One of the ways I like to learn about projects these days is through testing.  Ideally, the project will already have a suite of unit tests that I can run to confirm that it actually works at least as well as its creators expect it to, and then I can look at individual tests to discover how the creators of the API … more

  • ASP.NET MVC Request Validation

    When using ASP.NET MVC to post data that might contain HTML or other potentially “dangerous” data, the default behavior as of the Release Candidate is to throw an exception, preventing the posting of the data.  This is a well-known feature of ASP.NET that was introduced several versions ago, and the typical way to avoid it (when necessary for the application’s function) is to add validateRequest=”false” either to the @Page attribute or to the <pages /> section in web.config.  Notably, this doesn’t actually work with ASP.NET MVC RC (and v1.0 I presume). The reason for this is because of the way ASP.NET MVC processes requests.  In traditional web forms, the page itself is … more

  • Azure Table Storage Gotcha

    Steve Marx gave a great talk on getting started with Azure at PDC.  You can watch the whole thing here and download his samples.  Once you download the Azure SDK (I’m using the January CTP) and ASP.NET MVC (I’m using the RC), you can get his stuff up and running without *too* much trouble.  However, one thing that took me a little while to figure out is that for some reason even when Azure Storage was running, the blog would error out saying that it couldn’t find the table it was looking for.  Of course, it was a little more cryptic than that – what it actually said was: Resource not found for the segment ‘BlogEntryTable’. I tried making sure the table existed and … more

  • IDisposable and WCF

    Recently we’ve been separating our monolithic application into smaller systems which communicate via services.  We’re using WCF for this communication, and one of the things that we’ve quickly noticed is that WCF is, for whatever reason, not compatible with the usual best practice of wrapping IDisposable objects with a using() {…} block.  Personally, I don’t think resources should be marked IDisposable if you can’t simply use the using() statement.  The issue with the case of WCF’s client’s is that the call to Close() may throw an exception (a network error).  I have to believe that other disposable resources might also run into problems when cleaning up their … more

  • Interview on Performance

    Last month at CodeMash I met with David Giard who decided to do an impromptu interview on the topic of web site performance.  He just let me know that video is online.  I’m actually quite impressed with the quality of the sound, considering that I didn’t have a clip-on microphone or anything like that.  The video quality is pretty nice, too, though I’m sure it’s well below whatever the native quality was for the HD camera Dave was using. The content of the interview focuses on web performance, including such things as how to improve web page load time by using multiple domains to download static files, how to use ASP.NET’s support for server-side caching, how to tune for … more

  • Sending Mail via GMail with AspNetEmail and .NET

    Periodically, I need to send out announcements to a list of emails pulled from a database.  This is a pretty common problem, and a long time ago I found RapidMailer from Dave Wanta aka AdvancedIntellect which does a pretty good job and has all the source.  However, I’d been using it with my web host provided SMTP/POP3 provider for years, but since I recently moved my accounts to Google Apps (for the tons of free storage), I had to figure out how to configure RapidMailer to work with GMail. After some searching, I found a post by Dave himself describing the necessary pieces for sending mail via GMail and AspNetMail..  Specifically, since Google requires TLS security, or … more

  • Goals for 2009

    Wow, I'm really getting a late start on this post.  I'd meant to come up with some goals for the year back at the start of the month, and here it is nearly February and I'm just now getting to it.  So before the kids start screaming or some other emergency distracts me, here's some quick things I'd like to achieve (personally, not business) by the end of 2009: Get In Shape (obligatory) - I'm hovering just past 200 pounds at the moment.  I'd like to be no more than 190 by 1/1/10.  As a sub-goal, I'd like to be 1 pound lighter on the 1st of each month than I was the month prior. Biking - Last year as a family we only managed to go biking about 2 or 3 times.  This … more

  • Ultimate Developer Rig 2009

    I'm writing this on my Ultimate Developer Rig of Jeff Atwood fame from late 2007, which a number of folks online built over the last year or so.  Dustin Campbell was nice enough to provide a NewEgg wish list that included all of the requisite components, and Lake Quincy Media actually bought and built two of these things from that list.  However, as you'll see if you follow the link, a large number of the components are now unavailable.  Plus, it's been about 15 months since these specs were first put together, which is a long time in the world of personal computer hardware.  So, as I continue to try to avoid reinventing the wheel, I would like to know who has recently … more

  • Copy Pictures To Folders By Date Taken with Powershell

    For about the millionth time, I was downloading the photos from my digital camera and organizing them into folders by date... by hand.  I've tried a few different tools to do this in the past and have always ended up going back to a manual process for one reason or another.  So this time I grew fed up (again) with the inanity of the process and decided I'd use PowerShell to accomplish the task, as it seems made for the job. Of course I searched first for others who had done this - it's hardly a problem unique to me.  I pretty quickly found someone who not only had gotten it to work but had some pretty nice links to help for those new to PowerShell.  Hans of course also … more

  • DevReach DVDs

    Earlier this week, I received a package of DVDs from the DevReach conference I was invited to speak at last October.  I've already written about my experience with the conference, but the arrival of the DVDs was a welcome surprise.  Sure, you usually get such things at TechEd or PDC, but a small regional conference like DevReach?  I wasn't sure what to expect.  After checking out some of the content, I was immediately very impressed.  The packaging is extremely professional, as is the software for browsing through the session content.  The actual video content is very high quality, both in terms of audio and video.  The staff involved in the capture and … more

  • CodeMash 2009 Aftermash

    CodeMash 2009, the third annual Ohio conference (and as far as I know, the largest Ohio developers’ conference), was by all accounts a great success last week.  I was privileged to be a speaker at the show but also got a lot of value out of the networking opportunities and other sessions.  Mary Poppendieck was also speaking, and it was great to get the opportunity to meet her and her husband Tom, as their books on Lean Software Development have been very valuable to me.  I finally met David Laribee, also speaking, for the first time as well.  It’s very impressive the kind of draw CodeMash has, and this year the event was sold out or even a bit over-sold, with many of the … more

  • Latitude D830 Vista BlueScreen

    I'm rebuilding one or our laptops and it's had a few bluescreens immediately upon Vista launching for the first time (it had Vista on it before I decided to pave it).  Going into safe mode, I was able to identify that the last thing it tries to do is load crcdisk.sys.  Searching online, I was able to find two possible solutions: The laptop has 4GB of RAM (2x2GB).  Remove one of the DIMMs and try again. (source) (source) (MS Update) The laptop has a bios setting of Onboard Devices -> SATA Operation: AHCI.  Switch it to ATA.  (source) I tried the first one and this let it reboot the first time, but then it started BSODing again once I started doing Windows … more

  • XBox 360 - Home Media Center

    Recently I picked up an HP MediaSmart EX470 Windows Home Server to help consolidate my files at home and to provide a simple backup solution.  It’s been great and it’s an extremely economical way to get backups.  You can hook it up with Amazon S3 using JungleDisk and get simple offsite backup of the files (but not the backups) easily and cheaply as well, and JungleDisk is just one of many plugins available.  I recommend the 500GB version for the price, as you can pick up a 1.5TB hard drive to plug into one of the extra bays for under $150.

    One of the many plugins for the WHS is a media streaming one that makes it very easy to use the WHS from your XBox 360.  … more

  • Online Media and the Death of DRM

    In one of my recent posts I mentioned that I have a Zune and quite enjoy it as an MP3 player.  Prior to it, I swore by my iRiver player, which was *tiny* and ran on just a single AA battery for about 12 hours per battery.  One thing I really liked about the iRiver was that you never had to worry about whether or not it had been charged.  It was always ready to go, and if it did run out of power, AA batteries were easy to find.  However, its capacity (128 MB or 256 MB I forget which) was a bit lacking and it didn’t do games or videos and its software for syncing with my computer was really a pain to use (why they didn’t just make it a freaking drive I don’t understand – … more

  • Cool Games

    Like many others, I enjoy playing games in my short supply of free time.  I used to be a bigtime PC gamer who scoffed at console gamers, but in the last few years the consoles have really caught up to the PCs in a lot of ways, and now I’m just about 100% an XBox360 gamer when it comes to video games (I still play the Starcraft occasionally, though).  Luckily, my wife (mostly) shares my love of games, and is happy to play with me, though she prefers boardgames to video games. We both think games are a great way to get to know people and build a sense of team, so at Lake Quincy Media we buy lunch for the whole company and play games during lunch, which usually turns into 2-3 hours … more

  • 2008 Goals Recap

    Last year I decided to blog some personal goals that I had for the year.  It’s widely known that the act of writing something down greatly increases the chances that one will actually take the action necessary to achieve the goal, and I figured blogging it might further increase my odds since there’s the whole public commitment factor added in.  I’ll be brief since I already did an 11-month status update a month ago, and not a huge amount has changed since then. I’d hoped to hit 200 blog posts for the year.  In 2007 I managed 144 posts.  In 2008 I wrapped up the year with 184 blog posts if my count is correct (I moved my blog mid-year, so the counts are coming from two … more

  • Zune Feature Requests

    I’ve been the proud owner of a black Zune 30 for a couple of years now.  I think it’s great and I really don’t foresee a need to get a Zune 80 since I’ve never come close to using the 30GB of space available, even when I’ve put a dozen or so movies on the thing.  The upgrades in software have been nice, though I do miss the quick list feature that used to be there on the device. Of course I noticed last week when, on New Year’s Eve, my Zune wouldn’t boot.  A lot of discussion ensued and some resorted to dismantling their Zune to try and fix it.  I opted to wait it out, expecting it was a date error related to its being the 366th day of the year, and it turns out that was … more