tag:blogger.com,1999:blog-13031981730880510672024-03-17T21:03:21.633-07:00tech-nous.NET and other thoughts.Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.comBlogger28125tag:blogger.com,1999:blog-1303198173088051067.post-45448081535385319962012-12-15T01:45:00.003-08:002012-12-15T01:46:31.323-08:00Blogging<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="color: #351c75; font-family: Courier New, Courier, monospace;">I really should start blogging again. Life and a long commute has got in the way.</span><br />
<span style="color: #351c75; font-family: Courier New, Courier, monospace;"><br /></span>
<span style="color: #351c75; font-family: Courier New, Courier, monospace;">At #tech-nous, we are still developing daily with .net and still focusing on C#. Since the last entry, things have changed in the Microsoft eco-system. For one thing, there isn't really a clear answer to what is happening in the UI space. Is Silverlight completely dead? What is going to happen to WPF? I'm fairly certain that XAML will be around for some time to come. But in what context? Is HTML5 and javascript really the way to go for Windows thick clients? I'm not so sure given that the javascript that needs to be written for Windows apps isn't the same as the javascript dominating the web.</span><br />
<span style="color: #351c75; font-family: Courier New, Courier, monospace;"><br /></span>
<span style="color: #351c75; font-family: Courier New, Courier, monospace;">Sometimes I wish the path was clearer, so I could focus on what I knew was going to win. However it does add to the excitement - would it be boring if we knew the outcome already? These are billion dollar questions and if someone knew the answer they probably would keep it to themselves and cash in.</span><br />
<span style="color: #351c75; font-family: Courier New, Courier, monospace;"><br /></span>
<span style="color: #351c75; font-family: Courier New, Courier, monospace;">Since the last blogpost I could also claim prior art in using a hashtag in the logo! :-) Just as a point of interest, the hash in the #tech-nous logo was meant to signify the root command prompt in bash - it had nothing to do with twitter. It's just happy coincidence that made us look with it.</span><br />
<br />
<span style="color: #351c75; font-family: Courier New, Courier, monospace;"><br /></span>
<br />
<span style="color: #351c75; font-family: Courier New, Courier, monospace;">Now, what to blog on. Learning Rx? .Net 4.5? My thoughts on the new WinRT tablet? </span><br />
<span style="color: #351c75; font-family: Courier New, Courier, monospace;"><br /></span>
<span style="color: #351c75; font-family: Courier New, Courier, monospace;">I may even blog a little on kitesurfing which I have finally learned how to do. It's an excellent way to spend some time blowing away those coding cobwebs and get you away from a screen for an afternoon.</span><br />
<div>
<br /></div>
</div>
Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com3tag:blogger.com,1999:blog-1303198173088051067.post-78993770623745364242009-11-26T08:36:00.000-08:002009-11-26T11:21:31.468-08:00Brighton ALT.NET Xmas Dinner, Wednesday 16th December, 7:30pm at Pizza Express<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3i3RKfgAAzY/Sw7VLRrXy_I/AAAAAAAAAMU/LL72JvgUDxc/s1600/christmas_stocking_7.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 214px; height: 313px;" src="http://1.bp.blogspot.com/_3i3RKfgAAzY/Sw7VLRrXy_I/AAAAAAAAAMU/LL72JvgUDxc/s400/christmas_stocking_7.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5408494592219139058" /></a><div><span class="Apple-style-span" style="font-family:verdana;"><span class="Apple-style-span" style="color:#000099;">For the final Brighton ALT.NET social this year, we're going to have a meal at </span></span><a href="http://www.pizzaexpress.com/our-restaurants/3231/brighton-jubilee-street.aspx"><span class="Apple-style-span" style="font-family:verdana;"><span class="Apple-style-span" style="color:#000099;">Pizza Express, Jubilee Street</span></span></a><span class="Apple-style-span" style="font-family:verdana;"><span class="Apple-style-span" style="color:#000099;"> (next to the library) on Wednesday 16th December at 7:30pm.</span></span></div><div><span class="Apple-style-span" style="font-family:verdana;"><span class="Apple-style-span" style="color:#000099;">We will be having the Christmas Menu which is £15.95 and has plenty to choose from.</span></span></div><div><span class="Apple-style-span" style="font-family:verdana;"><span class="Apple-style-span" style="color:#000099;">Although conversations will inevitably turn to coding, there won't be a post-it note in sight.</span></span></div><div><span class="Apple-style-span" style="font-family:verdana;"><span class="Apple-style-span" style="color:#000099;">That's just how we Yule.</span></span></div><div><span class="Apple-style-span" style="font-family:verdana;"><span class="Apple-style-span" style="color:#000099;">Hope to see you there!</span></span></div><div><span class="Apple-style-span" style="font-family:verdana;"><span class="Apple-style-span" style="color:#000099;">Merry Xmas!</span></span></div>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com101tag:blogger.com,1999:blog-1303198173088051067.post-38513995167516590772009-11-10T11:26:00.000-08:002009-11-10T11:33:07.558-08:00Brighton ALT.NET Beers – Notes from November meet-up<p style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;">Once again, big thanks to all of those who turned up to the ALT.NET beers on a very cold November evening last Wednesday. As promised here are some brief show notes.</span></p><span style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;">The topics discussed were:</span></span><span class="Apple-style-span" style="font-family:verdana;"><br /></span><ul style="color: rgb(0, 0, 153); "><li><span class="Apple-style-span" style="font-family:verdana;">Command-query separation (CQS) </span></li><span class="Apple-style-span" style="font-family:verdana;"><br /></span><li><span class="Apple-style-span" style="font-family:verdana;">Parallel programming </span></li><span class="Apple-style-span" style="font-family:verdana;"><br /></span><li><span class="Apple-style-span" style="font-family:verdana;">Object/Relational Mapping vs. Stored Procedures vs. Inline SQL </span></li><span class="Apple-style-span" style="font-family:verdana;"><br /></span><li><span class="Apple-style-span" style="font-family:verdana;">Windows Presentation Foundation (WPF) vs. WinForms </span></li><span class="Apple-style-span" style="font-family:verdana;"><br /></span><li><span class="Apple-style-span" style="font-family:verdana;">StackOverflow DevDays (London) </span></li><span class="Apple-style-span" style="font-family:verdana;"><br /></span><li><span class="Apple-style-span" style="font-family:verdana;">Multi-tenanted applications </span></li></ul><span style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;">I especially wanted to get the links published to CQS and Parallel Programming/Threading.</span></span><span class="Apple-style-span" style="font-family:verdana;"><br /></span><h4 style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;">Command-query separation (CQS) </span></h4><span style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;">Totally new one on me. Scares me a bit as it sounds different to what I’m used to and I don’t fully understand it yet. If I was less enlightened and not an embracer of change, I might be sharpening my pitchfork and ringing round to gather a mob.</span></span><span class="Apple-style-span" style="font-family:verdana;"><br /></span> <ul style="color: rgb(0, 0, 153); "><li><a title="http://en.wikipedia.org/wiki/Command-query_separation" href="http://en.wikipedia.org/wiki/Command-query_separation"><span class="Apple-style-span" style="font-family:verdana;">http://en.wikipedia.org/wiki/Command-query_separation</span></a><span class="Apple-style-span" style="font-family:verdana;"> </span></li><span class="Apple-style-span" style="font-family:verdana;"><br /></span><li><a title="http://www.infoq.com/interviews/greg-young-ddd" href="http://www.infoq.com/interviews/greg-young-ddd"><span class="Apple-style-span" style="font-family:verdana;">http://www.infoq.com/interviews/greg-young-ddd</span></a><span class="Apple-style-span" style="font-family:verdana;"> </span></li><span class="Apple-style-span" style="font-family:verdana;"><br /></span></ul><span style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;">Thanks to </span></span><a style="color: rgb(0, 0, 153); " href="http://twitter.com/keith_bloom"><span class="Apple-style-span" style="font-family:verdana;">Keith</span></a><span style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;"> for the Greg Young link.</span></span><span class="Apple-style-span" style="font-family:verdana;"><br /></span><h4 style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;">Parallel programming</span></h4><span style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;">AKA Threading. It’s going to become more and more of an issue with quad-core iphones merely a year or two away.</span></span><span class="Apple-style-span" style="font-family:verdana;"><br /></span><p style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;">Thank to </span><a href="http://twitter.com/bruceboughton"><span class="Apple-style-span" style="font-family:verdana;">Bruce</span></a><span class="Apple-style-span" style="font-family:verdana;"> for DMing me these links:</span></p><ul style="color: rgb(0, 0, 153); "><li><a title="http://blogs.msdn.com/pfxteam/" href="http://blogs.msdn.com/pfxteam/"><span class="Apple-style-span" style="font-family:verdana;">http://blogs.msdn.com/pfxteam/</span></a></li></ul><ul style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;"><br /></span><li><a title="http://blogs.msdn.com/maestroteam/" href="http://blogs.msdn.com/maestroteam/"><span class="Apple-style-span" style="font-family:verdana;">http://blogs.msdn.com/maestroteam/</span></a><span class="Apple-style-span" style="font-family:verdana;"> </span></li><span class="Apple-style-span" style="font-family:verdana;"><br /></span><li><a title="http://www.tbray.org/ongoing/What/Technology/Concurrency/" href="http://www.tbray.org/ongoing/What/Technology/Concurrency/"><span class="Apple-style-span" style="font-family:verdana;">http://www.tbray.org/ongoing/What/Technology/Concurrency/</span></a><span class="Apple-style-span" style="font-family:verdana;"> </span></li><span class="Apple-style-span" style="font-family:verdana;"><br /></span><li><a title="http://blogs.msdn.com/usisvde/archive/2009/10/24/how-to-get-started-with-multi-core-parallel-processing-you-can-use.aspx" href="http://blogs.msdn.com/usisvde/archive/2009/10/24/how-to-get-started-with-multi-core-parallel-processing-you-can-use.aspx"><span class="Apple-style-span" style="font-family:verdana;">http://blogs.msdn.com/usisvde/archive/2009/10/24/how-to-get-started-with-multi-core-parallel-processing-you-can-use.aspx</span></a><span class="Apple-style-span" style="font-family:verdana;"> </span></li><span class="Apple-style-span" style="font-family:verdana;"><br /></span></ul><p style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;">And to </span><a href="http://twitter.com/HadleyHope"><span class="Apple-style-span" style="font-family:verdana;">HadleyHope</span></a><span class="Apple-style-span" style="font-family:verdana;"> for this one:</span></p> <ul style="color: rgb(0, 0, 153); "><li><a title="http://www.wilsonmar.com/1threads.htm" href="http://www.wilsonmar.com/1threads.htm"><span class="Apple-style-span" style="font-family:verdana;">http://www.wilsonmar.com/1threads.htm</span></a><span class="Apple-style-span" style="font-family:verdana;"> </span></li><span class="Apple-style-span" style="font-family:verdana;"><br /></span></ul><span style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;">I also really like the series </span></span><a style="color: rgb(0, 0, 153); " href="http://msmvps.com/blogs/jon_skeet/default.aspx"><span class="Apple-style-span" style="font-family:verdana;">Jon Skeet</span></a><span style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;"> produced:</span></span><span class="Apple-style-span" style="font-family:verdana;"><br /></span><ul style="color: rgb(0, 0, 153); "><li><a title="http://www.yoda.arachsys.com/csharp/threads/" href="http://www.yoda.arachsys.com/csharp/threads/"><span class="Apple-style-span" style="font-family:verdana;">http://www.yoda.arachsys.com/csharp/threads/</span></a><span class="Apple-style-span" style="font-family:verdana;"> </span></li></ul><span style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;">December’s Brighton ALT.NET Beers will actually be ALT.NET Food. We will have dinner at a restaurant in the middle of town somewhere.</span></span><span class="Apple-style-span" style="font-family:verdana;"><br /></span><p style="color: rgb(0, 0, 153); "><span class="Apple-style-span" style="font-family:verdana;">Hope to see you there!</span></p>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-62050874648524783082009-11-03T01:39:00.001-08:002009-11-03T01:44:09.323-08:00Brighton ALT.NET Beers - Wed 4th Nov 7pm at The Lord Nelson<span style="color:#0000a0;">Tomorrow evening is Brighton ALT.NET Beers time again.<br /><br />This is probably going to be the last ALT.NET beers this year with questions/discussion; the next one in Dec should probably just be about having a few beers, celebrating and reflecting on the year.<br /><br />The new venue is The Lord Nelson pub which is a couple of doors down from the Albert. </span><a href="http://tinyurl.com/LordNelsonPub"><span style="color:#0000a0;">http://tinyurl.com/LordNelsonPub</span></a><span style="color:#0000a0;"> </span>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-58562835712631565182009-10-14T13:29:00.001-07:002009-10-15T12:54:46.854-07:00Mrs Focker and internet damage<h4>“The Net interprets censorship as damage and routes around it.” <em><font color="#0000a0" size="2">– </font></em><a href="http://www.chemie.fu-berlin.de/outerspace/internet-article.html"><em><font color="#0000a0">John Gilmore</font></em></a></h4> <p><font color="#0000a0">It’s been a pretty intense week so far in what </font><a href="http://news.bbc.co.uk/1/hi/programmes/newsnight"><font color="#0000a0">Newsnight</font></a><font color="#0000a0"> </font><a href="http://twitter.com/simonbooth/status/4846135060"><font color="#0000a0">calls “cyberspace”</font></a><font color="#0000a0">. </font></p> <p><a href="http://news.bbc.co.uk/1/hi/uk_politics/8304908.stm"><em><font color="#0000a0">From BBC News:</font></em></a></p> <p><em><font color="#000000">When is a secret not a secret? When it's on Twitter.</font></em></p> <p><em><font color="#000000">An injunction served on the Guardian and at least one other national newspaper, was meant to stop the papers reporting that the MP Paul Farrelly, had tabled a Parliamentary question about the oil traders Trafigura and its solicitors Carter-Ruck. And it succeeded - up to a point. </font></em></p> <p><em><font color="#000000">…</font></em></p> <p><em><font color="#000000">The social networking site Twitter, was soon awash with posts deploring a threat to media freedom and the reporting of Parliament.</font></em></p> <p><font color="#0000a0">What Trafigura and Carter-Ruck have been a victim of this week, is the combined effect of the internet interpreting censorship as damage (and routing around it), with the </font><a href="http://en.wikipedia.org/wiki/Streisand_effect"><font color="#0000a0">Streisand effect</font></a><font color="#0000a0">.  </font></p> <p><a href="http://en.wikipedia.org/wiki/Barbra_Streisand"><font color="#0000a0">Barbara Streisand</font></a><font color="#0000a0"> is one of those people who are *supermegafamous* and you know what for, but sometimes it’s hard to recall anything they’ve <em>actually done</em>.  Her </font><a href="http://www.imdb.com/name/nm0000659/"><font color="#0000a0">IMDB list is impressive</font></a><font color="#0000a0"> but I try and remember seeing her in something and I mainly 404.  I only really know her as Mrs Focker in </font><a href="http://www.imdb.com/title/tt0290002/"><font color="#0000a0">‘Meet the Fockers</font></a><font color="#0000a0">’.</font></p> <p><a href="http://lh5.ggpht.com/_3i3RKfgAAzY/StY0rEDyQkI/AAAAAAAAAJw/YDRkM5kzqlQ/s1600-h/250px-Barbrahouse1%5B3%5D.jpg"><font color="#0000a0"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="250px-Barbrahouse1" border="0" alt="250px-Barbrahouse1" align="right" src="http://lh5.ggpht.com/_3i3RKfgAAzY/StY0sG3OBEI/AAAAAAAAAJ0/OptkvsP658o/250px-Barbrahouse1_thumb%5B1%5D.jpg?imgmax=800" width="205" height="244" /></font></a><font color="#0000a0">I digress. The Streisand effect is the act of trying to suppress information but instead generates a </font><a href="http://en.wikipedia.org/wiki/Meme"><font color="#0000a0">meme</font></a><font color="#0000a0">.  A giant, unstoppable, self perpetuating, amplifying wave of attention. Precisely because you tried to engineer the exact opposite.  Babs tried to stop a photograph of her house being part of a coastal erosion study and as a result, we all know her house looks almost exactly like the one in this picture on the right. [</font><a href="http://en.wikipedia.org/wiki/File:Barbrahouse1.jpg"><font color="#0000a0">source:wikipedia</font></a><font color="#0000a0">].</font></p> <p><font color="#0000a0">Oops.</font></p> <p><font color="#0000a0">There’s no doubting that it was <a href="http://twitter.com/">Twitter</a> and <a href="http://wikileaks.org/">Wikileaks</a> that facilitated this week’s events.</font></p> <p><a href="http://www.youtube.com/watch?v=NYA9ufivbDw"><font color="#0000a0">Some people say</font></a><font color="#0000a0"> that Wikileaks </font><a href="http://wikileaks.org/wiki/Wikileaks:About"><font color="#0000a0">could become as important a journalistic tool as the Freedom of Information Act</font></a><font color="#0000a0">.</font></p> <p><font color="#0000a0">I don’t doubt it for a moment.  I think the rules are changing.  I think they’re changing as significantly as they did when the web went mainstream in the late 90s.  I think some organisations are going to find out if sunshine is the best disinfectant.  I think it’s going to be interesting.</font></p> <p><font color="#0000a0">It’s also important to note that despite the media reporting this as a battle won, </font><a href="http://wikileaks.org/wiki/Guardian_still_under_secret_toxic_waste_gag"><font color="#0000a0">it isn’t over yet</font></a><font color="#0000a0">.</font></p> <p><font color="#0000a0"></font></p> <p><font color="#0000a0"></font></p> <p><font color="#0000a0"></font></p> <p><font color="#0000a0"></font></p> <p><font color="#0000a0"></font></p> <p><font color="#0000a0"></font></p> Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-60261410549024147812009-10-05T01:36:00.000-07:002009-10-14T13:38:17.368-07:00Brighton ALT.NET Beers - Tues 6th Oct 7pm at The Lord Nelson<font color="#0000a0"><span>Now the nights are drawing in, it's high time for another ALT.NET Beers. We're going to try another venue, because, as great as the Prince Albert has been, sometimes we clash with bands being on upstairs which can make it difficult to nerd out.</span> <br /> <br />So the new venue is The Lord Nelson pub which is a couple of doors down from the Albert. </font><a href="http://tinyurl.com/LordNelsonPub"><font color="#0000a0">http://tinyurl.com/LordNelsonPub</font></a><font color="#0000a0"> <br /></font><span> <br /><font color="#0000a0">Hope to see you there!</font></span><font color="#0000a0"> </font> <p></p> <p><font color="#0000a0"></font></p> Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-35562256729904204202009-07-26T08:00:00.001-07:002009-10-14T13:39:11.810-07:00Simple URL Rewriting with ASP.NET and Managed Fusion UrlRewriter<p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">You can download the example discussed in this post </font></span><a href="http://tech-nous.co.uk/blog/UrlRewriteExample.zip"><span style="font-family: courier new; color: #0000a0"><font face="Verdana">here</font></span></a>.</p> <h3>Why rewrite?</h3> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">The default URLs from ASP.NET Webforms (and possibly even MVC) are not fantastic for SEO (</font></span><a href="http://en.wikipedia.org/wiki/Search_engine_optimization"><span style="font-family: courier new; color: #0000a0"><font face="Verdana">Search Engine Optimisation</font></span></a><span style="font-family: courier new; color: #0000a0"><font face="Verdana">).</font></span></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">You know the sort:</font></span></p> <p><span style="font-family: courier new; color: #0000a0"><strong><font face="Verdana">http://example.com/Questions/Question.aspx?ID=345</font></strong></span></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">Google doesn’t really like URLs like this. It doesn’t say much about the page it represents. It might have an idea that it’s something to do with question 345 but that could mean anything. The file extension (.aspx) doesn’t help either.</font></span></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">What Google likes to see, is something a bit more like this:</font></span></p> <p><span style="font-family: courier new; color: #0000a0"><strong><font face="Verdana">http://example.com/questions/345/how-do-i-do-something</font></strong></span></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">Well with Webforms you’re a little stuck, as the URL is dependent on the file structure of your solution and name of the files.</font></span></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">Unless..</font></span></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">..you perform some <strike>voodoo</strike> URL rewriting.</font></span></p> <h3>Example setup</h3> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">We are going to map an incoming request to a URL like this..:</font></span></p> <p><a href="http://localhost:52468/questions/1337/how-do-i-do-something"><span style="font-family: courier new; color: #0000a0"><strong><font face="Verdana">http://localhost:52468/questions/1337/how-do-i-do-something</font></strong></span></a></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">..to the default page URL like this:</font></span></p> <p><a href="http://localhost:52468/Default.aspx?ID=1337"><span style="font-family: courier new; color: #0000a0"><strong><font face="Verdana">http://localhost:52468/Default.aspx?ID=1337</font></strong></span></a></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">To achieve this I’m going run through a <em>very</em> simple rewriting setup.</font></span></p> <ul> <li><span style="font-family: courier new; color: #0000a0"><font face="Verdana">I will be using </font></span><a href="http://www.coderjournal.com/"><span style="font-family: courier new; color: #0000a0"><font face="Verdana">Nick Berardi</font></span></a><span style="font-family: courier new; color: #0000a0"><font face="Verdana">’s excellent (and free) </font></span><a href="http://www.managedfusion.com/products/url-rewriter/"><span style="font-family: courier new; color: #0000a0"><em><strong><font face="Verdana">Managed Fusion UrlRewriter</font></strong></em></span></a><font face="Verdana"><span style="font-family: courier new; color: #0000a0"><em><strong>.</strong></em></span> </font></li> <li><b><span style="font-family: courier new; color: #0000a0"><font face="Verdana">I am only going to be covering the absolute bare minimum to get you going. </font></span></b></li> </ul> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">Nick has a more detailed example </font></span><a href="http://urlrewriter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=23521"><span style="font-family: courier new; color: #0000a0"><font face="Verdana">here</font></span></a><span style="font-family: courier new; color: #0000a0"><font face="Verdana"> and you should also check out Scott Guthrie’s post </font></span><a href="http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx"><span style="font-family: courier new; color: #0000a0"><font face="Verdana">here</font></span></a><span style="color: #0000a0"><span style="font-family: courier new"><font face="Verdana">. (N.B. My example is based on Nick’s)<b></b></font></span></span></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">First, create a standard web application:</font></span></p> <p><a href="http://lh3.ggpht.com/_3i3RKfgAAzY/Smxvaao12oI/AAAAAAAAAH4/qeXqgJhHWH4/s1600-h/createwebapplication6.png"><span style="font-family: courier new; color: #0000a0"><font face="Verdana"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="createwebapplication" border="0" alt="createwebapplication" src="http://lh4.ggpht.com/_3i3RKfgAAzY/SmxvbBcPPOI/AAAAAAAAAH8/z-_ug2UtrOk/createwebapplication_thumb4.png?imgmax=800" width="442" height="277" /></font></span></a><span style="font-family: courier new; color: #0000a0"><font face="Verdana"> </font></span></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">Then </font></span><a href="http://urlrewriter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=23521"><span style="font-family: courier new; color: #0000a0"><font face="Verdana">download</font></span></a><span style="font-family: courier new; color: #0000a0"><font face="Verdana"> </font></span><a href="http://www.managedfusion.com/products/url-rewriter/"><span style="font-family: courier new; color: #0000a0"><font face="Verdana">UrlRewriter from Managed Fusion</font></span></a><span style="font-family: courier new; color: #0000a0"><font face="Verdana">. Unzip it, put the dll and pdb in a directory of your choosing and add a reference to the dll.</font></span></p> <p><a href="http://lh5.ggpht.com/_3i3RKfgAAzY/Smxvb0aVO8I/AAAAAAAAAIA/7d644zYfLoo/s1600-h/addreference3.png"><span style="font-family: courier new; color: #0000a0"><font face="Verdana"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="addreference" border="0" alt="addreference" src="http://lh3.ggpht.com/_3i3RKfgAAzY/Smxvcg6Y9XI/AAAAAAAAAIE/7UO3JCe_4V4/addreference_thumb1.png?imgmax=800" width="240" height="229" /></font></span></a><span style="font-family: courier new; color: #0000a0"><font face="Verdana"> </font></span></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">Next, create a new text file called <strong>ManagedFusion.Rewriter.txt</strong> and place the following in it:</font></span></p> <p><a href="http://lh5.ggpht.com/_3i3RKfgAAzY/SmxvdS9bo8I/AAAAAAAAAII/GqHhIct75Dc/s1600-h/createrewritertxtfile6.png"><span style="font-family: courier new; color: #0000a0"><font face="Verdana"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="createrewritertxtfile" border="0" alt="createrewritertxtfile" src="http://lh6.ggpht.com/_3i3RKfgAAzY/SmxveNLlgDI/AAAAAAAAAIM/U2YjdsTMxWY/createrewritertxtfile_thumb4.png?imgmax=800" width="591" height="187" /></font></span></a><span style="font-family: courier new; color: #0000a0"><font face="Verdana"> </font></span></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">In your Web.Config, add (or copy from the example) these following sections:</font></span></p> <p><span style="font-family: courier new; color: #0000a0"><strong><font face="Verdana">configuration -> configSections -></font></strong></span></p> <p><a href="http://lh3.ggpht.com/_3i3RKfgAAzY/SmxvenOMERI/AAAAAAAAAIQ/PEtpKVglDUs/s1600-h/image%5B9%5D.png"><span style="font-family: courier new; color: #0000a0"><font face="Verdana"><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://lh5.ggpht.com/_3i3RKfgAAzY/SmxvfDEoAjI/AAAAAAAAAIU/Ni3BLAsnOik/image_thumb%5B5%5D.png?imgmax=800" width="611" height="75" /></font></span></a><span style="font-family: courier new; color: #0000a0"><font face="Verdana"> </font></span></p> <p><span style="color: #0000a0"><span style="font-family: courier new"><font face="Verdana"><strong>configuration -></strong> </font></span></span></p> <p><a href="http://lh4.ggpht.com/_3i3RKfgAAzY/SmxvfgxdcjI/AAAAAAAAAIY/t9U7qWl4nuk/s1600-h/image%5B8%5D.png"><span style="font-family: courier new; color: #0000a0"><font face="Verdana"><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://lh5.ggpht.com/_3i3RKfgAAzY/SmxvgpwGrEI/AAAAAAAAAIc/XhAjdHKe8mk/image_thumb%5B4%5D.png?imgmax=800" width="621" height="151" /></font></span></a><span style="font-family: courier new; color: #0000a0"><font face="Verdana"> </font></span></p> <p><span style="font-family: courier new; color: #0000a0"></span></p> <p><span style="font-family: courier new; color: #0000a0"></span></p> <span style="color: #0000a0"><span style="font-family: courier new"><font face="Verdana"><strong>configuration -> system.web -> httpModules -></strong> </font></span></span> <p></p> <p><a href="http://lh3.ggpht.com/_3i3RKfgAAzY/Smxvhc_9WjI/AAAAAAAAAIg/g4gtQ8cdulk/s1600-h/image%5B15%5D.png"><span style="font-family: courier new; color: #0000a0"><font face="Verdana"><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://lh4.ggpht.com/_3i3RKfgAAzY/Smxvh59wMyI/AAAAAAAAAIs/yQcu7Yy_lCo/image_thumb%5B9%5D.png?imgmax=800" width="519" height="68" /></font></span></a><span style="font-family: courier new; color: #0000a0"><font face="Verdana"> </font></span></p> <p><span style="font-family: courier new; color: #0000a0"><strong><font face="Verdana">configuration -> system.webServer -></font></strong></span></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">On the opening <strong>modules</strong> tag, set runAllManagedModulesForAllRequests to true and add the RewriterModule so is becomes: </font></span></p> <p><a href="http://lh6.ggpht.com/_3i3RKfgAAzY/SmxvirQ38bI/AAAAAAAAAIw/irEBerB8vFc/s1600-h/image%5B26%5D.png"><span style="font-family: courier new; color: #0000a0"><font face="Verdana"><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://lh6.ggpht.com/_3i3RKfgAAzY/SmxvjOi1TtI/AAAAAAAAAI0/y2aR4aCvhbM/image_thumb%5B16%5D.png?imgmax=800" width="573" height="101" /></font></span></a><span style="font-family: courier new; color: #0000a0"><font face="Verdana"> </font></span></p> <p><span style="font-family: courier new; color: #0000a0"><strong><font face="Verdana">configuration -> system.webServer -> handlers -></font></strong></span></p> <p><a href="http://lh4.ggpht.com/_3i3RKfgAAzY/Smxvj_wIntI/AAAAAAAAAI4/PxWp35ExkR4/s1600-h/image%5B24%5D.png"><span style="font-family: courier new; color: #0000a0"><font face="Verdana"><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://lh5.ggpht.com/_3i3RKfgAAzY/SmxvkseCXSI/AAAAAAAAAI8/JftNqRWSX8w/image_thumb%5B14%5D.png?imgmax=800" width="564" height="139" /></font></span></a><span style="font-family: courier new; color: #0000a0"><font face="Verdana"> </font></span></p> <p><span style="font-family: courier new; color: #0000a0"></span></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">And that’s it!</font></span></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">Note that the application actually ignores the slugs at the end of the URL so your app can generate what it likes for them. </font></span></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">Also note that the rewrite rules can be far more complex than what is shown in the example. UrlRewriter’s rules are based on the </font></span><a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html"><span style="font-family: courier new; color: #0000a0"><font face="Verdana">Apache module, mod_rewrite</font></span></a><span style="font-family: courier new; color: #0000a0"><font face="Verdana">. </font></span></p> <p><span style="font-family: courier new; color: #0000a0"><font face="Verdana">Further reading:</font></span></p> <ul> <li><span style="font-family: courier new; color: #0000a0"><a href="http://stackoverflow.com/questions/2262/asp-net-url-rewriting"><font face="Verdana">Stackoverflow Question: ASP.NET URL Rewriting</font></a></span> </li> <li><span style="font-family: courier new; color: #0000a0"><a href="http://www.managedfusion.com/products/url-rewriter/"><font face="Verdana">Managed Fusion Url ReWriter</font></a></span> </li> <li><span style="font-family: courier new; color: #0000a0"><a href="http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx"><font face="Verdana">ScottGu’s post: ‘Tip/Trick: Url Rewriting with ASP.NET’</font></a></span> </li> </ul> <p><span style="font-family: courier new; color: #0000a0"></span></p> <p><span style="font-family: courier new; color: #0000a0"></span></p> <p><span style="font-family: courier new"></span></p> Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com3tag:blogger.com,1999:blog-1303198173088051067.post-55586738637894585082009-07-20T11:02:00.002-07:002009-10-14T13:40:01.103-07:00Brighton ALT.NET Beers: Tuesday 4th August, 7pm at The Prince Albert<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3i3RKfgAAzY/SmdtU61v93I/AAAAAAAAAG0/LmpAxnCAlc4/s1600-h/Pint.png"><img style="margin: 0px 0px 10px 10px; width: 238px; float: right; height: 270px; cursor: hand" id="BLOGGER_PHOTO_ID_5361374087567374194" border="0" alt="" src="http://4.bp.blogspot.com/_3i3RKfgAAzY/SmdtU61v93I/AAAAAAAAAG0/LmpAxnCAlc4/s400/Pint.png" /></a> <br /><span style="font-family: 'Times New Roman'" class="Apple-style-span"> <div><span style="font-family: 'courier new'; color: #000099" class="Apple-style-span"><font face="Verdana">I know we talked about possibly of doing this one outside, but the weather has been too changable of late, so let's convene indoors.</font></span></div> <div><span style="font-family: 'courier new'; color: #000099" class="Apple-style-span"><font face="Verdana">At the pub.</font></span></div> <div><span style="font-family: 'courier new'; color: #000099" class="Apple-style-span"><font face="Verdana">Ace.</font></span></div> <div><span style="font-family: 'courier new'; color: #000099" class="Apple-style-span"><font face="Verdana">So I'm delighted to announce that the next Brighton ALT.NET beers will be:</font></span></div> <div><span style="font-family: 'courier new'; color: #000099" class="Apple-style-span"> <br /><font face="Verdana"></font></span></div> <div><span style="font-weight: bold" class="Apple-style-span"><span style="color: rgb(0,0,153)" class="Apple-style-span"><span style="font-family: 'courier new'" class="Apple-style-span"><font face="Verdana"><span style="font-size: x-large" class="Apple-style-span">Tuesday 4th August, </span><span style="font-family: 'Times New Roman'; color: rgb(0,0,0)" class="Apple-style-span"><span style="color: rgb(0,0,153)" class="Apple-style-span"><span style="font-family: 'courier new'" class="Apple-style-span"><span style="font-size: x-large" class="Apple-style-span">7pm at </span></span></span></span></font><a title="http://maps.google.co.uk/maps?hl=en&safe=off&um=1&ie=UTF-8&q=the+prince+albert+brighton&fb=1&split=1&gl=uk&cid=0,0,4050875300558399989&ei=DZzDSb6gBeLBjAfy3tiuCw&sa=X&oi=local_result&resnum=1&ct=image" href="http://tinyurl.com/PrinceAlbert-Brighton"><span style="font-weight: bold" class="Apple-style-span"><span style="color: rgb(0,0,153)" class="Apple-style-span"><span style="font-family: 'courier new'" class="Apple-style-span"><span style="font-size: x-large" class="Apple-style-span"><font face="Verdana">The Prince Albert</font></span></span></span></span></a><span style="font-weight: bold" class="Apple-style-span"><span style="color: rgb(0,0,153)" class="Apple-style-span"><span style="font-family: 'courier new'" class="Apple-style-span"><span style="font-size: x-large" class="Apple-style-span"><font face="Verdana">.</font></span></span></span></span></span></span></span></div> <div><span style="font-family: 'courier new'; color: #000099" class="Apple-style-span"> <br /><font face="Verdana"></font></span></div> <div><span style="font-family: 'courier new'; color: rgb(0,0,153)" class="Apple-style-span"><font face="Verdana">If you're a .NET developer in the area and you haven't been yet, do come along. The group is super-welcoming. We want to hear your ideas about how you think software should be written.</font></span></div> <div><span style="font-family: 'courier new'; color: #000099" class="Apple-style-span"><font face="Verdana">Hope to see you there!</font></span></div> <div> <div><span style="font-family: 'courier new'; color: #000099" class="Apple-style-span"><font face="Verdana">P.S. Hopefully we'll get a chance for the even-less-formal beers on the beach in Septemeber.</font></span></div> </div> </span> Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-16992295797194557702009-05-26T10:31:00.000-07:002009-05-26T10:41:03.252-07:00Brighton ALT.NET Beers: Tuesday 2nd June, 7pm at The Prince Albert<span class="Apple-style-span" style="font-family: 'Times New Roman'; "><div style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%/normal Georgia, serif; text-align: left; "><div><div><span class="Apple-style-span" style="font-family: 'Times New Roman'; "><div style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%/normal Georgia, serif; text-align: left; "><div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Once again, a big thank you to all of those who turned up to the Brighton ALT.NET beers on Tuesday 5th May. Despite being the first day after a bank holiday, numbers were still good and many topics were discussed in an informal setting over a pint or two.</span></span></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';"><br /></span></span></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">More drinking and thinking this coming Tuesday:</span></span></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';"><br /></span></span></div><div><span class="Apple-style-span" style="font-weight: bold;"><span class="Apple-style-span" style="font-size: large;"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Brighton ALT.NET Beers, Tuesday 2nd June, 7pm at </span></span></span></span><a href="http://tinyurl.com/PrinceAlbert-Brighton"><span class="Apple-style-span" style="font-weight: bold;"><span class="Apple-style-span" style="font-size: large;"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">The Prince Albert</span></span></span></span></a><span class="Apple-style-span" style="font-weight: bold;"><span class="Apple-style-span" style="font-size: large;"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">.</span></span></span></span></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';"><br /></span></span></div><div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">The topics voted for discussion in the previous session were:<br /></span></span></div><div><ol><li><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Data Transfer Objects (DTOs)/View Presentation Models</span></span></li><li><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Do you Fitnesse?</span></span></li><li><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Why are Singletons considered harmful?</span></span></li><li><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Except for C#, what is another good language to know/learn now?</span></span></li><li><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Functional Programming.</span></span></li><li><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Which view engines are you using?</span></span></li><li><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Liskov substitution principle.</span></span></li><li><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Is the Entity Framework any good?</span></span></li><li><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">How do you make youself a better developer?</span></span></li><li><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Favourite programming books.</span></span></li><li><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">How can you make money from software?</span></span></li></ol></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">A healthy list of topics! </span></span></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';"><br /></span></span></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">I'm not going to go over each one, but some lists came out of a couple of discussions.</span></span></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';"><br /></span></span></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">They were:</span></span></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';"><br /></span></span></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">4. Except for C#, what is another good language to know/learn now?</span></span></div><div><ul><li><a href="http://en.wikipedia.org/wiki/IronPython"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">IronPython</span></span></a></li><li><a href="http://en.wikipedia.org/wiki/F_Sharp_(programming_language)"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">F#</span></span></a></li><li><a href="http://en.wikipedia.org/wiki/Haskell_(programming_language)"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Haskell</span></span></a></li><li><a href="http://en.wikipedia.org/wiki/Ruby_(programming_language)"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Ruby</span></span></a></li><li><a href="http://en.wikipedia.org/wiki/Prolog"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Prolog </span></span></a></li><li><a href="http://en.wikipedia.org/wiki/T-sql"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">T-SQL</span></span></a></li><li><a href="http://en.wikipedia.org/wiki/Objective_c"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Objective-C</span></span></a></li><li><a href="http://en.wikipedia.org/wiki/Xslt"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">XSLT</span></span></a><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';"> (really)</span></span></li><li><a href="http://en.wikipedia.org/wiki/Javascript"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Javascript</span></span></a><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';"> (including </span></span><a href="http://en.wikipedia.org/wiki/Server_side_javascript"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">server-side</span></span></a><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">)</span></span></li><li><a href="http://en.wikipedia.org/wiki/Eiffel_(programming_language)"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Eiffel</span></span></a></li><li><a href="http://en.wikipedia.org/wiki/Boo_(programming_language)"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Boo</span></span></a></li><li><a href="http://en.wikipedia.org/wiki/Scala_(programming_language)"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Scala</span></span></a></li><li><a href="http://en.wikipedia.org/wiki/Powershell"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Powershell</span></span></a></li></ul></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">10. Favourite programming books.<br /></span></span></div><div><ul><li><a href="http://www.amazon.co.uk/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?ie=UTF8&s=books&qid=1241641206&sr=8-1"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Code Complete</span></span></a></li><li><a href="http://www.amazon.co.uk/Pragmatic-Programmer-Andrew-Hunt/dp/020161622X/ref=sr_1_1?ie=UTF8&s=books&qid=1241641241&sr=1-1"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">The Pragmatic Programmer</span></span></a></li><li><a href="http://www.amazon.co.uk/Head-First-Design-Patterns-Freeman/dp/0596007124/ref=sr_1_1?ie=UTF8&s=books&qid=1241641265&sr=1-1"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Head First Design Patterns</span></span></a></li><li><a href="http://www.amazon.co.uk/C-Depth-What-need-master/dp/1933988363/ref=sr_1_1?ie=UTF8&qid=1241641299&sr=1-1"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">C# in Depth</span></span></a></li><li><a href="http://www.amazon.co.uk/Dont-Make-Me-Think-Usability/dp/0321344758/ref=sr_1_1?ie=UTF8&s=books&qid=1241641377&sr=1-1"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Don't Make Me Think</span></span></a></li><li><a href="http://www.amazon.co.uk/UML-Distilled-Standard-Addison-Wesley-Technology/dp/0321193687/ref=sr_1_1?ie=UTF8&s=books&qid=1241641403&sr=1-1"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">UML Distilled</span></span></a></li><li><a href="http://www.amazon.co.uk/CLR-Via-Applied-Framework-Programming/dp/0735621632/ref=sr_1_1?ie=UTF8&s=books&qid=1241641431&sr=1-1"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">CLR via C#</span></span></a></li><li><a href="http://www.amazon.co.uk/Principles-Artificial-Intelligence-Symbolic-Computation/dp/3540113401/ref=sr_1_1?ie=UTF8&qid=1241641488&sr=1-1"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Principles of Artificial Intelligence</span></span></a></li><li><a href="http://www.amazon.co.uk/Working-Effectively-Legacy-Robert-Martin/dp/0131177052/ref=sr_1_1?ie=UTF8&s=books&qid=1241641545&sr=1-1"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Working Effectively With Legacy Code</span></span></a></li><li><a href="http://www.amazon.co.uk/Principles-Patterns-Practices-Robert-Martin/dp/0131857258/ref=sr_1_1?ie=UTF8&s=books&qid=1241641586&sr=1-1"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Agile Patterns and Principles</span></span></a></li><li><a href="http://www.amazon.co.uk/Agile-Development-Rails-Pragmatic-Programmers/dp/0977616630/ref=pd_sim_b_1"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Agile Web Development with Rails</span></span></a></li><li><a href="http://www.amazon.co.uk/Best-Software-Writing-Selected-Introduced/dp/1590595009/ref=sr_1_1?ie=UTF8&s=books&qid=1241641773&sr=1-1"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Joel's Best Software Writing I</span></span></a></li><li><a href="http://www.amazon.co.uk/Pro-2008-NET-Platform-Fourth/dp/1590598849/ref=sr_1_1?ie=UTF8&qid=1241641824&sr=1-1"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Pro C# and the .NET Platform</span></span></a></li><li><a href="http://www.amazon.co.uk/Enterprise-Application-Architecture-Addison-Wesley-signature/dp/0321127420/ref=sr_1_1?ie=UTF8&s=books&qid=1241641848&sr=1-1"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">Patterns of Enterprise Application Architecture</span></span></a></li><li><a href="http://www.amazon.co.uk/F-Scientists-Jon-Harrop/dp/0470242116/ref=sr_1_1?ie=UTF8&s=books&qid=1241641888&sr=1-1"><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">F# for Scientists</span></span></a></li></ul><div><span class="Apple-style-span" style="color: rgb(0, 0, 153);"><span class="Apple-style-span" style="font-family: 'courier new';">I know there's a few I've missed here. Please add any more you can think of in the comments.</span></span></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153); font-family: 'courier new';"><br /></span></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 153); font-family: 'courier new';">See you at the beers!</span></div></div><div><br /></div></div></div></div></span></div></div></div></span>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-60388360421650474892009-04-27T06:51:00.000-07:002009-04-27T07:05:01.955-07:00Brighton ALT.NET Beers - Tuesday 5th May 2009 - 7pm @ The Prince Albert<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3i3RKfgAAzY/SfW45Pfpj2I/AAAAAAAAAGs/Io-hUiEXXpg/s1600-h/BrightonALTNETBeers.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 207px; height: 187px;" src="http://1.bp.blogspot.com/_3i3RKfgAAzY/SfW45Pfpj2I/AAAAAAAAAGs/Io-hUiEXXpg/s400/BrightonALTNETBeers.png" alt="" id="BLOGGER_PHOTO_ID_5329369027614183266" border="0" /></a><br /><span style="font-family: courier new;"><span style="color: rgb(0, 0, 153);">The next Brighton ALT.NET beers will be this coming Tuesday 5th May 2009 - 7pm @ The Prince Albert public house in Brighton.<br /><br />It's very easy to find as it's right next to the station:<br /><br /><a href="http://tinyurl.com/PrinceAlbert-Brighton">http://tinyurl.com/PrinceAlbert-Brighton</a><br /><br />The last one was a great success, with a range of interesting topics discussed in a very friendly open forum. <br /><br />You can see previous posts on <a href="http://tech-nous.blogspot.com/2009/03/brighton-altnet-meet-up.html">what the format will be</a> and a <a href="http://tech-nous.blogspot.com/2009/04/brighton-altnet-beers-review.html">review of the first meeting</a>.<br /><br />Hope to see you there!<br /></span></span>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-78309530853481832432009-04-02T03:45:00.001-07:002009-04-02T11:47:02.796-07:00Brighton ALT.NET Beers - A Review<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3i3RKfgAAzY/SdTDyxDCAZI/AAAAAAAAAGk/fhF1o7uWchE/s1600-h/ballmer.jpg"></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3i3RKfgAAzY/SdTABHeSlBI/AAAAAAAAAF0/0yWFJt1i8vc/s1600-h/nurofen-liquid-capsules.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 118px;" src="http://1.bp.blogspot.com/_3i3RKfgAAzY/SdTABHeSlBI/AAAAAAAAAF0/0yWFJt1i8vc/s200/nurofen-liquid-capsules.jpg" alt="" id="BLOGGER_PHOTO_ID_5320088185249895442" border="0" /></a><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Huge thanks to everyone who turned up to the </span></span><a href="http://tech-nous.blogspot.com/2009/03/brighton-altnet-meet-up.html"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">inaugural Brighton ALT.NET beers</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">.</span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">There were 16 of us in total (a fittingly nice binary number) and we had a lively discussion on a wide range of topics.</span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">I <span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">definitely</span> came away with my mind opened about a couple of things, which is certainly the whole point.<br /></span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span><p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">The topics voted for discussion were:</span></span></span></p><p class="MsoNormal" style="font-family:courier new;"></p><ol><li><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">W</span></span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">hat’s your favourite way of doing data access</span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;"><span style="text-decoration: underline;"></span>?</span></span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;"><span style=""></span></span></span></span></span></span></li><li><span style=""><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">Why do you do .NET?</span></span></span></span></span></li><li><span style=""><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">J</span></span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;"><span class="blsp-spelling-error" id="SPELLING_ERROR_1">oining</span> a non-ALT.NET team.</span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;"><span style=""></span></span></span></span></span></span></span></li><li><span style=""><span style=""><span style=""><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">Do you </span></span></span><a href="http://en.wikipedia.org/wiki/Domain-driven_design"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;"><span class="blsp-spelling-error" id="SPELLING_ERROR_2">DDD</span></span></span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">?</span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;"><span style=""></span></span></span></span></span></span></span></span></li><li><span style=""><span style=""><span style=""><span style=""><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">Alternative frameworks such as </span></span></span><a href="http://www.sharparchitecture.net/"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">S#<span class="blsp-spelling-error" id="SPELLING_ERROR_3">arp</span> Architecture</span></span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">.</span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;"><span style=""></span></span></span></span></span></span></span></span></span></li><li><span style=""><span style=""><span style=""><span style=""><span style=""><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">Avoiding generics hell.</span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;"><span style=""></span></span></span></span></span></span></span></span></span></span></li><li><span style=""><span style=""><span style=""><span style=""><span style=""><span style=""><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">'Walking skeleton' architectures.</span></span></span></span></span></span></span></span></span></span></li></ol><p></p> <p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">What follows certainly <span class="blsp-spelling-error" id="SPELLING_ERROR_4">isn</span>’t an exhaustive dissection of the conversation but I hope a reasonably accurate reflection of the mood in the room. Please post amendments/corrections below if you feel it’s inaccurate or I missed an opinion.</span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><o:p></o:p></span></span></span></p> <p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">1. What’s your favourite way of doing data access?</span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><o:p></o:p></span></span></span></p> <p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">The general consensus was that using an </span></span><a href="http://en.wikipedia.org/wiki/Object-relational_mapping"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">O/RM</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> was the best method of database access.</span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">The main reason cited was the massive reduction in effort in writing/generating stored <span class="blsp-spelling-error" id="SPELLING_ERROR_5">procs</span> etc and then having to maintain them.</span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><a href="http://msdn.microsoft.com/en-us/library/bb425822.aspx"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="blsp-spelling-error" id="SPELLING_ERROR_6">Linq</span>-to-<span class="blsp-spelling-error" id="SPELLING_ERROR_7">SQL</span></span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> and </span></span><a href="http://subsonicproject.com/"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="blsp-spelling-error" id="SPELLING_ERROR_8">SubSonic</span></span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> were discussed but the overriding choice was </span></span><a href="http://www.hibernate.org/343.html"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="blsp-spelling-error" id="SPELLING_ERROR_9">NHibernate</span></span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">.</span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span></span></p><span class="Apple-style-span" style="color: rgb(0, 0, 238);"><img src="http://2.bp.blogspot.com/_3i3RKfgAAzY/SdTA-bqiTkI/AAAAAAAAAGE/oZ_qP5zIEOU/s320/NHLogoSmall.gif" alt="" id="BLOGGER_PHOTO_ID_5320089238641987138" style="margin: 0px 0px 10px 10px; float: right; cursor: pointer; width: 320px; height: 72px;" border="0" /></span><p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">It was clear that pretty much everyone had done the stored-procedure maintenance or DAL generation <span class="blsp-spelling-error" id="SPELLING_ERROR_10">gubbins</span> before (many, many times over) and if you’re not using <span class="blsp-spelling-error" id="SPELLING_ERROR_11">NHibernate</span> or something almost as good, you’re probably doing far more work on your data access than is necessary.</span></span></span></p> <p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-style: italic;"><span class="Apple-style-span" style="font-size:small;">(</span><span class="Apple-style-span" style="font-size:small;">There has been criticism in that the ALT.NET movement can be a little dogmatic when it comes to <span class="blsp-spelling-error" id="SPELLING_ERROR_12">NHibernate</span>.</span></span></span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-style: italic;"><span class="Apple-style-span" style="font-size:small;"> </span></span></span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-style: italic;"><span class="Apple-style-span" style="font-size:small;">However you can’t escape the fact that the experience that most of the 16 people in the room have had so far, has been overwhelmingly positive. </span></span></span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-style: italic;"><span class="Apple-style-span" style="font-size:small;"> </span></span></span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-style: italic;"><span class="Apple-style-span" style="font-size:small;">I think that everyone who had used it in anger agreed that it is currently by far the quickest/most mature/easiest/cleanest way currently of doing data access.)</span></span></span></span></span></p> <p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">2. Why do you do .NET?</span></span></span></span></p><span class="Apple-style-span" style="color: rgb(0, 0, 238);"><img src="http://3.bp.blogspot.com/_3i3RKfgAAzY/SdTCnyHtxkI/AAAAAAAAAGU/P9taIY-lQiU/s200/dotnet.png" alt="" id="BLOGGER_PHOTO_ID_5320091048556217922" style="margin: 0px 10px 10px 0px; float: left; cursor: pointer; width: 200px; height: 52px;" border="0" /></span><p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">As this was the first meeting it was nice to go around all 16 participants and ask what attracted them to .NET development.</span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Generally people discovered it via VB, classic ASP and C++.</span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> F</span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="blsp-spelling-error" id="SPELLING_ERROR_13">irst</span> impressions of the .NET framework were pretty positive and it compelled people to find out more.</span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> I think I’m right in saying that everyone in the room including all the ex-VB developers now use C# as their primary language for .NET.</span></span></span></span></p> <p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">3. Joining a non-ALT.NET team</span></span></span></span></p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3i3RKfgAAzY/SdTDyxDCAZI/AAAAAAAAAGk/fhF1o7uWchE/s1600-h/ballmer.jpg"><img src="http://4.bp.blogspot.com/_3i3RKfgAAzY/SdTDyxDCAZI/AAAAAAAAAGk/fhF1o7uWchE/s200/ballmer.jpg" alt="" id="BLOGGER_PHOTO_ID_5320092336758325650" style="margin: 0px 0px 10px 10px; float: right; cursor: pointer; width: 200px; height: 152px;" border="0" /></a><p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">This discussion was centred on what happens when you join a team with little or no awareness (for whatever reason) outside the Microsoft <span class="blsp-spelling-error" id="SPELLING_ERROR_14">eco</span>-system.</span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Do you try and convert people with death-by-PowerPoint? Probably not the most effective stratagem. </span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span style=""></span>Is it better to start with small bits of projects at first and ALT.<span class="blsp-spelling-error" id="SPELLING_ERROR_15">NETify</span> them to show people very plainly that it will make their lives easier? What’s the first thing that should be introduced? <a href="http://en.wikipedia.org/wiki/Unit_testing">Unit testing</a>? <a href="http://en.wikipedia.org/wiki/Test-driven_development">TDD?</a> <a href="http://en.wikipedia.org/wiki/Continuous_integration">Continuous integration</a>? <a href="http://en.wikipedia.org/wiki/Inversion_of_control"><span class="blsp-spelling-error" id="SPELLING_ERROR_16">IoC</span></a>? </span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">The was a feeling that a lot of the ALT.NET stuff <span class="blsp-spelling-error" id="SPELLING_ERROR_17">doesn</span>’t really work to its full potential in isolation, but it’s probably best to start small, with things that show immediate value and build up from there.</span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">One suggestion was have a CI build server first, then write some breaking tests when fixing defects.</span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><o:p></o:p></span></span></span></p> <p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">4. Do you </span></span></span><a href="http://en.wikipedia.org/wiki/Domain-driven_design"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;"><span class="blsp-spelling-error" id="SPELLING_ERROR_18">DDD</span></span></span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">?</span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><o:p></o:p></span></span></span></p> <p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">It was acknowledged that a secular tome of significance on </span></span><a href="http://en.wikipedia.org/wiki/Domain-driven_design"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Domain Driven Design</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> (<span class="blsp-spelling-error" id="SPELLING_ERROR_19">DDD</span>) is </span></span><a href="http://www.amazon.co.uk/Domain-driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&s=books&qid=1238669639&sr=8-1"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Eric Evans’ ‘Blue Book’</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">.</span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> (See <a href="http://mikehadlow.blogspot.com/">Mike Hadlow</a>'s blog post <a href="http://mikehadlow.blogspot.com/2009/01/eric-evans-on-repositories.html">here</a>). </span></span></span></span></p><p class="MsoNormal" style="font-family:courier new;"><span class="Apple-style-span" style="color: rgb(51, 51, 255);font-family:'courier new';" ><span class="Apple-style-span" style="color: rgb(0, 0, 238);font-family:Georgia;" ><img src="http://3.bp.blogspot.com/_3i3RKfgAAzY/SdS_WmCW-tI/AAAAAAAAAFk/KudCMg3ltQ0/s200/domain_driven_design%5B7%5D.jpg" alt="" id="BLOGGER_PHOTO_ID_5320087454719867602" style="margin: 0px 10px 10px 0px; float: left; cursor: pointer; width: 156px; height: 200px;" border="0" /></span></span></p><p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">There were some great points made about how to identify an object, does using the ID generated by the database break the goal of persistence ignorance? </span></span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Is using the ID a sensible pragmatic solution to the common problem of establishing identity/equality?</span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span style=""></span></span></span></span><span style=""><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Can using the ID in URLs help when it comes to <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a> and <a href="http://en.wikipedia.org/wiki/Search_engine_optimization">SEO</a>? </span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">If an entity is incomplete in some way, does that signify that another intermediate entity with a different business meaning is required?</span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><o:p></o:p></span></span></span></p> <p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">5. Alternative frameworks such as </span></span></span><a href="http://www.sharparchitecture.net/"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">S#arp Architecture</span></span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><o:p></o:p></span></span></span></p> <p class="MsoNormal" style="font-family:courier new;"><span style=""><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Just over half the room was aware of </span></span><a href="http://devlicio.us/blogs/billy_mccafferty/default.aspx"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Billy McCafferty</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">’s excellent </span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><a href="http://www.sharparchitecture.net/">S#arp architecture</a> </span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">framework.</span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">There was a brief discussion on why SharpArch is currently easiest way to rapidly build a ALT.NET type </span></span><a href="http://www.asp.net/mvc/"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">ASP.NET MVC</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> system with </span></span><a href="http://www.hibernate.org/343.html"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">NHibernate</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">, </span></span><a href="http://www.nunit.org/index.php"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">NUnit</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">, </span></span><a href="http://www.castleproject.org/container/index.html"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Castle Windsor</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> and </span></span><a href="http://ayende.com/projects/rhino-mocks.aspx"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Rhino mocks</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">.</span></span></span></p><p class="MsoNormal" style="font-family:courier new;"><span class="Apple-style-span" style="color: rgb(51, 51, 255);font-family:'courier new';" ><span class="Apple-style-span" style="color: rgb(0, 0, 238);font-family:Georgia;" ><img src="http://4.bp.blogspot.com/_3i3RKfgAAzY/SdS_y4FudGI/AAAAAAAAAFs/q50EFkGCgHU/s200/sharp_arch.jpg" alt="" id="BLOGGER_PHOTO_ID_5320087940602164322" style="margin: 0px 0px 10px 10px; float: right; cursor: pointer; width: 200px; height: 88px;" border="0" /></span></span></p> <p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">If you haven’t tried Sharp Architecture yet and you do ASP.NET MVC, do check it out because it is fabo:</span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><o:p></o:p></span></span></span></p> <p class="MsoNormal" style="font-family:courier new;"><span style=""><a href="http://www.sharparchitecture.net/"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">http://www.sharparchitecture.net/</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><o:p></o:p></span></span></span></p> <p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">6. Avoiding generics hell</span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><o:p></o:p></span></span></span></p> <p class="MsoNormal" style="font-family:courier new;"><span style=""><a href="http://www.25hoursaday.com/weblog/default.aspx"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Dare Obasanjo</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> has a nice summary of what this can mean </span></span><a href="http://www.25hoursaday.com/weblog/CommentView.aspx?guid=AF7AA888-A227-454C-8687-71FA77186064"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">here</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">. There doesn't seem to be a clear answer to the problem at this time. </span></span><a href="http://en.wikipedia.org/wiki/Covariance_and_contravariance_%28computer_science%29"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Covariance/contravariance</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> coming with </span></span><a href="http://code.msdn.microsoft.com/csharpfuture/Release/ProjectReleases.aspx?ReleaseId=1686"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">C# 4.0</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> will help.</span></span></span></p><p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><o:p></o:p></span></span></span></p> <p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">7.</span></span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;"> '</span></span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">Walking skeleton' architecture</span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><o:p></o:p></span></span></span></p> <p class="MsoNormal" face="courier new"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">This topic was about merits of whether or not is was worthwhile to have a separate framework you use for smaller/simpler projects.</span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">What happens when the requirements expand and the simpler framework gets in the way because it’s so brittle?</span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Is using </span></span><a href="http://en.wikipedia.org/wiki/Inversion_of_control"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">IoC</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> total overkill on a brochure site? Where does one draw the line?</span></span><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> </span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Does it take more effort to maintain a separate framework than bend the framework you use for complex projects to simpler ends? Is everything else outweighed by the comfort and predictability of a smoother complexity gradient?</span></span></span></p><p class="MsoNormal" style="font-family:courier new;"><span class="Apple-style-span" style="color: rgb(51, 51, 255);font-family:'courier new';" ><span class="Apple-style-span" style="font-weight: bold;">Conclusion.</span></span></p><p class="MsoNormal" style="font-family: courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">This was an excellent meeting. It showed the massive enthusiasm in the Brighton development community for wanting to seek out the best way of creating excellent software.<br /></span></span></span></p><p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"><span class="Apple-style-span" style="font-weight: bold;">Let's do it again.</span><br /></span></span></span></p><p class="MsoNormal" style="font-family:courier new;"><span style=""><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">So as not to clash with the London ALT.NET beers (last Tuesday of the month), we will hold our beers on the first Tuesday of the month so I'm delighted to announce that our </span></span><a href="http://www.guardian.co.uk/music/2003/sep/19/3"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">difficult second meeting</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> will be at </span></span><span class="Apple-style-span" style="font-weight: bold;"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">the same time at the same place on Tuesday 5th May 2009, 7pm at The Prince Albert, Brighton</span></span></span><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">. I will mention it again nearer the time, but you can pencil it in your PDAs right now. If you're following me (</span></span><a href="http://twitter.com/iainholder"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">@iainholder</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">) or </span></span><a href="http://twitter.com/mikehadlow"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">Mike Hadlow</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);"> (</span></span><a href="http://twitter.com/mikehadlow"><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">@mikehadlow</span></span></a><span class="Apple-style-span" style="font-family:'courier new';"><span class="Apple-style-span" style="color: rgb(51, 51, 255);">)on <a href="http://twitter.com/">twitter</a> you deffo won't miss it.<br /></span></span></span></p><p style="color: rgb(51, 51, 255);font-family:lucida grande;" class="MsoNormal"><span class="Apple-style-span" style="font-family:'courier new';">Hope to see you there.</span><br /><span style=""></span></p><p style="font-family: lucida grande; color: rgb(51, 51, 255);" class="MsoNormal"></p>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com2tag:blogger.com,1999:blog-1303198173088051067.post-6307154459349263212009-03-20T06:49:00.000-07:002009-03-22T05:37:06.263-07:00Brighton ALT.NET Beers: Tues 31st March 2009. 7pm.<a href="http://3.bp.blogspot.com/_3i3RKfgAAzY/ScOoeNxNaKI/AAAAAAAAAFE/7f3Se7cp2OA/s1600-h/RWS2-Big3.png"><span style="color: rgb(51, 51, 255);font-family:courier new;" ><img style="margin: 0px 0px 10px 10px; width: 250px; float: right; height: 341px;" id="BLOGGER_PHOTO_ID_5315277222272919714" alt="" src="http://3.bp.blogspot.com/_3i3RKfgAAzY/ScOoeNxNaKI/AAAAAAAAAFE/7f3Se7cp2OA/s400/RWS2-Big3.png" border="0" /></span></a><span style="color: rgb(51, 51, 255);font-family:courier new;" > Are you ALT.NET? Are you Brighton? Well if you’re one, the other or even neither of those but would like to know more, you are hereby cordially invited to the inaugural Brighton ALT.NET meet-up. </span><div></div><div><span style="font-family:courier new;"><br /><span style="color: rgb(51, 51, 255);"></span></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" ><strong>What: Brighton ALT.NET meet up/beers.<br /></strong></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" ><strong>When: Tuesday 31st March 2009, from 7pm.<br /></strong></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" ><strong>Where: </strong></span><a href="http://tinyurl.com/PrinceAlbert-Brighton"><span style="color: rgb(51, 51, 255);font-family:courier new;" ><strong>The Prince Albert (Red Room) 48 Trafalgar St Brighton, BN1 4ED</strong> </span></a></div><div><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" >So there you have it. A meet-up in a back room called the 'Red Room’ in a pub called the ‘Prince Albert’ with an original <a href="http://en.wikipedia.org/wiki/Banksy">Banksy</a> of two policemen kissing on the side. It couldn’t be more Brighton if Fatboy Slim turns up dishing out sticks of rock. </span></div><div><span style="font-family:courier new;"><br /><br /><span style="color: rgb(51, 51, 255);"></span></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" ></span></div><div><a href="http://1.bp.blogspot.com/_3i3RKfgAAzY/ScOovALvKfI/AAAAAAAAAFM/6Yf_UYBMbXM/s1600-h/banksy.jpg"><span style="color: rgb(51, 51, 255);font-family:courier new;" ><img style="margin: 0px 10px 10px 0px; width: 153px; float: left; height: 372px;" id="BLOGGER_PHOTO_ID_5315277510683863538" alt="" src="http://1.bp.blogspot.com/_3i3RKfgAAzY/ScOovALvKfI/AAAAAAAAAFM/6Yf_UYBMbXM/s400/banksy.jpg" border="0" /></span></a><span style="color: rgb(51, 51, 255);font-family:courier new;" > </span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" >[photo source: <a href="http://www.flickr.com/photos/robthomasdesigns/183470615">here</a></span><span style="color: rgb(51, 51, 255);font-family:courier new;" >] </span></div><div><span style="font-family:courier new;"><br /><span style="color: rgb(51, 51, 255);"></span></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" ><strong>What is ALT.NET?</strong> </span></div><div><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" >“We are a self-organizing, ad-hoc community of developers bound by a desire to improve ourselves, challenge assumptions, and help each other pursue excellence in the practice of software development. Our movement is new. The conversation just started. All are welcome to shape and form the dialog in blogs and lists and face-to-face gatherings both local and global.” [Source: </span><a href="http://altdotnet.org/"><span style="color: rgb(51, 51, 255);font-family:courier new;" >http://altdotnet.org/</span></a><span style="color: rgb(51, 51, 255);font-family:courier new;" >] </span></div><div><span style="font-family:courier new;"><br /><span style="color: rgb(51, 51, 255);"></span></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" ></span></div><div><span style="font-family:courier new;"><br /><span style="color: rgb(51, 51, 255);"></span></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" >Which boils down to you coming and talking to other developers about .NET development best practices.</span><span style="font-family:courier new;"><br /><span style="color: rgb(51, 51, 255);"></span></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" ></span></div><div><span style="font-family:courier new;"><br /><span style="color: rgb(51, 51, 255);"></span></span></div><div><a href="http://alandean.blogspot.com/"><span style="color: rgb(51, 51, 255);font-family:courier new;" >Alan Dean</span></a><span style="color: rgb(51, 51, 255);font-family:courier new;" > had a good </span><a href="http://twitter.com/adean/status/1122235953"><span style="color: rgb(51, 51, 255);font-family:courier new;" >tweet</span></a><span style="color: rgb(51, 51, 255);font-family:courier new;" > on the ALT.NET dynamic: </span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" ></span></div><div><span style="font-family:courier new;"><br /><span style="color: rgb(51, 51, 255);"></span></span></div><div><span style="font-family:courier new;"><span style="color: rgb(51, 51, 255);"><em>"This is my definition of the alt.net dynamic: we all agree what is bad, we all agree what is good but we'll disagree what is best."*</em> </span></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" ></span></div><div><span style="font-family:courier new;"><br /><span style="color: rgb(51, 51, 255);"></span></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" ><strong>Open Spaces</strong><br /></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" >The session will be loosely based on the </span><a href="http://en.wikipedia.org/wiki/Open_Space_Technology"><span style="color: rgb(51, 51, 255);font-family:courier new;" >‘Open Spaces’ philosophy</span></a><span style="color: rgb(51, 51, 255);font-family:courier new;" >: </span></div><ul><li><span style="color: rgb(51, 51, 255);font-family:courier new;" >Whoever comes is the right people. </span></li><li><span style="color: rgb(51, 51, 255);font-family:courier new;" >Whatever happens is the only thing that could have. </span></li><li><span style="color: rgb(51, 51, 255);font-family:courier new;" >Whenever it starts is the right time. </span></li><li><span style="color: rgb(51, 51, 255);font-family:courier new;" >When it's over, it's over. </span></li></ul><p><span style="color: rgb(51, 51, 255);font-family:courier new;" >We will spend the first 30 minutes or so, arriving, saying hello and writing potential topics of discussion on post-it notes. When we’ve done that, we gather all the ideas and vote on the couple we would like to discuss together in depth. </span></p><div><span style="color: rgb(51, 51, 255);font-family:courier new;" ><strong>PI is exactly 3</strong></span></div><div></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" >Everyone is encouraged to take part. In the spirit of <a href="http://www.codinghorror.com/blog/archives/001124.html">Jeff Atwood’s Strong Opinions, Weakly Held blog post</a>, don’t be afraid to have an opinion without wrapping it up in a big ball of disclaimers.</span></div><div><span style="font-family:courier new;"><br /><span style="color: rgb(51, 51, 255);"></span></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" ><strong>Don’t feel intimidated </strong></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" ></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" >Unsurprisingly this becomes less of an issue when even the most reticent are on the way to completing their second pint. <a href="http://ayende.com/Blog/">Ayende</a> came and sat next to me at a London ALT.NET meet and I still piped up. I doubt there has been, or will be a greater skill differential than there was on that table that evening so, really, don’t worry about it. <em><strong>We are all learning together</strong></em>. </span></div><div><span style="font-family:courier new;"><br /><span style="color: rgb(51, 51, 255);"></span></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" ></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" ><strong>Reply below and let us know you are coming</strong></span></div><div> </div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" >You certainly don’t have to - just turn up on the evening, but it would be great to give us an idea of numbers. You can let us know that you are coming by posting a reply below. You can also let us know on the <a href="http://upcoming.yahoo.com/event/2150201/?ps=5">UpComing page</a>. Please note that if you want food, say so below as the kitchen usually closes by 7. They will stay a little longer if enough people tell us in advance or you will have to turn up earlier to ensure you get fed. </span></div><div><span style="font-family:courier new;"><br /><span style="color: rgb(51, 51, 255);"></span></span></div><div><span style="color: rgb(51, 51, 255);font-family:courier new;" >Hope to see you there!<br /></span></div><a href="http://2.bp.blogspot.com/_3i3RKfgAAzY/ScOpOrGGD2I/AAAAAAAAAFU/M24CX6t5-kw/s1600-h/brightonpier.jpg"><span style="color: rgb(51, 51, 255);font-family:courier new;" ><img style="margin: 0px auto 10px; text-align: center; width: 400px; display: block; height: 266px;" id="BLOGGER_PHOTO_ID_5315278054778867554" alt="" src="http://2.bp.blogspot.com/_3i3RKfgAAzY/ScOpOrGGD2I/AAAAAAAAAFU/M24CX6t5-kw/s400/brightonpier.jpg" border="0" /></span></a><span style="color: rgb(51, 51, 255);font-family:courier new;" ><br /></span><div><span style="color: rgb(51, 51, 255);font-family:courier new;" >*If we were a bit, what </span><a href="http://en.wikipedia.org/wiki/James_May"><span style="color: rgb(51, 51, 255);font-family:courier new;" >James May</span></a><span style="color: rgb(51, 51, 255);font-family:courier new;" > would describe as ‘poncey’, that would sound great in Latin on a ALT.NET coat of arms: De malo consentimus. De bono consentimus. Disputamus quid optimum sit. </span></div>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com9tag:blogger.com,1999:blog-1303198173088051067.post-72969836020434479902009-02-19T03:42:00.000-08:002009-02-19T06:24:40.120-08:00Nullable<bool><a style="color: rgb(51, 51, 255); font-family: courier new;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3i3RKfgAAzY/SZ1KHw5lZ8I/AAAAAAAAAD0/nHH2uimS-k4/s1600-h/light_switch.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 251px; height: 338px;" src="http://4.bp.blogspot.com/_3i3RKfgAAzY/SZ1KHw5lZ8I/AAAAAAAAAD0/nHH2uimS-k4/s400/light_switch.png" alt="" id="BLOGGER_PHOTO_ID_5304477433358280642" border="0" /></a><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" >I don't like </span><a style="color: rgb(51, 51, 255); font-family: courier new;" href="http://msdn.microsoft.com/en-us/library/1t3y8s4s%28VS.80%29.aspx">Nullable</a><span style="color: rgb(51, 51, 255);font-family:courier new;" ><bool>. The </span><a style="color: rgb(51, 51, 255); font-family: courier new;" href="http://en.wikipedia.org/wiki/Cognitive_dissonance">cognitive dissonance</a><span style="color: rgb(51, 51, 255);"> </span><span style="color: rgb(51, 51, 255);font-family:courier new;" >is louder and more dissonant than a</span><span style="color: rgb(51, 51, 255);"> </span><a style="color: rgb(51, 51, 255); font-family: courier new;" href="http://www.youtube.com/watch?v=K9tQt8hbQ0U">Sepultura guitar solo</a><span style="color: rgb(51, 51, 255);font-family:courier new;" >. [3'00]</span><br /><span style="text-decoration: underline; color: rgb(51, 51, 255);font-family:courier new;" ><br /></span><a style="color: rgb(51, 51, 255); font-family: courier new;" href="http://www.answers.com/boolean">A boolean is defined as</a><span style="color: rgb(51, 51, 255);font-family:courier new;" >: "Of or relating to a data type or variable in a programming language that can have one of two values, true or false."</span><br /><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" >Two. Deux. Zwei. Dos.</span><br /><br /><span style="font-weight: bold; color: rgb(51, 51, 255);font-family:courier new;" >TWO!</span><br /><br /><a style="color: rgb(51, 51, 255); font-family: courier new;" href="http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx">Not three.</a><br /><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" >But that is what exactly Nullable<bool> is. True, false and null. Three states.</span><br /><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" >What does null mean? It's got to mean something. You're either pregnant or you're not. You can't have a third state. A light switch is either on or off.</span><br /><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" >If a light switch doesn't exist then it's potentially very dangerous. Almost as dangerous as having a nullable bool.</span><br /><br /><span style="color: rgb(51, 51, 255);font-family:courier new;" >If it has three states, it isn't a bool.</span>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com4tag:blogger.com,1999:blog-1303198173088051067.post-65367145299775613312009-02-17T10:06:00.000-08:002009-02-18T11:45:03.593-08:00The Pomodoro Technique aka Tomatoes!<a style="font-family: courier new; color: rgb(0, 0, 153);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3i3RKfgAAzY/SZsBshCZCDI/AAAAAAAAADs/kWFYnQmZoJE/s1600-h/tomato.png"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 298px; height: 275px;" src="http://1.bp.blogspot.com/_3i3RKfgAAzY/SZsBshCZCDI/AAAAAAAAADs/kWFYnQmZoJE/s400/tomato.png" alt="" id="BLOGGER_PHOTO_ID_5303834850453162034" border="0" /></a><span style="color: rgb(0, 0, 153);font-family:courier new;" >You say tomayto, I say tomahto.</span><br /><br /><span style="color: rgb(0, 0, 153);font-family:courier new;" >One of the things buzzing around the blogosphere and twittersphere recently is the </span><a style="font-family: courier new; color: rgb(0, 0, 153);" href="http://blog.staffannoteberg.com/2008/02/22/pomodoro-technique-in-5-minutes/">Pomodoro Technique</a><span style="color: rgb(0, 0, 153);font-family:courier new;" >.</span><br /><br /><span style="color: rgb(0, 0, 153);font-family:courier new;" >The idea is fairly straight forward. You create 25 minute segments in which you concentrate on a single task. Nothing gets in the way of what you're doing. If you think of something during a task, or you realise that the task will need further sub-tasks, you are permitted to take a note, but you must finish your 25 minutes focusing on the task in hand. If the task takes 15 minutes, you still stick with the task. You "over-learn" it.</span><br /><br /><span style="color: rgb(0, 0, 153);font-family:courier new;" >From the link above here's what you need:</span><br /><ol style="font-family: courier new; color: rgb(0, 0, 153);"><li>Pencil</li><li>Kitchen timer</li><li>To Do Today Sheet – today’s date, my name and a list of my activities planned for today</li><li>Activity Inventory Sheet – my name and a unordered list of my upcoming activities in the near future</li><li>Records Sheet – my sampled process metrics to be used for my process improvement</li></ol><span style="color: rgb(0, 0, 153);font-family:courier new;" >I followed </span><a style="font-family: courier new; color: rgb(0, 0, 153);" href="http://www.objectmentor.com/omTeam/martin_r.html">Uncle Bob</a><span style="color: rgb(0, 0, 153);font-family:courier new;" > and bought a </span><a style="font-family: courier new; color: rgb(0, 0, 153);" href="http://twitpic.com/1ghob">kitchen timer that looks just like a tomato</a><span style="color: rgb(0, 0, 153);font-family:courier new;" >. The problem is that it's very noisy. The ticking was starting to get annoying, so I knocked up a very simple software timer.</span><br /><br /><span style="color: rgb(0, 0, 153);font-family:courier new;" >This is what it looks like while it's running. Note that the form title also has the time on it. This is useful because you can see how much time is left in your task bar.</span><br /><br /><a style="font-family: courier new; color: rgb(0, 0, 153);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3i3RKfgAAzY/SZsAcJVql0I/AAAAAAAAADc/g6qTHpqz95g/s1600-h/TomatoTimerGreen.png"><img style="cursor: pointer; width: 247px; height: 134px;" src="http://4.bp.blogspot.com/_3i3RKfgAAzY/SZsAcJVql0I/AAAAAAAAADc/g6qTHpqz95g/s400/TomatoTimerGreen.png" alt="" id="BLOGGER_PHOTO_ID_5303833469702018882" border="0" /></a><br /><br /><span style="color: rgb(0, 0, 153);font-family:courier new;" >When it's finished it beeps once and looks like this:</span><br /><br /><a style="font-family: courier new; color: rgb(0, 0, 153);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3i3RKfgAAzY/SZsApN_asSI/AAAAAAAAADk/X7bZ3bsOzNk/s1600-h/TomatoTimerRed.png"><img style="cursor: pointer; width: 247px; height: 134px;" src="http://4.bp.blogspot.com/_3i3RKfgAAzY/SZsApN_asSI/AAAAAAAAADk/X7bZ3bsOzNk/s400/TomatoTimerRed.png" alt="" id="BLOGGER_PHOTO_ID_5303833694289178914" border="0" /></a><br /><br /><span style="color: rgb(0, 0, 153);font-family:courier new;" >You can press start at any time to reset the timer to 25 minutes.</span><br /><br /><span style="color: rgb(0, 0, 153);font-family:courier new;" >You can download the application </span><a style="font-family: courier new; color: rgb(0, 0, 153);" href="http://tech-nous.co.uk/blog/TomatoTimer.zip">here</a><span style="color: rgb(0, 0, 153);font-family:courier new;" >. The source code is </span><a style="font-family: courier new; color: rgb(0, 0, 153);" href="http://tech-nous.co.uk/blog/TomatoTimerSrc.zip">here</a><span style="color: rgb(0, 0, 153);font-family:courier new;" >. No unit tests as this is a quintessential 'trivial' application.</span><br /><br /><span style="color: rgb(0, 0, 153);font-family:courier new;" >You will need .NET 2.0 or later installed for the application, and Visual Studio 2008 for the source.</span>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com14tag:blogger.com,1999:blog-1303198173088051067.post-65024669750175867252009-01-11T12:35:00.001-08:002009-01-24T05:43:13.649-08:00Stephen Walther<span style="color: rgb(0, 0, 153);font-family:courier new;" ></span><span style="color: rgb(0, 0, 153);font-family:courier new;" >I've been reading <a style="color: rgb(0, 0, 153);" href="http://www.stephenwalther.com/blog/default.aspx">Stephen's </a></span><a style="font-family: courier new; color: rgb(0, 0, 153);" href="http://www.stephenwalther.com/blog/default.aspx">blog</a><span style="color: rgb(0, 0, 153);font-family:courier new;" > for nearly a year now and what strikes me is the level that he pitches at. It's never patronising and it's certainly never a soap-box from which to shout about how clever he is.</span><span style="color: rgb(0, 0, 153);font-family:courier new;" > </span><span style="color: rgb(0, 0, 153);font-family:courier new;" >When you want to learn a new advanced topic such as </span><a style="font-family: courier new; color: rgb(0, 0, 153);" href="http://stephenwalther.com/blog/archive/2008/03/23/tdd-introduction-to-rhino-mocks.aspx">using mocks in TDD</a><span style="color: rgb(0, 0, 153);font-family:courier new;" > or the new <a href="http://www.asp.net/mvc">ASP.NET MVC</a> implementation, Stephen's posts are invaluable. </span><span style="color: rgb(0, 0, 153);font-family:courier new;" >Even if you know a topic quite well, it's worth reading what he has to say on it as <a href="http://www.secretgeek.net/4TypesOfStupid.asp">you might not be as clever as you think.</a> :-)</span><br /><br /><span style="color: rgb(0, 0, 153);font-family:courier new;" >There's a tonne of information out there for newbies (Teach Yourself How To Be </span><a style="font-family: courier new; color: rgb(0, 0, 153);" href="http://blogs.msdn.com/oldnewthing/">Raymond Chen</a><span style="color: rgb(0, 0, 153);font-family:courier new;" > in 14 Seconds etc) and quite a few excellent blogs for getting nicely deep into a topic (e.g. the force of nature that is </span><a style="font-family: courier new; color: rgb(0, 0, 153);" href="http://ayende.com/">Ayende</a><span style="color: rgb(0, 0, 153);font-family:courier new;" >), but Stephen has a knack of pitching all you need to know to get you from beginner into the latest brave new world.</span><br /><br /><span style="color: rgb(0, 0, 153);font-family:courier new;" >This is much easier to explain with a graph so here's a whiteboardy sketch.</span><br /><a style="font-family: courier new; color: rgb(0, 0, 153);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3i3RKfgAAzY/SWpbMAFuhTI/AAAAAAAAADU/DMLza5cK_iM/s1600-h/walther.PNG"><img style="cursor: pointer; width: 400px; height: 369px;" src="http://3.bp.blogspot.com/_3i3RKfgAAzY/SWpbMAFuhTI/AAAAAAAAADU/DMLza5cK_iM/s400/walther.PNG" alt="" id="BLOGGER_PHOTO_ID_5290140974040646962" border="0" /></a><br /><span style="color: rgb(0, 0, 153);font-family:courier new;" >Stephen isn't completely alone here (just) and it's not to say that all of his posts are pitched at this level, but he is the most consistent.<br /><br />It would be great if more people blogged at this level. I think I might make that my goal for future posts too.<br /></span>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-39803586795443255192008-10-16T10:56:00.000-07:002008-10-16T11:07:10.473-07:00Visual Studio 2008 Colour Schemes<div></div><span style="color: rgb(51, 51, 255);"><span style="font-family:courier new;">In the past year, the trend to modify your Visual Studio colour theme has gained momentum. Yes it's a trendy bandwagon, but it's not without merit. After using <a href="http://www.lnbogen.com/VisualStudioNet2005Colors.aspx">Oren Ellenbogen's Dark Scheme</a> (via <a href="http://www.hanselman.com/blog/VisualStudioProgrammerThemesGallery.aspx">Scott Hanselman</a>) for a while, I now find the default Visual Studio colours a trifle harsh.<br /><br />The key is having a very dark, rather than black background. I have also adopted this for my desktop backgound using 56,56,56 rgb.<br /><br />Here is Oren Ellenbogen's theme updated for Visual Studio 2008 transformed using <a href="http://www.winterdom.com/weblog/2007/11/22/PortVS2005ColorSchemesToVS2008.aspx">Tomas Restrepo's xlst</a>.<br /><br /><img src="http://tech-nous.co.uk/blog/images/VisualStudioThemeGrab20081016.png" /><br /><br /><br />To save you the trouble of the transform, you can download my version of the Visual Studio 2008 theme <a href="http://tech-nous.co.uk/blog/files/Exported-2008-10-16.zip">here</a>. It includes a couple of minor tweaks for <a href="http://www.jetbrains.com/resharper/">ReSharper</a>.<br /><br />Here's to not all looking like <a href="http://en.wikipedia.org/wiki/Mr._Magoo">Mr Magoo</a> by the time we're 45.<br /></span></span>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-91488143490485077502008-10-07T11:32:00.000-07:002008-10-09T01:15:46.584-07:00Comments Anti-Pattern<div style="font-family: courier new; color: rgb(0, 0, 153);"></div><span style="color: rgb(0, 0, 153);font-family:courier new;" >Code comments. They are good right? Well yes. However you can fall into the trap of thinking if commenting is good, more comments are better. Comments all 'round. Comments for everyone! The Milkybar comments are on me.</span><br /><br /><span style="color: rgb(0, 0, 153);font-family:courier new;" >This is the common anti-pattern:</span><br /><pre class="csharpcode"><span class="rem">/// <summary><summary></summary></span><br /><span class="rem">/// Tests if an order can be prepared for printing.</span><br /><span class="rem">/// </summary></span><br />[Test]<br /><span class="kwrd">public</span> <span class="kwrd">void</span> PrepareOrder()<br />{<br /> ...<br />}<br /></pre><span style="color: rgb(0, 0, 153);font-family:courier new;" >If you multiply that by every public method and or test it can make the class files look a bit jumbled.</span><br /><br /><span style="color: rgb(0, 0, 153);font-family:courier new;" >So why not <a href="http://www.refactoring.com/catalog/renameMethod.html">refactor by renaming the method</a> and lose the comment?</span><pre class="csharpcode">[Test]<br /><span class="kwrd">public</span> <span class="kwrd">void</span> OrderCanBePreparedForPrinting()<br />{<br /> ...<br />}</pre><span style="color: rgb(0, 0, 153);font-family:courier new;" >or even</span><br /><pre class="csharpcode">[Test]<br /><span class="kwrd">public</span> <span class="kwrd">void</span> Order_Can_Be_Prepared_For_Printing()<br />{<br /> ...<br />}</pre><span style="color: rgb(0, 0, 153);font-family:courier new;" >I find this far easier on the eye.<br /></span>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-67077297912005013412008-09-22T11:22:00.001-07:002008-10-08T12:34:16.957-07:00Ja! Mein Das Keyboard ist sehr gut!<a href="http://3.bp.blogspot.com/_3i3RKfgAAzY/SNqEAxHHjhI/AAAAAAAAACM/rj5uSHppeDc/s1600-h/daskeyboard.png"><img id="BLOGGER_PHOTO_ID_5249653464371793426" style="margin: 0px 10px 10px 0px; float: left;" alt="" src="http://3.bp.blogspot.com/_3i3RKfgAAzY/SNqEAxHHjhI/AAAAAAAAACM/rj5uSHppeDc/s400/daskeyboard.png" border="0" /></a><span style="color: rgb(51, 51, 255);font-family:Courier New;" >I took delivery of my <a href="http://www.daskeyboard.com/">Das Keyboard</a> Ultimate on Saturday. Since then I've been in clicky-clacky-blank-key heaven.</span><br /><span style="color: rgb(51, 51, 255);font-family:Courier New;" ></span><br /><span style="color: rgb(51, 51, 255);font-family:Courier New;" >I have to say that I'm smitten. As has been noted elsewhere, Das Keyboard is very similar to an old <a href="http://en.wikipedia.org/wiki/Model_M_Keyboard">IBM Model M</a>. I remember a coworker being very pleased with himself for rescuing a model M from a skip outside our office. I can now see why.</span><br /><br /><span style="color: rgb(51, 51, 255);font-family:Courier New;" >Is it worth €99 + P&P? If you type for a living, yes it probably is. Amortised over its expected lifetime it's potentially the least expensive computer thing money can buy.</span><br /><br /><span style="color: rgb(51, 51, 255);font-family:Courier New;" >What's good:</span><br /><ol><li><span style="color: rgb(51, 51, 255);font-family:Courier New;" >Lovely responsive typing action.</span></li><li><span style="color: rgb(51, 51, 255);font-family:Courier New;" >Nerd points. Your fellow geeks will be in awe.</span></li><li><span style="color: rgb(51, 51, 255);font-family:Courier New;" >Your typing will probably improve as you'll be forced to touch-type.</span></li></ol><p><span style="color: rgb(51, 51, 255);font-family:Courier New;" >What's bad:</span></p><ol><li><span style="color: rgb(51, 51, 255);font-family:Courier New;" >Passwords. We all try and make them as complex as possible right? Right? Well if you do, it can be a nightmare. I plugged in <a href="http://www.amazon.co.uk/Microsoft-Fingerprint-Reader-reader-USB/dp/B000E1Z4VA/ref=sr_1_1?ie=UTF8&s=electronics&qid=1222280739&sr=8-1">my old fingerprint reader</a> to assist with that.</span><br /></li><li><span style="color: rgb(51, 51, 255);font-family:Courier New;" >The noise. I'm toying with getting another one of these for work, but I don't want to be an office hate figure.</span><br /></li><li><span style="color: rgb(51, 51, 255);font-family:Courier New;" >Upfront cost. The current exchange rate means buying stuff from Germany is more expensive than it was. €99 + P&P equated to £90 on my credit card statement.</span></li></ol><p><span style="color: rgb(51, 51, 255);font-family:Courier New;" >It was a joy typing this post. I think I'll type some more. </span></p><p><span style="color: rgb(51, 51, 255);font-family:Courier New;" ><strong>The slow purple fox pole-vaulted over the resting dog.</strong></span></p><p><span style="color: rgb(51, 51, 255);font-family:Courier New;" >Lovely.</span></p>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-10204434323329424612008-09-22T11:21:00.000-07:002008-09-23T04:38:52.823-07:00ReMix UK 08<a href="http://4.bp.blogspot.com/_3i3RKfgAAzY/SNgP_URwp1I/AAAAAAAAACE/CO1EMeBgA-0/s1600-h/remix08.jpg"><img id="BLOGGER_PHOTO_ID_5248962946149689170" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_3i3RKfgAAzY/SNgP_URwp1I/AAAAAAAAACE/CO1EMeBgA-0/s320/remix08.jpg" border="0" /></a><br /><a href="http://4.bp.blogspot.com/_3i3RKfgAAzY/SNfp5MZiCoI/AAAAAAAAAB8/JUNXVKAmX74/s1600-h/remix08f.jpg"></a><div><br /><span style="font-family:courier new;color:#3333ff;"><a href="http://www.microsoft.com/uk/remix08/">Microsoft ReMix 08</a> was held last week in my dear beloved Brighton. This was my first time at ReMix. In the main, I very much enjoyed it. The weather was nice, I knew plenty of people there and it was good to hear <a href="http://weblogs.asp.net/Scottgu/">Scott Guthrie</a> talk about <a href="http://www.asp.net/mvc/">ASP.NET MVC</a>, .NET in general and Silverlight.</span><br /><span style="font-family:courier new;color:#3333ff;"></span><br /><span style="font-family:courier new;color:#3333ff;">What was right:</span> </div><ol><li><span style="font-family:courier new;color:#3333ff;">Brighton. Brighton is a splendid place to have a conference. It was held at the famous Brighton Centre, which is a tired old 60s bit of architecture, but is about 5 minutes walk from my flat which makes up for it.</span><br /></li><li><span style="font-family:courier new;color:#3333ff;">ScottGu. Great to hear about this stuff from the man himself.</span><br /></li><li><span style="font-family:courier new;color:#3333ff;">The other presenters. There were some really interesting talks.</span></li></ol><p><span style="font-family:courier new;color:#3333ff;">What was wrong:</span> </p><ol><li><span style="font-family:courier new;color:#3333ff;">Session were pitched a little low. Everything was fairly introductory. I would like to have seen a more in-depth discussion on MVC for instance.</span><br /></li><li><span style="font-family:courier new;color:#3333ff;">Catering. It was rubbish. Tea and coffee were only served twice a day for 10 minutes. It was like visiting a parsimonious relative. The food was crushingly mediocre. C'mon Microsoft. You have the cash plus the tickets were about £300! I couldn't see anyone getting away with such a poor showing in the US. England is no longer the country with the crap food. Have you learned nothing from Gordon, Jamie, Delia et al?</span><br /></li><li><span style="font-family:courier new;color:#3333ff;">'Sneak Peaks'. There was nothing announced. Nothing. Bar a quite a nice table that takes pictures of things, there was nothing of any value. We all felt a bit cheated. If we wanted to watch adverts, we could've stayed at home and watched E4.</span></li></ol><p><span style="font-family:courier new;color:#3333ff;">I will go back. Definitely. But if I was marking ReMix at school, it would be "6.5/10. ReMix has the potential to do well if it only concentrated a bit more on the details."</span><br /></p><p><span style="font-family:Courier New;color:#3333ff;">Also a special mention for <a href="http://mikehadlow.blogspot.com/">Mike Hadlow</a> who had <a href="http://mikehadlow.blogspot.com/2008/09/suteki-shop-at-remix.html">Suteki Shop displayed</a> by Scott Gu in his keynote as an example of a local MVC project. Go Mike!</span></p>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-42941260140441655112008-09-15T13:05:00.000-07:002008-09-15T13:11:02.570-07:00Rick Wright<a href="http://1.bp.blogspot.com/_3i3RKfgAAzY/SM7BUHGwWqI/AAAAAAAAAB0/fqhXqbPzDAs/s1600-h/pompeii.jpg"><img id="BLOGGER_PHOTO_ID_5246343167182133922" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_3i3RKfgAAzY/SM7BUHGwWqI/AAAAAAAAAB0/fqhXqbPzDAs/s200/pompeii.jpg" border="0" /></a><br /><div><a href="http://4.bp.blogspot.com/_3i3RKfgAAzY/SM7Ac7AIWwI/AAAAAAAAABs/K2IT-IH2uuM/s1600-h/pompeii.jpg"><span style="color:#000099;"></span></a><span style="color:#000099;"><br /></span><br /><div><span style="font-family:courier new;color:#000099;">RIP Rick Wright.</span></div><br /><div><span style="font-family:courier new;color:#000099;"></span></div><br /><div><a href="http://news.bbc.co.uk/1/hi/entertainment/7617363.stm"><span style="font-family:courier new;font-size:85%;color:#000099;">http://news.bbc.co.uk/1/hi/entertainment/7617363.stm</span></a></div><br /><br /><div></div><br /><br /><div></div></div>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-13831406153835376462008-09-12T13:50:00.000-07:002008-09-12T14:04:28.594-07:00ReSharper<span style="font-family:courier new;color:#3333ff;">I'm a huge fan of </span><a href="http://www.jetbrains.com/resharper/"><span class="blsp-spelling-error" id="SPELLING_ERROR_0"><span style="font-family:courier new;color:#3333ff;">ReSharper</span></span></a><span style="font-family:courier new;color:#3333ff;"> from <span class="blsp-spelling-error" id="SPELLING_ERROR_1">JetBrains</span>. I've been using it for over three years now and I think I'd be lost without it. Take away my <span class="blsp-spelling-error" id="SPELLING_ERROR_2">ReSharper</span> and I might as well have notepad.</span><br /><span style="font-family:courier new;color:#3333ff;"></span><br /><span style="font-family:courier new;color:#3333ff;">I think my top five most used features are:</span><br /><span style="font-family:courier new;color:#3333ff;"></span><br /><ol><li><span style="color:#3333ff;"><span style="font-family:courier new;"><span class="blsp-spelling-error" id="SPELLING_ERROR_3">Ctrl</span>+left mouse click. This takes you to the thing you clicked <span class="blsp-spelling-error" id="SPELLING_ERROR_4">on's</span> definition.</span></span></li><li><span style="color:#3333ff;"><span style="font-family:courier new;"><span class="blsp-spelling-error" id="SPELLING_ERROR_5">Ctrl</span>+E+C. Code cleanup. I have a <span class="blsp-spelling-error" id="SPELLING_ERROR_6">custom</span> rule that is called 'Everything but 'var'.</span></span></li><li><span style="font-family:courier new;color:#3333ff;">The <span class="blsp-spelling-error" id="SPELLING_ERROR_7">NUnit</span> integration. If you use <span class="blsp-spelling-error" id="SPELLING_ERROR_8">NUnit</span> in Visual Studio, you need <span class="blsp-spelling-error" id="SPELLING_ERROR_9">ReSharper</span>.</span></li><li><span style="font-family:courier new;color:#3333ff;">Find Usages</span></li><li><span style="color:#3333ff;"><span style="font-family:courier new;"><span class="blsp-spelling-error" id="SPELLING_ERROR_10">Ctrl</span>+R+R. For renaming.</span></span></li></ol><p><span style="font-family:courier new;color:#3333ff;">This is by no means an exhaustive list. It's just probably what I use most day in, day out. Just go buy it. I promise that the first time you use a <span class="blsp-spelling-error" id="SPELLING_ERROR_11">foreach</span> snippet after defining something that's <span class="blsp-spelling-error" id="SPELLING_ERROR_12">IEnumerable</span> you will be smitten.</span></p>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-84430827397231265852008-05-16T11:26:00.001-07:002008-05-16T11:26:53.251-07:00Project Euler<a href="http://projecteuler.net/index.php?section=problems"><span style="font-family:courier new;color:#3366ff;">http://projecteuler.net/index.php?section=problems</span></a>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-71087157589105820592008-04-25T14:15:00.000-07:002008-04-25T14:17:25.880-07:00For when you need to use your laptop outside in the sun.<a href="http://bp3.blogger.com/_3i3RKfgAAzY/SBJKTZZCOnI/AAAAAAAAABk/U4Y1g2T0tBQ/s1600-h/FTRNFY0FF78HWJO_MEDIUM.jpg"><img id="BLOGGER_PHOTO_ID_5193295017405463154" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_3i3RKfgAAzY/SBJKTZZCOnI/AAAAAAAAABk/U4Y1g2T0tBQ/s200/FTRNFY0FF78HWJO_MEDIUM.jpg" border="0" /></a><br /><div><a href="http://www.instructables.com/id/Laptop-Compubody-Sock/"><span style="font-family:courier new;">http://www.instructables.com/id/Laptop-Compubody-Sock/</span></a></div><br /><div></div><br /><div></div>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-87955634583217888762008-03-14T02:40:00.000-07:002008-09-23T12:40:31.840-07:00VI emulation in Visual Studio<a href="http://bp1.blogger.com/_3i3RKfgAAzY/R9pJJWNELoI/AAAAAAAAAA8/x66hphMxfbU/s1600-h/viemu.jpg"><img id="BLOGGER_PHOTO_ID_5177531146543836802" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_3i3RKfgAAzY/R9pJJWNELoI/AAAAAAAAAA8/x66hphMxfbU/s200/viemu.jpg" border="0" /></a><br /><br /><br /><div><span style="font-family:courier new;color:#3366ff;">Every once in a while something comes along that makes you glee. Vi emulation in Visual Studio (and Word/Outlook/SQL MS) is just one of those things. I'm going to be trying this out today and I'm fairly sure I will parting with the $79 to get a full license for VS.</span></div><br /><br /><div><span style="font-family:courier new;color:#3366ff;"></span></div><a href="http://www.viemu.com/"><span style="font-family:courier new;color:#3366ff;">http://www.viemu.com/</span></a><span style="color:#3366ff;"><br /><br /></span><div><span style="color:#3333ff;"></span></div>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0tag:blogger.com,1999:blog-1303198173088051067.post-51350556686315376332008-02-16T07:27:00.000-08:002008-02-17T09:55:17.440-08:00Let them eat cake! (but you may have to pay the Man)<a href="http://www.glennjones.net/home/"><span style="font-family:courier new;color:#3333ff;"><strong>Glenn Jones</strong></span></a><span style="font-family:courier new;color:#3333ff;"> (with whom I'm currently working at </span><a href="http://www.madgex.com/"><span style="font-family:courier new;color:#3333ff;"><strong>Madgex</strong></span></a><span style="font-family:courier new;color:#3333ff;">) has a </span><a href="http://www.glennjones.net/Post/834/CakeFridayvsHMRevenueCustoms.htm"><span style="font-family:courier new;color:#3333ff;"><strong>nice post</strong></span></a><span style="font-family:courier new;color:#3333ff;"> about how the taxman is graciously letting the company off the burden of paying tax on a couple of cakes that a purchased each Friday.<br /><br />It makes you wonder if anything safe from Mr Grey and his PF2345 (Cake) form. The same issue cropped up with Friday Pizzas at </span><a href="http://www.theregister.co.uk/2005/12/21/ibm_micromuse_acquisition/"><span style="font-family:courier new;color:#3333ff;"><strong>Micromuse</strong></span></a><span style="font-family:courier new;color:#3333ff;">. Because someone in accounts was worried about the tax implications, they were stopped. A few weeks later it was realised that Friday lunchtime was the only time some of the developers, testers and support guys met face to face. It had an unbelievably bad effect on the communication within the company.<br /><br />If anything like this is left up to the accountants they want to can it immediately. The trouble is that it's difficult to quantify the benefits of gestures such as cake or pizzas.<br /><br />Also at 'muse there was the case of the Mont Blanc pens. Pens given as presents to commemorate 5 years service - which in this industry is a lifetime. The trouble was that the pens were showing up in people's wage slips. Yes, someone in finance really did think that it would be the done thing to charge the tax on those pens to the recipient.<br /><br />Naturally on principle some 5 year veterans told the bean counters to stick their pens where their solar powered calculators didn’t work. </span>Iain Holderhttp://www.blogger.com/profile/16568947942503716590noreply@blogger.com0