Archives

Archives / 2008
  • Slow Script Loading by FireFox with Cassini

    Bertrand just posted about a bug I’d encountered before but never tracked down wherein FireFox (and in particular, FireBug) is extremely slow in loading scripts for a local web site running on Cassini (Dev Web Server).  It turns out that the issue has to do with an FF bug trying resolve “localhost” using IPv6.  Dan Wahlin follows up with the fix, describing how to disable IPv6 in FireFox.  Since the issue has to do with name resolution, another workaround is to simply change the URL from using localhost to using 127.0.0.1. With the bug in place, individual requests typically take over a second.  Using 127.0.0.1 or disabling IPv6 in FireFox results in the expected 5-25ms … more

  • IFileSystem Dependency Inversion Part 5

    The saga began here. Where I left off, I'd managed to create a new class for handling the storage of my creative files, called CreativeFileStore.  This method took in an IFileSystem as a parameter to its constructor, which provides two benefits: Testability Flexibility - I can swap between WindowsFileSystem and AmazonS3FileSystem easily In the interest of keeping the individual posts at a reasonable size, I didn't include all the tests for the CreativeFileStore, but here's a summary: 1: [TestMethod] 2: public void Create_CreativeFileStore(){} 3:  4: [TestMethod] 5: [ExpectedException(typeof (IOException))] 6: public void WriteFile_Fails_If_File_Already_Exists(){} … more

  • IFileSystem Dependency Inversion Part 4

    Still working on cleaning up some legacy ASP.NET code.  Here's where we are: Part 1: Define problem and demonstrate IFileSystem basic version Part 2: Spike solution to support saving files in IFileSystem that works in both Amazon S3 and the Windows file system Part 3: Initial refactoring via TDD of big ugly method Now it's time to take the big step of pulling the main ugly method guts out into its own object.  Since the main purpose of the method, GetImageOrFlashData(), is to store a file that has been uploaded, I'm thinking at the moment that the name for the class who will take on this responsibility is going to be CreativeFileStore (a creative is a noun in this context; a … more

  • IFileSystem Dependency Inversion Part 3

    In part one I described the problem.  In part two I worked out the details of how to save files in a platform-ignorant way by creating a spike solution.  Now I'm looking back at my original ugly method from part one and extracting it into its own class that accepts an IFileSystem instance via constructor injection. Looking at the original method, it has a number of dependencies and issues.  My next step is going to be to get it out of the untestable ASP.NET codebehind file and into a separate class.  Doing so is going to require me to replace all global references with method parameters or properties on whatever class I create.  Here's my first pass at things I need … more

  • IFileSystem Dependency Inversion Part 2

    In my last post in this IFileSystem series, I described the problem I'm working on of removing a dependency on the System.IO Windows file system in my ASP.NET application.  A bit of research on this subject revealed some help on making file uploads testable by ScottHa, but his technique still makes use of the SaveAs() method and ultimately ties the solution to the server file system.  A similar post on creating Unit Test Friendly File Uploads was more helpful, in that it provided some helper methods for saving files from HttpPostFile without using its built-in SaveAs() method. Since my ultimate goal is to be able to swap between Amazon S3 and Windows file systems (and likely Azure … more

  • Installing Graffiti Extras

    I’ve been wanting to add Next/Previous links to my blog’s posts to provide easier navigation for folks who come to the blog and find themselves somewhere in the middle of it.  My goal is for the top and/or bottom of each post to have something like this: << Blog Post Title | Blog Post Title >> Most likely my designer will make it look better than this, of course.  A quick search revealed that Graffiti Extras includes this functionality.  I thought I’d grab the Binary release and fired up my FTP client and was ready to do things the old-fashioned way when I discovered the Package option is actually a much easier way to go.  What’s a package?  Well, … more

  • IFileSystem Dependency Inversion Part 1

    In the course of making my software more testable, I’ve attempted to eliminate a dependency on the file system (in this case, via System.IO) by creating an interface, IFileSystem.  I just did a quick search for this term and came back with only one C# interface (in the first few results) that matches this, which is for CC.NET, and looks like this: My basic version of the interface is similar: public interface IFileSystem { bool FileExists(string path); void MoveFile(string oldPath, string newPath); string ReadAllText(string path); } From this, I was able to extract some simple System.IO dependencies that were detecting if a file existed and moving it.  … more

  • Energy Usage

    Rick has an interesting post about his experiences measuring electricity use of various components in his home.  I’ve been curious about this myself for some time, but haven’t had the tools or time to track it.  I think I’ll pick up one of these usage monitors (like Rick did) and of course (eventually) report my findings.  I’m thinking I’ll pick it up for the office, so it’ll be a business expense…  Plus we have a ton of things using power at the office, including a fridge and a microwave, a projector, and of course computers, printers, etc.  Be cool if this gadget logged usage to a memory stick and you could download it into Excel or something rather…  not … more

  • SEO Tip Move Hidden ASPNET Fields To Bottom of Page

    Here’s a quick SEO tip from Teemu (via email) that I’ve been meaning to mention – there’s a new feature in .NET 3.5 SP1 that lets you control where hidden form fields are rendered by ASP.NET.  To set it, go into web.config and add the following: <pages renderAllHiddenFieldsAtTopOfForm="false" /> The default for this is true (which is how it’s always behaved since 1.0).  You can read more about it on MSDN. What’s the point? There are pros and cons to which way you go with this setting.  The default setting ensures that the data in hidden form fields like __VIEWSTATE is available early in the browser-side page loading cycle, so that if a user … more

  • Func Mousepads

    I bought an Alienware laptop a few years ago as sort of a gift to myself after coming back home from Iraq.  As it turned out, that computer didn’t actually last very long because of Alienware’s crappy support policy, but it did come with a Func Industries mousepad that I still use to this day.  Let me tell you why. Back in the day, I used to have time to play computer games, and I was a bit of a Counterstrike addict.  I wasn’t the best or anything, but I had a lot of fun with the game.  One thing that’s required for such First Person Shooter games is a decent mouse, and ideally a decent mousing surface.  This is why Alienware, the self-proclaimed gamer’s computer … more

  • Head First Design Patterns

    I picked up Head First Design Patterns a couple of months ago and read it last month.  I have to say that this book is totally different from any other software development book I’ve read in the past.  Most software books, you probably know, follow a fairly predictable pattern with each chapter covering some piece of technology through large amounts of text interspersed with code blocks and screenshots.  Some are a bit different, like cookbooks that have recipes for various tasks or Murach’s titles that lay out explanations and code on opposite pages.  But in general, they’re pretty dry and tend to follow a very predictable, dare I say boring, structure.  If you’re … more

  • Personal Goals 2008 Update

    My progress bar for 2008’s goals completed is resembling a Windows Vista file transfer dialog in terms of its responsiveness and accuracy.  That is, it went to 20% back in January, and there it sat for 11 months until earlier this week when it moved up to 40%.  Now it’s pretty much (Not responding) which doesn’t bode well for my goal accomplishment ratio… As a recap, I started off the year with 5 personal goals for myself.  I figured if I blogged them perhaps it would increase the chance that I would get them done.  And perhaps it did – it’s at least kept them on my mind and given me a place to refer back to from time to time to see how I’ve been doing.  But on the … more

  • ASP.NET MVC at DogFood Developers Conference

    I gave a presentation a couple of weeks ago at the Columbus Ohio Microsoft Dogfood Developers conference.  Danilo, the main organizer of the event, snapped a couple pictures of me during the talk.  This was my first time presenting on ASP.NET MVC and I want to definitely thank ScottGu, ScottHa, Phil Haack, and Jason Gaylord for their great presentations on this subject, from which I borrowed and added my personal spin and perspective.  Jason was kind enough to let me use his simple blog application as the basis for my demos, which I extended by making it fundamentally more testable.  I apologize for taking so long to get the slides and demos posted – it’s been a crazy … more

  • CodeMash 2009

    The 2009 Conference Season kicks off early in Ohio with CodeMash 3.0.  This is the third year of the event and promises to be a valuable experience with a diverse mixture of software development technologies.  This year I’m happy to report that I will be speaking about techniques to improve web application performance, a topic I’ve spoken on frequently to ASP.NET audiences and one which I’ll be expanding to include techniques applicable to a variety of web platforms. In the course of registering for the event, I was please to note that they actually got their Company Size field right!  I’ve blogged in the past about off-by-one errors in various surveys that discriminate … more

  • SQL Resources

    Last week, we launched SQLFeeds.com, a community-moderated site focused on providing SQL developers and DBAs with high signal-to-noise SQL content.  If you have a favorite source of SQL wisdom, please add it to the site’s feed list (which you can do anonymously from the home page).  If you think you’d like to help the community by moderating the site’s content, please contact me and let me know a little bit about your SQL background (MVPs and related get preferential treatment, but it’s not a requirement).  Subscribe to SQLFeeds.com for focused access to SQL resources without all the unrelated stuff you don’t have time for. more

  • Programming is Just Typing

    Well, OK, it’s not *just* typing, but fundamentally, typing has a lot to do with it.  In fact, it wouldn’t be too great a stretch of the imagination for someone watching a room full of programmers to mistake them for a room full of writers, typists, dictation takers, or similar clerical staff.  What we do to produce software is type it in, one word at a time. Jeff Atwood writes We Are Typists First, Programmers Second, and makes the point that, while typing is not the defining metric of programmer excellence, it is certainly one of many factors.  I tend to agree.  I’ve worked with folks who use the hunt-and-peck method of typing, and it takes every bit of self-control I … more

  • Silverlight Resources

    Today we’re launching SilverlightFeeds.com, an aggregate site moderated by community volunteers which pulls in useful Silverlight content from many talented bloggers.  The site provides a nice one-stop shopping location for very high signal-to-noise ratio Silverlight content, without the typical off-topic posts most blogs include.  We’re looking for additional feeds – feel free to add yours via the link on the home page (no need to register – anyone can do it) as well as for moderators.  If you’d like to be a moderator, please contact me and let me know a little bit about your Silverlight background (Silverlight Insiders, MS employees, and MVPs in general get preferential … more

  • Installing Windows Home Server

    In a classic case of ensuring the barn door is closed after the animals have all left, I bought an HP MediaSmart EX470 Home Server last week for home backup purposes, and it arrived today.  I decided to take a few pictures and generally document the experience.  Scott Hanselman did a (probably much more thorough) writeup last year. First Impressions This thing ships and unpacks like an appliance moreso than a computer.  The box is pretty and designed for retail, as opposed to the generic brown Dell boxes I typically get when I mail order computers.  Inside, it's well packaged, shrink wrapped, with a security sticker that, if nothing else, seems to indicate that it hasn't … more

  • Stories Too Big - Vertical Slices

    I have a client who lists as one of the key challenges with implementing agile practices with their teams as managing to define user stories that are valuable but not too big.  This is actually a very common challenge, and one that we run into frequently ourselves at Lake Quincy Media and with other clients of NimblePros.

    Naturally there are many books available on the subjects of extreme programming, agile software development, user stories, etc. and these are certainly worth reading.  Additionally, an agile boot camp like HeadSpring’s can be an excellent way to fully immerse yourself in how things should be done, without the daily distractions of regular work.  My … more

  • CodeMash 2009 Sessions Announced

    Actually they were announced a couple of days ago, but I’ve been a bit too busy to blog.  Eventually these will make it up on the CodeMash web site, but for now they are only listed on the events’ mailing list.  I’ve included the complete list below. CodeMash is a great developer event held at an indoor water park each January in Sandusky, Ohio.  I’ve been to the previous events, and the 2009 event will take place 7-9 January 2009 (which reminds me, I need to book my room).  What makes this event unique (apart from the fact that it’s in Ohio…) is its emphasis on bringing together developers, speakers, and sponsors from a wide variety of technical and platform … more

  • Announcing AzureFeeds

    VB MVP Serge Baranovsky created VBFeeds.com a few years ago, and shortly afterward he helped me create CSharpFeeds.com using a fork of the source code.  I’ve had some interns working on that code off and on and we launched a new and improved version of CSharpFeeds around the end of the summer.  The purpose of both of these sites is to provide very focused information about the topic at hand, with minimal noise.  This is achieved via moderation, not algorithm, with real volunteers choosing whether something makes sense to include or not. With the improvements in the source code, we’ve made it pretty simple to create additional technology-focused sites, with the latest one … more

  • Updating Hosts In and Out of Office

    We have a machine in the office that we use for source control, and it’s set up in DNS with a fully qualified name that points to the office’s external IP address.  Of course, if you try and use that fully qualified name while you’re in the office, you can’t connect – you have to use the local 192.168.X.X address to get to it.  Thus, the machine has different addresses depending on whether you’re trying to reach it from within or outside of the office LAN. Short of requiring everyone VPN into the LAN when outside the office, the simplest solution (not having a domain controller or DNS server inside the LAN) we’ve found thus far is to update the HOSTS file … more

  • Laptop Rebuild - Essential Apps

    When we last saw our hero, he had fallen victim to an evil plot to disable his computer’s ability to boot up.  After great efforts at recovery, eventually he was forced to concede defeat to Vista and reinstall everything from scratch.  Let’s return now to see what’s in store in the next chapter of our story, already in progress…

    So, day 2 after my issue with Vista and I’m now at least able to use my laptop again for real work.  However, it still is missing dozens of little things that I find useful, so I thought I’d catalog those here in the spirit of Scott and Jesse’s posts on useful tools and utilities.  In my case, this is a … more

  • Vista Cleanup May Corrupt OS And Prevent Boot

    Ran into this gem yesterday.  My intelide.sys file was corrupted and prevented Windows Vista from booting on my laptop.  I found this forum and several others referencing the problem, which appears to be the result of running Vista Cleanup to free up space.  A few days previously, Vista warned me that I was low on disk space and presented its little cleanup dialog with options for compressing files, deleting internet cached files, and temp files.  I've used this little tool before so I said sure, do your thing.  And it did, and it was happy afterward, and I didn't give it much more thought.  One thing that struck me as odd, though, was that it thought there was … more

  • DevReach 2008 Speaker Feedback

    I've been posting feedback from my talks on my blog as a means of transparency as well as a way to get more feedback and hopefully improve my talks and topics.  You can see some past posts here for instance.  At any rate, a month or so ago I was in beautiful Bulgaria speaking at DevReach, and here's how things turned out.  Note that in this case I don't have any plain text comments, which are usually the most useful, but I did get a bunch of comments to my last post about DevReach. Honestly in this case I feel a bit embarrassed to post this because I don't have any critical remarks and the numbers came out pretty nice.  It's not my intention for this to be a "look what a … more

  • Mac Ads and Vista Advertising

    I'm sure many of you have seen the recent Mac ads continuing to poke fun at PCs and Vista.  The latest ones are just too ironic for me not to comment on, though.  Since Microsoft launched their very successful "I'm a PC" campaign a while back, the latest Mac ads are accusing Microsoft of devoting money to advertising rather than toward improving their products.  While I enjoy the humor of the Mac ads (seriously - I stop TiVo for them every time I see a new one), this is certainly a case of Pot/Kettle/Black since I've literally seen these new Mac ads (2 or 3 variations on the vista/advertising theme) at least 10 times in the last couple of weeks, yet I haven't seen a single … more

  • Live ID to support OpenID

    Last week Windows Live ID announced support for OpenID with the release of a Community Tech Preview (CTP) of their OpenID Provider.  A growing number of sites have begun accepting OpenID as their means of authentication, and it's encouraging to see that Microsoft's Live ID will support this standard.  Live ID is one of the most widely used authentication providers in use today, but previous attempts to establish it as a single sign-on service (as Passport) across a wide portion of the Internet never took hold. Personally, I think OpenID is a great step in the right direction, and it's something I'm eagerly looking forward to adding to my sites, including ASPAlliance.com, … more

  • Azure Deployment Portal - Use IE

    Ran into a small bug in the Azure deployment portal today using Firefox.  The "swap" button to swap out a staging with a production environment was non-responsive.  Switched to IE and it popped up an "are you sure" alert box as expected.  I'm sure this will be addressed quickly but if you're trying out Azure you may want to be aware of the issue. more

  • PDC 2008 Keynote Demo: Boku

    At Wednesday's keynote by Microsoft Research VP Rick Rashid, one of the demos showed of Boku, a project designed to bring programming and logic to children in game form.  The coolest part about it is that everything is graphical and the UI is a game controller - no keyboard.  The gist of the "language" is something like this: When - Saw - Tree => Do - Move - Toward + When - Bumped - Fruit => Do - Eat - Fruit This would send a character toward the nearest tree, eating any fruit encountered along the way.  All of the verbs and nouns are chosen from icons via the UI, which simply uses a game controller. In the course of the demo at PDC (which you can watch here), Microsoft … more

  • New Look for Blog

    Craig, Lake Quincy Media's Creative Director, updated my blog from the generic theme I'd been using today.  Let me know how you like it (if you're reading this in an RSS reader, click here).  I like it but I'm a bit biased.  I'm also curious, as a reader, do you prefer seeing full posts on the home page or just summaries (for example: Rob Howard or ScottW's blogs). Please post a comment with your thoughts!  Thanks! more

  • PDC 2008 Rollup After 2 Days

    It's the morning of Day 3 of PDC 2008 and as I'm waiting for the next keynote to begin, I thought I'd summarize what I've seen announced thus far this week. On Monday, Microsoft chief software architect Ray Ozzie announced Windows Azure, Microsoft's new cloud services platform that provides scalable, available application hosting and supporting services.  Azure, combined with other services such as Windows Live Services and Live Mesh, can create some very compelling business value, especially for startups and organizations with applications that require burstable scalability.  That is, they require large amounts of scalability during brief or seasonal periods, intermixed with … more

  • Windows Cloud Platform - Azure Thing?

    So they announced the name for the Windows cloud platform, formerly code named Red Dog (and briefly Strata) - introducing Windows Azure.  I like the name, personally, although even during the keynote at PDC there were issues with pronunciation (AZ-ure or uh-ZHOOR), the fomer being the accepted one, apparently. What does this mean to you?  Well that really depends and since I don't necessarily know you I'm going to just leave the question aside and tell you what it means to me, and maybe that will help some of you. Lake Quincy Media is a small but growing advertising company dedicated (at present) to Microsoft Developers.  We're a big sponsor of PDC and at this point most of … more

  • Graffiti History Widget

    Graffiti CMS doesn't ship with an archive/history widget to display the number of posts published by month, as is common in many other blog engines.  I've been looking for such a widget for several months and Keyvan pointed me to one a few days ago that I got up and running in just a few moments today.  You'll find it linked from this forum thread, which I'm quoting the relevant post below to make things easier for you: Okay, here is the binary.Here is a VS2008 Solution.And here are the view and layout files that I used.Again, I based this on Jon Sagara's original Archive Widget.  Jon included several Plug-ins for cache invalidation.  Honestly I did not look into these … more

  • OlderItems

    Older Posts more

  • Archive

    Archive of Posts more

  • Range Errors Not Just In Software

    A common area to test in software are ranges of values and off-by-one errors.  But this problem certainly isn't limited to programmer code.  I just wrapped up a survey by TNS for customer satisfaction that ended with this question.  Note that I have 10 employees in my company (trying to pick the invisible radio button between the first and second one didn't work). more

  • Speaking at Dog Food Conference in Columbus Ohio November 2008

    I'm giving an overview of ASP.NET MVC at the "Dog Food" conference in Columbus, Ohio, next month.  The details and schedule are as follows: Date: November 20, 2008 Location:  · Floor 4: Suite 400 · Floor 5: Classroom 501 and 502 8800 Lyra Dr Columbus, OH 43240 Dogfood Developer’s Conference: A commonly used word by  developers and MS employees: Click to Register ** Track 0: MS Multipurpose Room ** 8:00 to 9:00 AM Register 9:00 to 9:45 - Software + Services, MS Roadmaps, PDC Announcements Speaker: Brian Prince, MS 9:55 to 11:35 - MOSS: ECM, KnowledgeLake, Imaging Capture Speakers: Mike Miller and Mark Oman, KnowledgeLake Noon to 1:00 PM: Lunch 1:00 to 2:20 PM - MOSS … more

  • Incenting Behavior

    Ayende recently commented on Spolsky's latest Inc. column about how commission schemes typically backfire for companies due to local optimization by those seeking to maximize their commissions.  Both make good points; read them, I'll wait. As it happens, I was just getting to my notes on this from Lean Software Development, which describe a compensation scheme that I think works very well and that I'll be sure to implement when an opportunity presents itself.  Refer to page 118 if you have the book and wish to follow along... In discussing Nucor and its ability to motivate its employees to be productive without falling victim to the min/maxing behavior that typically goes along … more

  • Insidious Dependencies

    In the last year or so I've really seen the light on how to really write loosely-coupled code.  I thought I knew something about this concept before - I mean, I knew loose coupling was good, generally speaking, and I knew data abstraction was one of the key ways to limit dependencies between classes.  However, I didn't realize that I was unintentionally adding all kinds of coupling into my applications despite my best efforts to the contrary.  Let's talk about some dependencies, including some obvious ones, as well as some insidious dependencies that lurk in most applications I've seen. Big Fat Obvious Dependencies Let's assume you're working with a .NET application.  … more

  • Fiddler for Firefox

    In my tools talk at DevReach earlier this week I mentioned that I use Fiddler with IE and FireBug with Firefox to see HTTP traffic involved in loading and working with a given web page/site.  I said in the talk that Fiddler only works with IE, but that's not entirely true as Ivo Evtimov was kind enough to point out to me.  You can configure Firefox to work with Fiddler, but you have to do so manually each time you want to do it (whereas Fiddler just works with IE, and Firebug just works with FF). In order to configure FF to work with Fiddler, you have to set it up as a proxy server.  You'll find this under FireFox's options, which in FF3 is under Tools -> Options -> … more

  • DevReach 2008

    I spent most of the last week speaking at DevReach in Sofia, Bulgaria.  This was DevReach's third year, but was my first time speaking there, as well as my first time visiting Bulgaria.  The conference is sponsored primarily by Telerik and Martin Kulov of Kulov.net.  The organizers did a great job, I thought, and the sold out conference went very well by all accounts, with I think a little over 450 in attendance. I was originally scheduled to give two presentations but due to one speaker not being able to make it, I ended up giving three.  The first two were Pragmatic ASP.NET Tips, Tricks, and Tools (Parts 1 and 2) and the last one was ASP.NET Performance and … more

  • Search Trends October 2008

    PDC is fast approaching and Cloud Computing is the theme - and all the rage for everyone else in the Industry media.  Amazon recently announced they'll be extending their compute cloud to support Windows and real databases.  Here's a look at some recent trends in the tech industry, using Google Trends. Daylight Savings Time The topic of DST is likely of at least marginal interest to most software developers, as working with DateTime constructs is a frequent requirement for us (and often a source of frustration).  I wanted to confirm when it was this year and that led to the rest of these trend searches (I once missed a flight due to a change in the date of DST that my alarm … more

  • Reducing SQL Lookup Tables and Function Properties in NHibernate

    One of the points made in Jeffrey's agile development boot camp last week that struck a chord with me was that many database-centric designs have lookup tables that aren't really just data.  That is, tables that hold values such as statuses that, if modified, can easily break existing code or won't function as expected without the addition of code.  We have a lot of these in our codebase, and we've been struggling with the questions of how to address these values in our system.  Do we use Enums?  If so, do we try and keep the enums in sync with the database values?  If not, do we want to use magic numbers/strings to refer to these codes?  It's a real PITA to … more

  • Installing VisualSVN Subversion

    Wrapping up HeadSpring's Agile Boot Camp class this week, we're installing VisualSVN Server locally.  Running the setup is just a matter of hitting Next three times - it's very simple.  Running the visual server window yields this opening screen: Next, right click on VisualSVN Server and select Properties: These are basically the same settings you had available from the installer.  Assuming these settings are fine, the next step is to create a user.  Go back to the main screen and right click on Users, Create User. Once a user is created, the next step is to create a repository.  Be sure to check the box to set up the default structure. At this point, the … more

  • Favorite Developer Books

    Updated 29 Dec 2009 I've written a few posts recently about various books, and recently while interviewing a candidate for Nimble Software  Professionals it occurred to me that for an experienced developer (e.g. not a new grad out of college), asking what their favorite (or most recently read) programming book is could tell a lot about them as a developer.  If their favorite book is something like Expert Programming in 21 Hours (not a real title) that paints a very different picture than if their favorite book is Design Patterns or a similarly respected title. Of course, flipping the question around, I started to think about what I would list among my own favorites, and naturally … more

  • Strategy Pattern With Ninject

    This is a follow-up to my post about avoiding dependencies with design patterns.  It left off with something like this as a Cart object that uses the Strategy pattern to avoid a direct dependency on SMTP emails. 1: public class Cart 2: { 3: private ISendEmail emailProvider; 4: //public Cart() 5: //{ 6: // emailProvider = new LiveSmtpMailer(); 7: //} 8:  9: public Cart(ISendEmail emailProvider) 10: { 11: this.emailProvider = emailProvider; 12: } 13:  14: public void Checkout() 15: { 16: // Do some other stuff 17:  18: this.emailProvider.SendMail("someuser@domain.com", … more

  • Monty Hall Envelope Puzzle

    So, recently I wrote about my introduction to the Monty Hall problem and its solution.  However, in the course of thinking about this problem, I came up with a related one that is pretty tricky as well, and builds on the insight gained from the Monty Hall problem.  That is, given three random chances to win a prize, if you pick one and another is revealed as a non-winner, you are better off switching with the remaining chance you didn't originally pick than sticking with the original selection (with 1/3 - 2/3 odds).  With this in mind, consider the following problem. Steve's Monty Hall Envelope Puzzle I take 3 plain envelopes and put a $100 bill inside one of them, seal them, … more

  • Probability Puzzle Answered

    In a recent post, I described a Probability Puzzle that is actually known as the Monty Hall Problem.  This is a fairly famous problem and has a long write-up on Wikipedia that is definitely worth reading to get a good understanding of the problem.  Almost everyone fails to answer this problem correctly the first attempt, because it seems obvious that there is one prize behind one of the remaining two doors, and there is nothing constraining which door we might pick (the 2nd time), so it should be a fresh decision with a 50/50 chance of success. In fact, the way to look at this problem is in reverse.  With the initial choice of one door out of three, the odds of success were … more

  • Probability Puzzle

    I was recently introduced to the following puzzle by another developer (from Vertigo, in fact).  This is actually a fairly well-known problem and you'll find write-ups about it on Wikipedia and elsewhere, but I'll omit links to those sources from this post to prevent some temptation to just click and see the answer (I'll post everything in a follow-up). The Scenario Imagine you are on a game show in which a great prize is hidden behind one of three doors.  Behind one door lies a brand new car.  Behind each of the other two, a goat.  The host of the show has explained this to you, and asks you to select a door.  You choose one and inform the host of your … more

  • Review - Murach ASP.NET 3.5 Programming with VB

    I have a copy of Murach's ASP.NET 3.5 Web Programming with VB 2008 (book web site) that I received over the summer and have been meaning to write a short review.  So here goes.  First of all, I love the "Murach format" for books, especially for "how-to" books which as it happens tend to be what they publish.  Specifically, they lay out their books such that typically the left-hand page is providing some explanatory text, while the right page has the corresponding figures, source code, etc.  The result is that you pretty much always have everything you need in front of you, unlike 99% of the technical books out there in which you're always have to flip pages or read … more

  • Slack and Constraints and Optimizing Throughput

    This is my second post that's related to my recent reading of Poppendiecks' Lean Software Development - read the first one here on Delaying Decisions. A related book (and one thing I loved about Lean Software Development were the many references to other great books, some I'd read, some not) that I've read and recommend is Slack, by Tom DeMarco.  It's referenced on page 81 of Lean Software Development, in reference to optimizing for flow as opposed to optimizing for utilization / efficiency. In both books, the point is made that total throughput and resource efficiency are opposed to one another.  To prove this, consider the case where you have a worker who is only 60% utilized on … more

  • Recursive FindControl

    I've been asking for a recursive FindControl() method as a method off of System.Web.UI.Control for years but so far no luck.  You find yourself needing these frequently when you work with composite controls, like most of the Login family of controls introduced with ASP.NET 2.0.  In particular, LoginView, CreateUserWizard, and Login frequently require a technique like this to access their contents. I posted a simple version a while back; Michael Palermo updated it, and Aaron Robson posted a nice generic version on IntrepidNoodle.com.  However, his site is often incredibly slow or non-responsive (perhaps he should switch to ORCSWeb), so while I'm happy to give him full credit, … more

  • Graffiti CMS Extension for DotNetKicks

    I've been manually adding DotNetKicks icons to my posts recently to try and generate more buzz for them, but that gets old quickly, so about an hour ago I decided to figure out how to make this automatic.  My current blog engine is Graffiti, which I really like, and after doing some searching for a pre-existing solution, I pinged ScottW on IM about the problem and he set me down the right path within seconds. The Problem DotNetKicks will display a dynamic image with a count of how many "kicks" a particular post has had.  It looks something like this: The HTML for this icon is very simple, and the only dynamic part of it is the URL of the post, which must be fully qualified and URL … more

  • Avoiding Dependencies

    I gave a one day class to about 20 developers today introducing Microsoft .NET, C#, and ASP.NET. As it was only one day and there were no hands-on labs, coverage was necessarily cursory, but overall things went very well. In the course of discussing the Base Class Library and specifically the areas of logging and sending emails (System.Diagnostics and System.Net), I was careful to emphasize to the class that they should definitely avoid making direct calls to these namespaces' members for their logging and emailing needs.  Instead, they should encapsulate their dependency on these classes using one of two patterns (and I'm inclined to favor the latter).  Specifically with regard to … more

  • Codebehind Files in ASP.NET MVC are Evil

    With the current versions of ASP.NET MVC (Preview 5) that have shipped, the default MVC template sites all include codebehind files for the ASP.NET views.  For example, here's a screenshot of what a new project looks like the one at right.  Further, adding a new ASP.NET MVC View Page will also include a .aspx.cs and a .aspx.designer.cs file by default. The question is, why is that codebehind file there, and what are the consequences of having it there by default?  If you watch a few screencasts and blog tutorials from Rob, Phil, ScottGu, ScottHa, et al, it's pretty rare that you'll find anybody actually putting any real code into the codebehind files for the views.  In … more

  • CodePlex Support For TortoiseSVN

    CodePlex is Microsoft’s open source project repository. It is built using Microsoft Team Foundation System and as such has until recently required the use of Team Explorer to access. However, due to the extreme popularity of Subversion (SVN), an open source tool for source control configuration, CodePlex has just announced support for TortoiseSVN (an SVN client). You can read the full details (including step-by-step instructions) in the official announcement, here, and access the root of the SVN tree via the web here. more

  • Interesting Slide Deck on Software Design

    Just found Allen Holub's Everything You Know Is Wrong presentation, via the Yahoo DDD group.  It makes a great case for favoring interfaces over inheritance and avoiding property getter/setters in favor of delegating work to the object being referenced (such that you don't need to know its properties - just the net result of the operation).  The interface discussion is similar to some of my recent posts on the subject.  The last slide also references his book, Holub on Patterns, which I hadn't seen previously but will have to add to my reading list. I have to admit that while I've been on board with favoring composition and interface inheritance over implementation … more

  • Delaying Decisions

    I've recently finished reading Mary and Tom Poppendieck's Lean Software Development title, which I'll write a review of in a later post.  One of the points they make, devoting a all of the book's third chapter to it in fact, is that there is tremendous business value in delaying decisions. Lean software development delays freezing all design decisions as long as possible, because it is easier to change a decision that hasn't been made. The consequences of making hard-to-change decisions early is that when new information presents itself, it is difficult (and expensive) to adjust the design.  Decisions that are trivial to change in the future can be made as needed - not every … more

  • Interfaces and Testing

    Chris Brandsma posted his thoughts on a discussion he had about interfaces as a requirement for TDD (or unit testing in general, I would say).  I added a brief comment there but wanted to expand on my thoughts here, as I only fairly recently came to believe my current stance.  See, I've heard that interfaces were a "good thing" for years and as Chris points out, plenty of authoritative Software Development books extol the virtues of programming to interfaces as a means of providing loose coupling and other benefits. Program to Interfaces = Good Program to Implementation = Bad I read this in these Design Pattern and similar books, and nodded (in my head, not really while I was … more

  • P3P Trouble with Internet Explorer

    Recently I've had some customers request that some third party scripts Lake Quincy Media provides avoid the evil eye of death that IE6+ likes to show if such scripts even think about using cookies.  In our case, we are testing to see if the browser has Flash installed, and save the result in a cookie since it is a relatively expensive operation and we do not want to have to repeat it.  The source of this IE feature is P3P, which itself exists because of user concerns about online privacy. The concern I have is that I'm having difficulty bypassing the IE6+ behavior even on my own sites, where I wish to share common scripts between domains.  The issue is that along with the evil … more

  • Find Duplicate Files and Clean Up Disk Space

    I'm in file cleanup mode tonight as my laptop hard drive is consistently nearly full lately.  On a side note I'm really looking at getting an HP MediaSmart Windows Home Server like the one ScottHa got a while back, but they're a bit old at this point so I figure newer models with more RAM and larger built-in HDDs must be coming soon.  But I digress. In the course of cleaning up hard drives, I religiously use SpaceMonger, which is (was) free and shows you everything broken out by proportionally sized rectangles (SpaceMonger 2.1 is not free, looks improved, but I haven't tried it yet).  This app is awesome for finding out why you suddenly have no disk space.  I sometimes … more

  • Client Side Client Detection

    I just heard about a new flavor of the top of the line client detection component, BrowserHawk, that is being branded as "BrowserHawk To-Go (BHTG)."  What's interesting about this (to me) is that it's following a SaaS model and a pay-as-you-go scheme for pricing.  This makes the software very affordable for startup sites and simplifies the installation requirements.  Implementation in this case is via a client side script include, which is configured to be cached by users for a day, so the actual number of downloads required should be minimal.  Billing is done based on the number of times the script runs, and this in turn is set up to work only with the approved domains … more

  • Keep Vista from Changing Folder View

    I've been running Windows Vista since it came out in November 2006.  By and large I'm happy with it and wouldn't go back to XP, which I'm still running on some other PCs.  However, once annoyance that I've finally gotten fed up enough with to track down the fix is the constantly changing folder view issue.  For instance, say you're a developer, which probably isn't a stretch since you're reading my blog.  And further, say you're a *web* developer, and your web application has a bunch of files in it, some of which are likely images.  Now let's say that one of your cohorts was working on said files, and you quickly want to see which file(s) were most recently … more

  • Speaking at DevReach in Bulgaria

    I'm very excited to be speaking at the DevReach conference in Bulgaria in October.  It will be my first international conference speaking experience (though I spoke to a user group in Moscow last year - my first international talk).  I'm told this show is great, with a lot of good content and a lot of fun.  I know most of the speakers, and I have to say that (with the possible exception of me) it's a very impressive lineup.  I'm really looking forward to it, and I hope to meet a lot of new people and put faces to names with some of the folks in Eastern Europe with whom I've corresponded only by email. I'll be giving a 2-part talk on Pragmatic ASP.NET Tips, Tricks and … more

  • Render Control as String

    When working with AJAX and Web Services it's often nice to be able to render ASP.NET controls as strings, so the rendered HTML can be sent back to the client to replace the contents of a <div> or something like that.  The standard way of achieving this is to use the RenderControl() method, exposed by all ASP.NET controls.  Unfortunately, the RenderControl() method doesn't simply return a string - that would be too easy.  Instead, it takes in an HtmlTextWriter which it will render the control into.  No problem, just new one of those up and... not so fast.  You can't actually create an instance of an HtmlTextWriter without first having a TextWriter.  And … more

  • Testing Legacy Code

    Oren wrote today about a fun problem he'd run into with trying to TDD some changes to some code about which many of his assumptions were proving incorrect.  The problem is that each test he wrote that verified one of his assumptions needed to later be fixed when he found the underlying assumption wasn't true.  The result was a lot of thrashing and not a lot of productivity.  The solution in this case for him was to worry first about just verifying that the code does what it does.  This caught my eye because yesterday I was talking about this very thing with Brendan and the name used by Feathers in Working Effectively with Legacy Code (my review) eluded me.  And of … more

  • Recent Podcasts

    My recent DotNetRocks interview with Carl Franklin and Mark Dunn is live now.  The three of us discuss our experiences as small business owners.  I also did a show with Craig over at Polymorphic Podcast last week that should be live next week on caching and performance with ASP.NET.  I did a similar caching show last year on dnrTV that runs through some nice demos and has sample code with it, but the show with Craig for PP adds a few more things (though without the screencast and demo code - audio only).  I appreciate all feedback and hope you enjoy the shows! more

  • DotNetRocks Talk on Business and Entrepreneurship

    A couple of weeks ago I did a DotNetRocks show with Carl Franklin and Mark Dunn in which we discussed our collective experiences with running our own businesses.  We had a good time and shared some of our lessons learned.  In some ways it was similar to the discussions Julie Lerman and I have proctored a couple of times as Birds of a Feather talks at TechEd shows.  Toward the end of the show, I recommended a book that I think any would-be entrepreneur should read, which is: The E-Myth Revisited: Why Most Small Businesses Don't Work and What to Do About It This book does a great job of explaining the difference between being really good at and passionate about a particular … more

  • Client Cache Headers

    Anybody who's talked to me about web programming in the last 5 years or so knows that I'm a big fan of caching.  However, in most of my presentations on ASP.NET caching, I don't get into the client side of things.  Mainly this is because ASP.NET is a server-side technology and there's plenty of cool stuff to talk about on the server with regard to caching, and I truly think that's where the biggest performance wins are to be had (i.e. reducing expensive calls to databases and web services). That said, a lot of bandwidth can be saved and the perceived performance of individual pages can be greatly improved with some client side caching.  What I mean by client side is within the … more

  • SQL Server 2008 Ships

    Microsoft has released SQL Server 2008 officially, according to this press release.  The software is currently available to MSDN and TechNet subscribers: SQL Server 2008 is now available to MSDN and TechNet subscribers and will be available for evaluation download on Aug. 7, 2008. SQL Server 2008 Express and SQL Server Compact editions are available for free download today at http://www.microsoft.com/sqlserver. As previously announced, pricing for SQL Server will not increase with SQL Server 2008. More information is available at http://www.microsoft.com/presspass/presskits/sqlserver. Read the full press release for more details, or hop out to MSDN and begin downloading now before … more

  • DevExpress Earthquake Video

    DevExpress is one of several companies I work with via Lake Quincy Media, and it seems like a very fun place to work.  Recently they launched a video site to help showcase their products, and earlier this week they made a video showing the reaction of some of their employees to the 5.4 scale earthquake in LA earlier this week.  Check it out, and then check out some of their other videos as well. Incidentally, Mark Miller (Miller in the video - the bald one...) also has his own blog and spoke at this year's TechEd.  He's the brains behind CodeRush and Refactor and is a good guy to keep tabs on if you're interested in optimizing your coding experience (though he's not much of a … more

  • There are no single developer projects

    Oren wrote today, There is no such thing as a single developer project.  At first this sounds like an obviously false statement, but read on: There are always at least two people in any software project: The developer who wrote the code. The developer who read the code. They are never the same person, even if just by temporal dissonance. This is a very clever thing to point out, and worth remembering when you're tempted to take shortcuts using the excuse "I'm the only one working on this code so I can wing it."  Who you are today is not who you were yesterday, nor will you be the same person tomorrow.  Write your code with the knowledge that someone else is going to have … more

  • Batch JavaScript Libraries for Increased Performance

    I've been meaning to set up batched loading of the JavaScript libraries used by Lake Quincy Media's administration application for some time, and finally had a chance this past weekend.  The site uses a variety of third-party tools such as DevExpress, ComponentArt, AJAX Control Toolkit, Overlib, PeterBlum, Dundas Charts, and probably a couple of others I'm forgetting at the moment.  As a result, the site's initial load tended to be pretty sluggish.  JavaScript libraries are loaded and executed serially by the browser, resulting in a pretty significant bottleneck to page load time, as shown here: Once loaded the first time, most of these scripts are cached in the client, so … more

  • Avoid appSettings Usage in Controls or Shared Libraries

    Since .NET 1.0, there has been a built-in appSettings section in configuration files.  Many developers use this space to store application settings, such as the name of the site or (before <connectionStrings />) database connection information.  However, many third party tools also make use of this collection, which is a bad practice.  Third party tools should use their own configuration section, which is incredibly easy to do today (and wasn't all that hard in past versions), in my opinion.  I'm curious to know why more companies don't do this, however, as the only thing I can see is that it's laziness or just "the way we've always done it" that's the reason. … more

  • VS Tip - Incremental Search in Visual Studio

    If you're looking to navigate through the current file in Visual Studio, the typical approach is ctrl-F, which is the shortcut for Find and brings up a dialog like the one at right to locate instance of a string.  Bertrand just let me know about another shortcut, ctrl-I, which does Incremental Search.  The nice thing about this is that it's faster (there is a measurable delay before ctrl-F loads) and doesn't pop up a window that gets in the way of seeing your code.  After pressing ctrl-i, as you type the cursor will move to the next string that matches what you've typed.  Finding additional instances of the string is simply a matter of hitting F3. more

  • Travel Gadget - Power Splitter

    Something I always keep in my laptop bag is a Liberator power splitter.  All this does is split one power outlet into two, with a little bit of extension cord thrown in for added convenience.  You can find a wide variety of such things here. Always Enough Power For You So, what's the big deal about having one of these?  Well, you could throw a whole power strip in your bag, but that's more bulk and weight.  If you don't mind that, then go for it.  Assuming you don't want to carry that, though, the benefit of a Y-splitter is that if you walk into a room (or conference session, where power outlets are always in short supply at geek conferences) you can simply unplug … more

  • Speaking in Toledo Tonight

    I'll be presenting at the Northwest Ohio .NET User Group this evening at 6pm.  The talk will be a slightly modified version of my Black Belt ASP.NET Performance talk that I gave earlier this month at Tech Ed in Orlando.  According to their web site, the user group will also be giving away a Zune to one of the attendees of tonight's meeting (and I have a book and some shirts, too...), so if nothing else, you can come for the free stuff. The main topics covered in this talk are performance testing with load testing tools, caching, and asynchronous programming. more

  • JungleDisk as Service on Windows Server 2003

    I'm a big fan of JungleDisk, a $20 utility that makes using Amazon's S3 storage solution easy and backups cheap.  I'm also a big fan of Red Gate's tools, and in particular SQL Backup, which makes backing up SQL Server databases much easier and compresses them down to almost nothing.  I've been manually backing up my one server that isn't hosted with ORCS Web (who take care of such things for me quite well for the servers there) for way too long.  And it has only been backed up to a separate drive in the same box, so there wasn't any offsite backup happening.  Circumstances finally conspired to drive me to prioritize getting off-site backups set up. You see, not long ago … more

  • Getting Started with TDD

    Recently DannyT wrote on the altdotnet list: On our next project I really want to nail unit testing and possibly even test driven development. My issue however is none of our team has any experience of either so we will be starting totally green. ... My question however is, with a goal of wanting to adopt TDD eventually, are we better off starting this next project by writing some unit tests and getting a feel for it and leaving TDD til next time or would it be more advantageous to go balls out and try and hit the ground running with TDD? I think this is a pretty common question, and I answered it on the list with what I hope was a useful response, but I want to reiterate and elaborate on … more

  • Word 2007 Search Commands

    I recently complained on Twitter that the UI in Office 2007 (and specifically Word in this case) makes it incredibly difficult to find many of the things that I knew how to find in Word 2003/2000/XP/97/Every. Other. Version.  This is understandably frustrating and I don't really see the Ribbon UI as a quantum leap forward in UI design.  I do think it's nice, in many ways, and does make it easier to find the common elements, but at the expense of making it darn near impossible to find a lot of the less-often-used commands. Jon Galloway was quick to give me a helpful answer to my plight.  Office Search Commands, from Microsoft Office Labs, is a plugin for Office 2007 that … more

  • How I Got Started in Software Development

    Keyvan tagged me for the latest meme (started by Michael Eaton) going round the developer blogger space.  I'm not sure how much people actually care to read about these things, so I'll oblige but will attempt to keep it brief, and if you want more like this, check out my Five Things You Didn't Know About Me post from early 2007 (wow, time flies). How old were you when you started programming? In fourth grade (age 10 or so) one of my classrooms had a Commodore VIC-20 that I remember writing graphics on (ASCII art) and password-protected "club" programs (you needed a password to get in to the main menu, which then let you participate in the "club" but really beyond the password part I … more

  • Blog Roll

    I want to update my blog reading habits and make sure there aren't really great bloggers out there of whom I'm unaware (I'm sure there are plenty).  If you'd like to help out, please email me with your top 3 bloggers whom you actually read on a regular basis.  Please *leave out* the really big and obvious names like ScottGu, Jeff Atwood, ScottHa, and Phil Haack.  I'm already subscribed :). You're also welcome to comment here but I'll have an easier time collating the results from email. more

  • Ann Arbor Give Camp

    The Ann Arbor Give Camp is happening this weekend.  I think this is really cool, and I'm bummed that other plans have prevented my being able to participate directly.  That said, I would like to personally thank all of the developers who are participating.  I think it's really cool and I hope you have a lot of fun this weekend.  Even though it's in Ann Arbor, Michelle (we're both buckeyes) is seriously thinking about trying to do something similar in the Northeast Ohio area perhaps next year.  Thanks also to all of the sponsors, many of whom I've worked with.  It's great to see such a diverse group come together for a good cause (actually, a bunch of good … more

  • Show Similar Posts in Graffiti

    I couldn't find this with Google Live Search but ScottW hooked me up.  If you want to show related or similar posts in your posts in Graffiti, just add this script to your post.view file (which, amazingly enough, you can do via the admin tool without FTPing any files to your blog - how cool is that?). #set($similarPosts = $data.SimilarSearch($post.Id,3)) #foreach($sp in $similarPosts) #beforeall<h3>Similar Posts</h3><ol id="similarPosts" class="list"> #each<li><a href="$sp.Url">$sp.Title</a></li> #afterall</ol>#end   In theory, at the bottom of this post, you now see a Similar Posts section...  I'm not 100% sure … more

  • Velocity CTP1 Install

    Finally have a few minutes to play with Velocity, Microsoft's new distributed cache offering that's currently in CTP1 status (since a month ago at TechEd Developers in Orlando).  Read the official announcement here.  The installation immediately asks you to configure your machine as a Cache Host: To proceed, create a shared folder that grants Everyone Read and Write permissions (per the README this will be addressed in a future release). When complete: Note that the Cluster Name must be a single word, no spaces or special characters. YES! Now that that's over with, we can start doing stuff with the cache using its console-style Administration Tool.  Here are a few … more

  • Run Tests By Project With MSTest

    An annoyance I used to have with unit testing in Visual Studio is that it was often difficult to limit the number of tests I wanted to run.  In VS 2008 there are some improvements here, and the nicest one is the ability to right-click in a test and select Run Tests and have it run that unit test (or do so in a test class, and it will run all the tests in the class).  However, go over to the solution explorer and right click on a test project, and you won't find any Run Tests link there.  And trying Run Tests in a file but outside of a test class will kick off every test in the solution.  Sometimes that's what you want, but sometimes you just want to run the tests in one … more

  • Testing Around ASP.NET Cache Features

    It's still quite painful to try and test code that relies on ASP.NET Caching.  Now, I love caching.  Ask anybody.  But testing around it can pretty much suck.  The biggest source of pain for me at the moment is the SqlCacheDependency, which is freaking awesome in terms of functionality but freaking annoying in terms of testing around it.  I have integration tests that, for some reason, occasionally fail claiming that "table X is not configured for SQL Cache dependency."  This, despite a SQL script that runs before every test and ensures that yes, in fact, those tables are configured.  But even leaving integration tests out of the picture, unit testing … more

  • Getting RSS Right

    Just made some updates to the aggregate RSS feed on DevMavens.com so that it's more correct.  We weren't displaying the author correctly before (and we're still not complying with the RFC that wants <author /> to contain an email address, but I see no reason to increase the spam these folks get as it is).  I also noticed that our dates weren't formatted correctly, though I had thought originally they were.  Here's the code we had: <pubDate><%= rssItem.DatePublished.ToUniversalTime() %></pubDate> Can you spot the problem? Turns out that even after converting to UniversalTime you still need to format it correctly, which in this case means using  the … more

  • Show Page Load Time

    When testing performance for an individual ASP.NET page, it's often useful to be able to see how long the page took to render.  The bar-none easiest way to achieve this is to simply add Trace="true" to the <%@ Page %> directive, which will yield results like this: However, often times this won't play nicely with CSS on the page, so you can achieve similar results on a separate URL by adding <trace enabled="true" pageOutput="false" /> to your web.config's <system.web /> section.  Then, simply navigate to your web application folder path and add /trace.axd to the request and you'll be able to choose from a list of requests. In addition to the timings, the trace … more

  • Visual Studio Break When Exception Thrown

    By default, Visual Studio will only break when an exception is unhandled in user code.  This is often some distance from where the actual exception took place, as several try...catch blocks might have been involved in the meantime before the exception goes unhandled.  A recent thread on the ALT.NET mailing list discussed some techniques for getting round this issue if you the developer would really like to see exactly the line of code that is failing.  One such technique (Jon Davis) used precompilation directives to conditionally add the try-catch statements, like so: void MyMethod(){#if !DEBUG try {#endif // the … more

  • Unit Testing Time

    Oren has a post showing how he deals with time sensitive code in his unit tests.  One thing that's interesting is that, like my previous post, deals with the System.Func<T> construct introduced in .NET 3.5.  I see this convention more and more and it's really growing on me.  I've dealt with timing issues in my own code using a convention similar to the one Ayende demonstrates, which is to create a singleton or static property for the system time, and consistently reference this time everywhere rather than DateTime.Now().  References to DateTime.Now() are dependencies that should be abstracted away through some form of Dependency Injection or similar technique.  … more

  • Cache Access Pattern Revised

    Karl Seguin has an interesting post about using System.Func to fight repetitive code blocks, which actually addresses a pain point I've had for quite some time but had never acted on to fix.  Whenever one access the Cache or a similar statebag that might or might not contain the value sought after, it is important to check if the value exists first, and if it doesn't, go and retrieve it from wherever its authoritative repository is (typically the database).  This can be done poorly, so I show the correct way to do it frequently in my talks about caching or performance.  The unfortunate thing about this pattern, however, is that you're always stuck writing the same code, which … more

  • Mavens in the Developer Community

    Since launching DevMavens this week, I've had a few folks tell me they didn't previously know what a maven was.  The site shows some definitions, but the concept that led to my choosing that name is from the excellent book, The Tipping Point: The Tipping Point: How Little Things Can Make a Big Difference Mavens are one of the key players that Gladwell describes in this book about the way ideas are spread and certain products catch on.  Wikipedia has a summary of some of the book's ideas, one of which is The Law of the Few, which specifies three kinds of people important to the social success of an idea: Connectors, Mavens, and Salesmen.  Mavens are "information … more

  • DDD Quickly

    I picked up the print version of Domain Driven Design Quickly on Amazon recently.  I didn't realize at the time that it was also available as a free e-book, which wouldn't have stopped me from buying except for the fact that it's less than 100 pages and $30!  That's a bit pricey, in my opinion, for what is essentially Cliff Notes of a larger, more in-depth book (at least, that's what I'm lead to believe).  I'm about halfway through the book and while the content is good, the number of grammar errors and obvious omissions is pretty bad.  Like, enough that you notice and are sometimes confused by it.  You'd think that with only 95 pages a copy editor could have done a … more

  • Search Stored Procedures

    Sometimes, especially on very old applications that have gone through several rewrites but are still using the original database, I find myself wondering which stored procedures reference a given table, or each other, or whether changing the name of a view or column name will break something somewhere in the database.  There are some tools out there to help this kind of thing, such as Red Gate's Refactor tool, but at a simpler level if you just need to search your stored procedures for a particular string, you can do it using this query that I just saw come across the Sql Server SQL list on SQL Advice: SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE … more

  • IsNull Extension Method

    I'm strongly considering adopting the use of an IsNull extension method in my .NET 3.5 coding projects.  A quick search to see what others have to say about this revealed a new web site dedicated to extension methods, which includes this IsNull method ready to go: public static bool IsNull(this object source) { return source == null; } The String class supports the IsNullOrEmpty() method now, but you have to pass it your instance yourself.  This is another good candidate for Extension Method treatment.  Brad Wilson posted about this earlier this year, and received some good comments, none of which seem to indicate that these are evil or icky. From the … more

  • Setting up Windows Live Writer With Graffiti

    So now I've set up Windows Live Writer to point to my new Graffiti blog.  The docs were true to the task and it was pretty painless.  Assuming this post goes through, everything worked on the first try.  Theoretically it will even have a custom URL of graffiti-windows-live-writer. Related Links: http://graffiticms.com/support/advanced-options/windows-live-writer-application/ http://graffiticms.com/support/advanced-options/configuring-windows-live-writer/ more

  • Announcing DevMavens

    This month marks the launch of a new site we’ve been working on to help recognize and support a number of influential bloggers in the .NET developer community.  Please help me welcome the initial members of the DevMavens!  These bloggers have been invited to be a part of this small but hopefully growing group based on their influence in the community, and the DevMavens site has been set up (using ASP.NET MVC, no less) specifically to provide a portal to reach these influentials.  It aggregates and displays their most recent blog and twitter entries, and will hopefully provide a useful, easily accessible view of these influentials for the community. We’re very … more

  • Blog Move

    Please join me as I move my blog to my own URL, SteveSmithBlog.com.  I'll continue to post there about more or less the same things I did here, but with a bit more control over the site layout and other features.  The new blog is running on Telligent's new Graffiti CMS, which really is as easy to get up and running as they claim.  The look is currently a stock template, but should be updated to be a bit more unique in the next few days.  If you're already subscribed to my feed, then you'll continue to get updates as my RSS will be updated (though I've followed ScottW's advice and set up a CNAME for my Feedburner feeds - they now go through … more

  • About Steve

    Hi, I'm Steve Smith.  I go by Ardalis online because, well, you'd understand if your name was Steve Smith.

    This is now the fifth place I've had a blog, if you don't count my initial home page and articles on ASPAlliance.com, which were somewhat blog-like but preceded the term.  Unlike my past blog moves (from the ASP.NET/blogs site to AspAdvice.com/blogs and my ArmySteve.com / ArmyAdvice.com/blogs/ArmySteve blogs, and then from there to SteveSmithBlog.com), this time I'm pulling everything into one place.  So far I only have the most recent stuff here, but soon you should see content dating back to 10 years ago, all in one easy to find location.

    If you're here, you've found … more

  • Contact Steve

    I'm easy to find online. http://friendfeed.com/ssmith http://twitter.com/ardalis Feel free to send me an email directly.  For technical questions, I prefer things go to the mailing lists or forums on AspAdvice.com. more

  • New Blog Home

    I'm updating my blog's home and moving to Graffiti and my own domain, SteveSmithBlog.com.  I'm hoping that I'll be able to be a bit better about blogging as well, as my total volume of posts has dropped off of late (10 in June, 9 in May, 16 in April for a total of 35 for the quarter - compared to 52 in Q1).  Anyway, this is mainly a test post so we'll keep it short. more

  • DevConnections Session Feedback

    Last week I just got back my summaries of attendee feedback for my three talks at DevConnections in Orlando in April (yes, they're not quite as efficient as TechEd).  I blogged about them and posted the slides and demos 2 months ago, but I'm finding it useful to also blog about the comments and feedback that I received on them, as a means of helping me to improve my future talks and, I hope, as a way of showing that I actually do read and care about what attendees say on the evals. For my talk on What's New in ASP.NET 3.5 there were 59 evals turned in.  The overall evaluation for the talk was a 3.39 which was slightly below the average of 3.46.  An astonishing 50% of the evals … more

  • Software Books Ordered

    I just ordered some more books, on recommendations from a few of my peers.  I'll post my thoughts on them once they've arrived and I've had a chance to read them. The Art of Agile Development: James Shore, Shane Warden: Books Lean Software Development: An Agile Toolkit (The Agile Software Development Series): Mary Poppendieck, Tom Poppendieck: Books Domain-Driven Design Quickly: Floyd Marinescu, Abel Avram: Books For those of you who have already read these, what did you think?  Which one should I read first? more

  • Visual Studio Tools

    I've been meaning to post something about two awesome and competing toolsets that recently have some news to report.  First, my friends at DevExpress won both the Attendee's Pick : Overall Winner and Breakthrough Product awards at Tech:Ed Developers a couple of weeks ago.  DXperience won the Attendee's Pick.  CodeRush, their productivity-enhancing Visual Studio tool, won the latter award, and you can watch a video of a complete non-computer user shaming a developer (Brendan) last November, here (she also beat me and everybody else who challenged her).  Congratulations, DevExpress! Also new this month, CodeRush/Refactor!'s primary competitor ReSharper (from JetBrains) … more

  • Silverlight Server Configuration

    I went to throw a small Silverlight sample application up on a web site to show to a client yesterday and found out the hard way that although it is primarily a client-side technology, it doesn't "just work" when you put the files up on the server.  My first attempt was to just put the necessary bits on a static file server that has ASP.NET but doesn't have an easy way for me to configure virtual roots.  Unfortunately, the project I was using (in Visual Studio) was configured to use an ASPX test project with its own web.config and /bin folder, neither of which worked outside of the application root.  So I figured perhaps I could just get the test page to work as a .htm file, … more

  • Going Solo Birds of a Feather Follow Up

    Last week I co-hosted a birds-of-a-feather session with Julia Lerman on Going Solo.  Julie and I did a similar BOF session a couple of years ago at another TechEd and both times we've gotten a pretty good crowd.  In an effort to continue the conversation and help people learn about the challenges of running your own business (be it consulting, ISV, or whatever), we are pointing anyone interested at the Business Management mailing list on AspAdvice.com.  So, whether you made it to the BOF session or not, if you're interested in learning more about tips and pitfalls of life as an entrepreneur, come join the discussion on the list. more

  • Black Belt ASP.NET Performance Talk

    I gave my Tech Ed presentation, ASP.NET Black Belt Performance Techniques, yesterday afternoon.  The talk was well-attended, with about 300 372in the audience.  I gave the talk last month in Cleveland and it was very well-received.  I promised attendees the slides and demos would be available on Tech Ed's CommNet, and right now the slides are but I'm having trouble getting the demos uploaded so I'm also posting everything here: Download DemosDownload PPT I wasn't terribly happy with my performance with this talk, and the overall evaluation average for it was 7.84, which is pretty respectable (based on evaluations from 1 to 9 in a few categories) - the best talks at the show … more

  • Whither NorthWind?

    The Ha recently wrote about his desire to get away from NorthWind and perhaps start some community driven effort to come up with something else, mainly, it seemed to me, for the sake of being something else.  I must humbly disagree with this, but feel free to correct me if I'm wrong here. The first stated requirement for NotNorthWind is this: Complex enough to be called Real World but simple enough that someone could "get it" in 5-10 minutes That alone is enough for me, as a presenter, to suggest that perhaps this is not a good idea.  I'm a big fan of packing as much content into my presentations as possible.  I like to move quickly and fill up the audience's brain as much … more

  • Atlas Tripped Over His Own Feet

    Through Lake Quincy Media, we work with a variety of ad management platforms used by our customers.  This is a story about Atlas, as told by our CEO Michelle.  It is not a pleasant story, as a Microsoft customer and evangelist (Microsoft acquired Atlas a little while back), and hopefully there is enough constructive criticism in this story to qualify it as more than a simple rant.  Read on... In our work as an advertising agency, we often find it necessary to work with other media agencies.  It is always an interesting experience, because we learn a lot that we can use to improve the experience that we provide to our own customers.  As with anything, there are some … more

  • Customer Service Is Key

    A few months ago I went to MIX08, which was I must say an excellent conference with a very different focus from DevConnections, TechEd, and PDC.  However, the weather was against me, and I've been meaning to write about it for some time.  Now that I'm about to head to 95 degree Orlando, I think it's time.  But the weather is really just the enabler for the real point, which is that customer service can create fans from customers, and fans will get you more customers than thousands of dollars of advertising. Getting to MIX We'll keep this brief since it's old news, but while trying to fly out of Cleveland on a Tuesday evening to arrive in Vegas that night, ice storms kept us … more

  • Tech Ed 2008 Speaker Idol

    Next week (and the week after) at Tech Ed, several experienced speakers will compete with one another in Speaker Idol, held at the Tech Ed Online stage during lunch time and hosted by Carl Franklin and Richard Campbell.  The winner gets a guaranteed speaker slot at next year's Tech Ed.  Each contestant gets to give a 5-minute presentation to a crowd of attendees and several judges, and after each presentation, the judges give their opinion and tips for improvement.  After each heat, one finalist is selected, and all of the finalists compete the last day of the conference for the title.  Last year this was a lot of fun, and it's a great way to learn a little bit about a … more

  • aspNetPRO 2008 Readers Choice Awards Published

    A couple of weeks ago the aspNetPRO magazine's annual Reader's Choice Awards were published in their latest issue.  DevExpress swept the awards, winning nine different categories as well as product of the year.  I've blogged before about DevExpress and how I've been quite impressed with a lot of their tools (CodeRush, XtraReports, controls...).  I've also gotten to know a bunch of members of their team over the last couple of years and enjoy hanging out with them at conferences and other events.  While the Reader's Choice awards are not as rigorous of a standard as, say, a Consumer Reports analysis, it is a strong indicator that a lot of customers are very happy with DX's … more

  • GeekFest Party at TechEd 2008 June 3rd

    Doug Seven of Microsoft is hosting a party at Howl at the Moon during TechEd on June 3rd.  He has some details on his blog and the party will include (and require for admission) a rubber duck competition.  You'll need to pick up your duck for admission at the Teched Technical Learning Center at the Developer Tools & Languages information desk.  One duck will admit two people so bring a friend! more

  • Book: Freakonomics

    Freakonomics [Revised and Expanded]: A Rogue Economist Explores the Hidden Side of Everything: Steven D. Levitt, Stephen J. Dubner: Books I've been a bit behind on blogging but I'm trying to catch up this week.  I wrote earlier that I've just finished an excellent software development book (with a very unfortunate title), Working Effectively With Legacy Code.  Freakonomics is an entirely different kind of book, and one I actually finished reading last year but just haven't gotten around to writing about. Freakonomics is a New York Times bestseller, so I'm hardly the first person to read and discuss it.  If you're one of the three people who haven't read it yet, let … more

  • Visual Studio Team System 2008 White Papers

    Microsoft has published a set of white papers which provide a good technical overview of the features available in Visual Studio Team System 2008.  They're available individually for download: Visual Studio Team System 2008 Capabilities White Papers. The papers cover the following subjects, corresponding to features sets and design goals of VSTS 2008: Communicate and Collaborate Drive Predictability Ensure Quality Early and Often Integrate Work Frequently Making Real-Time Decisions Managing Team Workflow Using Familiar Tools I wrote the Integrate Work Frequently paper, which describes some of the new build system features, including the capability to implement Continuous Integration … more

  • Black Belt ASP.NET Performance Techniques

    Last night I presented at the Cleveland .NET SIG on Black Belt ASP.NET Performance Techniques, which is a talk I'll be giving in a few weeks at Tech:Ed Developers in Orlando.  I was asked a couple of weeks ago if I could give a talk in May and I decided to do it so I could practice for TechEd.  Since this is a new talk for me (though its material is familiar), I had to put together a new set of demos, and having this user group meeting was a good way to keep me from procrastinating until June to get my demos working.  The talk covers performance metrics, load testing, and some performance tips (and shows their relative impact on a realistic application using load … more

  • Book: Working Effectively With Legacy Code

    Working Effectively with Legacy Code (Robert C. Martin Series): Michael Feathers: Books I've just finished the above book, which was recommended to me by Jeffrey Palermo a few months ago.  It is one of the most useful software development books I've read since Code Complete.  I wish I'd read it years ago, and I'm finding myself refactoring and rethinking my approach to current systems I've been working on for some time to make them more testable and easier to work with -- and I'm already seeing improvements.  Seriously, if you're writing software, you should buy this book and move it to the top of your professional reading list.  It's the book that Refactoring … more

  • Speaking in Cleveland May 13th

    I'll be speaking at the Cleveland .NET SIG tomorrow night.  The topic is Black Belt Performance Tips for ASP.NET, which will be a dry run for a session by that same name I'll be giving next month at Tech:Ed Developers in Orlando.  Some of the primary areas covered will be advanced caching techniques and asynchronous programming techniques (for ASP.NET).  The user group meets at the Microsoft office in Independence, Ohio from 5:45pm to 7:30pm and usually is pretty crowded. more

  • Comments in Code Indicate Functions Trying To Escape

    I interviewed a couple of college students earlier this week for internship positions with Lake Quincy Media, and one of them reminded me of my own college days when we were graded in part based on how well commented our code was.  In school, comments are typically there as a "check the block" measure to ensure that the professor doesn't take off points for not having them, but in the real world comments can actually serve a good purpose.  One of the things you learn with experience is the difference between comments as a waste of space that clutters up your code files and comments that are actually meaningful.  However, for the purpose of this post, I'm going to look at a … more

  • TECHbash is Coming to PA

    In just 10 days (May 10th, 2008), TECHbash 2008 will kick off in northeastern Pennsylvania.  The show has been around since 2005 and will include several hundred developers, IT professionals, and industry experts from PA and surrounding states.  Joe Stagner from Microsoft will be giving the keynote and my company, Lake Quincy Media, is one of the sponsors of the show. Speakers will include MVPs Miguel Castro, Sam Gentile, and many more.  Jason Gaylord (who runs the .NET Valley User Group) is one of the primary organizers of the event and has done a very good job. more

  • DevConnections Spring Slides and Demos

    Last week I gave three presentations at the DevConnections spring show in Orlando.  I received a lot of great feedback from attendees which I definitely appreciate, especially since I was feeling a little bit bad about having run out of time in my first two talks (and overcompensating a bit on my last one, which ended a few minutes early).  I definitely try to err on the side of too much content, with the idea being that if I can't fit it all in, at least the slides and demos are there for attendees to reference, and I'm happy to answer emails with questions about any of the material. What's New in ASP.NET 3.5 Slides and Demos My first talk was on What's New in ASP.NET 3.5, and it … more

  • Twitter as Smoking Cessation Aid

    I was talking to a couple of friends and occasional smokers today, and both were commenting about how nice it is that Seattle is almost entirely non-smoking now, so they didn't light up while in town for the MVP Summit.  I've never smoked, but listening to them, clearly they were not addicts in the hard-core packs-a-day kind, but they would smoke socially or just to be doing something.  So it occurred to me, especially given that the three of us had just spent half of lunch each individually checking various Twitter feeds (and email) on our phones, that perhaps Twitter and similar apps on mobile devices are having a positive health impact.  Why light up a cigarrette when you … more

  • Triskaidecaphobia

    Office 13 is going to actually be called Office 14, since there are some people who assign some negative significance to the number 13 (see Triskaidekaphobia).  Since this is clearly a significant concern in the world of computing, it seems natural to me that other areas of Microsoft's platform should work harder to avoid this unlucky number. On a slightly related note, I was glad to see that the Westin Seattle actually is honest about the numbering of its floors, and does *not* label the 13th floor 14 in an effort to appease people's superstitions.  Scott Cate and I stayed on the 13th floor this week, and even had the super-duper unluck of having 13 on our door twice (in a … more

  • Microsoft Cloud Services

    One of the quietly announced (at MIX - WMV here) new things coming from Microsoft "soon" is SQL Server Data Services (SSDS).  The SSDS team has a blog on MSDN.  Ryan Dunn discussed it with me recently and also has been blogging about it.  Last week he announced the release of PhluffyFotos, a sample site built on top of SSDS.  You can sign up for the beta of SSDS here.  Roger Jennings has some comments here. So, what is SSDS (read the FAQ)?  Essentially, it's a way for you to access data from "the cloud" providing a highly scalable and globally available data access story.  One scenario that benefits greatly from this approach is the application that suffers … more

  • ASP.NET AJAX Download Performance Improvement Request

    I'm a big fan of ASP.NET AJAX in general, but one concern I have and something that has forced me to use other technologies is the size of the library.  It's about 85kb when compressed and unfortunately that is quite large if you're trying to include it on most every page on a site (or, much much worse, every advertisement in a large Microsoft developer advertising network).  One can certainly argue that this will be cached, and that is true, but for many sites that get most of their traffic from search engines (ASPAlliance gets over 70% of its traffic from this), you have to assume that many users will not have the .js file cached, and that is a significant increase in the total … more

  • Extract Control for ASP.NET in Visual Studio

    I've been posting about some feature requests for ASP.NET/Visual Studio, so here's one more in that thread. One nice feature of Blend is the ability to select a chunk of XAML and choose to "Extract User Control".  The result works very nicely, creating the separate control and inserting the reference to that control into the original XAML document.  It would be very cool if ASP.NET had this same notion, wherein one could select a chunk of ASPX markup and choose "Extract User Control" and have it create the .ascx file for you and insert the reference to that control into the original page. Another nice addition to take this another step further would be the ability to convert an … more

  • 2008 Goal Progress Update

    If you just read my blog for technical stuff, you can skip this one. So at the start of the year I set a few personal goals.  Since the best way to achieve goals, I've found, is to break them down into smaller and smaller pieces (as in "The journey of a thousand miles begins with the first step"), I thought I would assess my progress on the five goals I set for myself. Goal 1 - 200 Blog Posts in 2008.  That breaks down nicely into 50 per quarter, and in the first quarter I published 52 posts, just barely on track.  February was pretty light with only 9.  I'm sure if it had had 30 days in it I could have written a lot more posts.  Of course, if it had had only 28 … more

  • OpenXML Standardized and Sour Grapes

    Earlier this week, the OpenXML document format was standardized by the ISO/IEC, with a huge 86% of voting countries favoring the format (news here, among other places).  While this is interesting and a win for anyone using Microsoft Office document formats (who isn't?), it's also a bit disappointing that those who opposed the format's standardization have opted not to accept the decision of the global community.  Instead, they've shifted into sour grapes mode and are attacking the process and everyone involved (at least the ones who didn't agree with their perspective).  Jan van den Beld has a great writeup of the accusations being thrown about by the folks who couldn't … more

  • CruiseControl.NET Caching Old Project Locations SOLVED

    As I mentioned in my previous post, we're just wrapping up a continuous integration solution for a client (and if you're not using this for your team, you should be.  If you don't have time to do it, contact us to do it for you.  You'll thank me later.) and one of the last requirements changes was an update to where on the build server's hard drive the project files should reside once they're checked out from source control.  After making this change in the cc.net.config file for the various ccnet projects, and also making the change in the source control provider's working folder association for the build account username, I figured things would just work.  I forgot … more

  • Not Working for Microsoft

    I thought I should post a follow-up since I'm sure many people ready my post on Tuesday about going to work for Microsoft on some code-named project and (a) didn't remember it was April Fool's Day and (b) didn't then read the comments where I pointed out that it was a joke.  I'm still happily self-employed and working on Lake Quincy Media, ASPAlliance.com, and a new consulting business that so far is trying to focus on agile development and in particular setup of continuous integration for shops that don't already have it (just wrapping up one of these). I like being my own boss (or at least, having my wife as my boss - she's the CEO of Lake Quincy and runs the show there), but if I … more

  • Refactor Request

    Not sure if it's already there, but the folks at DevExpress or JetBrains (or Microsoft, but I don't want to wait for another VS) should have a refactoring for CodeRush/Refactor! or Resharper that will convert verbose properties into C# 3.5 short properties, like so: Make this: protected bool isSponsored = false; public bool IsSponsored { get { return isSponsored; } set { isSponsored = value; } } Into this: public bool IsSponsored { get; set; }   Ideally, it should work in two forms: 1) Right click on the property (field name let's say) and offer it as an option in that context. 2) Apply to all properties in a class. And it should only do it if it is safe, of … more

  • Silverlight Rehab

    Check out Dan Fernandez, Adam Kinney, and others in this very funny 5 minutes video about Silverlight Rehab on On10.net. more

  • The Evolution of Status Pattern

    An interesting pattern that I see in many of the applications I've worked with is the notion of status, and how it tends to evolve over time.  This is probably familiar to most of you, though perhaps you've never thought about it.  Consider the following scenario: Requirement - The system should have Users, to control access via authentication. At this stage, the developer creates a User class and a User table with a few fields like UserId, UserName, Password, Email, etc.  Status is implicit - if there exists a row that matches the given UserId (or UserId and Password for authentication), then the user's status is valid.  Otherwise, not.  Ah, the beauty that is … more

  • Outlook Performance Tips

    I've been living with Outlook 2007 since it shipped, and it's been pretty painful, but my life is in it so I'm stuck with it.  I've posted some Outlook tips in the past about how to deal with it not shutting down properly, and that has grown into a fairly sizable post with dozens of comments (and #1 for the search term outlook did not shut down properly.  Nice.).  Anyway, I have some additional tips that I thought would be worth sharing. Use Exchange If You Can In general, most of the people I've talked to say that Outlook 2007 doesn't have any huge performance problems when it is working with Exchange.  This makes perfect sense to me since I'm sure Microsoft uses … more

  • LINQ and the new DevExpress Grid

    Mehul has a couple of screencasts up on his blog that demonstrate how to use their new LINQ datasource to do optimized paging/updating of their ASPxGridView control.  At just over 2 minutes, the screencast does a very good job of showing how easy it is to set up LINQ to SQL (not that that hasn't been done before, but the more times you see it, the more likely it will stick).  That's more than half the time, then there's just a few mouse clicks to wire up the Grid control with the DataSource control, and you can see the thing in action. I've seen demos of DevExpress's data transfer technology and it's really sweet because it only sends the bare minimum of data on the wire both to … more

  • TechEd 2008 Birds Of A Feather

    If you'll be attending Tech Ed 2008 (Developers, USA), you may want to come to some Birds of a Feather sessions, which allow you to join a discussion with peers on a topic of interest.  How are the topics chosen?  Well, funny you should ask that - you get to help choose them by voting for the sessions that are of greatest interest to you.  The thing that differentiates BOF sessions from the usual technical presentations is that the organizer is there to moderate the discussion, not to lecture and present.  There are typically no projectors or powerpoint decks involved in a BOF session, just a bunch of chairs and perhaps (if you're lucky) some whiteboards.  It's a … more

  • Two Kinds of Knowledge

    Rick posted earlier today about how he's having a tougher and tougher time remembering the exact syntax and details of how to do relatively simple programming tasks, and instead finds that he's going off to find past code he's written (or blogged about) all the time.  Is it the early onset of senility, or is this typical?  It's the same for me, and it reminds me of something I learned in high school about things one knows.  There are two kinds of knowledge (and this predated the Internet so the latter was not nearly as easily accessed): Things You Know and Things You Know Where To Find. Things You Know Things you know are stored "by value" in your brain.  I call this … more

  • Tweak web.config To Set Compilation Debug False

    ASP.NET applications should never run with <compilation debug="true"> in production.  It can have drastic performance implications (of the negative kind).  Obviously, in a perfect world, developers would always remember to verify this setting whenever they upload changes to production, but unfortunately many organizations utilize fallible humans in their deployment process, and this is something that is easily missed. As part of an automated build process, this problem can be eliminated fairly easily.  Most sections within web.config can be extracted to separate files (using the configSource="{path}" attribute), and separate files can be pulled in for TEST, STAGE, and … more

  • Book - Cryptonomicon

    One of the things I want to blog about periodically is what I've been reading, and a few of the things I've read lately have actually not been about software development (which is a good thing, if somewhat rare the last few years).  One book I finished last year is the Neil Stephenson's Cryptonomicon: Cryptonomicon This was a wonderful, very intelligent book.  It did a pretty good job of making me feel like my vocabulary was completely inadequate, since it seemed like every few pages the author was using words I was unfamiliar with, or lengthy metaphors which were at times difficult for me to follow.  Very humbling - if you find this book an easy read, I bow down to your … more

  • SQL 2005 Tools Install Experience is the suck

    Just finished building a couple of ultimate developer rig machines for the office for Brendan and me, and was adding software today.  So I installed Office, Visual Studio 2008, and then SQL Server 2005.  I'd forgotten that installing SQL 2005 client tools seems to require sacrificing a chicken under the right lunar conditions in order to get it right!  I've blogged about this same issue before, but apparently it gets [sarcasm]better[/sarcasm] with x64.I did my due diligence and searched for the answer after the previous steps Brendan outlined failed with Vista 64 and SQL 2005 x64.  I found a blog entry that sounded promising, that involved running setup.exe with … more

  • Gotta Love Orcsweb

    Does your host do this?  Today I got an IM from one of my support folks at ORCS Web, asking me about one of my dedicated servers on which I have installed SQL Express for a few small web apps.  She had noticed that I'd forgotten to set up any kind of backups for these, and wanted to know if I wanted any.  When I admitted that I'd forgotten to set them up, she just took care of it for me.  How cool is that?  They're also good about letting me know when I have stuff I'm paying for but no longer using - that's called awesome customer service and that's how you can turn customers into fans and evangelists. more

  • MVC Source Code Available

    The ASP.NET MVC library's source code has been made available on CodePlex, ScottGu announced today.  The project itself is still very much a work in progress, but with this you should be able to get a much better idea of how everything is laid out and working.  I think it's great the Microsoft is being this transparent with their development efforts, and the amount of community feedback they are accepting and acting on with this project is outstanding.  For a variety of legal reasons they are not accepting patches to the code directly, but that doesn't mean that reproduced bugs and even blog entries noting changes you'd like to see will not be used to improve the … more

  • Visual Studio Shortcuts

    I was doing a bunch of Silverlight last night on a new machine and once again set up my shortcut to basically arrow left in order to let me type in attributes without taking my fingers off of the keyboard and go hunting for arrow keys.  I described this shortcut (and the reason for it) here, and I have to say it increases my speed in typing XAML tremendously.  Whenever you find yourself within quotes and you really want to jump to the next attribute (which happens, oh, every 5 seconds when typing in large amounts of XAML by hand), you can just hit Shift-Space or Ctrl-Space or whatever you configure and it will move the cursor past the closing " of the attribute you're … more

  • Continuous Integration Setup with MSTest

    I'm working with a client this week to set up Continuous Integration for their development environment.  They're a small shop who are using Visual Studio 2008 Professional, and don't intend to upgrade to Team Suite or Team Edition any time soon.  The build environment would therefore be running CruiseControl.NET, not Team Foundation Server.  They're not doing unit testing at the moment, but that's something that's being added as part of the project, so the question because whether to use MSTest, which is built into VS2008 Pro, or another unit test framework like NUnit or MbUnit or csUnit or abcUnit or xyzUnit or whatever.  They were leaning toward MSTest because it's … more

  • Verizon Crippled My Blackberry Pearl

    A few weeks ago I upgraded my phone to a Blackberry Pearl 8130.  Overall I was (and am) very happy with the phone.  It's small, light, has enough battery power to last about two days given my usage, and it's a breeze to check email and the web.  However, one of the reasons I liked this phone (which I mentioned in my previous post) is that it comes with a GPS.  I'm an ex-Army guy and I've always had a thing for GPS's and navigation - they're just fun, and quite often, useful.  So I was looking forward to seeing how fast the GPS said my car was going or finding out the exact coordinates of various places, etc. Unfortunately, after trying in vain to get my GPS to work … more

  • Silverlight 2 Beta 1 Installation Tips

    BradleyB has some great tips for troubleshooting installation problems with Silverlight 2 Beta 1, released at MIX last week.  I'm trying to avoid posts that don't do much more than link to someone else's blog, but in this case I was running into issues with my own Silverlight 2 upgrade and Brad's post had one of the things that I needed to get going.  In my case, for some reason the first time I tried to install it didn't even prompt for media but it failed and the log indicated it needed something from VS2008.  The second time, it did prompt me for the VS2008 disc, and once I pointed it at the disc location (via DAEMON Tools of course), it proceeded without a hitch.  … more

  • Three Requests for ASP.NET 4 and VS 2010

    I have three things that have been on my wish list for ASP.NET and/or Visual Studio that I'm curious to know what others think.  I've mentioned some of these before on my blog or elsewhere - they're not exactly earth shattering and I'm not saying that I want them more than any other feature they might add.  But each one would make my life at least a little bit easier, if they were included by default. So, in no particular order, here they are: Support For Generics in ASPX Markup Eilon posted not too long ago about this topic.  The idea here is that you should be able to write controls that take advantage of generics, and be able to declaratively specify them within your … more

  • Book Recommended To Me

    I just ordered this book on the recommendation of a couple of MVC people: Working Effectively with Legacy Code (Robert C. Martin Series) Also testing out RoyO's Amazoner tool, which appears to have worked correctly.  Nice!  What is Amazoner? Amazoner was designed to make one thing very easy if you're a blog writer who's also an Amazone Associate:The abilty to recommend books that you like using your associate ID EASILY. Note that I don't actually have the book yet, so I can't tell you how I like it.  But I will.  Some day. more

  • Software Design Best Practices Debate

    I've been following the discussion on Phil Haack's blog surrounding how best to introduce polymorphic objects into the MVC framework as part of the framework's interface for developers to work with.  In .NET, there are basically two ways one can build in this polymorphism: interfaces and abstract base classes.  There is a very vocal set of developers who seem to think that the answer must always be interfaces, and while I think interfaces are great and have their place, I think Phil makes some excellent points about their limitations when it comes to versioning.  In particular, his post on The Cost of Breaking Changes describes the scenario wherein a breaking change in the … more

  • MIX08 Day One

    After some difficulty getting to MIX, due to freezing rain in Cleveland Tuesday afternoon that resulted in all flights being cancelled, Craig and I arrived at MIX Wednesday morning in time to catch the last 20 minutes or so of ScottGu's keynote.  It was worth watching, as Scott was being cast for a performer position in Cirque du Soleil, for which he demonstrated his mad juggling skills.  The bit was entertaining if nothing else.  Unfortunately, we missed the advertising demos that Vertigo had put together which were shown earlier in the keynote, but I'll be sure to watch them later as the keynotes and sessions are all available on the MIX website. Most of Wednesday I spent … more

  • Finally Trying Twitter

    I finally gave in and got a Twitter account and have basically used it primarily to whine about cancelled or delayed flights and let people know where I am at MIX this week.  I'm not sure whether I'll stick with it but it does seem worthwhile at least for following a large group of friends at a conference.  If you're interested in my inane 140 character messages you can follow me here. more

  • Blackberry Pearl 8130

    On Friday I finally broke down and upgraded my aging Samsung i730 PDA phone.  I've been with Verizon for some time and have been pretty happy with their coverage and such, and they were giving me there "new every two" deal of $100 off a new phone (with a 2 year contract...) so I figured what the heck.  I'm probably the last person I know who hasn't at least tried a Blackberry, but now that I have this phone I'm really, really happy with it compared to the Samsung. My Samsung i730 First, let me tell you about the things that were pain points (and some of the good things) with the Samsung.  I bought it in October of 2005, and went through some pain to make it do some of the … more

  • Spring ASP.NET Connections Sessions

    I'll be speaking again at the spring ASP.NET Connections show, in Orlando, Florida.  We're driving down from Ohio with the family again, something we haven't done since four years ago, when we returned to find out I was being called up to go to Iraq.  I'm completely out of the Army now (resigned commission - honorable discharge - as of December 2005), so at least we don't have to worry about that. I'm fortunate enough this go-around to have all of my talks in one day.  I don't recall that's ever happened before in the last 7 or so years I've been speaking at this show, but I'm looking forward to it as it means I'll be able to spend Wednesday with the family.  However, the … more

  • AJAX Control Toolkit Update Released

    Yesterday (Leap Day), the Ajax Control Toolkit team released an update to the toolkit.  This release comes in two flavors, one for the 3.5 framework (which has AJAX baked into ASP.NET 3.5) and one for the AJAX 1.0 release that is an add-on to ASP.NET.  As always you can run through the live demos of the controls here.  This release does not add any new controls, but does include a number of bug fixes and improvements, including a bunch of user-submitted patches (learn how you can submit you own patches). My favorite controls in the Ajax Control Toolkit remain the AutoComplete, the CollapsiblePanel, and the TextBoxWatermark.  I use this a lot in my applications.  I … more

  • Agile For Customers

    Tom Hollander wrote about why your customers will love agile (even if they think they hate it) last week, and made several interesting observations about how agile methodology has taken hold in many companies and teams, and why customers should really be fighting for it, rather than fearing it.  He notes that, while generally project management principles aren't particularly sexy or interesting to developer types, many developer types are totally into Agile.  I think some of this has to do with a very good marketing job on the part of Agile's proponents.  You've got things like "Extreme Programming" that make coding sound like competing in the X-Games.  And then you've … more

  • Money For Content - Book

    I've been reading a ton of books, as usual, lately.  The interesting thing, to me at least, is that I'm actually trying to make time to read some books that aren't technical, which is quite refreshing.  For a while there, I was in "keep up with everything coming out" mode and so I went a long while without reading any fiction or non-computer books (with the exception of Harry Potter's finale).  Anyway, as I've been reading a fair bit lately on a variety of topics, I'm planning on a new post category for my blog which will cover some of the books I've read and my thoughts on each. This week's book is actually one I read quite a while ago and really enjoyed.  I wrote up a … more

  • Use Unit Test Framework to Test Production DB Consistency

    For Lake Quincy Media's AdSignia Ad Server, I wanted to be able to ensure that the database had some internal logic rules checked periodically.  What kinds of rules?  Well, probably an example would be best.  Suffice to say up front, though, that we're talking about more than NOT NULL or enforcing referential integrity.  For example, part of the ad engine's job is to redirect requests to ads to their destination URL on the advertiser's page.  These URLs are stored in a field in the database.  Occasionally, through cut-and-paste, there would be newlines in the URL field, which would be difficult to detect visually, but which would cause the redirect to … more

  • Scott Guthrie Promoted to Corporate Vice President

    Earlier this week, Microsoft announced a number of promotions, among them Scott Guthrie, who is now Corporate Vice President, .NET Developer Division (executive profile - promotion press release).  Many of you know Scott from his extremely popular blog, on which me mixes news and roadmaps for the products he oversees with technical walkthroughs and tutorials on the latest and greatest technologies.  He's one of the nicest, humblest people I know, especially among successful technologists and bloggers.  He always has time to answer questions from anybody, with great patience, and while I'm sure he's human like the rest of us, I've never known him to lose his temper or let pride … more

  • Stored Procedure Performance Varies Between ADO.NET and Management Studio

    I ran into this very annoying issue earlier this week, that my buddy and SQL guru Gregg Stark was able to track down for me.  I have a fairly intense XtraReport report that gets its data from a stored procedure.  When I run that stored procedure in SQL Management Studio, it returns in less than a second.  When I run it on my web site, it takes over 30 seconds and times out.  WTF?  I confirmed, ad nauseum, that it really was running the same sproc with the same parameters. So I hit up Stark and he suggests I try messing with ARITHABORT settings in Management Studio.  Lo and behold, when it's ON it's fast - less than one second.  When it's OFF it takes 90 … more

  • CIO Magazine on Agile Development

    The latest issue of CIO Magazine has a featured article on Getting Clueful: 7 Things CIOs Should Know About Agile Development.  It includes quotes from a bunch of developers, including some names you'll surely recognize if you follow Agile discussions at all, like Scott Ambler.  In addition to gurus like Scott, there's also yours truly in there, talking up the value of well-tested code as a long term gain on a short term investment.  If you're trying to adopt some agile practices within your organization, and expecially if you're looking to incorporate test driven development or continuous integration, this article might provide some good supporting evidence for your case with … more

  • Windows Release Schedule 2008

    For those of you eagerly awaiting Window Server 2008 (formerly Longhorn), especially you ASP.NET types salivating over IIS7, the wait is nearly over.  Today Microsoft has announced that it as released Windows Server 2008 and Windows Vista SP1 to manufacturing.When Can I Get It?That would seem to be the driving question.  What does Released To Manufacturing (RTM) mean, anyway?  Well, essentially it means it's done and it's in the "pipeline" to get into your eager little hands.  However, even though this is software and not, say, XBox consoles, it still takes some time to print CDs and boxes, put little licensing stickers with holograms and retina scanners … more

  • Hosting Experience

    I've recently completed a fairly major database server move involving about a dozen production databases running on a single server, along with a rather old Lyris installation that handles all of the mailing lists on AspAdvice.com.  Both the old and new database servers are hosted at ORCSWeb, where pretty much all of my sites are hosted (with one exception noted below).  I've been hosting with ORCSWeb for a long time - forever in Internet time, since we're talking back into the 90s.  Brad and Scott and Steve and the rest of the team have always been great to work with, and I recommend them without qualification.  Here's how hosting should work (and does … more

  • Microsoft Proposes Yahoo Acquisition

    This just in - Microsoft has proposed to acquire Yahoo for $31 per share in a $44B deal.  The full details, including the letter sent from Steve Ballmer to the Yahoo board can be found here.  If this deal goes through, it should help Microsoft to compete with Google in the online space, and would seem to be a (rare) case where Microsoft beat Google to the punch on an acquisition deal. more

  • Automotive Gadget Wish List

    A few weeks ago I posted about Ford SYNC, which runs on Microsoft Windows Automotive.  The technology is definitely a step in the right direction, but I have to agree with Sondre, another Regional Director, that it's not enough and really should be nearly ubiquitous by now.  Heck, I was amazed my last car didn't have an aux input for my MP3 player back in 2006.  Here it's two years later and many if not most cars *still* don't have this simple feature. So with SYNC you can do some nice things, like use voice to operate your ZunePod or your bluetooth enabled phone device.  That's quite cool, but there's so much more that you should have in your car, especially if a) you're … more

  • Creating a New SQL Database

    Today I need to set up a new database for a new web site I'm working on.  Last week, I saw Rick's post about the "mousercise" that defines the typical table set up in SQL Server 2000 and 2005's table designer.  I have to admit that I completely relate to his feelings, and what made his post better still was that in addition to raising a complaint (that I share), he offered a solution!  This is one reason why Rick Strahl's blog is worth reading (and probably has something to do with why he has several thousand more subscribers than my blog).  So, in the course of setting up this database (which I'm doing as I write this, and which currently … more

  • Department of Redundancy Department

    I really hate repetition, especially useless repetition, in language.  I guess I've been a follower of the DRY (Don't Repeat Yourself) programming principle long before I knew about the acronym, but I tend to apply it in natural language as well, as much as I can.  I'm a big fan of George Carlin, who shares my view on this.  One of his bits goes into the overuse of the word "situation", noting things like reporters saying "police are responding to an emergency situation".  No, they're responding to an emergency.  We know it's a situation.  Everything is a situation.  Since I live in Ohio, one of our local speech oddities is the excessive use of the word … more

  • Finding Untitled Page Titles

    Sadly, Microsoft decided that with the addition of the Title attribute on the @Page directive, it would make sense to include it by default with some text that one would absolutely never want to use as the title, "Untitled Page".  They could have named it "Customer Reporting" or "My Britney Fan Page" and it would have been correct some small amount of the time - but instead they chose something about as likely to actually be useful as Class1.cs or WebForm1 (thankfully WebForm1 is gone and new projects start out with Default - thank you, Microsoft!).You can edit your page template yourself, of course, but almost nobody does.  You can see that Untitled … more

  • ResXFileCodeGeneratorEx and Visual Studio 2008

    A couple of months ago I found a great Extended Strongly Typed Resource Generator that would let me use Resource files in shared libraries (Brendan blogged about it and set it up).  The default resource generator in Visual Studio generates code that is marked with the internal keyword, making it difficult to share the resources between assemblies or projects.  The Extended Strongly Typed Resource Generator avoids the problem and adds some other enhancements that make it a great tool.  However, at present it doesn't work with Visual Studio 2008. There's a fix that will get you partway there.  I found it in a comment on the CodeProject version of the code, and I've included … more

  • Kids and Deployment

    I thought I'd post this so it isn't lost, as memory erodes.  When I left to go to Iraq in 2004 my daughter had just turned 2.  She's 5 now (soon 6) and doesn't remember a lot about when I was gone, but when asked last year what she did remember, she said:"I remember standing by the front door with Mommy and looking out the window, and our faces were like this..." and here she made a very sad frowning face.Almost made me cry. I was (thankfully) only deployed for under a year, but it was very difficult for me and for my family.  I know that I am very fortunate to have avoided a longer tour (or multiple tours), to have come home safely, and to have … more

  • Web Deployment Projects for 2008

    Web Deployment Projects (WDP) for Visual Studio 2008 were released to the web (RTW) a couple of days ago.  These didn't make the November ship date of VS2008, but were promised to follow shortly after release, and as promised, they're here!  I haven't looked at the 2008 version yet - personally I use PyroBatchFTP + CC.NET + MSBuild to do my deployments - but I may have a look and reconsider my approach.  One thing that would be nice is the configuration merge capabilities offered by WDP. You can read more about the release, how to get it, and its features here. more

  • New Puppy!

    Today we brought home our new puppy, a mastiff boy with brindle coloration whom we have named Odin.  So far he's doing well, learning his way around the new home, playing with the kids, and getting to know our three cats who are completely terrified of him.  Life will be fun at our house for a while.  Here are some pictures for those who might care. more

  • Ohio Day of .NET

    Several user groups in southern and central Ohio are putting together a Day of .NET event this spring.  The Central Ohio Day of .NET 2008 will take place on 19 April 2008, in Wilmington, Ohio.  This was originally the Cincinnati-Dayton Code camp and ran in 2006-2007, but now includes a Columbus, OH group and so has been renamed.  The location is about as centrally between Dayton, Cincinnati, and Columbus as you can get, off of 71. The event is still in the planning stage and they're looking for sponsors and speakers, so if you're in the area and want to participate, please get in touch with them. more

  • Silverlight Hyperlink

    Playing with Silverlight and needed a simple way to redirect the page.  This isn't built-in yet but probably will be.  For now, you can call out to the page's script, and for this since I don't want to rely on the page having any particular function defined, I'm just using Eval() and passing in what I need.So, in a button MouseLeftButtonDown() handler, I've got:HtmlPage.Window.Eval("document.location.href='" + url + "';");*Update* - This is in fact built in:HtmlPage.Window.Navigate(new Uri(urlString));// orHtmlPage.Window.Navigate(new Uri(urlString), targetString);// orHtmlPage.Window.Navigate(new Uri(urlString), targetString, … more

  • TFS Tips

    I'm just wrapping up a long article on Team System 2008 and its new capabilities, especially its continuous integration support and build server improvements.  In the course of researching for this article, I found a couple of tips that didn't really fit into the scope of the article, but I wanted to call attention to them.  The first one addresses a pain point of mine, which is the default action when you associate a work item with a check-in.  By default, the default check-in action for such work items is Resolve, when it probably should default to Associate. 95% of the time I want it to be Associate.  5% of the time I might want it to be Resolve (but really I don't … more

  • Visual Studio XAML Editing Tip

    So I'm working in XAML in Visual Studio 2008 and it has some nice statement completion features now, like automatically quoting my attributes for me (cool!).  When there's an item it knows, like Orientation="Horizontal|Vertical" it will give me a dropdown and after selection, put the cursor after the closing double quote, as you would expect, like this (the _ represents the cursor): <StackPanel Orientation="Vertical"_ However, if you edit a field that doesn't have a limited set of options, like Width, you don't get this behavior, so you're trapped inside of the double quotes: <StackPanel Orientation="Vertical" Width="30_" None of the standard keys within reach of a touch typist … more

  • Olympics With Silverlight

    I missed this last week, but it appears that the 2008 Olympics in China will be made available online via Microsoft Silverlight.  Every minute of every event will be available on-demand.  Read more about it on Soma's blog. Obviously, this is a pretty major win for Microsoft as it tries to get penetration of Silverlight on as many browsers as possible.  Millions of people will use this service to view the Olympics, and the result should be a huge increase in adoption of Silverlight this summer.  Kudos, Microsoft. more

  • CodeMash Hanselman IIS Talk

    I'm at CodeMash today and Scott Hanselman gave the afternoon keynote on IIS7 mashups.  The talk was preceded by a very funny introduction Scott gave that introduced me to the LOLCode.NET language with the help of some LOLCats and humorous sample code.  The talk focused on how to hook up a PHP application in IIS7, and then enhance it with a few features by adding modules to the HTTP pipeline.  For instance, authentication using ASP.NET Forms authentication was trivial to add.  Url rewriting and response filters came next, also with HTTP modules managed through IIS7.  Finally, output caching was added which naturally boosted the performance of the application by … more

  • Microsoft Auto and Ford SYNC

    One of the themes of last night's college championship football game (which, sadly, OSU lost, though not quite as badly as a year ago) during the commercials was the new SYNC technology available from Ford and Lincoln Mercury.  I've been peripherally aware of this technology for a while, but these were the first advertisements I'd seen for the actual product.  According to a recent press release, Ford Sync (which is powered by Microsoft Auto) will be available in 12 Ford, Lincoln, and Mercury products in 2008.  This technology will allow users (drivers and passengers) to access their mobile phone or digital music player via voice commands, and will integrate with phones via … more

  • Trends in Programming Languages

    Al Pascual wrote about some trends he noticed using Google Trend, with regard to different programming languages.  It's an interesting tool, since it can be used to gauge general interest in particular keywords and search terms, as well as news, going back about 4 years.  For instance, here's a comparison of Visual Basic and C# using common search terms for each (VB, VB.NET vs. C#, CSharp): Given just these search terms, it's clear that VB/VB.NET is on a downward trend, with C#/CSharp passing it in mid-2006.  Expand this a bit further to include "visual basic" and "c #" and "c sharp" and you get the following: Visual Basic is still a huge search term in its own right … more

  • SimpleCMS for IIS7

    SimpleCMS is a (very) simple content management system I developed with Brendan for ASPAlliance.com and which is now available from CodePlex (with source).  Steve Schofield recently put it to work in IIS7, a scenario we have not yet tested ourselves, and found that it worked more-or-less without difficulties.  He posted his steps for setting up SimpleCMS using IIS7 and the Integrated Pipeline if anybody is interested. more

  • Attending CodeMash 2008

    I'll be attending CodeMash again for its second year, at the Kalahari Resort in Ohio.  Last year it was a great local conference and this year I expect it will be even better.  The conference is uniqe in its approach in that it combines a wide variety of developer technologies in one place, and encourages crossover for all attendees.  In this way I believe it is somewhat similar to MIX, but as I've had the misfortune of missing MIX the last couple of years (but I'm going this year!), I can't say from personal experience. Anyway, I'm going to be at CodeMash just on Thursday.  I plan to attend some sessions, probably catch ScottHa's keynote, perhaps be part of a discussion … more

  • Facebook and Scoble Square Off

    Like so many others have noted, I think 2008 and the next few years will see a shakeup in some of the "web 2.0" and social networking community sites.  As evidence of this, I just read that Robert Scoble has run afoul of Facebook for running an automated script to suck down all of his contacts' information, something prohibited by Facebook.  As a result, they've apparently disabled his account.  There's a good writeup of this on Adotas (from computerworld):  Scoble Kicked Off Facebook for Downloading Content Of course, such publicity is bad for Facebook, so not surprisingly, they've already re-enabled his account, according to another post on Robert's blog. As a user of … more

  • Fall DevConnections Session Comments

    I've been speaking at the DevConnections conferences since Fall of 2001 and have really enjoyed the experience.  The speakers are a great group of people to hang out with, Shirley and Erik and Paul and the rest of the team put together a very well-organized event, and this last show was very impressive in terms of its attendance and breadth of content.  Over the years, the level of feedback speakers receive, in terms of how the evaluations turned in by attendees are handled, has steadily improved.  In the last couple of years, we've been given a very good summary of how the evaluations came in, and I thought (in keeping with my goal #1 from my last post) that I would share … more

  • Some 2008 Goals

    With 2007 gone and 2008 already 1% complete I need to start thinking about what some of my goals are for the year.  Last year I didn't blog about any sort of yearly goals, but looking back at my posts from January 2007 makes me think about Michael Palermo's recent post about his goal of total blogging for 2008 (and some tips for blogs he likes to read).  He noted that he made 82 posts in 2007, and his goal for 2008 is to triple(ish) that to 240 posts.  By my count I had 144 posts in 2007, or roughly 12 per month, which seems pretty good to me.  I think a reasonable goal for me on that front would be to try and do one valuable post per weekday, which should be about 200 … more