<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8598704</id><updated>2024-10-24T05:56:19.969+00:00</updated><category term="C#"/><category term="productivity"/><category term="MonitorWang"/><category term="fun"/><category term="Geckoboard"/><category term="tools"/><category term="gadgets"/><category term="API"/><category term="Wolfpack"/><category term="business agility"/><category term="roundup"/><category term="software design"/><category term="AppEngine"/><category term="Business"/><category term="IoC"/><category term="NuGet"/><category term="deployment"/><category term="deploymentwang"/><category term="recommended"/><category term="Code Generation"/><category term="DDVT"/><category term="DataWang"/><category term="Dev-How-To-Links"/><category term="Home Automation"/><category term="Sidewinder"/><category term="WCF"/><category term="WCFServiceWrapper"/><category term="amazon"/><category term="blog"/><category term="fluentgeoapi"/><category term="geolocation"/><category term="CI"/><category term="ESB"/><category term="FreeAgent"/><category term="GeckoboardApps"/><category term="GoogleSets"/><category term="LogParser"/><category term="News"/><category term="Python"/><category term="Resharper"/><category term="TripleA"/><category term="Virtual Machines"/><category term="Windsor"/><category term="Xml"/><category term="google"/><category term="richmansplaything"/><category term="type 1 online stores"/><category term="user interface"/><category term="windows media"/><title type='text'>James Simmonds</title><subtitle type='html'>Random thoughts on software development &amp;amp; the interweb, home automation, media centres &amp;amp; gadgets and other interesting stuff...well interesting to me anyway</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>142</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8598704.post-6945143811841793324</id><published>2013-07-17T09:27:00.003+00:00</published><updated>2013-07-18T09:19:42.881+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="productivity"/><category scheme="http://www.blogger.com/atom/ns#" term="Resharper"/><title type='text'>Resharper add-in idea - highlight IDisposable vars</title><content type='html'>&lt;i&gt;[Update 18th July 2013]&lt;/i&gt;&lt;br /&gt;
@RobGibbens and Greg Hurlman picked up on this - Rob pointed out that there is an FxCop rule that can do this and Greg suggested a Visual Studio extension. I&#39;ve had a quick look at the Visual Studio options and it looks like an &quot;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dd885122.aspx&quot; target=&quot;_blank&quot;&gt;Editor Extension&lt;/a&gt;&quot; is a good fit....hmmm, Project New, click...doh...dammit I really don&#39;t have time for this but it looks a fun little diversion! I&#39;ll update here if I get anything working.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;[Original Post]&lt;/i&gt;&lt;br /&gt;
Had an interesting idea for a Visual Studio Resharper add-in the other day but don&#39;t have the time to implement it so thought I would put it out there...it might already exist (and hopefully someone can point me in the right direction) or someone will build it (Darren Voisey where are you?!).&lt;br /&gt;
&lt;br /&gt;
The idea is very simple really - when you have a variable for an object that implements IDisposable it gets highlighted or a tell-tale is displayed to let you know it should be disposed or should be wrapped in a using statement....simples right?&lt;br /&gt;
&lt;br /&gt;
The trigger for this was a piece of code that sent an email via SMTP and we were trying to delete the attachment once sent (to clean-up disk resources) but this failed as we were not disposing the MailMessage object we had created.</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/6945143811841793324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/6945143811841793324' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/6945143811841793324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/6945143811841793324'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2013/07/resharper-add-in-idea-highlight.html' title='Resharper add-in idea - highlight IDisposable vars'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-1679037926790630948</id><published>2012-08-23T21:51:00.000+00:00</published><updated>2012-08-24T07:16:29.823+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DDVT"/><category scheme="http://www.blogger.com/atom/ns#" term="deployment"/><category scheme="http://www.blogger.com/atom/ns#" term="Sidewinder"/><category scheme="http://www.blogger.com/atom/ns#" term="TripleA"/><category scheme="http://www.blogger.com/atom/ns#" term="Wolfpack"/><title type='text'>Walk-Thru: Using Wolfpack to automatically deploy and smoke test your system</title><content type='html'>&lt;h2&gt;
First, some history...&lt;/h2&gt;
The advent of NuGet has revolutionised many many aspects of the .Net ecosystem; MyGet, Chocolatey &amp;amp; OctopusDeploy to name a few solutions building upon its success bring even more features to the table.&lt;br /&gt;
&lt;br /&gt;
I also spotted that NuGet could solve a problem I was having with my OSS System Monitoring software &lt;a href=&quot;http://wolfpack.codeplex.com/&quot;&gt;Wolfpack&lt;/a&gt;; essentially this is a core application framework that uses plugins for extension (&lt;a href=&quot;http://wolfpackcontrib.codeplex.com/&quot;&gt;Wolfpack Contrib&lt;/a&gt;) but how to unify, standardise and streamline how these plugins are made available? NuGet to the rescue again - I wrapped the NuGet infrastructure (I deem NuGet to be so ubiquitous and stable that is has transcended into the software &quot;infrastrucuture&quot; hall of fame) with a new OSS project called &lt;a href=&quot;http://sidewinder.codeplex.com/&quot;&gt;Sidewinder&lt;/a&gt;. Sidewinder allows me to wrap all my little extension and plugins in NuGet packages and deploy them directly from the Wolfpack application - it even allows me to issue a new version of Wolfpack and have Wolfpack update itself, sweet huh?&lt;br /&gt;
&lt;br /&gt;
About the same time as Sidewinder was born, I also started another OSS project called &lt;a href=&quot;http://triplea.codeplex.com/&quot;&gt;TripleA&lt;/a&gt; as result of discovering &quot;Continuous Delivery&quot; - this project set out to streamline the building of system level and &lt;a href=&quot;http://jimblogdog.blogspot.co.uk/2010/10/introducingdeclarative-deployment.html&quot;&gt;deployment verification tests&lt;/a&gt;&amp;nbsp;(TripleA is the helper framework that this article alludes to) that should be used to provide &quot;system&quot; level verification that a deployed version of your application is fit for purpose and ready for a more in-depth rigorous test cycle.&lt;br /&gt;
&lt;br /&gt;
So...to finally tie all this together I want to present the intersection of these projects as a free, OSS solution for the automatic deployment and smoke/system/deployment verification test of the your software.&lt;br /&gt;
&lt;h2&gt;
&lt;/h2&gt;
&lt;h2&gt;
Scenario&lt;/h2&gt;
&lt;div&gt;
A very typical scenario encountered during development is something like this...&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Make a change, locally test it&lt;/li&gt;
&lt;li&gt;Commit the change, starting a build on the CI server&lt;/li&gt;
&lt;li&gt;Deploy the build&lt;/li&gt;
&lt;li&gt;Run some smoke tests&lt;/li&gt;
&lt;li&gt;Promote the build through the environments after further testing&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
Wolfpack brings automation to the majority of these steps...&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6jeODmIMLXJk0hBUFXLrruVK29TStvhKnFdci55eUpbp88q2FUSBcq-71Y20cWBuNC4ahHiEWddslYeXrpg6N4DQKSzZSspCKoWIVJ1WlHqVPauQStkd0pODLj1wvHmI6M0Grlw/s1600/wolfpack-deployment.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6jeODmIMLXJk0hBUFXLrruVK29TStvhKnFdci55eUpbp88q2FUSBcq-71Y20cWBuNC4ahHiEWddslYeXrpg6N4DQKSzZSspCKoWIVJ1WlHqVPauQStkd0pODLj1wvHmI6M0Grlw/s1600/wolfpack-deployment.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6jeODmIMLXJk0hBUFXLrruVK29TStvhKnFdci55eUpbp88q2FUSBcq-71Y20cWBuNC4ahHiEWddslYeXrpg6N4DQKSzZSspCKoWIVJ1WlHqVPauQStkd0pODLj1wvHmI6M0Grlw/s640/wolfpack-deployment.png&quot; width=&quot;451&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
1. A developer makes a change and triggers the CI build process. Unit tests run and a build is produced. Two NuGet packages are also produced - one contains the application deployment (lets say this is an ASP.Net website) and the other contains the smoke tests to verify the deployment and that the application is working correctly, at least enough to commit to more in-depth testing.&lt;/div&gt;
&lt;div&gt;
2. These two NuGet packages are uploaded to a NuGet feed server as part of the build script. There are several options here...&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.myget.org/&quot;&gt;MyGet - &quot;NaaS&quot;&lt;/a&gt; - NuGet as a Service&lt;/li&gt;
&lt;li&gt;Host your own - &lt;a href=&quot;http://docs.nuget.org/docs/contribute/setting-up-a-local-gallery&quot;&gt;instructions&lt;/a&gt; for hosting your own private gallery&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
3. Wolfpack is running and has the &quot;&lt;a href=&quot;http://wolfpackcontrib.codeplex.com/wikipage?title=Wolfpack.Contrib.Deployment&quot;&gt;Deployment&lt;/a&gt;&quot; plugin installed and configured to detect new versions of the Application Deployment NuGet package.&lt;/div&gt;
&lt;div&gt;
4. The Application Deployment NuGet package is downloaded from the feed and unpacked into the configured folder on the target server. The contents of the NuGet package could include MSI, BatchFile, Powershell script, MSBuild script etc or even something like a Dropkick deployment. Wolfpack will run the command line it has been configured for once the package contents have been unpacked.&lt;/div&gt;
&lt;div&gt;
5. Once the command line has completed a Wolfpack alert is generated based on the exit code of the process it started to perform the deployment. Wolfpack offers a number of plugins to communicate its alerts including email, hipchat, growl (prowl to smartphones).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
...phew...ok, we have automated the deployment side of things...the latest build of your application is installed on the target server - but does it work...is that new feature working or that bug fixed?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
6. Wolfpack can also be configured to go and check for a NuGet package update in response to ANY alert that it generates...perfect, the alert that told us the Application Deployment package had executed provides the trigger to check for a Smoke Test NuGet package update; as a new version has been created Wolfpack downloads it...&lt;br /&gt;
7. ...and as part of the download Wolfpack will also detect any dependencies your Smoke Test package has and download those too...what&#39;s that...your Test package has a dependency...on the NUnit.Runner package? No problem...that&#39;s been pulled down too, it saved you including it your package!&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right; text-align: right;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH_XMnjdXbt465SrqzYA5EVp1NSIhq0z0Opz4ldOhEwX6cTl1qlb8JTNgbf9gRGGepa0GzBKgIVPnb8TvqPonTBOD-_x2eBIk4z1VJFRcu-q6If8JTYp3xkaZLU4EfDQlZjawDuQ/s1600/nunit-deployment.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH_XMnjdXbt465SrqzYA5EVp1NSIhq0z0Opz4ldOhEwX6cTl1qlb8JTNgbf9gRGGepa0GzBKgIVPnb8TvqPonTBOD-_x2eBIk4z1VJFRcu-q6If8JTYp3xkaZLU4EfDQlZjawDuQ/s320/nunit-deployment.png&quot; width=&quot;203&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Wolfpack &quot;Growl&quot; alert containing test results&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
8. Ok, the Smoke Test package and all dependencies has been downloaded and unpacked...Wolfpack will now run the command line you have configured it with to execute the NUnit console app against the assemblies that contain your tests. This will produce an xml file containing the test results - Wolfpack will parse this and extract the pass/fail/skipped etc counts and...&lt;br /&gt;
9. Finally create an alert containing the test result information&lt;br /&gt;
10. Automated deployment and smoke test complete!&lt;br /&gt;
&lt;br /&gt;
The two alerts Wolfpack generated during this process can optionally be stored in a Wolfpack database - it supports SqlServer, SQLite &amp;amp; MongoDb at the moment. Storage of alerts allows you to query them in the future (for instance the duration of the deployment is captured) and to also hook this data up to some sort of visualisation...oh, did I mention that &lt;a href=&quot;http://wolfpack.codeplex.com/wikipage?title=Geckoboard%20Data%20Service&quot;&gt;Wolfpack has native support&lt;/a&gt; for &lt;a href=&quot;http://www.geckoboard.com/&quot;&gt;Geckoboard&lt;/a&gt;, one of the leading business intelligence dashboards?!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
Sidewinder&lt;/h3&gt;
Sidewinder is the silent partner in all of this. In order to leverage NuGet as a deployment package for my plugins I needed a wrapper around it to be able to control it from within Wolfpack. I also quickly realised that what I was trying to do was...&lt;br /&gt;
&lt;br /&gt;
A) not Wolfpack specific&lt;br /&gt;
B) able to deploy pretty much any file your application might need post installation.&lt;br /&gt;
&lt;br /&gt;
So I immediately started the &lt;a href=&quot;http://sidewinder.codeplex.com/&quot;&gt;Sidewinder Codeplex project&lt;/a&gt; and to ensure it &quot;delivered the goods&quot; I was to dog food it with Wolfpack. Sidewinder allows you to package files and deploy them from within your own application - these could be binaries (as in the case of a Wolfpack plugin) or content type files, anything really and it works like this...&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;You package up the new files you want to deploy into a NuGet package and publish this to a feed.&lt;/li&gt;
&lt;li&gt;In your application solution you reference Sidewinder via its NuGet package and add a small snippet of code that instructs Sidewinder to check for an update to the NuGet package that contains your updates.&lt;/li&gt;
&lt;li&gt;Sidewinder indicates if a new version is available and your application should quit running with a suitable message as it will have file locks on the very same files you might be updating.&lt;/li&gt;
&lt;li&gt;In the meantime the Sidewinder library has downloaded the NuGet package and unpacked it to a temp folder and launched Sidewinder.exe....this is waiting for your application, the one that launched it, to close...&lt;/li&gt;
&lt;li&gt;Once your app shuts down the waiting Sidewinder.exe completes the deployment by copying the contents of the temp folder to the root of your application.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Sidewinder can also be used independently to download ANY NuGet package (optionally plus dependent packages) and deploy it to ANY folder you choose - it doesn&#39;t have to be embedded directly in your application. To do this just call Sidewinder.exe from a command prompt with the name of the package to download and a folder to install it into like this...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: lime; font-family: Courier New, Courier, monospace;&quot;&gt;sidewinder.exe /p wolfpack /i d:\wolfpack&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This will download the entire Wolfpack install package and place it in d:\wolfpack - you are ready to rock with Wolfpack.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now - if you are familiar with Chocolatey you will be saying hold on a minute, this is what Chocolatey does...and better too (Sidewinder doesn&#39;t run any powershell scripts in your packages)...and you would be right to a degree. &amp;nbsp;Sidewinder was born to provide an update mechanism that was embedded internally to your application - if just so happens that a slight tweak to the original design allowed it to be used directly from the command prompt too. It&#39;s a lightweight, stripped down NuGet package installer can simply grabs the package and puts it into a folder of your choice.&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;
TripleA&lt;/h3&gt;
So far I&#39;ve illustrated Wolfpack (and Sidewinder as this does all the NuGet package downloading) in action...what about &lt;a href=&quot;http://triplea.codeplex.com/&quot;&gt;TripleA&lt;/a&gt; I hear you ask?&lt;/div&gt;
&lt;br /&gt;
TripleA is designed to make writing smoke or deployment verification tests a lot easier. It is not a new testing framework and it does not replace NUnit, MSpec etc - rather think of it as a set of extensible helpers that you can call from a test within your existing test framework that lets you arrange and assert things at a &quot;system&quot; level.&lt;br /&gt;
&lt;br /&gt;
It turns complex things into simple, parameterised one-liners(ish) that can arrange or assert something about your system.&lt;br /&gt;
&lt;br /&gt;
eg: your latest deployment should redirect users that belong to a specific role to a new landing web page. Think of the code involved to do that...ensure a user exists in the database for the role, call the web page and login with the user identity, assert that you are redirected to the expected url....it is not trivial stuff. TripleA makes this easy in four simple steps.&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Create the TripleA session and configure it with two steps...&lt;/li&gt;
&lt;li&gt;Add the custom sql step to add a new user to the database in the correct role&lt;/li&gt;
&lt;li&gt;Call the login webpage passing the credentials and asserting the redirect url is as expected&lt;/li&gt;
&lt;li&gt;Execute the session (think of this as a pipeline of arrange or act steps) and assert that the steps all passed.&lt;/li&gt;
&lt;/ol&gt;
TripleA ships with fairly good support for web, database (SqlServer), windows services, file system and process manipulation so you have a great chance it will work right out of the box for helping you verify a deployment of your system. It is also built from the ground up with extensibility in mind (all the built-in components are created using the extension framework so I know it works!) - you can roll new extensions really easily so creating domain specific arrange/asserts steps that developers can then easily use in new tests.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
You can do it&lt;/h2&gt;
You will need...&lt;br /&gt;
1. Wolfpack, grab the &lt;a href=&quot;http://wolfpack.codeplex.com/releases/view/85448&quot;&gt;zip from codeplex&lt;/a&gt; and unzip it (remember you might need to right click and &quot;unblock&quot; it before you unzip it).&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Wolfpack is a windows service but also runs as a console app, recommended to use it like this whilst you are evaluating it.&lt;/li&gt;
&lt;li&gt;In the next version (2.5) Wolfpack will be installable via Chocolatey&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
2. Install the &quot;deployment&quot; plugin. Simply open a command prompt and CD to the folder you unzipped Wolfpack to.&lt;br /&gt;
3. Type&amp;nbsp;&lt;span style=&quot;color: lime; font-family: Courier New, Courier, monospace;&quot;&gt;wolfpack.agent.exe /update:Wolfpack.Contrib.Deployment&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;This will download and install the dlls/config that contain the NuGet version check and automatic NUnit runner.&lt;/li&gt;
&lt;li&gt;You will need to follow the &lt;a href=&quot;http://wolfpackcontrib.codeplex.com/wikipage?title=NUnitDeploymentPublisher&quot;&gt;configuration guide here&lt;/a&gt; to set up these plugins&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
4. Create two &quot;demo&quot; NuGet packages - one with something you would like deployed and one with some NUnit tests in you would like run.&lt;br /&gt;
5. Wolfpack should deploy the former and execute the latter and send you an alert after it has done each!&lt;br /&gt;
&lt;br /&gt;
Hopefully I have demonstrated how Wolfpack, Sidewinder and TripleA work together to produce a free, open source automated deployment solution...and remember Wolfpack does a lot more...once installed on a server to automate your deployments it can also monitor a whole range of system parameters such as disk space, MSMQ&#39;s, cpu load, ssl certificate expiry to name a few!&lt;br /&gt;
&lt;br /&gt;
Some related posts of mine you might like...&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://jimblogdog.blogspot.co.uk/2010/10/introducingdeclarative-deployment.html&quot;&gt;DDVT&lt;/a&gt; - why you should approach your smoke tests/deployment verification with a declarative/bdd/test first stance.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://jimblogdog.blogspot.co.uk/2011/10/deployment-final-net-frontier.html&quot;&gt;Deployment, the final (.Net) frontier&lt;/a&gt; - I guess the post that really started the journey that this one finishes!&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Finally I&#39;d like to do more of these &quot;Walk-Thru&quot; guides for common scenarios where you might want to deploy Wolfpack. It&#39;s grown into a pretty extensive system and part of my frustration is getting the message out to people just what it is capable of - hopefully these &quot;walk-thru&quot; guides can help achieve this and if you have any requests I&#39;d be happy to consider doing a guide for your scenario. I&#39;ll probably put these on the Wolfpack codeplex wiki eventually - better to concentrate the documentation in one place.&lt;br /&gt;
&lt;br /&gt;
Some future guides I would like to write are...&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Using Wolfpack with Geckoboard - how to set up the &lt;a href=&quot;http://wolfpack.codeplex.com/wikipage?title=Geckoboard%20Data%20Service&amp;amp;referringTitle=Activities&quot;&gt;Wolfpack Geckoboard Activity&lt;/a&gt; to power your Geckoboard business dashboard.&lt;/li&gt;
&lt;li&gt;How Wolfpack can monitor your CI build - the &lt;a href=&quot;http://wolfpack.codeplex.com/wikipage?title=Build%20Analytics&amp;amp;referringTitle=Documentation&quot;&gt;BuildAnalytics feature&lt;/a&gt; allows you to monitor build status and extract stats from common build artifacts like test and coverage results.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wolfpack.codeplex.com/wikipage?title=AppStats&amp;amp;referringTitle=Documentation&quot;&gt;AppStats&lt;/a&gt; - how you can actively pump KPI/metrics into Wolfpack so they can be tracked (and visualised with Geckoboard).&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
As always if you have an issue or suggestion for any of these projects then the best place to get in contact is through their codeplex discussion page.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/1679037926790630948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/1679037926790630948' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/1679037926790630948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/1679037926790630948'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2012/08/walk-thru-using-wolfpack-to.html' title='Walk-Thru: Using Wolfpack to automatically deploy and smoke test your system'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6jeODmIMLXJk0hBUFXLrruVK29TStvhKnFdci55eUpbp88q2FUSBcq-71Y20cWBuNC4ahHiEWddslYeXrpg6N4DQKSzZSspCKoWIVJ1WlHqVPauQStkd0pODLj1wvHmI6M0Grlw/s72-c/wolfpack-deployment.png" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-5081831115285477215</id><published>2011-10-26T08:06:00.000+00:00</published><updated>2012-04-29T06:20:04.670+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="IoC"/><title type='text'>My ideal Bootstrapper...</title><content type='html'>[&lt;i&gt;Update 29-Apr-12&lt;/i&gt;] I&#39;ve revisited Bootstrapper for a new project and it &lt;b&gt;does&lt;/b&gt; register the StartupTasks in the IoC container and resolve them from there too (if you have your IoC extension before your StartupTasks) - this means any dependencies your StartupTask should be resolved. I don&#39;t know whether BootStrapper always did this or I was just too lazy to find it out - however with this feature you can pretty much disregard the following post!&lt;br /&gt;
&lt;br /&gt;
[&lt;i&gt;Original Post&lt;/i&gt;]&lt;br /&gt;
I like the Bootstrapper codeplex project - it&#39;s a nice clean approach to setting up your application....however...&lt;br /&gt;
&lt;br /&gt;
I have a specific requirement to satisfy as part of my bootstrap process and I&#39;m not sure if Bootstrapper can solve it. I&#39;ll be honest I thought it easier to write this post as I wanted to talk about my ideal Bootstrapper as well as someone hopefully telling me if Bootstrapper can do this or not!.&lt;br /&gt;
&lt;br /&gt;
Lets say I have an IoC container that needs configuring - easily done with Bootstrapper.&lt;br /&gt;
I also have some components that need running once to perform some one-time registration. These components require some configuration values from the config file (app/web.config). Bootstrapper provides the IStartupTask interface to allow components to perform this - sweet.&lt;br /&gt;
&lt;br /&gt;
I can just make a call to ConfigurationManager in my IStartupTask component(s) to pick up the relevant appSettings right?&lt;br /&gt;
&lt;br /&gt;
Wrong - this sucks....appSettings suck period as they are&amp;nbsp;insidious&amp;nbsp;dependencies that will break your code left right and centre if you don&#39;t know what they are. They have a place in the top level application but in &quot;components&quot; that could be used anywhere in the software stack? No, big no. The only way to understand where they are used is to search the code for &quot;.AppSetting&quot; - but what if they are in an assembly you don&#39;t have the code at hand to - well you keep trying to run it until you have smoked out all the settings! Bonkers!&lt;br /&gt;
&lt;br /&gt;
What I want is for the IStartupTask components to take a configuration object in the contructor - this makes it explicit and breaks the horrid appSettings dependency.....but....these constructor parameters will only be injected if the IStartupTasks are resolved through my IoC container (giving it a chance to do the injection).&lt;br /&gt;
&lt;br /&gt;
So my ideal Bootstrapper sequence is this....&lt;br /&gt;
&lt;br /&gt;
Initialise the IoC container&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Perform automatic programmatic registration (find all container registry/setup components and execute them).&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Process Xml config files &amp;nbsp;(this is where we would register our configuration components).&lt;br /&gt;
Scan for all IStartupTask implementations and load them into the Container&lt;br /&gt;
ResolveAll&lt;istartuptask&gt; components from the container and execute them - this would ensure any ctor dependencies would be injected thus providing our configuration values.&lt;/istartuptask&gt;&lt;br /&gt;
&lt;br /&gt;
I think I can write an extension method to the Bootstrapper to do this but it would be locked to the IoC container (there is no generic reference to get hold of ANY container used?) - not terrible though.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;istartuptask&gt;The key would be to introduce a &quot;common service locator&quot; wrapper over your IoC container in order for Bootstrapper to by able to add all IStartupTasks to the container and then perform a &quot;ResolveAll&lt;istartuptask&gt;&quot;&lt;/istartuptask&gt;&lt;/istartuptask&gt;&lt;br /&gt;
&lt;div&gt;
&lt;istartuptask&gt;&lt;br /&gt;
&lt;/istartuptask&gt;&lt;/div&gt;
&lt;div&gt;
&lt;istartuptask&gt;...hmmmm, that&#39;s a lot of work just to eradicate appSetting references! Are they so bad if they are used just in the IStartupTask components? - These startup components are unlikely to be used anywhere else in the code/stack....&lt;/istartuptask&gt;&lt;/div&gt;
&lt;div&gt;
&lt;istartuptask&gt;&lt;br /&gt;
&lt;/istartuptask&gt;&lt;/div&gt;
&lt;div&gt;
Your thoughts?&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/5081831115285477215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/5081831115285477215' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/5081831115285477215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/5081831115285477215'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2011/10/my-ideal-bootstrapper.html' title='My ideal Bootstrapper...'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-2626818054420601463</id><published>2011-10-14T09:42:00.000+00:00</published><updated>2012-05-02T08:00:53.713+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="deployment"/><category scheme="http://www.blogger.com/atom/ns#" term="MonitorWang"/><category scheme="http://www.blogger.com/atom/ns#" term="NuGet"/><category scheme="http://www.blogger.com/atom/ns#" term="productivity"/><category scheme="http://www.blogger.com/atom/ns#" term="Wolfpack"/><title type='text'>Deployment - the final (.Net) frontier</title><content type='html'>&lt;br /&gt;
&lt;i&gt;[Update 19th Apr 2012]&lt;/i&gt;&amp;nbsp;- mission complete!...v2.4.0 of Wolfpack has been released and this includes a new set of plugins that can automatically download a NuGet package then execute a deployment tool (eg: DropkicK, MSBuild.exe) - it can even run NUnit tests (via the console runner).&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://bit.ly/IXYJT7&quot;&gt;Wolfpack v2.4.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bit.ly/HPOrD0&quot;&gt;Wolfpack.Contrib.Deployment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br class=&quot;Apple-interchange-newline&quot; /&gt;&lt;br /&gt;
&lt;i&gt;[Original Post]&lt;/i&gt;&lt;br /&gt;
Another day, another project and deployment raises its head...&lt;br /&gt;
&lt;br /&gt;
Thinking that this problem must have been cracked by now I had a look around the .Net landscape and found two interesting solutions.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.octopusdeploy.com/&quot;&gt;Octopus Deploy&lt;/a&gt; - a .Net convention based deployment system using NuGet packages, loosely based on AppHarbour&#39;s approach.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/chucknorris/dropkick&quot;&gt;DropkicK&lt;/a&gt; (aka DK) - another awesome initiative from Dru Sellers et al.&lt;/li&gt;
&lt;/ul&gt;
I like the simplicity of Octopus but also like DK&#39;s &amp;nbsp;fluent code based deployment.&lt;br /&gt;
&lt;br /&gt;
Hmmm, this has got me thinking - Wolfpack could easily be adapted to be used as a deployment agent.&lt;br /&gt;
&lt;br /&gt;
Wolfpack can already &lt;a href=&quot;http://wolfpackcontrib.codeplex.com/wikipage?title=WolfPack.Contrib.Checks.NuGet&quot;&gt;monitor a NuGet feed for new package releases&lt;/a&gt; and currently sends an alert if a new version of a package is detected; a small modification would enable it to&amp;nbsp;instead&amp;nbsp;pull down and install the package. The package format would be NuGet and it would use DK to do the &quot;install&quot; (included in the package itself, Tools folder with some convention to find the DK deployment implementation dlls).&lt;br /&gt;
&lt;br /&gt;
You would create a NuGet feed per environment you need to deploy to. Each target machine would be running Wolfpack (akin to an Octopus &quot;Tentacle&quot;) which would be configured to monitor the associated (correct environment) NuGet feed. &quot;Deployment&quot; would simply consist of publishing the package to the feed, from this point on it would be automated by Wolfpack, detect, download, deploy -&amp;gt; after which Wolfpack would publish an alert to let you know what the outcome was (success/fail) plus some stats.&lt;br /&gt;
&lt;br /&gt;
Would I ever build this Wolfpack feature? I dunno, lets see...it&#39;s not a lot of code and it would give me an excuse to really play with DropkicK!&lt;br /&gt;
&lt;br /&gt;
Anyone interested in a deployment mashup with Wolfpack + NuGet + DropkicK?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/2626818054420601463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/2626818054420601463' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/2626818054420601463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/2626818054420601463'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2011/10/deployment-final-net-frontier.html' title='Deployment - the final (.Net) frontier'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-2697258270219113331</id><published>2011-09-02T14:54:00.000+00:00</published><updated>2011-09-02T14:54:12.518+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="NuGet"/><category scheme="http://www.blogger.com/atom/ns#" term="Sidewinder"/><category scheme="http://www.blogger.com/atom/ns#" term="Wolfpack"/><title type='text'>Wolfpack vNext = vExcited</title><content type='html'>I&#39;m getting excited about the next release of Wolfpack (v2.3). It&#39;s going to be the first application &amp;nbsp;that uses &lt;a href=&quot;http://bit.ly/qV1QvP&quot;&gt;Sidewinder&lt;/a&gt;&amp;nbsp;(unless someone beats me to it with my own framework!).&lt;br /&gt;
&lt;br /&gt;
I&#39;d been discussing updates and NuGet with a few people and wondered how it could be applied to Wolfpack - its plugin architecture makes it a perfect candidate for being able to download or upgrade plugins plus I also wanted to explore a better way of upgrading the entire install - make this as painless as possible.&lt;br /&gt;
&lt;br /&gt;
Taking inspiration from the NuGet.exe commandline app that self updates I had a look at the code and took the plunge and created Sidewinder. I&#39;ll let you investigate Sidewinder yourself (if it sounds interesting) but wanted to share what this will mean when it lands in the next version of Wolfpack and how I plan to use it.&lt;br /&gt;
&lt;br /&gt;
Wolfpack is a pluggable, modular system - a number of contrib projects have sprung up and a few dedicated individuals have invested time and effort into adding to the HealthCheck and Publisher plugins available (Thanks guys!). Sidewinder, harnessing NuGet will bring application update to your Wolfpack installation but also provides it with the ability to pull down new plugins and deploy them into your Wolfpack installation folder (including any configuration files required).&lt;br /&gt;
&lt;br /&gt;
Updating your Wolfpack install will be as simple as running...&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Wolfpack.Agent.exe /update&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
That&#39;s it - the entire installation will be updated if a new version has been published. Your configuration files will not be updated, only new configuration files will be installed - existing ones will remain unchanged and will need manual update if changed (I&#39;m working on a mechanism to allow the update to make changes as part of the install).&lt;br /&gt;
&lt;br /&gt;
Wolfpack vNext is also taking the first steps towards a more modular system. Feedback has highlighted that the system contains lots of functionality, AppStats, BuildAnalytics, NServiceBus, WCF, Growl, Geckoboard and it would be good to split these away from a &quot;Core&quot; system - making these optional sub-systems that you use if required/suitable for you. I&#39;ve fragmented the configuration files and started to look at turning these areas of Wolkpack into separate packages to be delivered via Sidewinder. I am also refactoring the Wolfpack.Contrib components into new NuGet packages that can be delivered with Sidewinder...they will be the first plugin test pilot packages for Wolfpack/Sidewinder!&lt;br /&gt;
&lt;br /&gt;
Finally Wolfpack vNext has got some other improvements including...&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Logging improvements to it&#39;s startup code it make it easier to debug/understand/fix configuration issues.&lt;/li&gt;
&lt;li&gt;New HealthCheck - Host (ICMP) Ping&lt;/li&gt;
&lt;li&gt;Ability to load HealthCheck components directly into the IoC container (this makes DI into the check possible now)&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;A really cool new feature developed by Phil Bolduc is a Powershell HealthCheck - this health check can execute a powershell script to perform any tests/checks you need - this is in beta and will be delivered after vNext as an optional package like this.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Wolfpack vNext will be appearing in a NuGet gallery near your very soon!</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/2697258270219113331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/2697258270219113331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/2697258270219113331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/2697258270219113331'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2011/09/wolfpack-vnext-vexcited.html' title='Wolfpack vNext = vExcited'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-5511525959997390710</id><published>2011-06-28T07:25:00.000+00:00</published><updated>2011-06-28T07:25:44.265+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Geckoboard"/><category scheme="http://www.blogger.com/atom/ns#" term="MonitorWang"/><category scheme="http://www.blogger.com/atom/ns#" term="productivity"/><category scheme="http://www.blogger.com/atom/ns#" term="Wolfpack"/><title type='text'>Wolfpack v2.1 (Build Analytics)</title><content type='html'>Hurrah! &lt;a href=&quot;http://bit.ly/ma2WVV&quot;&gt;Version 2.1 of Wolfpack&lt;/a&gt; (formally MonitorWang) is released!&lt;br /&gt;
&lt;br /&gt;
This release is all about &quot;&lt;a href=&quot;http://bit.ly/kWGwXA&quot;&gt;Build Analytics&lt;/a&gt;&quot; - a new set of plugins allow you to monitor the state of a TeamCity build configuration and then once this is complete it can extract stats from any* build tool run as part of it.&lt;br /&gt;
&lt;br /&gt;
* When I say any I mean it supports NCover, SpecFlow, StoryQ reports but as usual with Wolfpack it is easy to create your own parsers to extract from any tool you might use, eg: NDepends, FxCop. It is also simple to extend it to cover other build systems like TFS, CruiseControl.&lt;br /&gt;
&lt;br /&gt;
The final piece of the puzzle of to visualise this information and the Wolfpack Geckoboard Data Service does a great job of this - it allows you to display these stats directly in your &lt;a href=&quot;http://www.geckoboard.com/&quot;&gt;Geckoboard&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-xLcZ8ABOrLmbHGGzJvCHW2o48dEGJhbsNUPjyXCMZWFVk0GO8huhIUjcUzXEae_Br8U7eWYG7a8nhfY_1rxeCqEcLtMpvQjl2MKbNHZ4Ciq0GKzzBJSLDZ-NTOqqWPgZgAkG7A/s1600/buildanalytics.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;158&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-xLcZ8ABOrLmbHGGzJvCHW2o48dEGJhbsNUPjyXCMZWFVk0GO8huhIUjcUzXEae_Br8U7eWYG7a8nhfY_1rxeCqEcLtMpvQjl2MKbNHZ4Ciq0GKzzBJSLDZ-NTOqqWPgZgAkG7A/s400/buildanalytics.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibCkZZgI5IyyqoSmD0D9pJFsyC7jVo4F-C1lwyuNQEf6Kqw3B41amkALcaGgltnbnAMJDxMFRpIljZZvAIZ1280K0kmryyDr6Kk78wJBGSpq9urHyKoMEMemAypgmydj2dsh6FIg/s1600/buildanalytics-meter.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;193&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibCkZZgI5IyyqoSmD0D9pJFsyC7jVo4F-C1lwyuNQEf6Kqw3B41amkALcaGgltnbnAMJDxMFRpIljZZvAIZ1280K0kmryyDr6Kk78wJBGSpq9urHyKoMEMemAypgmydj2dsh6FIg/s200/buildanalytics-meter.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/5511525959997390710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/5511525959997390710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/5511525959997390710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/5511525959997390710'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2011/06/wolfpack-v21-build-analytics.html' title='Wolfpack v2.1 (Build Analytics)'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-xLcZ8ABOrLmbHGGzJvCHW2o48dEGJhbsNUPjyXCMZWFVk0GO8huhIUjcUzXEae_Br8U7eWYG7a8nhfY_1rxeCqEcLtMpvQjl2MKbNHZ4Ciq0GKzzBJSLDZ-NTOqqWPgZgAkG7A/s72-c/buildanalytics.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-6896968841572671511</id><published>2011-05-20T11:31:00.000+00:00</published><updated>2011-05-20T11:31:13.852+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MonitorWang"/><category scheme="http://www.blogger.com/atom/ns#" term="productivity"/><title type='text'>Developers have Friday &quot;playtime&quot;?</title><content type='html'>I&#39;ve observed an interesting trend from my download statistics on my main open source project, &lt;a href=&quot;http://monitorwang.codeplex.com/&quot;&gt;MonitorWang&lt;/a&gt;...that downloads often increase on a Friday.&lt;br /&gt;
&lt;br /&gt;
What can we infer from this?&lt;br /&gt;
&lt;br /&gt;
Developers have some down time to look at &quot;other&quot; stuff on Friday? Interesting to know how official this is or just people getting bored with the humdrum stuff and looking for something interesting to do at the end of the week?&lt;br /&gt;
&lt;br /&gt;
MonitorWang&#39;s official birthday is 8th August when I first uploaded it to codeplex however it was in conception &amp;amp; development way before that so it&#39;s almost a year old. It&#39;s racked up over 1000 downloads and I&#39;ve got some big plans for it to be revealed shortly. More importantly I&#39;m starting to get feedback and success stories of it in use which is the icing on the cake - 1000 downloads means nothing if it&#39;s not of value to someone!&lt;br /&gt;
&lt;br /&gt;
Thanks to everyone that has helped shape &amp;amp; contribute to it, in particular Rob Gibbens and David Strickland. I&#39;ve hopefully got some case studies of it being put to use to illustrate further how it can form a valuable piece of your software/ops process.</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/6896968841572671511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/6896968841572671511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/6896968841572671511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/6896968841572671511'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2011/05/developers-have-friday-playtime.html' title='Developers have Friday &quot;playtime&quot;?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-194062586067627579</id><published>2011-05-11T22:30:00.000+00:00</published><updated>2011-05-11T22:30:37.200+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MonitorWang"/><title type='text'>MonitorWang v1.0.8 released</title><content type='html'>It&#39;s taken a while to get this one out - mainly due to a combination of sunny weather and a series of Bank Holidays (and the odd beer festival!).&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://monitorwang.codeplex.com/releases/view/63030&quot;&gt;MonitorWang v1.0.8&lt;/a&gt; is released!&lt;br /&gt;
&lt;br /&gt;
This is a big release - several bug fixes and rebuilds against the latest 3rd party libraries, Magnum, TopShelf and NServiceBus plus a major new feature - &lt;a href=&quot;http://monitorwang.codeplex.com/wikipage?title=AppStats&quot;&gt;AppStats&lt;/a&gt;&amp;nbsp;(all the details here including the Etsy inspiration behind it).&lt;br /&gt;
&lt;br /&gt;
Comments and feedback welcome (via the codeplex discussions page)</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/194062586067627579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/194062586067627579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/194062586067627579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/194062586067627579'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2011/05/monitorwang-v108-released.html' title='MonitorWang v1.0.8 released'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-8266852752540452511</id><published>2011-04-18T10:38:00.000+00:00</published><updated>2011-04-18T10:38:15.071+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="fun"/><category scheme="http://www.blogger.com/atom/ns#" term="gadgets"/><category scheme="http://www.blogger.com/atom/ns#" term="richmansplaything"/><title type='text'>Rich and mad?</title><content type='html'>...then you need a &lt;a href=&quot;http://bit.ly/fSz2D7&quot;&gt;FlyNano&lt;/a&gt; in your toy garage (to compliment your &lt;a href=&quot;http://bit.ly/f9f1VX&quot;&gt;Seabreacher X&lt;/a&gt;)</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/8266852752540452511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/8266852752540452511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/8266852752540452511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/8266852752540452511'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2011/04/rich-and-mad.html' title='Rich and mad?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-7282767712241935557</id><published>2011-03-30T13:53:00.000+00:00</published><updated>2011-03-30T13:53:01.280+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MonitorWang"/><category scheme="http://www.blogger.com/atom/ns#" term="NuGet"/><category scheme="http://www.blogger.com/atom/ns#" term="productivity"/><category scheme="http://www.blogger.com/atom/ns#" term="recommended"/><category scheme="http://www.blogger.com/atom/ns#" term="roundup"/><title type='text'>Spring Roundup</title><content type='html'>&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://podio.com/&quot;&gt;Podio&lt;/a&gt;&amp;nbsp;- currently being wowed by this web application. It&#39;s a highly customisable collaborative &quot;space&quot; for your team to manage there activities. Essentially you create a &quot;space&quot; then populate it with the apps (widgets) that have the greatest affinity with what your &quot;space&quot; is about. So if you were collaborating on a new website then you will use apps from the software development pack (suite of apps) but you can mix and match apps from any category to provide a completely customised environment to manage your work &amp;amp; team with. This concept is excellent as I&#39;ve used many &quot;management&quot; type sites, must notably (and well known) being Basecamp and found it good but not great - its suitability &amp;amp; popularity varied between project/client - with Podio you can tune the environment to ensure that you only have the features you need and even better you can create your own apps if there is nothing suitable available; I&#39;ve not tried this feature yet but think it&#39;s the ultimate feature!&amp;nbsp;Great user support from the guys there too - very responsive and from the fairly small amount of time I&#39;ve spent with it so far (I&#39;m running a new project from it) it&#39;s been a robust and good quality application but performance can be a little slow, something I think the team there are working on though.&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Summary: Highly recommend this if you aren&#39;t 100% happy with your current project management tools, well worth a testdrive! (free plan/signup)&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://www.nextiteration.de/SourceMeet/Home&quot;&gt;Source Meet&lt;/a&gt;&amp;nbsp;(via -&amp;nbsp;&lt;a href=&quot;http://coolthingoftheday.blogspot.com/2011/03/good-to-meet-you-source-and-you-source.html&quot;&gt;Greg&#39;s Cool [Insert Clever Name] of the Day&lt;/a&gt;) - this looks great! I&#39;m interested in this as I&#39;ve started to get contributors on my OSS project&amp;nbsp;&lt;a href=&quot;http://monitorwang.codeplex.com/&quot;&gt;MonitorWang&lt;/a&gt;&amp;nbsp;and this tool looks just the job for some remote pair programming and idea shaping.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&quot;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px; line-height: 22px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Source Meet&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px; line-height: 22px;&quot;&gt;&amp;nbsp;enables software developers to directly and quickly view and edit source code together, wherever they are and in the&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px; line-height: 22px;&quot;&gt;&lt;a class=&quot;mb&quot; href=&quot;http://www.nextiteration.de/images/screenshots/section1-03.jpg&quot; id=&quot;A1&quot; rel=&quot;type:jpg&quot; runat=&quot;server&quot; style=&quot;color: #d75600; font-family: Arial, Helvetica, sans-serif; text-decoration: none;&quot; title=&quot;Integration into Visual Studio™&quot;&gt;development environment they are familiar with&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px; line-height: 22px;&quot;&gt;. Not only all of the&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px; line-height: 22px;&quot;&gt;&lt;a class=&quot;mb&quot; href=&quot;http://www.nextiteration.de/images/screenshots/section4-04.jpg&quot; id=&quot;A4&quot; rel=&quot;type:jpg&quot; runat=&quot;server&quot; style=&quot;color: #d75600; font-family: Arial, Helvetica, sans-serif; text-decoration: none;&quot; title=&quot;Source Meeting with opened editor&quot;&gt;modifications to the document, but also conditions such as highlighting or position changes are synchronized in real-time&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px; line-height: 22px;&quot;&gt;&amp;nbsp;with all participants. The additional combination with&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px; line-height: 22px;&quot;&gt;&lt;a class=&quot;mb&quot; href=&quot;http://www.nextiteration.de/images/screenshots/section3-01.jpg&quot; id=&quot;A3&quot; rel=&quot;type:jpg&quot; runat=&quot;server&quot; style=&quot;color: #d75600; font-family: Arial, Helvetica, sans-serif; text-decoration: none;&quot; title=&quot;Send and receive text-messages&quot;&gt;Instant Messaging&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 15px; line-height: 22px;&quot;&gt;, virtual team grouping and context-sensitive collaboration significantly enhances the efficiency in cooperation for development teams&lt;/span&gt;&lt;/i&gt;&quot;.&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://nuget.org/&quot;&gt;NuGet&lt;/a&gt;&amp;nbsp;- the .Net package management system. This is something I&#39;ve been following but not actively used, however a contributor to MonitorWang, Rob Gibbens packaged the assemblies required to create your own custom MonitorWang plugins and I have to say it&#39;s impressive stuff, a really slick way to get people connected to your code/components. Thanks Rob for introducing this!&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;The packages below give you the required MonitorWang assemblies to allow you to develop custom MonitorWang plugins...just choose your flavour!&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://bit.ly/hkzPl8&quot;&gt;MonitorWang Publisher Developer Package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bit.ly/eL5USC&quot;&gt;MonitorWang HealthCheck Developer Package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/7282767712241935557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/7282767712241935557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/7282767712241935557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/7282767712241935557'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2011/03/spring-roundup.html' title='Spring Roundup'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-8547491425318724029</id><published>2011-02-17T08:26:00.001+00:00</published><updated>2011-02-17T23:06:37.438+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Geckoboard"/><category scheme="http://www.blogger.com/atom/ns#" term="google"/><title type='text'>Google Infographic Tool + Geckoboard?</title><content type='html'>So just saw &lt;a href=&quot;http://www.fastcodesign.com/1663247/google-opens-up-infographic-tools-for-everyones-use&quot;&gt;this&lt;/a&gt; (via &lt;a href=&quot;http://twitter.com/hugorodgerbrown&quot;&gt;@hugorodgerbrown&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
You can upload your data and visualise it - if you use &lt;a href=&quot;http://www.geckoboard.com/&quot;&gt;Geckoboard&lt;/a&gt; for your business dashboard then how about a mashup - want to map your biggest customers? Order hotspots? you name it - it would now appear possible...just need to work out how to get the Google output into Geckoboard....anyone?</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/8547491425318724029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/8547491425318724029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/8547491425318724029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/8547491425318724029'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2011/02/google-infographic-tool-geckoboard.html' title='Google Infographic Tool + Geckoboard?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-2028722769782131510</id><published>2011-01-25T10:26:00.000+00:00</published><updated>2011-01-25T10:26:56.668+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Home Automation"/><category scheme="http://www.blogger.com/atom/ns#" term="productivity"/><category scheme="http://www.blogger.com/atom/ns#" term="roundup"/><title type='text'>Roundup</title><content type='html'>Another roundup post to cover a few things of interest I&#39;ve discovered lately....&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;(via Automated Home)&lt;/i&gt; comes the &lt;a href=&quot;http://www.automatedhome.co.uk/New-Products/Kwikwai-Bridges-HDMI-CEC-to-Ethernet-USB-and-Serial.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+AutomatedHome+%28Automated+Home%29&amp;amp;utm_content=Google+UK&quot;&gt;HDMI hacker box from Kwikwai&lt;/a&gt; - it allows you to bridge home automation systems into AV equipment, eg: send a text string to your TV OSD! CEC is an optional command channel built into HDMI that allows commands to be sent from one device to another - eg: when you turn your TV off it sends a turn off command back down to your DVD player connected to it. This box allows you to sit in between devices and fake commands or just discover (sniff them).&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;(via HRB/JasonFried/Twitter)&lt;/i&gt; Great post on &lt;a href=&quot;http://www.nfib.com/mybusiness-magazine/operational-insight&quot;&gt;un-managing your team&lt;/a&gt; to unlock potential from a guy at 37signals (basecamp). Superb post - a must read! 37signals are rewritting the development team book!</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/2028722769782131510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/2028722769782131510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/2028722769782131510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/2028722769782131510'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2011/01/roundup.html' title='Roundup'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-9047189428589211264</id><published>2011-01-14T12:27:00.000+00:00</published><updated>2011-01-14T12:27:54.024+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ESB"/><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>NServiceBus and BizSpark</title><content type='html'>Just seen a post by &lt;a href=&quot;http://tech.groups.yahoo.com/group/nservicebus/message/9755&quot;&gt;Udi Dahan about NServiceBus (NSB) licensing&lt;/a&gt; and companies that participate in &lt;a href=&quot;http://www.bizspark.com/&quot;&gt;Microsofts BizSpark program&lt;/a&gt; (which I/mine does :-).&lt;br /&gt;
&lt;br /&gt;
Essentially...&lt;br /&gt;
&quot;&lt;i&gt;So, if you&#39;re company is in&amp;nbsp; BizSpark, in addition to all the software you&#39;re getting for free from Microsoft, I&#39;m happy to offer you a free NServiceBus Foundation license or $1500 off a Standard license. That includes support&lt;/i&gt;&quot;.&lt;br /&gt;
&lt;br /&gt;
The new NSB licensing model is pretty well thought out but still restrictive in terms of physical layout of applications - the community license (and even other licenses) only allow it to run a single machine - if you want to use it across machines then it&#39;s big bucks (as far as I understand it).&lt;br /&gt;
&lt;br /&gt;
Anyway - if you are in BizSpark, check the &lt;a href=&quot;http://tech.groups.yahoo.com/group/nservicebus/message/9755&quot;&gt;link&lt;/a&gt; out to benefit from Udi&#39;s/NSB Limited generosity.</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/9047189428589211264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/9047189428589211264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/9047189428589211264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/9047189428589211264'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2011/01/nservicebus-and-bizspark.html' title='NServiceBus and BizSpark'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-1161133299274832086</id><published>2011-01-13T13:43:00.001+00:00</published><updated>2011-01-13T13:43:49.040+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Business"/><title type='text'>These are the &#39;droid&#39;s you&#39;re looking for!</title><content type='html'>I recently posted about &lt;a href=&quot;http://jimblogdog.blogspot.com/2011/01/why-brand-needs-as-open-api.html&quot;&gt;Brands and API&#39;s&lt;/a&gt; and in it I mentioned the rise of Android and &lt;a href=&quot;http://on.mash.to/gXOVu8&quot;&gt;this new article&lt;/a&gt; on mashable confirms things....&lt;i&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Some great stats in the article if you are interested in the smartphone market. Ok, - it is from a single company but I think it shows the general trend - Android is big and getting bigger, fast....now, how&#39;s that app coming on? ;-)</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/1161133299274832086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/1161133299274832086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/1161133299274832086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/1161133299274832086'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2011/01/these-are-droids-you-are-looking-for.html' title='These are the &#39;droid&#39;s you&#39;re looking for!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-6503442983639269907</id><published>2011-01-06T15:13:00.001+00:00</published><updated>2011-01-06T15:30:50.639+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MonitorWang"/><title type='text'>MonitorWang v1.0.6 released</title><content type='html'>Just a quick note to say that I&#39;ve released v1.0.6 of MonitorWang - all the details are &lt;a href=&quot;http://monitorwang.codeplex.com/releases/view/58618&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The main focus of this release is to add some more HealthChecks...&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Windows Service State and Startup type Checks - monitors that services are in the expected state (eg: running) and have the correct startup type (eg: automatic).&lt;/li&gt;
&lt;li&gt;Url Ping - pings your urls checking for http failures and slow performance (response threshold configurable)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
PS: I&#39;d love to hear from &lt;b&gt;anyone using MonitorWang&lt;/b&gt; - what sort of checks are you running, any problems or suggestions you have would be great!&lt;br /&gt;
&lt;br /&gt;
J</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/6503442983639269907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/6503442983639269907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/6503442983639269907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/6503442983639269907'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2011/01/monitorwang-v106-released.html' title='MonitorWang v1.0.6 released'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-8670481997740501367</id><published>2011-01-05T10:43:00.002+00:00</published><updated>2011-01-06T10:03:42.207+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API"/><category scheme="http://www.blogger.com/atom/ns#" term="Business"/><category scheme="http://www.blogger.com/atom/ns#" term="Geckoboard"/><title type='text'>Why a Brand needs an Open API</title><content type='html'>This is a &lt;a href=&quot;http://mashable.com/2011/01/04/brand-open-api-developers/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+Mashable+%28Mashable%29&amp;amp;utm_content=Google+UK&quot;&gt;great article&lt;/a&gt; by &lt;i&gt;Adam Kleinberg &lt;/i&gt;on how a brand and enabling third parties to write exciting applications and mashups targeting new channels via your Api is &lt;i&gt;so important&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
The resources required to produce a website and accompanying iPhone app can be significant - what if you invested in your business/eCommerce API and a referral/developer programme instead?&lt;br /&gt;
&lt;br /&gt;
The world becomes your development partner and ANYONE can start creating applications backed by YOUR business.&lt;br /&gt;
&lt;br /&gt;
Take Android as an example - it&#39;s gaining market share at such a rapid pace that you will need an Android App soon to stay in the game as it&#39;s not a sector you can afford to ignore. Pouring all your money into a specific vendor channel (say iPhone) could mean you are left out in the cold when other technologies/forms/channels become viable. With an API in place it would be a simple, cheaper exercise in creating an Android application on top of the API calls - and the API gives you options in how you go about this; give the API docs to an off-shore resource, in-house team or let some bright spark come to you with their app or idea.&lt;br /&gt;
&lt;br /&gt;
Sure you will always need YOUR website but an API &quot;powers the possible&quot; - who knows what killer mashup someone out there could dream up tomorrow - and your business could benefit from it with thousands of new sales. You have the infrastructure to process sales and transactions - let the other 6,891,463,699-ish people (world population as of today) figure out how to make money out of it for you. &lt;br /&gt;
&lt;br /&gt;
2011 - year of the API! (Oh and &lt;a href=&quot;http://geckoboard.com/&quot;&gt;Geckoboard&lt;/a&gt;, 2011 is all about the dashboard)&lt;br /&gt;
&lt;br /&gt;
Happy New Year Everyone!</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/8670481997740501367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/8670481997740501367' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/8670481997740501367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/8670481997740501367'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2011/01/why-brand-needs-as-open-api.html' title='Why a Brand needs an Open API'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-8215167859130950732</id><published>2010-12-29T20:32:00.000+00:00</published><updated>2010-12-29T20:32:47.441+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MonitorWang"/><title type='text'>MonitorWang v1.0.5 released</title><content type='html'>Just a quick note to say that I&#39;ve released v1.0.5 of MonitorWang - all the details are &lt;a href=&quot;http://monitorwang.codeplex.com/releases/view/58036&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The main feature is &quot;Growl Notification Finalisers&quot; - these allow you to modify the Growl notification based on the result or result count plus you can easily write your own Finaliser to adjust the Growl Notification priority or message text based on your custom logic.&lt;br /&gt;
&lt;br /&gt;
There is also a major bugfix to the Castle Interceptor logic that affects the Publisher Filters.&lt;br /&gt;
&lt;br /&gt;
Enjoy - please report any problems via the &quot;discussions&quot; tab on the codeplex site.</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/8215167859130950732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/8215167859130950732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/8215167859130950732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/8215167859130950732'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2010/12/monitorwang-v105-released.html' title='MonitorWang v1.0.5 released'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-4871194671566570526</id><published>2010-12-25T17:18:00.001+00:00</published><updated>2010-12-25T17:19:13.509+00:00</updated><title type='text'>Pass it down the line...</title><content type='html'>Just &lt;a href=&quot;http://www.bbc.co.uk/news/magazine-12043294&quot;&gt;read this&lt;/a&gt; on the BBC News website and thought it a lovely heart warming story - just remember....&quot;pass it down the line&quot;.&lt;br /&gt;
&lt;br /&gt;
Merry Christmas!</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/4871194671566570526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/4871194671566570526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/4871194671566570526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/4871194671566570526'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2010/12/pass-it-down-line.html' title='Pass it down the line...'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-4396580189858419803</id><published>2010-12-08T23:01:00.000+00:00</published><updated>2010-12-08T23:01:16.530+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Geckoboard"/><category scheme="http://www.blogger.com/atom/ns#" term="MonitorWang"/><title type='text'>MonitorWang v1.0.4 released</title><content type='html'>Big release this....&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Added support for SQLite databases&lt;/li&gt;
&lt;li&gt;Added a check that captures energy usage data from an Owl Energy Monitor&lt;/li&gt;
&lt;li&gt;Added Publisher Filters to allow you to hook custom logic into the publication process&lt;/li&gt;
&lt;li&gt;Added support for swapping between data sources for you Geckoboard Data Service Activity&lt;/li&gt;
&lt;li&gt;Plus a refactor of the internal HealthCheck/Publisher mechanism (now uses the cool Magnum Pipeline components) &lt;/li&gt;
&lt;/ul&gt;More details on the &lt;a href=&quot;http://bit.ly/hWNjiW&quot;&gt;v1.0.4 codeplex release&lt;/a&gt; page.</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/4396580189858419803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/4396580189858419803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/4396580189858419803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/4396580189858419803'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2010/12/monitorwang-v104-released.html' title='MonitorWang v1.0.4 released'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-4241426032420828210</id><published>2010-11-16T11:12:00.000+00:00</published><updated>2010-11-16T11:12:54.694+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Geckoboard"/><category scheme="http://www.blogger.com/atom/ns#" term="GeckoboardApps"/><title type='text'>FreeAgent Geckoboard widgets....its a trust thing</title><content type='html'>So I&#39;ve been looking at how simple it would be to get &lt;a href=&quot;http://geckoboard.com/&quot;&gt;Geckoboard&lt;/a&gt; widgets up and running to visualise your &lt;a href=&quot;http://www.freeagentcentral.com/&quot;&gt;FreeAgent&lt;/a&gt; data....and the answer is, pretty easy really. The idea I had was for a text widget to display your due invoices. The &lt;a href=&quot;http://www.freeagentcentral.com/developers/freeagent-api#api_invoices&quot;&gt;FA api is pretty comprehensive&lt;/a&gt; and this data is available via REST as XML - authentication is http basic using your FA username and password.&lt;br /&gt;
&lt;br /&gt;
I created a new FA widget user for my account and assigned it permissions up to the Invoicing Level - this protects my more sensitive data. Wrap all this up in a Google-AppEngine (GAE) app and there you have it - your FA pending invoices....&lt;br /&gt;
&lt;br /&gt;
In glorious public view....oh dear&lt;br /&gt;
&lt;br /&gt;
Ok, no problem - we use the Geckoboard ApiKey to secure it so that only requests with the correct ApiKey (that we set in the widget configuration) will be allowed access to the feed. Or rather &lt;i&gt;I&lt;/i&gt; use &lt;i&gt;my&lt;/i&gt; Apikey - it works in my GAE app as I can hard code the apikey check into it...this app instance cannot be used to provide FA data for &lt;i&gt;your&lt;/i&gt; account as it means sharing your ApiKey with me...hhmmm - as trustworthy as I am and with a lock down FA user it&#39;s still too unsecure for my GAE widget to provide your FA data. I could generate and share a unique ApiKey for your widget but that&#39;s not what I want - I don&#39;t want to have to administer this in any form!&lt;br /&gt;
&lt;br /&gt;
Furthermore - my GAE app would also need your FA widget user credentials to be able to make the FA api call to grab the data - you don&#39;t want to provide this on the url as querystring params and it can&#39;t be POSTed from your Geckoboard widget. Ideally you would tell me them - I would store them and use them when your widget called for the data - not something I want to do/offer from my what was once simple FA widget data feed!&lt;br /&gt;
&lt;br /&gt;
So this problem makes something like &lt;a href=&quot;http://geckoboardapps.com/&quot;&gt;GeckoboardApps&lt;/a&gt; make a hell of a lot of sense. They already have the ApiKey problem licked with a random key and feed url and I suspect storing any credentials securely is also part of the package! Nice...</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/4241426032420828210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/4241426032420828210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/4241426032420828210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/4241426032420828210'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2010/11/freeagent-geckoboard-widgetsits-trust.html' title='FreeAgent Geckoboard widgets....its a trust thing'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-4503245954365433046</id><published>2010-11-15T14:37:00.000+00:00</published><updated>2010-11-15T14:37:02.632+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="fun"/><title type='text'>Kinect does Minority Report...</title><content type='html'>via &lt;a href=&quot;http://gizmodo.com/5688319/minority-report-courtesy-of-kinect&quot;&gt;Gizmodo&lt;/a&gt;...&lt;br /&gt;
&lt;br /&gt;
&lt;object height=&quot;290&quot; width=&quot;440&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/ho6Yhz21BJI&amp;hl=en_US&amp;feature=player_embedded&amp;version=3&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/ho6Yhz21BJI&amp;hl=en_US&amp;feature=player_embedded&amp;version=3&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowScriptAccess=&quot;always&quot; width=&quot;440&quot; height=&quot;290&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/4503245954365433046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/4503245954365433046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/4503245954365433046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/4503245954365433046'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2010/11/kinect-does-minority-report.html' title='Kinect does Minority Report...'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-4385867118477648753</id><published>2010-11-15T09:32:00.001+00:00</published><updated>2010-11-15T13:23:00.954+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Business"/><category scheme="http://www.blogger.com/atom/ns#" term="FreeAgent"/><title type='text'>FreeAgent - accounting made simple!</title><content type='html'>About 6 months ago I swapped accountants - I had a pretty good, fully online accountant but was introduced to &lt;a href=&quot;http://www.freeagentcentral.com/&quot;&gt;FreeAgent&lt;/a&gt; - did the free 30 day trial and was hooked - it did everything my accountants system did but better, much better....oh and soooo much cheaper, £100 a month cheaper! It handles Payroll, Salary, VAT, NIC, Invoicing, Expenses, Bank Account...the lot (my personal fav is the &lt;a href=&quot;http://www.outofpocketapp.com/&quot;&gt;Out-of-Pocket iPhone app&lt;/a&gt; that lets you submit expense claims direct to your FreeAgent account!)&lt;br /&gt;
&lt;br /&gt;
Of course I immediately used this saving to justify an iPad purchase, but that aside and six months on I can totally recommend FreeAgent. I still have an accountant, a new one, &lt;a href=&quot;http://www.kpfaccountancy.com/&quot;&gt;KPF Accountants&lt;/a&gt; - these guys are FreeAgent experts - and are really just there to get your Company Year End accounts in order...which they have just done...which makes me happy!&lt;br /&gt;
&lt;br /&gt;
So to celebrate and spread the FreeAgent &amp;amp; KPF love for a great cost effective accounting solution (&amp;amp; referral discounts all round!) I thought I&#39;d let you know about it. A FreeAgent account is about £25/month, £45/month through KPF (which includes your company year end processing PLUS the FreeAgent account)....and the &lt;a href=&quot;http://www.freeagentcentral.com/support/kb/misc/the-freeagent-referral-scheme&quot;&gt;excellent FreeAgent referral program&lt;/a&gt; offers 10% discount to both you and me if you use the &quot;I heart FreeAgent&quot; badge (or &lt;a href=&quot;http://fre.ag/360uqfc4&quot;&gt;this link&lt;/a&gt;) on the right sidebar of this blog.</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/4385867118477648753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/4385867118477648753' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/4385867118477648753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/4385867118477648753'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2010/11/freeagent-accounting-made-simple.html' title='FreeAgent - accounting made simple!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-4362251604803940528</id><published>2010-11-12T14:11:00.000+00:00</published><updated>2010-11-12T14:11:27.485+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="fun"/><title type='text'>Web Designers vs Web Developers...LOL</title><content type='html'>from &lt;a href=&quot;http://sixrevisions.com/infographs/web-designers-vs-web-developers/&quot;&gt;Six Revisions&lt;/a&gt; via &lt;a href=&quot;http://gizmodo.com/5687729/web-designers-versus-web-developers-visualized&quot;&gt;Gizmodo&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.landingpages.co.il/wix/web-designers-vs-developers.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;http://www.landingpages.co.il/wix/web-designers-vs-developers.png&quot; width=&quot;411&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/4362251604803940528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/4362251604803940528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/4362251604803940528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/4362251604803940528'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2010/11/web-designers-vs-web-developerslol.html' title='Web Designers vs Web Developers...LOL'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-2731824808062035601</id><published>2010-11-12T11:19:00.001+00:00</published><updated>2010-11-15T14:52:46.776+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AppEngine"/><category scheme="http://www.blogger.com/atom/ns#" term="fluentgeoapi"/><category scheme="http://www.blogger.com/atom/ns#" term="Geckoboard"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>On the radar...</title><content type='html'>Couple of things I&#39;ve bumped up against in the last few days that have piqued my curiosity,&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://storyq.codeplex.com/&quot;&gt;StoryQ&lt;/a&gt; - a BDD framework for .Net. Like all of these things you can&#39;t really comment on how good it looks but from what I have read it &quot;looks&quot; pretty good....I&#39;ll put it to use on my next home project I think to kick its tyres.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://flit.codeplex.com/&quot;&gt;FLIT&lt;/a&gt; - &quot;&lt;i&gt;(the FLuent Interface Toolkit) streamlines the design and implementation of fluent interfaces in C#. FLIT generates customisable fluent interface code from a simple text-based DSL. FLIT includes a parser, an object model, and a set of starter templates.&lt;/i&gt;&quot; - I&#39;m a &lt;a href=&quot;http://code.google.com/p/fluentgeoapi/&quot;&gt;fan of fluent interfaces&lt;/a&gt; as they simplify coding as the code reads better and it is easier to write against (use). This looks an interesting project - again something for the next home project that has a fluent interface.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.crummy.com/software/BeautifulSoup/&quot;&gt;Beautiful Soup&lt;/a&gt; - &quot;&lt;i&gt;Beautiful Soup is a Python HTML/XML parser designed for quick turnaround projects like screen-scraping&lt;/i&gt;&quot;. I&#39;m looking at producing all sorts of &lt;a href=&quot;http://geckoboard.com/&quot;&gt;Geckoboard&lt;/a&gt; widget data feeds with the mighty Google AppEngine and this was recommended to me by Hugo - I think it&#39;s going to come in handy...along with &lt;a href=&quot;http://developer.yahoo.com/yql/console/&quot;&gt;YQL&lt;/a&gt; I think I can knock up some pretty interesting widget feeds (a lot of interest/competition in this space, maybe consolidating widgets/feeds into a single place like &lt;a href=&quot;http://geckoboardapps.com/&quot;&gt;Geckoboard Apps&lt;/a&gt; (http://www.twitter.com/geckoboardapps) is the way to go). For the .Net peeps that need a HTML parser take a peek at the &lt;a href=&quot;http://htmlagilitypack.codeplex.com/&quot;&gt;HTML Agility Pack&lt;/a&gt;).</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/2731824808062035601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/2731824808062035601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/2731824808062035601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/2731824808062035601'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2010/11/on-radar.html' title='On the radar...'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8598704.post-7166720999902751547</id><published>2010-11-11T11:47:00.002+00:00</published><updated>2010-11-11T11:53:09.858+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AppEngine"/><category scheme="http://www.blogger.com/atom/ns#" term="Geckoboard"/><title type='text'>Geckoboard Countdown Widget v2</title><content type='html'>v2 is here, now with added colours! This time using the RAG Numbers widget to display your date countdown - as you get nearer the date the number will change from green to amber then red.&lt;br /&gt;
&lt;br /&gt;
The new url is: &lt;a href=&quot;http://geckocountdown.appspot.com/rag/?date=2010-12-25&amp;amp;tz=0&amp;amp;msg=Days+to+Xmas%21&quot;&gt;http://geckocountdown.appspot.com/rag/?date=2010-12-25&amp;amp;tz=0&amp;amp;msg=Days+to+Xmas!&lt;/a&gt;&lt;br /&gt;
Note 1: notice the new &lt;b&gt;/rag/&lt;/b&gt; path and the &lt;b&gt;msg&lt;/b&gt; querystring param.&lt;br /&gt;
Note 2: the original v1 url still works&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To use this on your Geckoboard add a new &quot;Custom Widget/RAG Numbers&quot; widget. By default the number will turn amber at 10 or less days to go and red at 3 or less days to go however you can change these with the querystring (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Required querystring params &lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;date: &quot;&lt;i&gt;yyyy-mm-dd&lt;/i&gt;&quot; format, this is the target date to countdown to&lt;/li&gt;
&lt;li&gt;tz: timezone offset in hours from GMT that you are in. Can be negative if you are behind GMT&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;b&gt;Optional querystring params&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;msg: the label that appears next to the number of days (remember to encode spaces as +). The default is &quot;Days Remaining&quot; if you do not specify this on the querystring.&lt;/li&gt;
&lt;li&gt;red: the number of days remaining that the number should be shown as red (default is 3).&lt;/li&gt;
&lt;li&gt;amber: the number of days remaining that the number should be shown as amber (default is 10).&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjveS-P7vbA-tAEhHwFi4VBfNuD7kQ7pAUdK5mrFt_Wn-9EOdT9KIEFE7-HqaMrgjf46E2CKwV-kC2FRmoz6OxvQ1dR-SoHNCGhNM6mWE7JqyeH9gGhGvDzKJXgmd-udAF-gd6btg/s1600/geckocountdown-green.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjveS-P7vbA-tAEhHwFi4VBfNuD7kQ7pAUdK5mrFt_Wn-9EOdT9KIEFE7-HqaMrgjf46E2CKwV-kC2FRmoz6OxvQ1dR-SoHNCGhNM6mWE7JqyeH9gGhGvDzKJXgmd-udAF-gd6btg/s1600/geckocountdown-green.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2Ta7pxJtc-T77r96XpvPiIHzbQdoEOTAEjROYwiKDlq2MFn1RVDc2XUtVYTgFxQbkYqf6VINUuktCI_nn0jOWG4CsEl6XyQ74oDno414MnddbwJwVJ7y11K8GPLLHt7lMpsw5LA/s1600/geckocountdown-amber.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2Ta7pxJtc-T77r96XpvPiIHzbQdoEOTAEjROYwiKDlq2MFn1RVDc2XUtVYTgFxQbkYqf6VINUuktCI_nn0jOWG4CsEl6XyQ74oDno414MnddbwJwVJ7y11K8GPLLHt7lMpsw5LA/s1600/geckocountdown-amber.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjlDSLeGU3cLnrrEuky9qxBEW4FE9ESKuzAHOiiuU6939nimWlBtbca05pMlZYBUBWmzq3wu3fjKprFiStwIl5mFD0dSn02SnQjvedZdq_7q0NaooNIpBXHFlgpvp1nEbAvXcMow/s1600/geckocountdown-red.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjlDSLeGU3cLnrrEuky9qxBEW4FE9ESKuzAHOiiuU6939nimWlBtbca05pMlZYBUBWmzq3wu3fjKprFiStwIl5mFD0dSn02SnQjvedZdq_7q0NaooNIpBXHFlgpvp1nEbAvXcMow/s1600/geckocountdown-red.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jimblogdog.blogspot.com/feeds/7166720999902751547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8598704/7166720999902751547' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/7166720999902751547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8598704/posts/default/7166720999902751547'/><link rel='alternate' type='text/html' href='http://jimblogdog.blogspot.com/2010/11/geckoboard-countdown-widget-v2.html' title='Geckoboard Countdown Widget v2'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17598589732424921869</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjveS-P7vbA-tAEhHwFi4VBfNuD7kQ7pAUdK5mrFt_Wn-9EOdT9KIEFE7-HqaMrgjf46E2CKwV-kC2FRmoz6OxvQ1dR-SoHNCGhNM6mWE7JqyeH9gGhGvDzKJXgmd-udAF-gd6btg/s72-c/geckocountdown-green.PNG" height="72" width="72"/><thr:total>4</thr:total></entry></feed>