<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>tag:blogger.com,1999:blog-21967381</id><updated>2010-03-09T21:14:29.545Z</updated><title type="text">Ben Hall's Blog</title><subtitle type="html">I don't know darling....i'm doing my work</subtitle><link rel="alternate" type="text/html" href="http://blog.benhall.me.uk/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default?start-index=26&amp;max-results=25" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://feeds.feedburner.com/BenHall" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>493</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/BenHall" /><feedburner:info uri="benhall" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FBenHall" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBenHall" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FBenHall" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/BenHall" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FBenHall" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FBenHall" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBenHall" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><entry><id>tag:blogger.com,1999:blog-21967381.post-6674093637475699715</id><published>2010-02-15T11:10:00.001Z</published><updated>2010-02-15T11:10:48.647Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="Development" /><title type="text">Why consistency is overrated</title><content type="html">&lt;p&gt;I've recently had a number of discussions with various different people around consistency. &lt;/p&gt; &lt;p&gt;There a few really good reasons why you should be consistent in your development approach. Being able to pick-up a code-base and understand where the tests are, where external libs are stored\reference and how to build and run are fundamental when you work on more than one project. In a similar way, being consistent with setting, both application and keyboard (ReSharper) can increase productivity when working with a team as it makes it easier to share the code and pair at different machines. Having a standard and a foundation gives you the base to improve and learn from. Toyota have said “standardized tasks are the foundation for continuous improvement and employee empowerment” &lt;a href="http://en.wikipedia.org/wiki/Toyota_Production_System" target="_blank"&gt;Wikipedia&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;However, this brings about another problem. If you are continuously improving, what happens to consistency?&lt;/p&gt; &lt;p&gt;Many moons ago, we were all writing our data access logic using Ado.net and code-generated ORMs. Thankfully today we have NHIbernate. We have taken a standard, improved and progressed beyond it to create a new standard. This is why consistency is overrated. If we were consistent, we would had kept making the same mistakes for the sake of being consistent. The same can be said for unit testing frameworks, languages and even project structures\coding style. &lt;/p&gt; &lt;p&gt;However, in software many people forget the improve and progress part once a standard has been set.&amp;nbsp; We sacrifice improved productivity and adding value to the business to maintain the status quo. How many developers would push the use of frameworks like &lt;a href="http://www.openrasta.com" target="_blank"&gt;OpenRasta&lt;/a&gt; instead of just going with ASP.Net MVC because they did ASP.net webforms before - even when OpenRasta provides a much better solution to their problem. Or use WCF because “we are a Microsoft shop”, hence must be consistent and use the Microsoft stack.&lt;/p&gt; &lt;p&gt;Get a grip.&lt;/p&gt; &lt;p&gt;Forget consistency. Instead, focus on what makes you productive, what provides value and what makes doing your job easier. If there is a better way, do it and break free from the status quo.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-6674093637475699715?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/tKj9J74wMxE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/6674093637475699715/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=6674093637475699715" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/6674093637475699715" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/6674093637475699715" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/tKj9J74wMxE/why-consistency-is-overrated.html" title="Why consistency is overrated" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2010/02/why-consistency-is-overrated.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-1015368937632504649</id><published>2010-02-14T13:55:00.001Z</published><updated>2010-02-14T13:55:09.340Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="Random" /><title type="text">Why GPS systems are a metaphor for software development</title><content type="html">&lt;p&gt;A while ago I was on my way to see family members. Due to working all the time, I was unfamiliar with the route so I used my GPS. During the journey I had a brainwave, a good GPS system is like a good software development team.&lt;/p&gt; &lt;p&gt;Imagine the roles involved in a car journey. We have the nice GPS lady, the one who knows the final result and the most effective way to get there. We have the passengers who do the work together with the backseat drivers who think they know better than everyone else involved and will take you in a different direction. &lt;/p&gt; &lt;p&gt;This is very similar to the structure of most project teams. Everyone knows the final destination, and some might even know how to get most\part of the way there however we have project managers guiding us along the way, step by step, even if sometimes they are just background noise telling you what you already know. We have developers\testers taking the information from the project manager and applying it using their own skills. The GPS doesn’t drive the car in the same way project managers don’t write code. Finally, we have the members of the team who always seem to know better - these are either visionaries or &lt;a href="http://www.codinghorror.com/blog/2008/07/dealing-with-bad-apples.html" target="_blank"&gt;bad apples&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;As you are driving, when you are coming up to a change in direction the GPS will tell you just enough information to put you in the best position to act when the additional information is relevant instead of overloading you with unnecessary and confusing the problem right at the beginning. As the steps are broken down and told as required, if you go wrong then the GPS can adjust itself and guide you back. These could be consideration iterations.&lt;/p&gt; &lt;p&gt;What if the journey wasn’t broken down into steps? You would know the end route, however you wouldn't know the quickest, or even how, to get there. Instead you would be flooded with information as soon as you enter in the car. You will be told every turn taken, every lane change. During the journey, you will attempt to remember everything, as a result relying on other indicators such as traditional sign posts. The problem is that you can easily miss a critical step and take a wrong turn. Without someone guiding you, you could be going in the wrong direction for a long period of time. This is the equivalent of a waterfall project and we all know how they end. GPS systems take an agile approach to car journeys. &lt;/p&gt; &lt;p&gt;But I only have a cheap GPS systems. The good (ie expensive) GPS systems respond to the environment around them.&amp;nbsp; They can sense (be alerted) to traffic ahead and as a result take a different route to ensure you get to your end goal in the most effective way. This is why you pay twice as much, as when problems occur, they can help instead of just sending you down the same old path. &lt;/p&gt; &lt;p&gt;I think this is the same as a good project manager. If they can see the problems coming, then they can guide the team without the team ever knowing or being distributed. This allows the team to stay focused and motivated while the project manager does the hard work of ensuring any problems don't affect the project. This is a powerful and extremely useful position and person to have. This is when both GPS systems and project managers justify their cost.&lt;/p&gt; &lt;p&gt;But what if you crash? Well your project just got canned and no matter how good your GPS\pm is they can't help.&lt;/p&gt; &lt;p&gt;Interesting what comes into your mind during a car journey.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-1015368937632504649?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/7eAow_PMbbA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/1015368937632504649/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=1015368937632504649" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/1015368937632504649" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/1015368937632504649" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/7eAow_PMbbA/why-gps-systems-are-metaphor-for.html" title="Why GPS systems are a metaphor for software development" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2010/02/why-gps-systems-are-metaphor-for.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-5761018916355445937</id><published>2010-02-14T00:31:00.001Z</published><updated>2010-02-14T00:31:48.496Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="ReSharper" /><title type="text">Changing Resharper 5 to support Bdd_style_test_naming</title><content type="html">&lt;p&gt;When creating test names, I use a BDD style naming convention to describe the behaviour being tested. As such, I like the naming to be in a particular, consistent style. For example:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/ChangingResharper5tosupportBdd_style_tes_126CA/image.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/ChangingResharper5tosupportBdd_style_tes_126CA/image_thumb.png" width="354" height="64"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;However, as you can see Resharper is saying there is a problem because of the way the method has been named. Ideally, Resharper should allow this naming convention. With Resharper 5 (maybe in 4.5 too), you can change the setting to match how you want your naming to be.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/ChangingResharper5tosupportBdd_style_tes_126CA/image_3.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/ChangingResharper5tosupportBdd_style_tes_126CA/image_thumb_3.png" width="400" height="124"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Simply by hitting alt+enter you have some options related to Inconsistent naming.&lt;/p&gt; &lt;p&gt;In the settings dialog, you can set the name style. In my name, First_upper is how I like my tests to be named.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/ChangingResharper5tosupportBdd_style_tes_126CA/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/ChangingResharper5tosupportBdd_style_tes_126CA/image_thumb_4.png" width="394" height="369"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Resharper will now accept the naming. As a bonus, if the name happened to be Something_Like_This() then it would detect and provide an option to convert the naming to Something_like_this() keeping your test naming consistent which improves readability. Very cool!&lt;/p&gt; &lt;p&gt;However, the problem now is that ReSharper complaints on production code. For example:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/ChangingResharper5tosupportBdd_style_tes_126CA/image_5.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/ChangingResharper5tosupportBdd_style_tes_126CA/image_thumb_5.png" width="688" height="48"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Luckily, you can define two possible naming conventions as I’ve done below.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/ChangingResharper5tosupportBdd_style_tes_126CA/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/ChangingResharper5tosupportBdd_style_tes_126CA/image_thumb_6.png" width="396" height="371"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-5761018916355445937?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/vVQcJFxR0ko" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/5761018916355445937/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=5761018916355445937" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/5761018916355445937" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/5761018916355445937" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/vVQcJFxR0ko/changing-resharper-5-to-support.html" title="Changing Resharper 5 to support Bdd_style_test_naming" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2010/02/changing-resharper-5-to-support.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-4765201537373860720</id><published>2010-02-06T16:33:00.001Z</published><updated>2010-02-06T16:41:01.483Z</updated><title type="text">Not much of an invitation - Thanks Google</title><content type="html">&lt;p&gt;This week Google was kind enough to invite me to "Google Apps Premier Edition".  This is the email:&lt;/p&gt;
&lt;img src="http://lh6.ggpht.com/_exs7ZT6h_9Q/S22XqWLD7UI/AAAAAAAAAMA/TKdjgZUqVJM/2010-02-06_1621.png?imgmax=800" alt="2010-02-06_1621.png" border="0" width="821" height="590" /&gt;

&lt;p&gt;I would love to use the premier edition as the free version is amazing! Sadly, the invitation was only for the 30 day free trail. After gaining my interest, Google then went and lost my interest while also making me disappointed.  Not the ideal way to make your users feel.&lt;/p&gt;

&lt;p&gt;When sending over promotional emails, take into account how the user will feel and their thought process when reading your email. &lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-4765201537373860720?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/CS0MdpnXzfw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/4765201537373860720/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=4765201537373860720" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/4765201537373860720" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/4765201537373860720" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/CS0MdpnXzfw/not-much-of-invitation-thanks-google.html" title="Not much of an invitation - Thanks Google" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2010/02/not-much-of-invitation-thanks-google.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-2829189265715305651</id><published>2010-02-01T01:11:00.001Z</published><updated>2010-02-01T01:11:37.529Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="DDD" /><category scheme="http://www.blogger.com/atom/ns#" term="TestingASPnet" /><category scheme="http://www.blogger.com/atom/ns#" term="DDD8" /><title type="text">DDD8: Albacore and Testing ASP.net Web Applications using Ruby</title><content type="html">&lt;p&gt;Yesterday was the excellent DDD8. Thank you to all who attended. I gave a grok talk and a full presentation. The grok talk was on &lt;a href="http://albacorebuild.net/" target="_blank"&gt;Albacore&lt;/a&gt;,&amp;nbsp; while the full presentation on Testing ASP.net Web Applications using Ruby. The slides are below. If you have any questions\feedback then do please let me know. &lt;/p&gt; &lt;p&gt;Don’t forget, if you are interested in learning more about Testing ASP.net then my book has recently been released.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.testingaspnet.com/" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="cover[1]" border="0" alt="cover[1]" src="http://lh4.ggpht.com/_exs7ZT6h_9Q/S2YqSGYpJaI/AAAAAAAAAL8/fTePPPsMUKs/cover%5B1%5D%5B4%5D.png?imgmax=800" width="195" height="244"&gt;&lt;/a&gt; &lt;/p&gt; &lt;div style="text-align: left; width: 425px" id="__ss_3042927"&gt;&lt;a style="margin: 12px 0px 3px; display: block; font: 14px helvetica,arial,sans-serif; text-decoration: underline" title="Death to MSBuld and all it's friends" href="http://www.slideshare.net/BenHalluk/death-to-msbuld-and-all-its-friends"&gt;Death to MSBuld and all it's friends&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ddd8-100131190104-phpapp01&amp;amp;stripped_title=death-to-msbuld-and-all-its-friends" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ddd8-100131190104-phpapp01&amp;amp;stripped_title=death-to-msbuld-and-all-its-friends" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt; &lt;div style="font-family: tahoma,arial; height: 26px; font-size: 11px; padding-top: 2px"&gt;View more &lt;a style="text-decoration: underline" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline" href="http://www.slideshare.net/BenHalluk"&gt;BenHalluk&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;/p&gt; &lt;div style="text-align: left; width: 425px" id="__ss_3042926"&gt;&lt;a style="margin: 12px 0px 3px; display: block; font: 14px helvetica,arial,sans-serif; text-decoration: underline" title="Testing ASP.net Web Applications using Ruby" href="http://www.slideshare.net/BenHalluk/testing-aspnet-web-applications-using-ruby-3042926"&gt;Testing ASP.net Web Applications using Ruby&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ddd8-100131190056-phpapp02&amp;amp;stripped_title=testing-aspnet-web-applications-using-ruby-3042926" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ddd8-100131190056-phpapp02&amp;amp;stripped_title=testing-aspnet-web-applications-using-ruby-3042926" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt; &lt;div style="font-family: tahoma,arial; height: 26px; font-size: 11px; padding-top: 2px"&gt;View more &lt;a style="text-decoration: underline" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline" href="http://www.slideshare.net/BenHalluk"&gt;BenHalluk&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt; &lt;p&gt;Download demo from &lt;a title="http://github.com/BenHall/Kona/zipball/DDD8" href="http://github.com/BenHall/Kona/zipball/DDD8" target="_blank"&gt;http://github.com/BenHall/Kona/zipball/DDD8&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-2829189265715305651?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/Sy8jkC49Oeg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/2829189265715305651/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=2829189265715305651" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/2829189265715305651" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/2829189265715305651" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/Sy8jkC49Oeg/ddd8-albacore-and-testing-aspnet-web.html" title="DDD8: Albacore and Testing ASP.net Web Applications using Ruby" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2010/02/ddd8-albacore-and-testing-aspnet-web.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-249815816259386665</id><published>2010-01-20T00:27:00.001Z</published><updated>2010-01-20T00:27:58.990Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="Git" /><title type="text">Quick screencast: Installing Git</title><content type="html">&lt;p&gt;I have spoken to a number of people who have been put-off by installing Git as it seems difficult. To prove that it’s not, I decided to put together a very quick screencast to highlight the main points. As I wanted it to be quick and to the point I decided not to add voice-over and instead use call-outs where required.&lt;/p&gt;&lt;embed src="http://blip.tv/play/AYG%2B7nkA" type="application/x-shockwave-flash" width="640" height="510" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt; &lt;p&gt;If you want to know more, then I really recommend you check out &lt;a href="http://www.tekpub.com/" rel="nofollow" target="_blank"&gt;TekPub&lt;/a&gt; as they have done a great series on how to take full advantage of Git. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-249815816259386665?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/EqdAQ9au4i4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/249815816259386665/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=249815816259386665" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/249815816259386665" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/249815816259386665" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/EqdAQ9au4i4/quick-screencast-installing-git.html" title="Quick screencast: Installing Git" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2010/01/quick-screencast-installing-git.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-5191260812950700209</id><published>2010-01-18T14:54:00.001Z</published><updated>2010-01-18T14:54:40.114Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="Testing" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><title type="text">Time for a new stubbing and mocking syntax?</title><content type="html">&lt;p&gt;When using IronRuby to test C# applications we are still faced with similar issues as with C# – the different is how we can handle them. For example, to stub the HttpRequestBase in C#, we could use Rhino Mocks as follows. &lt;/p&gt;&lt;pre class="brush: csharp;"&gt;var stubbedHttpRequest = MockRepository.GenerateStub&amp;lt;HttpRequestBase&amp;gt;().Stub(x=&amp;gt;x.ApplicationPath).Return(“~/test”);
&lt;/pre&gt;
&lt;p&gt;I do really like this syntax and think it works for C#.&amp;nbsp; However, if we are looking to use Ruby and a dynamic language we have the potential to be more inventive. &lt;/p&gt;
&lt;p&gt;IronRuby has an excellent framework called &lt;a href="http://github.com/casualjim/caricature" rel="nofollow" target="_blank"&gt;Caricature&lt;/a&gt; which allows you to fake CLR objects. For example, here we are stubbing the HttpRequestBase from MVC. &lt;/p&gt;&lt;pre class="brush: ruby;"&gt;require 'caricature'
include Caricature
stubHttpRequest = isolate System::Web::HttpRequestBase     
stubHttpRequest.when_receiving(:application_path).return("~/test")    
stubHttpRequest &lt;/pre&gt;
&lt;p&gt;However, this got me thinking. With Ruby being dynamic, how could we take advantage when defining fakes? For example, what about the following syntax:&lt;/p&gt;&lt;pre class="brush: ruby;"&gt;stubHttpRequest = stub 'System::Web::HttpRequestBase
                          .ApplicationPath.returns("~/test") &amp;amp;&amp;amp;
                          .FilePath.returns("")'
&lt;/pre&gt;
&lt;p&gt;This would stub two properties, ApplicationPath and FilePath to return “~/test” and an empty string respectively. If we wanted to handle method calls and arguments, we could have the following:&lt;/p&gt;&lt;pre class="brush: js;"&gt;stubHttpRequest = stub 'System::Web::HttpRequestBase
                          .SomeMethodCall("WithArgument").returns(SomeObject.new) &amp;amp;&amp;amp; 
                          .SomeOtherMethod(*).returns(-1)'&lt;/pre&gt;
&lt;p&gt;Here we stub two methods, one stubs with a particular argument (must be the string “WithArgument”) while the other matches on any argument. &lt;/p&gt;
&lt;p&gt;My aim is to &lt;strong&gt;reduce the ceremony &lt;/strong&gt;associated with the act of stubbing and instead focus on &lt;strong&gt;the true intent &lt;/strong&gt;of the defined behaviour. &lt;/p&gt;
&lt;p&gt;&lt;small&gt;Note: Imagine the ‘refactoring’ problem has been solved, and changing the method names would also update the tests. &lt;/small&gt;&lt;/p&gt;
&lt;p&gt;If we look at other languages, for example Javascript’s jqMock and Ruby’s NotAMock are using a similar syntax to C#. &lt;/p&gt;&lt;pre class="brush: js;"&gt;var alertMock = new jqMock.Mock(window, "alert");
alertMock.modify().args("hello world new!").returnValue();
&lt;/pre&gt;
&lt;p&gt;I think it is time to start looking beyond the existing syntax and reveal our true intent. What do you think?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-5191260812950700209?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/XZuISPDYeQo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/5191260812950700209/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=5191260812950700209" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/5191260812950700209" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/5191260812950700209" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/XZuISPDYeQo/time-for-new-stubbing-and-mocking.html" title="Time for a new stubbing and mocking syntax?" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2010/01/time-for-new-stubbing-and-mocking.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-5711747437031834387</id><published>2010-01-17T18:47:00.001Z</published><updated>2010-01-17T18:47:57.087Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="BDD" /><category scheme="http://www.blogger.com/atom/ns#" term="IronRuby" /><category scheme="http://www.blogger.com/atom/ns#" term="TestingASPnet" /><category scheme="http://www.blogger.com/atom/ns#" term="book" /><title type="text">Testing ASP.net using Ruby – CodeMash session</title><content type="html">&lt;p&gt;This week I went over to &lt;a href="http://www.codemash.org/" rel="nofollow" target="_blank"&gt;CodeMash&lt;/a&gt;, an amazing community and cross-language conference in the US. I had some amazing conversations, meet some amazing people and gave a session on Testing ASP.net using Ruby. &lt;/p&gt; &lt;p&gt;I would like to say thank you to everyone who attended and the organisers for giving me the opportunity to speak. If you have any questions\comments, then please give me a shout, &lt;a href="http://twitter.com/Ben_Hal" rel="nofollow" target="_blank"&gt;Twitter&lt;/a&gt; is the best way. &lt;/p&gt; &lt;div style="text-align: left; width: 425px" id="__ss_2935433"&gt;&lt;a style="margin: 12px 0px 3px; display: block; font: 14px helvetica,arial,sans-serif; text-decoration: underline" title="Testing ASP.net Web Applications using Ruby" href="http://www.slideshare.net/BenHalluk/testing-aspnet-web-applications-using-ruby"&gt;Slides can be found on SlideShare and embedded below.&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentation-100117111303-phpapp01&amp;amp;stripped_title=testing-aspnet-web-applications-using-ruby" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentation-100117111303-phpapp01&amp;amp;stripped_title=testing-aspnet-web-applications-using-ruby" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt; &lt;div style="font-family: tahoma,arial; height: 26px; font-size: 11px; padding-top: 2px"&gt;View more &lt;a style="text-decoration: underline" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline" href="http://www.slideshare.net/BenHalluk"&gt;BenHalluk&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt; &lt;p&gt;The code I used during the demo can be found on GitHub - &lt;a href="http://github.com/BenHall/Kona"&gt;http://github.com/BenHall/Kona&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;I created a tag so you can download the zip of the code, now and in the future without being affected by other changes - &lt;a title="http://github.com/BenHall/Kona/zipball/CodeMash_2010" href="http://github.com/BenHall/Kona/zipball/CodeMash_2010"&gt;http://github.com/BenHall/Kona/zipball/CodeMash_2010&lt;/a&gt;. In future I plan to keep working on this code as a sample so you might want to keep an eye on the repository.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Also, if you would like to know more about Testing ASP.net web applications, then I recommend you take a look at the book I co-authored, check out &lt;a href="http://www.testingaspnet.com" target="_blank"&gt;http://www.testingaspnet.com&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-5711747437031834387?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/Ab3OD2YNmr4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/5711747437031834387/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=5711747437031834387" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/5711747437031834387" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/5711747437031834387" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/Ab3OD2YNmr4/testing-aspnet-using-ruby-codemash.html" title="Testing ASP.net using Ruby – CodeMash session" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2010/01/testing-aspnet-using-ruby-codemash.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-6252970827037645069</id><published>2010-01-09T17:17:00.001Z</published><updated>2010-01-09T17:18:20.630Z</updated><title type="text">RSpec, IronRuby and RubyMine</title><content type="html">&lt;p&gt;RSpec, IronRuby and RubyMine is an amazing combination. Here is a screenshot of an example I’m currently working on… &lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/RSpecIronRubyandRubyMine_F31B/Rubymine_tests_passing.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Rubymine_tests_passing" border="0" alt="Rubymine_tests_passing" src="http://blog.benhall.me.uk/images/RSpecIronRubyandRubyMine_F31B/Rubymine_tests_passing_thumb.png" width="777" height="605"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;All I do is execute the Rake command below, which exists in my rakefile.rb. Rubymine does the rest! Very cool.&lt;/p&gt;&lt;pre class="brush: ruby;"&gt;desc "Run all examples"
Spec::Rake::SpecTask.new('examples') do |t|
  t.spec_files = FileList['examples/**/*.rb']
end

&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-6252970827037645069?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/YZMdJB5CBRg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/6252970827037645069/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=6252970827037645069" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/6252970827037645069" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/6252970827037645069" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/YZMdJB5CBRg/rspec-ironruby-and-rubymine.html" title="RSpec, IronRuby and RubyMine" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2010/01/rspec-ironruby-and-rubymine.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-212799531720099137</id><published>2009-12-26T16:58:00.001Z</published><updated>2009-12-26T16:59:57.773Z</updated><title type="text">Adding IronRuby and JRuby to your OSX path</title><content type="html">&lt;p&gt;After downloading IronRuby and JRuby to do some hacking over the Christmas period, I wanted to add them to my PATH variable on OSX. In Windows, this is fairly easy to find but is hidden a few dialogs down. &lt;/p&gt;

&lt;p&gt;In OSX, you need to edit the .bash_login file in your user directory. A simple nano ~/.bash_login will allow you to edit the file (replacing nano is your own favourite editor).&lt;/p&gt;

&lt;p&gt;To add IronRuby to your path add:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;export PATH=/Users/Ben/Library/ironruby-0.9.3/bin:$PATH&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Import points: &lt;br/&gt;
1) The path to your IronRuby bin folder. &lt;br/&gt;
2) Ensure you add the existing $PATH to the end&lt;br/&gt;
3) Export the result to the current PATH variable. Note, this is case sensitive. &lt;/p&gt;

&lt;p&gt;To add jRuby you do it in a very similar fashion. However, because of priorities and how jRuby works, unless you want jRuby to be the default, add it to the end of the path export&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;export PATH=/Users/Ben/Library/ironruby-0.9.3/bin:$PATH:/Users/Ben/Library/jruby-1.4.0/bin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You should now be able to see all your ruby interpreters.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://lh3.ggpht.com/_exs7ZT6h_9Q/SzZAlsNCdvI/AAAAAAAAALw/guX9riF6OHs/Ruby_OSX.png?imgmax=800" alt="Ruby_OSX.png" border="0" width="749" height="220" /&gt;&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-212799531720099137?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/1Aygk9BK0xc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/212799531720099137/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=212799531720099137" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/212799531720099137" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/212799531720099137" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/1Aygk9BK0xc/adding-ironruby-and-jruby-to-your-osx.html" title="Adding IronRuby and JRuby to your OSX path" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/12/adding-ironruby-and-jruby-to-your-osx.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-2254904738483929649</id><published>2009-12-20T00:58:00.001Z</published><updated>2009-12-20T00:58:24.379Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="lonestar" /><category scheme="http://www.blogger.com/atom/ns#" term="meerkatalyst" /><title type="text">A sneak peek at Meerkatalyst.Lonestar</title><content type="html">&lt;p&gt;As I had some free time on my hands today I decided to create a new project called Lonestar. For those of you who are interested, here is the first (working) screenshot. Can anyone guess what it is? &lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/AsneakpeekatMeerkatalyst.Lonestar_D9F/Lonestar_HelloWorld_Screenshot.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Meerkatalyst.Lonestar Hello World Screenshot" border="0" alt="Meerkatalyst.Lonestar Hello World Screenshot" src="http://blog.benhall.me.uk/images/AsneakpeekatMeerkatalyst.Lonestar_D9F/Lonestar_HelloWorld_Screenshot_thumb.png" width="697" height="592"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;For those of you who are following me on twitter then you will know I’ve been mentioning &lt;a href="http://www.meerkatalyst.com" target="_blank"&gt;Meerkatalyst&lt;/a&gt; for a while – all will become clear soon. For now, keep an eye on my blog, the &lt;a href="http://www.meerkatalyst.com" target="_blank"&gt;Meerkatalyst website&lt;/a&gt; and twitter feeds (&lt;a href="http://twitter.com/ben_hall" rel="nofollow" target="_blank"&gt;@ben_hall&lt;/a&gt; and &lt;a href="http://twitter.com/meerkatalyst" rel="nofollow" target="_blank"&gt;@meerkatalyst&lt;/a&gt;) for more exciting news on Lonestar and other projects!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-2254904738483929649?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/iiRtVENzNrc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/2254904738483929649/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=2254904738483929649" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/2254904738483929649" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/2254904738483929649" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/iiRtVENzNrc/sneak-peek-at-meerkatalystlonestar.html" title="A sneak peek at Meerkatalyst.Lonestar" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/12/sneak-peek-at-meerkatalystlonestar.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-3367205274508105922</id><published>2009-12-11T01:06:00.001Z</published><updated>2009-12-11T01:06:47.442Z</updated><title type="text">More amazing region examples</title><content type="html">&lt;p&gt;Come on – really? &lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/Moreamazingregionexamples_F94/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/Moreamazingregionexamples_F94/image_thumb.png" width="487" height="281"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;With the code being&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/Moreamazingregionexamples_F94/image_3.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/Moreamazingregionexamples_F94/image_thumb_3.png" width="490" height="292"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-3367205274508105922?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/kN26DKvOK-I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/3367205274508105922/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=3367205274508105922" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/3367205274508105922" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/3367205274508105922" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/kN26DKvOK-I/more-amazing-region-examples.html" title="More amazing region examples" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/12/more-amazing-region-examples.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-6838938551349146747</id><published>2009-12-11T00:58:00.001Z</published><updated>2009-12-11T00:58:26.858Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><title type="text">This is why I hate regions</title><content type="html">&lt;p&gt;I just loaded up a default from Microsoft built into the Visual Studio 2010 extensibility and was greeted with this:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/ThisiswhyIhateregions_D88/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/ThisiswhyIhateregions_D88/image_thumb.png" width="652" height="532"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;If someone could tell me what this region is actually adding to the code-base then I would love to know! Personally, it’s just a pointless layer of abstraction. &lt;/p&gt; &lt;p&gt;If your interested in what is happening within the region, well it gets worse. This is the code:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/ThisiswhyIhateregions_D88/image_3.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/ThisiswhyIhateregions_D88/image_thumb_3.png" width="653" height="547"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Instantly, I notice the following problems: &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;1) The comment to code ratio is very high. This makes seeing the code harder. &lt;/p&gt; &lt;p&gt;2) The attribute to code ratio is very high. This makes seeing the code harder, however it does have some useful information.&lt;/p&gt; &lt;p&gt;3) The class name is not at all related to the file name. This can cause real confusion when attempting to navigate and understand a code-base. Please, don’t do it. &lt;/p&gt; &lt;p&gt;What would happen if we wrote code like this:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/ThisiswhyIhateregions_D88/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/ThisiswhyIhateregions_D88/image_thumb_4.png" width="650" height="544"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The true intent of the code is now very clear without having to read anything! Stop hiding code and just show us the true aim.&lt;/p&gt; &lt;p&gt;Ideally I would also want to remove editorAdornmentLayer however MEF uses this, as such I need to leave it. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-6838938551349146747?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/FQGe5gZxm9Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/6838938551349146747/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=6838938551349146747" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/6838938551349146747" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/6838938551349146747" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/FQGe5gZxm9Y/this-is-why-i-hate-regions.html" title="This is why I hate regions" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/12/this-is-why-i-hate-regions.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-6544305610960008930</id><published>2009-12-10T00:33:00.001Z</published><updated>2009-12-10T00:33:01.454Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bad Software" /><title type="text">Excellent error message from Amazon</title><content type="html">&lt;p&gt;Yesterday I tried to purchase a book from Amazon UK on my iPhone and was given this error message: &lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/ExcellenterrormessagefromAmazon_7B2/IMG_0196.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0196" border="0" alt="IMG_0196" src="http://blog.benhall.me.uk/images/ExcellenterrormessagefromAmazon_7B2/IMG_0196_thumb.png" width="324" height="484"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;It had all my information, everything looked correct but unbeknown to everyone, including Amazon, it was game over. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-6544305610960008930?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/FHaOuMbKK0I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/6544305610960008930/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=6544305610960008930" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/6544305610960008930" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/6544305610960008930" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/FHaOuMbKK0I/excellent-error-message-from-amazon.html" title="Excellent error message from Amazon" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/12/excellent-error-message-from-amazon.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-5525082852933692890</id><published>2009-12-05T16:17:00.001Z</published><updated>2009-12-05T16:17:04.598Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="ReSharper" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title type="text">Making Visual Studio more keyboard friendly – File.Close</title><content type="html">&lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/MakingVisualStudiomorekeyboardfrie.Close_E4E0/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/MakingVisualStudiomorekeyboardfrie.Close_E4E0/image_thumb.png" width="644" height="376"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Any time my hands are not on my keyboard my productivity is being harmed. Visual Studio + ReSharper has some really nice keyboard shortcuts which means I don’t need to use my mouse. However, one shortcut which just feels to me plain forgotten is being able to close a file using the keyboard. I can open, switch between but cannot close! Thankfully you can bind your own shortcuts, as such I bound to Ctrl+Q. Having this simply makes everything a little bit easier. But please, Visual Studio or ReSharper – auto-bind this command. &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Note: Visual Studio 2010 Beta 2 is a bit buggy when it comes to keyboard shortcut. I had to un-assign anything bound to the key and restart the app before it took effect. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-5525082852933692890?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/cHY84W79x7s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/5525082852933692890/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=5525082852933692890" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/5525082852933692890" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/5525082852933692890" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/cHY84W79x7s/making-visual-studio-more-keyboard.html" title="Making Visual Studio more keyboard friendly – File.Close" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/12/making-visual-studio-more-keyboard.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-1918319703815988865</id><published>2009-12-05T15:05:00.001Z</published><updated>2009-12-05T15:05:24.607Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="GitHub" /><category scheme="http://www.blogger.com/atom/ns#" term="Git" /><category scheme="http://www.blogger.com/atom/ns#" term="CodePlex" /><title type="text">Migrating from CodePlex to GitHub</title><content type="html">&lt;p&gt;While I have a lot of respect for the work Microsoft have done with &lt;a href="http://www.codeplex.com" target="_blank"&gt;CodePlex&lt;/a&gt;, personally I think &lt;a href="http://www.github.com/" target="_blank"&gt;GitHub&lt;/a&gt; is fundamentally a much better platform for open source projects. The main reason being is that it is just so easy to get access to the code, make changes and do whatever you want while utilising the power of Git. I have a couple of projects on CodePlex, so I wondered how easy it would be to port them over to GitHub. &lt;/p&gt; &lt;p&gt;After creating a new repository on GitHub, you are given the option to import from a Subversion Repository. All you need to do is enter the public Subversion URL for your repository.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/MigratingfromCodePlextoGitHub_D3EC/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/MigratingfromCodePlextoGitHub_D3EC/image_thumb.png" width="622" height="484"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Thankfully, CodePlex allows you to access your source code via TFS and Subversion. To find the URL, simply go to the Source Code tab and click Connection Instructions. This will give you the project’s SVN URL to enter into Github. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/MigratingfromCodePlextoGitHub_D3EC/image_3.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/MigratingfromCodePlextoGitHub_D3EC/image_thumb_3.png" width="622" height="484"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;After clicking next the experience isn’t great – there is no real feedback about what is going on which is unfortunate.&amp;nbsp; However, after a while I received an email saying the Import had been completed successfully. If it fails, it also will send you an email to let you know. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/MigratingfromCodePlextoGitHub_D3EC/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/MigratingfromCodePlextoGitHub_D3EC/image_thumb_4.png" width="644" height="349"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;My GitHub repository now has all the source code from my CodePlex project. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/MigratingfromCodePlextoGitHub_D3EC/image_5.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/MigratingfromCodePlextoGitHub_D3EC/image_thumb_5.png" width="644" height="386"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Along with the code, it also has all the commits and history associated with the project which is pretty awesome! &lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/MigratingfromCodePlextoGitHub_D3EC/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/MigratingfromCodePlextoGitHub_D3EC/image_thumb_6.png" width="592" height="484"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;In just a few clicks I was able to migrate from CodePlex and SVN to GitHub and Git. &lt;/p&gt; &lt;p&gt;If you didn’t want to use the UI, or it failed for some reason, GitHub have a great &lt;a href="http://github.com/guides/import-from-subversion" target="_blank"&gt;guide&lt;/a&gt; about how you can do this import manually.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-1918319703815988865?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/7HGhjMyuXN0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/1918319703815988865/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=1918319703815988865" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/1918319703815988865" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/1918319703815988865" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/7HGhjMyuXN0/migrating-from-codeplex-to-github.html" title="Migrating from CodePlex to GitHub" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/12/migrating-from-codeplex-to-github.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-4914137451779745679</id><published>2009-11-21T19:05:00.001Z</published><updated>2009-11-21T19:05:06.588Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="Jetbrains" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><title type="text">RubyMine – The Meta keyboard shourtcut on Windows</title><content type="html">&lt;p&gt;Today I installed &lt;a href="http://www.jetbrains.com/ruby/" rel="nofollow" target="_blank"&gt;RubyMine 2.0&lt;/a&gt; which is a great IDE from JetBrains. However, I was confused as all the keystrokes referred to ‘Meta’, for example ‘Meta+C’ for copying. Being on Windows 7, this wasn’t a valid keystroke. &lt;/p&gt; &lt;p&gt;After a bit of search around, it turns out RubyMine has keystrokes targeted for different environments, in my case it was targeted to be the same as TextMate. Awesome when I’m on my Mac, not so good on Windows.&lt;/p&gt; &lt;p&gt;To change the keymapping, select File &amp;gt; Settings. Pick the keymap option, and in the dropdown change it to Visual Studio.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.benhall.me.uk/images/RubyMineTheMetakeyboardshourtcutonWindow_10C56/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.benhall.me.uk/images/RubyMineTheMetakeyboardshourtcutonWindow_10C56/image_thumb.png" width="640" height="447"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Everything will then feel right at home. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-4914137451779745679?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/coIiSpsI3Jo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/4914137451779745679/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=4914137451779745679" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/4914137451779745679" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/4914137451779745679" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/coIiSpsI3Jo/rubymine-meta-keyboard-shourtcut-on.html" title="RubyMine – The Meta keyboard shourtcut on Windows" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/11/rubymine-meta-keyboard-shourtcut-on.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-2469112674779558872</id><published>2009-11-19T00:00:00.001Z</published><updated>2009-11-19T00:00:27.162Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="TestingASPnet" /><category scheme="http://www.blogger.com/atom/ns#" term="book" /><title type="text">I've written a book on Testing ASP.net Web Applications</title><content type="html">&lt;p&gt;If you have been following me on &lt;a href="http://twitter.com/ben_hall" rel="nofollow"&gt;twitter&lt;/a&gt; then this will be old news however I realised I never announced it on my blog. &lt;/p&gt;

&lt;p&gt;Well, here is it! I have written a book on Testing ASP.net Web Applications! The website for which can be found at &lt;a href="http://www.testingaspnet.com/"&gt;http://www.testingaspnet.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://www.testingaspnet.com/cover.png" alt="Testing ASP.net Web Applications cover" /&gt;&lt;/p&gt;

&lt;p&gt;I agreed to co-author the book with &lt;a href="http://www.mcwherter.net/blog/" rel="nofollow"&gt;Jeff McWherter&lt;/a&gt; at PDC08 almost a year ago. Now, after a long hard year of constant work on both of our parts, I'm pleased to say that &lt;strong&gt;the book is now available on both &lt;a href="http://www.testingaspnet.com/book"&gt;Amazon.com&lt;/a&gt; and &lt;a href="http://www.testingaspnet.com/bookuk"&gt;Amazon.co.uk&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The book provides the reader with an introduction into the main issues faced when testing ASP.net web applications, both WebForms and MVC. We wanted to provide a guide covering the various different issues you will face during the development and testing lifecycle.&lt;/p&gt;

&lt;p&gt;The chapters are:&lt;br/&gt;
Chapter 1: Preliminary Concerns&lt;br/&gt;
Chapter 2: Design and Testability&lt;br/&gt;
Chapter 3: Unit Testing and Test Driven Development&lt;br/&gt;
Chapter 4: Integration Testing &lt;br/&gt;
Chapter 5: Automated UI Testing &lt;br/&gt;
Chapter 6: Acceptance Testing &lt;br/&gt;
Chapter 7: Manual Testing &lt;br/&gt;
Chapter 8: Performance Testing &lt;br/&gt;
Chapter 9: Accessibility Testing &lt;br/&gt;
Chapter 10: Security Testing &lt;br/&gt;&lt;/p&gt;

&lt;p&gt;As proof that the book does actually exist, the amazing &lt;a href="http://visuallounge.techsmith.com/"&gt;Betsy Weber&lt;/a&gt; spotted the book on the Wiley stand at PDC09.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/betsyweber/status/5805581354" rel="nofollow"&gt;&lt;img src="http://www.testingaspnet.com/wild/PDC_Wiley_Stand.jpg" alt="Testing ASP.net Web Applications @ PDC09" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you happen to spot the book anywhere, or if you have read a copy and have feedback then please do let us know! We would love to hear from you!&lt;/p&gt;

&lt;p&gt;Since completing the book, I've taken a break, joined &lt;a href="http://www.7digital.com" rel="nofollow"&gt;7Digital.com&lt;/a&gt; and started working on a number of other projects. Exciting times!&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-2469112674779558872?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/MwduSeXxq1U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/2469112674779558872/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=2469112674779558872" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/2469112674779558872" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/2469112674779558872" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/MwduSeXxq1U/i-written-book-on-testing-aspnet-web.html" title="I&amp;#39;ve written a book on Testing ASP.net Web Applications" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/11/i-written-book-on-testing-aspnet-web.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-8921266333272552568</id><published>2009-11-18T00:01:00.001Z</published><updated>2009-11-18T00:07:48.410Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="GitHub" /><category scheme="http://www.blogger.com/atom/ns#" term="Git" /><title type="text">Welcome to GitHub - Your first git repository</title><content type="html">&lt;p&gt;I've been using GitHub for a while now as it's a great way to share ideas and code in the public domain. Recently, I've had a number of people ask me how they can get started using GitHub. Thankfully, GitHub is an extremely simple service to use!! &lt;/p&gt;

&lt;p&gt;Firstly, GitHub is a social coding repository, building on top of git (a source control system) to encourage collaboration on code and open source projects. By having this aim, the site is organised in such a way to make it very simple to upload code, as well as add additional contributors to the project. GitHub also has paid for accounts offering private repositories and additional features. &lt;/p&gt;

&lt;p&gt;First, to use GitHub you need a git client installed. If you are on OSX, I recommend using the &lt;a href="http://code.google.com/p/git-osx-installer/downloads/list"&gt;git-osx-installer&lt;/a&gt; while if you are on windows I suggest the &lt;a href="http://code.google.com/p/msysgit/downloads/list"&gt;MSysGit project&lt;/a&gt;. From my experience, I've found these to be the most effective way to start using git. &lt;/p&gt;

&lt;p&gt;After signing up for a &lt;a href="https://github.com/signup/free"&gt;free account&lt;/a&gt; on GitHub, you need to create a &lt;a href="http://github.com/guides/providing-your-ssh-key"&gt;public key&lt;/a&gt;. The next stage is to create a public repository to store code. &lt;/p&gt;

&lt;p&gt;All you need to do is enter a name for a new repository, a description and click Create. Each project has it's own repository, unlike with other source control systems such as SVN. &lt;br/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://lh5.ggpht.com/_exs7ZT6h_9Q/Sn7fNzwLoPI/AAAAAAAAAKo/JFnDA95UdKc/GitHub_Create.png?imgmax=800" alt="GitHub_Create.png" border="0" width="450" height="270" /&gt;&lt;br/&gt;&lt;/p&gt;

&lt;p&gt;After clicking create, you have your repository. GitHub provides you with the next steps about how you can add code in your public repository. A great way to learn the fundamentals of git at the same time. &lt;br/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://lh5.ggpht.com/_exs7ZT6h_9Q/Sn7f-EDib6I/AAAAAAAAAKs/zAzuI8V7y44/GitHub_ReproCreated.png?imgmax=800" alt="GitHub_ReproCreated.png" border="0" width="450" height="200" /&gt;&lt;br/&gt;&lt;/p&gt;

&lt;p&gt;The first command you will need is 'git init', this creates your local repository to store your project. Once you have a local repository, you can do all the standard commands you would expect such as git add, git commit, branch etc.  &lt;/p&gt;

&lt;p&gt;After you push your code to github, everyone will be able to view, clone, fork your repository. A great way to allow others to collaborate on your project. In my case, the repository I created was &lt;a href="http://github.com/BenHall/SimplyRubyServer/"&gt;http://github.com/BenHall/SimplyRubyServer/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As you start using GitHub and Git more and more, you will really understand how powerful they are. &lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-8921266333272552568?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/O7eZ4kjvEns" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/8921266333272552568/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=8921266333272552568" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/8921266333272552568" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/8921266333272552568" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/O7eZ4kjvEns/welcome-to-github-your-first-git.html" title="Welcome to GitHub - Your first git repository" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/11/welcome-to-github-your-first-git.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-1776156895586515869</id><published>2009-10-22T20:50:00.001Z</published><updated>2009-10-22T20:50:34.110Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="given.org" /><category scheme="http://www.blogger.com/atom/ns#" term="launch48" /><title type="text">Given.org at #launch48</title><content type="html">&lt;p&gt;&lt;a href="http://www.given.org" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="3-given_logo" border="0" alt="3-given_logo" align="right" src="http://lh3.ggpht.com/_exs7ZT6h_9Q/SuDFjP0KwmI/AAAAAAAAAK8/3f32450nvZg/3-given_logo%5B5%5D.png?imgmax=800" width="240" height="115"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;This weekend I attended an awesome event called &lt;a href="http://www.launch48.com/" target="_blank"&gt;Launch48&lt;/a&gt; at the PayPal\eBay offices in Richmond (London). The concept is simple, anyone is allowed to pitch an idea in 1 minute on the Friday evening, this event had around 30 pitches. After this, people vote on which ideas they like. Next the top 12 teams give a 2 minute pitch and Q&amp;amp;A. After a second vote, the 6 top teams start work. Everyone who attended selects a team to help with the aim of having a demoable product and business by 4pm on Sunday. Our team created Given.org, video explaining the idea can be found below. &lt;/p&gt; &lt;p&gt;GIVEN helps companies find and support people’s causes on Facebook. &lt;/p&gt; &lt;p&gt;&lt;object width="400" height="220"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7126886&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=7126886&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="220"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://vimeo.com/7126886"&gt;30 Seconds about Given.org&lt;/a&gt; from &lt;a href="http://vimeo.com/user2477667"&gt;Given dot Org&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;It gives companies the ability to publicly sponsor fundraising initiatives – whether they are being led by employees, fans or customers. This offers companies a new way to engage with people on Facebook and support worthwhile causes.&lt;br&gt;&lt;br&gt;For fundraisers GIVEN offers a whole new world of potential sponsors beyond their existing network of family and friends. GIVEN helps people raise money from over 20,000 companies that currently have a presence on Facebook.&amp;nbsp; Luckily, the team had some amazing designers from &lt;a href="http://www.evisua.com" target="_blank"&gt;Evisua.com&lt;/a&gt; who created the website below:&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_exs7ZT6h_9Q/SuDFkNp7ycI/AAAAAAAAALA/zq9Y0Ck9uzA/s1600-h/image%5B5%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_exs7ZT6h_9Q/SuDFk4PjOmI/AAAAAAAAALI/HjG2j31hHss/image_thumb%5B3%5D.png?imgmax=800" width="640" height="402"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;While the designers did their thing, the developers, which I was one of, worked on the facebook application. Creating facebook applications has a small learning curve, but actually pretty straight forward to create once you get started. Our application looked like this after the end of the weekend: &lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_exs7ZT6h_9Q/SuDFlvV3FrI/AAAAAAAAALM/5LQ2qabtOFw/s1600-h/image%5B10%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_exs7ZT6h_9Q/SuDFmWYmNuI/AAAAAAAAALQ/Ipkn5a657xY/image_thumb%5B6%5D.png?imgmax=800" width="640" height="389"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Hopefully you will be hearing more about this in the future, but wanted to give people a heads up into what is happening in and around London. If you want to know about the other five teams, check out the &lt;a href="http://eu.techcrunch.com/2009/10/18/launch48-startups-present-their-ideas-after-a-frantic-48-hours/" target="_blank"&gt;TechCrunch article&lt;/a&gt;. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-1776156895586515869?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/MiiANxVAybw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/1776156895586515869/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=1776156895586515869" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/1776156895586515869" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/1776156895586515869" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/MiiANxVAybw/givenorg-at-launch48.html" title="Given.org at #launch48" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/10/givenorg-at-launch48.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-494727266674795681</id><published>2009-10-19T22:07:00.001Z</published><updated>2009-10-19T22:07:19.944Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="MEF" /><category scheme="http://www.blogger.com/atom/ns#" term="NxtGenUG" /><title type="text">MEF – NxtGenUG Coventry</title><content type="html">&lt;p&gt;Tonight I gave another run out of my MEF session at NxtGenUG Coventry. Thank you to everyone who attended, I had a great time. Below are my slides and code samples. Any questions, just let me &lt;a href="http://twitter.com/ben_hall" target="_blank"&gt;know&lt;/a&gt;.&lt;/p&gt; &lt;div style="text-align: left; width: 425px" id="__ss_2283942"&gt;&lt;a style="margin: 12px 0px 3px; display: block; font: 14px helvetica,arial,sans-serif; text-decoration: underline" title="Mef - NxtGenUG Coventry" href="http://www.slideshare.net/BenHalluk/mef-nxtgenug-coventry"&gt;Mef - NxtGenUG Coventry&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mef-091019163348-phpapp01&amp;amp;stripped_title=mef-nxtgenug-coventry" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mef-091019163348-phpapp01&amp;amp;stripped_title=mef-nxtgenug-coventry" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt; &lt;div style="font-family: tahoma,arial; height: 26px; font-size: 11px; padding-top: 2px"&gt;View more &lt;a style="text-decoration: underline" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline" href="http://www.slideshare.net/BenHalluk"&gt;BenHalluk&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;strong&gt;Download code: &lt;/strong&gt;&lt;a href="http://blog.benhall.me.uk/downloads/NxtGenUG/CambridgeMEF/Code.zip" target="_blank"&gt;&lt;strong&gt;Code.zip&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-494727266674795681?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/42f4VeyR9tk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/494727266674795681/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=494727266674795681" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/494727266674795681" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/494727266674795681" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/42f4VeyR9tk/mef-nxtgenug-coventry.html" title="MEF – NxtGenUG Coventry" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/10/mef-nxtgenug-coventry.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-3690960681787445427</id><published>2009-09-29T21:45:00.001Z</published><updated>2009-09-29T21:45:39.335Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><title type="text">no such file to load -- mkmf</title><content type="html">&lt;p&gt;Today I was attempting to install a package on my ubuntu machine and I received the following error:&lt;/p&gt;&lt;pre&gt;extconf.rb:1in 'require': no such file to load -- mkmf (LoadError)&lt;/pre&gt;
&lt;p&gt;To solve the problem, I simply installed the ruby1.8-dev package, this was done by the command:&lt;/p&gt;&lt;pre&gt;sudo apt-get install ruby1.8-dev&lt;/pre&gt;
&lt;p&gt;I could then happily install the package I wanted.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-3690960681787445427?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/9bz2txIBlh8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/3690960681787445427/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=3690960681787445427" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/3690960681787445427" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/3690960681787445427" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/9bz2txIBlh8/no-such-file-to-load-mkmf.html" title="no such file to load -- mkmf" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/09/no-such-file-to-load-mkmf.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-7852348254600718730</id><published>2009-09-29T00:17:00.001Z</published><updated>2009-09-29T00:18:56.539Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogging" /><title type="text">Making my blog suck less - Syntax Highlighting</title><content type="html">&lt;p&gt;Following on in the series of how I have improved my blog, its time to address the issue of syntax highlighting. I admit, this is something which I think has really let me down and something which is long overdue. &lt;/p&gt;

&lt;p&gt;There are a number of difference approaches available to solve this problem, however the best approach I came across is from &lt;a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter" rel="nofollow"&gt;http://alexgorbatchev.com/wiki/SyntaxHighlighter&lt;/a&gt;. This is a javascript+css library which can be installed on your blog, which thankfully is a very simply task. The CSS you need to reference are the following:&lt;/p&gt;

&lt;pre class="brush: css;"&gt;
	&lt;link type="text/css" rel="stylesheet" href="syntaxhighlight/styles/shCore.css"/&gt;
	&lt;link type="text/css" rel="stylesheet" href="syntaxhighlight/styles/shThemeDefault.css"/&gt;
&lt;/pre&gt;

&lt;p&gt;The javascript I have referenced in shown below.&lt;/p&gt;

&lt;pre class="brush: js;"&gt;
		&lt;script type="text/javascript" src="syntaxhighlight/scripts/shCore.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript" src="syntaxhighlight/scripts/shBrushBash.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript" src="syntaxhighlight/scripts/shBrushCSharp.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript" src="syntaxhighlight/scripts/shBrushCss.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript" src="syntaxhighlight/scripts/shBrushDiff.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript" src="syntaxhighlight/scripts/shBrushJava.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript" src="syntaxhighlight/scripts/shBrushJScript.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript" src="syntaxhighlight/scripts/shBrushPlain.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript" src="syntaxhighlight/scripts/shBrushPython.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript" src="syntaxhighlight/scripts/shBrushRuby.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript" src="syntaxhighlight/scripts/shBrushScala.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript" src="syntaxhighlight/scripts/shBrushSql.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript" src="syntaxhighlight/scripts/shBrushXml.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript"&gt;
			SyntaxHighlighter.config.clipboardSwf = 'scripts/clipboard.swf';
			SyntaxHighlighter.all();
		&lt;/script&gt;
&lt;/pre&gt;

&lt;p&gt;In my posts, I can then simply wrap the snippet in a pre block and assign the appropriate brush class to highlight the syntax.&lt;/p&gt;

&lt;p&gt;&lt;pre class="brush: c-sharp;"&gt;
public string test()
{
return "abc";
}
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;The following are a list of brushes for the different languages I have referenced.&lt;/p&gt;

&lt;p&gt;C# - c-sharp&lt;br/&gt;
CSS - css&lt;br/&gt;
JavaScript - js&lt;br/&gt;
Java - java&lt;br/&gt;
Ruby - ruby&lt;br/&gt;
Python - python&lt;br/&gt;
Scala - scala&lt;br/&gt;
SQL - sql&lt;br/&gt;
Xml - xml&lt;/p&gt;

&lt;p&gt;For those who are using Windows Live Writer, there is a plugin to make syntax highlighting even easier! This is available to download from &lt;a href="http://www.codeplex.com/precode" rel="nofollow"&gt;http://www.codeplex.com/precode&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hopefully this should make code much easier to read in the future. Another approach I was tempted by is using GitHub Gists. Gists are snippets of code hosted on github which you can then embed into your posts, as shown below. &lt;/p&gt;

&lt;script src="http://gist.github.com/195464.js"&gt;&lt;/script&gt;

&lt;p&gt;The reason I didn't go down this route is that it makes it difficult to insert code when writing a blog 'offline' and when GitHub is down. As a result, I decided to stick with the classic approach for now. But what do you think?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-7852348254600718730?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/1OAZKMV1Rr8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/7852348254600718730/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=7852348254600718730" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/7852348254600718730" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/7852348254600718730" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/1OAZKMV1Rr8/making-my-blog-suck-less-syntax.html" title="Making my blog suck less - Syntax Highlighting" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/09/making-my-blog-suck-less-syntax.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-209002420443949372</id><published>2009-09-28T23:51:00.001Z</published><updated>2009-09-29T00:04:26.269Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogging" /><category scheme="http://www.blogger.com/atom/ns#" term="Twitter" /><title type="text">Making my blog suck less - Retweet (via @Tweetmeme)</title><content type="html">For those of your who haven't come across &lt;a href="http://tweetmeme.com/"&gt;Tweetmeme&lt;/a&gt; before, they are a Reading (UK) based startup aggregating all the links which are retweeted on twitter. Many say it is 'digg for twitter'.

While my blog posts generally don't get retweeted, I wanted to include a retweet button as an experiment to see if it will have any difference on the traffic, tweets of blog posts or my followers count.

To add the tweetmeme button onto my posts, I simply include the following javascript. Note, I've made some adjustments, firstly I have gone for the compact style, I have also manually set the url which the button relates to which is set by the blogger platform and finally set the retweet to come from me.

&lt;pre class="brush: js;"&gt;
	&lt; script type="text/javascript" &gt;
		tweetmeme_style = 'compact';
		tweetmeme_url = '&lt;$BlogItemPermalinkUrl$&gt;';
		tweetmeme_source = 'ben_hall';
	&lt;/script&gt;
	&lt; script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js" &gt;&lt; /script &gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-209002420443949372?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/W_5HPQov4S8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/209002420443949372/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=209002420443949372" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/209002420443949372" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/209002420443949372" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/W_5HPQov4S8/making-my-blog-suck-less-retweet-via.html" title="Making my blog suck less - Retweet (via @Tweetmeme)" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/09/making-my-blog-suck-less-retweet-via.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-21967381.post-3320727406321286769</id><published>2009-09-28T22:37:00.001Z</published><updated>2009-09-28T22:39:49.879Z</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogging" /><title type="text">Making my blog suck less</title><content type="html">&lt;p&gt;While I've been blogging for a number of years, my theme and layout has never really had my full attention. This has resulted in a number of issues, poor experience and finding older content more difficult than it needed to be. As such, I've decided to give the site a face-lift. A lot of this has been inspired by &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt; and the tips he has given to improve his blog.&lt;/p&gt;

&lt;p&gt;This post covers the initial changes I have made, why I've made them and some tips you could apply to your own site if you wished. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) Added a notice bar&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;At the top of every page I have added a notice bar with links to various internal and external pages which I would like my readers to pay attention to and visit. These include various social sites such as GitHub and Twitter with the hope that by having them in the notice bar people will be able to more easily identify them. Of course, there still needs to be excellent content on those sites, but making it easier for readers to access should be a high priority.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Making my favourite personal posts easier to find&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are a number of posts which I'm proud of which new visitors might be interested in and as such I wanted to make it easier for people to find. The aim is to reduce the bounce rate of visits from search engines, but also ensure that this content can be accessible to anyone who might be interested in what I have written previously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Clean HTML&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One of my personal bug bears at the moment is having clean(ish) HTML and CSS. I used to let this slide, but over time I've come to realise just how important it is. Not only does it improve compatibility across different browsers, but it also improves the load-time as the HTML is more streamlined as well as allowing for a more consistent look across the blog. The added advantage being that the html is now in a maintainable state meaning I'm not scared of updating the template like before. The problem with this is that things might not look 100% correct - if you notice any problems with formatting, then please let me know.&lt;/p&gt;

If you visit my homepage, you hopefully will notice a number of other changes some of which I'll cover in later posts. I'm hoping you will find some benefit in my new changes. If you think there is anything else I need to change, then please let me know. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21967381-3320727406321286769?l=blog.benhall.me.uk' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BenHall/~4/IIKDw50BxD0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/3320727406321286769/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21967381&amp;postID=3320727406321286769" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/3320727406321286769" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21967381/posts/default/3320727406321286769" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BenHall/~3/IIKDw50BxD0/making-my-blog-suck-less.html" title="Making my blog suck less" /><author><name>Ben Hall</name><uri>http://www.blogger.com/profile/17734933641904484310</uri><email>Blog@BenHall.me.uk</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="02963303944968721975" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.benhall.me.uk/2009/09/making-my-blog-suck-less.html</feedburner:origLink></entry></feed>
