Stuart & Meaghan

Life, love, and adventure in the Pacific Northwest

Covered in bees…

I was idly reading wow.com this afternoon and found a reference to one of my favorite Eddie Izzard sketches: “Covered in bees”. It’s a line I use often to reflect a mood of ambivolence for an obviously odd action, an expression of: “Yes I know there is a big pink elephant in the middle of the room.  I’m ignoring it.  I’m covered in bees!” It got me thinking about the trending of this phrase as I assume that many other people have also used it and probably have also invented their own contexts.  Urban dictionary say:

“Said by the masterful comedian Eddie Izzard, in his set ‘Glorious,’ to describe what a beekeeper must occassionally say when he freaks out and realizes that he is in fact covered in bees. Great line to quote at random times when surrounded by a lot of people.”

Hashtags.org revealed zero tweets with #coveredinbees.  I quickly corrected that twittersphere oversight.

A quick check on search.twitter.com showed that besides a twitter user with the username coveredinbees who is apparently also a fan of @EddieIzzard there are practically no references to this phrase.

Searching FaceBook yielded a few fan groups for the phrase (note that you’ll need to be logged into FaceBook in order for the url to work) but nothing suggesting a huge public trend.

I therefore conclude that my fondness for the phrase has yet to reach pet rock levels of appeal with the social media crowd.  I’ll have to see what I can do to change that.

June 11th, 2009 Posted by stuartthompson | Blogging, Games, Musings, Warcraft | no comments

Mine is the pattern…

(to the tune of “Morning has Broken”)

Software is broken, from the first version
Fowler has spoken, his gospel word.
Praise for the patterns, praise for MVP
Praise for our passive view of our world.

Hear there’s a new thought, coming from Redmond
Wait it’s an old thought we already had.
Praise for MVC, in its new format
Sprung in completeness where their feet pass.

Mine is a castle, and it’s named Windsor
Born not from one light, silver or gray.
Praise it with caution, praise it with warning
MS’ recreation of the new way.

(C) MVVMVPVC

June 8th, 2009 Posted by stuartthompson | Blogging, Technology | no comments

Fallen Tree - The Cleanup

The tree that fell onto a truck and two other cars parked at our apartment complex during the thunderstorm a couple of days ago has now been cleaned up.  With the foliage removed it is much easier to see the actual damage that was caused.

damagedcarport2 damagedtruck

damagedtruck2 tree_choppedup

The tree was taught a lesson it won’t quickly forget.  I’m guessing that our apartment management will be ordering the removal of several other trees that overhang the various parking lots.  It’s actually a shame because they provide a lot of nice coverage and greenery, but I’m sure I’d feel quite differently if my car had been hit and from a liability perspective I totally understand.

My biggest hope at this point is that the insurance companies don’t deem this an “act of god”.  It’s such a slimy way of getting out from paying a genuine claim.

June 6th, 2009 Posted by stuartthompson | Blogging, Photography | no comments

Bing!

I’m usually pretty skeptical when I hear that a new search engine is entering the market.  Google have had that market pretty well wrapped up for a good long while now and even a group of their own engineers couldn’t one-up their ex-employers with the rather un-cool Cuil.  Even industry giant Microsoft have had a fairly rough time competing.  MSN search and then Live! search both struggled to even come close with the search result quality that Google provided.  That is until now.  Bing! which I have heard is named after the “sound of found” (and not Bing Is Not Google), is a decision engine from Microsoft that so far shows a lot of promise.  The search quality and popularity of bing! is of course yet to be tested, but my initial vanity search for “stuart thompson” produced heart-warming results for me:

bingsearch_stuartthompson

Of the 6,280,000 results returned for “stuart thompson”, I’m occupying 4 of the top slots.  Sweet!

June 5th, 2009 Posted by stuartthompson | Blogging | no comments

Tree vs Truck

The thunderstorm tonight brought a tree down onto three cars parked in the lot at our apartment complex.  It was tree vs truck, and tree won.

060409_treedownoncars 060409_treedownontruck060409_treeontruck 060409_treestumpsnapped

It looks like the other two cars got away mostly unharmed.  The windshield of the truck is cracked and the hood is well dented.  Other than that we won’t be able to see the extent of the damage until the tree can be moved.  Fortunately, no-one was hurt.

June 4th, 2009 Posted by stuartthompson | Blogging | one comment

Fixed a minor bug

A few of you have noticed that the title for individual posts on this blog was prefixed with “blog-thing” instead of “Stuart & Meaghan”. I finally managed to track down the culprit this morning. There was a hard-coded string in the Andreas04 template that - use on the blog. When I started hosting the Wordpress myself, I did a bulk search and replace on Stuart Thompson to change it to Stuart & Meaghan. However, that didn’t catch the hard-coded blog-thing value in the custom template.

The problem should now be fixed but please do let me know if you continue to see other issues.

March 10th, 2009 Posted by stuartthompson | Blogging | no comments

Just say no to censorship

I’ve said it before and I’ll say it again:

“Don’t fucking censor the internet!”

Thank you, that was all. :)

February 23rd, 2009 Posted by stuartthompson | Blogging | no comments

Import Complete!

I’ve finally finished importing all of our old blog entries.  It’s been quite the process, but I’m happy with the results.  I had to go through each post from the three different blog packages that I’ve used over the last couple of years and manually import each of the entries, their tags, and pictures.  I tried doing a few automated imports but none of them produced results I was satisfied with.  It’s nice to have the history all in one place and cleaned up though.

Now I can finally get back to blogging new stuff!

January 29th, 2009 Posted by stuartthompson | Blogging | no comments

Photo Sharing Sites

I haven’t been blogging much lately.  A large part of why is that I’ve become quite enamored with photo sharing sites.  I’ve started sharing albums of the things Meaghan and I are doing together at:

SmugMug: http://stuartthompson.smugmug.com

Picasa: http://picasaweb.google.com/stuart.d.thompson

Flickr: http://www.flickr.com/photos/28588451@N05/

I’m finding SmugMug and Picasa to be my favorites and I think I’m going to use SmugMug going forward, although I’ll still update Picasa and Flickr from time to time.  I’m also posting a selection of photos to FaceBook (find me and friend me if you aren’t in my list- or email if you still can’t find me there).

Now that I have my new camera (more on that in a “what we got for Christmas post”) I’m taking a LOT more pictures.  I’m also finding that people are more interested in seeing what we are doing versus reading about it and seeing a few photos.  I’ll still be blogging, but I’m definitely shifting to a focus of photojournalism for a while.  Happy 2009!

January 11th, 2009 Posted by stuartthompson | Blogging, Photography | no comments

Alternate URLs

Although the true address of this blog is http://blog.stuartthompson.net, there are several alternate URLs that you can use to get here:

All of the above links will redirect to this blog.  It may seem like a strange setup, but there is actually some method to the madness.  stuartthompson.net is my domain, not just my blog.  I want to move to hosting a dashboard there that contains more than just blog entries, rather a aggregation of twitter, the blog, flickr, facebook, all of my social media presence in one location.  However, as more and more of those services are added there is more information that is specific to me and less that is specific to both Meaghan and I.  Meaghan has a separate twitter feed and flickr, for example, and might someday want a dashboard of her own.  I’m integrating stuartthompson.name with this site too, as an alternate portal access location.

However, for stuartandmeaghan.* I thought that the most pertenant location was our group blog.  I could actually host the blog at stuartandmeaghan.com, and I thought about that, but then realized that as Meaghs gets more into blogging she may well want a space of her own.  She already has a space of her own on wordpress for our wedding blog.  At some point if she wants a blog of her own, I would probably set it up at meaghanbrown.com or meaghanthompson.com once we are married.  Something personal to her.  For now, I host the blog at stuartthompson.net but have the group urls redirect there.  It made me realize in our age of permanence and location on the web that the tradition of having women who marry change their last name causes them quite a problem.  I’ll always be Stuart Thompson, so accounts on facebook, twitter, flickr, etc… where I can grab stuart.thompson, stuartthompson, sthompson or some other variation will always be in one place.  Anything registered to Meaghan Brown or any derivative might either a) have to change after we marry or b) stay with her maiden name (which introduces it’s own problems).  Either way, there is going to be difficulty for some people in finding her online profiles after we are married.  I wonder how many Web 2.0 companies have planned for this in their products.  It would be nice to see a “my name changed, now what?” use case in their UI.  I haven’t really researched it as the thought only occured to me recently, so it might already exist.  Either way, I think it has to be a use-case that is accounted for as web 2.0, social media, and online presence become increasingly important.

November 19th, 2008 Posted by stuartthompson | Blogging, Social Media, Technology | no comments

Migration Update - Andreas04

I found my theme!  Woohoo.  I missed the Andreas04 from WordPress.com as it didn’t come standard with the self-hosted version so I thought I’d have to either craft my own or find another new theme I liked.  Fortunately, thanks to Tara’s site I was able to get a copy of the theme and install it on my new site.  Happy again!

November 6th, 2008 Posted by stuartthompson | Blogging | no comments

More blog changes

I’ve been slowly making changes to the blog and our website over the last few months.  While many of these changes haven’t been visible on the surface, there has been a lot updated behind the scenes.  The following have been implemented so far:

1) Transferred domain registration from 10-domains.com to godaddy.com
- The 10-domains.com server was going down quite regularly, which meant that my url forwarding for http://www.stuartandmeaghan.com, http://www.stuartandmeaghan.org, and http://www.stuartandmeaghan.net would also go down.  Many people use RSS readers to these urls in order to receive the posts here and would lose the feed each time the 10-domains.com server went offline.
- The transfer to godaddy.com is complete and so far I’ve been very impressed with their services.

2) Integrated XBox Live! gamertag.
- Not a big change, but I wanted to include my gamertag as a part of the site.

3) Integrated with Google Analytics.
- Google Analytics provide a whole host of information about who/where your subscribers and readers are.   I had this set up on my old blog and sites, but just never got around to configuring it after the move to SubText.  This has now been corrected.

4) Post names updated to be friendly.
- Previously, the hard links to posts on this blog were numbered.  i.e. the url would end in 142.aspx.  This wasn’t working well for link history or search aggregation.  Now the title of the post is used as the page name, so this post should end with more_blog_changes.aspx.   Much better, and far more meaningful.

6) Minor options updates.
- I configured comments for Capcha and simplified the commenting process.  This was to encourage more feedback as well as to provide more protection from spam.

That’s it for now.  More changes (visible) to follow.

August 19th, 2008 Posted by stuartthompson | Blogging | no comments

Updating the blog a bit

I’m trying to update the look and feel of the blog a bit this week.  There are some visual quirks I’m not too pleased with (i.e. the little box+arrow that is placed next to links by the default layout) and I think the time has come to clean them up.  I’m also going to work on cleaning up the navigation bar as it’s pretty stale and the space could be used much more effectively.  I started by adding my XBox Live! gamercard to the description.  This shows my current gamerpoints, XBox Live! status and recently played games.

Apologies if this causes a few odd visual artifacts while I’m working out the kinks, but I hope you like the new look!  I’m hoping it means that the page will load much faster and have more relevant information.

July 16th, 2008 Posted by stuartthompson | Blogging | no comments

Deeper Project Visibility - with NDepend

Software projects, by nature, have a propensity for getting out of hand.  No matter how tightly we adhere to our carefully crafted development processes, despite diligent and methodical software designing and refactoring, the elusive software project always seems to manage to get away from us and mask its true nature from our prying eyes.  Something close to a bajillion dollars has probably already been spent in attempts to tame the software project and convince it to open up and reveal its inner secrets and with increasing success.  It has certainly been my experience that the software projects I’ve worked on in the last five years are much more transparent than they were fifteen years ago.  This is in no small part due to the fact that I am no longer a teenager banging out Win32 applications in Borland C++, stumbling my way through APIs until an acceptable solution to the problem in hand somehow occurred.  However, the view that software projects are becoming increasingly transparent is also shared by my peers.  The general consensus is that the tools and development environments have played a significant role in this, a significantly larger role than the maturity or structure of the code being developed.

This is the key observation that I have made in thinking about the problem of software project wrangling.  Despite advancement in the languages, environments, and tool-set, the code itself doesn’t seem to have become significantly more transparent.  Bear in mind also that I am not describing the “API of complete awesomeness” that represents years of careful labor and also accounts for about 0.1% of the code developed each year.  I’m talking about the other 99.9% of “copy/paste/tweak/pray” code that represents the bulk of what you and I will be maintaining, supporting, and extending for a notable portion of your software development career.  Given this (rather lofty, sweeping, and completely personal-opinion-based) assumption, thought moves again to the area in which our wrangling efforts have advanced: the tools.  If we can’t get people to architect more elegant solutions, perhaps we can find less painful ways to pry open Pandora’s box and examine the gifts our coding predecessors have left for us.

7_2d10_2d2008_ndepend_logo_small

One tool in my arsenal for this task is NDepend.  Tools and development styles will always be very personal.  There are tools that I use for which others find no benefit and similarly there are those tools that have been recommended to me that just don’t seem to do what I need.  However, I can highly recommend that any developer at least evaluate NDepend for their own use as it brings a rather unique perspective to the problem of analyzing even the most elusive of software projects.

What does NDepend do?
Arguably one of the most important questions to ask when evaluating any new piece of software is what it does.  Put simply, NDepend analyzes your project and tells you stuff about it that might otherwise be difficult to discover.  It breaks down a software project into its most basic components and then lets you query and visualize the sum of those components in extremely powerful ways.  NDepend provides a wide variety of features for software analysis but undoubtedly the majority of its value lies in the power of CQL.  The Code Query Language is not unlike traditional T-SQL in both syntax and the type of problem it is trying to solve.  However, where SQL is designed to query data stores, the CQL language is designed to query software project information.  This has several applications from code navigation and searching to coding quality evaluation and a whole host of standards metrics calculations.

In short, NDepend provides an incredible amount of information about how your project is glued together and how every field, method, type, and assembly is structured as well as how each of those elements relates to one another.  When you first run NDepend upon a solution or set of assemblies, the amount of information that is presented can feel a little overwhelming.  However, as you start to present small problems for NDepend to solve it quickly becomes clear why all of this information is very necessary.

Where do I start?
The best way to start working with NDepend is to point it at an existing set of assemblies and run an analysis.  Then we can start to pick through the individual parts of the analysis and start to benefit from the information that is presented.  For this purpose I have down-loaded the source code for an open source project called NArrange.  This provides a nice publicly available solution on which to test NDepend such that the samples in this article can easily be reproduced.

NOTE: I also recommend viewing the video tutorials on the NDepend web-site.  The getting started tutorial covers a lot of the information I present here in much more detail (and very probably with higher accuracy).  The getting started tutorial video is located here.

Step 1 – Download and Install NDepend Trial
You can download a trial version of NDepend here.

Step 2 – Analyzing a Solution
First make sure that you build your solution, either using Visual Studio or via MSBuild or another tool.  NDepend analyses a set of assemblies rather than a project or solution.

From the NDepend start page, select “Analyze: a set of .NET assemblies”.  This will display a file selection dialog which we will use to browse to the NArrange libraries.  I navigated to the NArrange.Tests.ConsoleApplication bin/Debug directory as this contains many of the solution assemblies that we wish to analyze.  Once we have selected a set of assemblies, NDepend will being to run its initial analysis.  This should take about 30 to 60 seconds depending upon system load and performance.

7_2d10_2d2008_ndependstartpage 7_2d10_2d2008_ndepend_assemblyselection

Once the analysis has completed, NDepend will display the current project in its main window as well as opening a browser that contains a full analysis report.

There is a tremendous amount of information in this report and it will take a while to become familiar with all of the data that is being presented.  To that end we will look at each of the sections in turn and adopt a step by step approach to understanding why this information is useful.

Analyzing the Analysis
Let’s first look at the project map (or VisualNDepend View).  If you close the browser that contains the NDepend Report you’ll see that the NDepend gui has been updated.  At the top is a section containing this view.

7_2d10_2d2008_projectmap

This looks a little like a topographical analysis of the moon with yellow writing on it.  In truth this is a lot like a lunar map except instead of showing the peaks and troughs of the moon’s surface it is showing the topography of our project.  The NArrange solution is split into several different projects, each of which compiles into an individual assembly.  The thin yellow lines separating sections of the map represent the boundaries between these assemblies.  Each of the little gray circles that fill in those yellow squares represents a group of code within that assembly.  In essence you are looking at the project as though it were arranged into states and counties.  Each county represents a type whereas each state represents an assembly that contains several of those types.  You can run your mouse over the project map and see that each gray area will turn red as you mouse over it.  Additionally, the name that gray area represents is displayed.  The purpose of this project map is to give you a visualization of the layout of the whole solution.  It also plays into a lot of the deeper analysis functions that NDepend has to offer and becomes a center-point for visualizing the location of code in the project.

7_2d10_2d2008_navigatingthevisualview

Start by clicking on one of the gray areas.  Note how the class browser window to the left is updated when an area is clicked.  This allows you to navigate your code visually while seeing the familiar class browser tree-view for the selected code element.  Alternatively you can click on a method or type in the class browser and see the visual view update by highlighting the appropriate area of the map.  Selecting an assembly in the class browser will highlight that entire assembly in the visual view pane.  The class browser gives a very zoomed in perspective of your project, whereas the visual view gives a fully zoomed out view of how a particular element relates to the other elements in the full solution.  I find a combination of the two to be a very powerful and expedient way to navigate a solution.

Abstractness vs Instability
Lets open the report that was generated after the initial analysis again.  To do this we can click the 7-10-2008_ViewReportButton button at the top of the Home ribbon.

7_2d10_2d2008_viewreport

The set of links at the top of the report allow you to navigate the report contents.  Click the Assemblies Abstractness vs. Instability link to be taken to a graph that pinpoints this information for each assembly that was analyzed.  This graph contains two major zones of pain and uselessness, leaving a sweet spot in the middle.  Assemblies that are both abstract and unstable live at the top-right of the graph, in the zone of uselessness.  This is to indicate that pairing abstractness with instability serves little purpose.  Assemblies in the bottom-left of the graph are very stable and tightly concrete.  This can lead to significant pain when they are maintained or extended as they are so tightly coupled and interwoven that making even small changes can require significant effort.  The sweet spot in the middle represents the correct balance between abstraction and stability.  This can be a good visual aid when learning new code or revisiting code you haven’t touched for a long time.  The pain points and potential pitfalls are identified quickly.

7_2d10_2d2008_abstractnessvsinstability

In this graph we can see that the NArrange assemblies are sitting firmly in the green zone.  The NArrange.Core assembly is the most abstract of the bunch but is also just stable enough to balance that level of abstraction.  It is expected that most test assemblies will cluster in the bottom right area of the graph, which is not a bad place to be.  Most test assemblies are fairly unstable and employ no abstraction as they are intended only for the purpose of testing a single type or set of known methods.

Additional Resources
This very brief overview was intended to scratch the surface of NDepend and give a feel for what this tool is trying to accomplish.  I’m working on more articles around the excellent CQL language and deeper features of NDepend.  These articles will be the basis of a training for some brown bags as well as the source material for more blog posts on this topic.  Meanwhile, here are some resources that are other great starting points for learning more about this great tool.

Stuart Celarier put together an excellent cheat sheet for NDepend that can be found here.  This is one of those sheets you just want to print out, laminate and either hang on the wall or find a place on your desk, perhaps even as a mouse mat.

The NDepend website contains a great series of videos and articles to help get started.

Other than that, one of the best ways to learn the tool is to simply install it and then start poking around with the analysis and learning by using.  Analyze your current project assemblies and then start navigating using the NDepend interface.  Play with some of the CQL queries (it will make reading future articles on CQL simpler because you’ll be more familiar).  Make sure to install the VisualStudio and Reflector addons as these make full circle integration a part of your life.  Other than that, I look forward to putting together my next NDepend article on using CQL to really understand and learn about how your code is put together and where it can be improved.

July 10th, 2008 Posted by stuartthompson | Blogging, Technology | no comments

Diet Barqs - BlogJet’s First Assignment

The purpose of this post is primarily to test out a tool called BlogJet that I’m evaluating.  I’ve had BlogJet recommended to me on multiple occasions in the past but it didn’t quite seem to serve my needs at the time.  However, it has been a while and I am getting tired of blogging manually using the default SubText interface so I decided to evaluate it for a second time.

The purpose of BlogJet is to allow you to make posts to your blog quickly and easily without having to navigate the sometimes default interface that ships with many blog engines.  Performing tasks such as uploading images often involves the manual creation of a thumbnail followed by a quick tour of an ftp client.  BlogJet includes that feature (probably my #1 need these days) and also wraps up the authentication and posting configuration options really nicely.  Things have come a long way.

I sat here thinking about how to test it out and found a can of Diet Barqs root beer sitting on my desk.  I’ve been drinking a lot of root beer over the last eighteen months since I decided to completely give up caffeine.  Diet Barqs has become quite the staple and as such is now the sub-topic of this post.  Plus I really needed to test uploading a picture with a thumbnail.  So here is a can of Diet Barqs:

07092008_dietbarqs

Note: I didn’t actually take this picture, I googled for it.  I was going to take a picture of the can sitting on my desk but don’t have any software installed to upload pictures from my camera to this PC.  That will have to be a task for another day.

Here’s hoping this works because so far this tool looks really cool!

July 9th, 2008 Posted by stuartthompson | Blogging | no comments

Blog Moved Successfully

Yesterday I was able to move our shared personal blog to its new location.  There are now four ways that you can get there:

All of these urls take you to the same location and are registered for convenience.

For a short while, the old location of http://www.stuartthompson.net will redirect to the new location, however that will be changing in the first week of April.  From that point forward the root url will become the new face of this site.  I will include a sticky post at the top of the site to give people easy access to our personal blog even after the move but what better time than now to update your bookmarks and news reader locations before then?

Thanks for your patience.

March 20th, 2008 Posted by stuartthompson | Blogging | no comments

The Blog is Moving

While there hasn’t been much activity online lately, there has been an incredible amount of activity offline, and yes the two are paired. :)  However, now that things are back under control, I’m finding that I have more time to do home projects again, fortunately including blogging.  As part of this I am moving the personal blog to www.stuartandmeaghan.com.  The blog has been about both of us for a long time now and it was time to upgrade it from the otherwise rather self-centered www.stuartthompson.net.  I’m going to keep the old domain name though and split the blog into two separate installations; one for personal posts and the other for those of a more technical nature.  It’s nice to see life settling down a little more recently and having some time to devote to my own projects.

I’m hoping to be able to complete the move within the next two weeks or so, depending upon how easy it is to migrate a SubText installation from one domain to another.

March 7th, 2008 Posted by stuartthompson | Blogging | no comments

First YouTube Video

This morning I finished mixing my first ever YouTube video.  This is a mixture of footage from our Warcraft guild’s first anniversary guild meeting.  This was an incredible amount of fun to put together and hopefully the first of many.  Enjoy!

February 2nd, 2008 Posted by stuartthompson | Blogging | no comments