<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1895469180493848136</id><updated>2012-02-02T23:55:16.625-08:00</updated><category term='Reading'/><category term='Sustained Individual Success'/><category term='Software Engineering'/><category term='Project Management'/><category term='Accounting'/><category term='Software Development'/><category term='Software Development Methodology'/><category term='Philosophy'/><category term='Problems'/><category term='Management'/><category term='Frederick P. Brooks'/><category term='Business'/><category term='Leadership'/><category term='POCO'/><category term='Eclipse'/><category term='Career'/><category term='Joel'/><category term='Negotiation'/><category term='Entity Framework 4.1'/><category term='Book'/><category term='AutoMapper'/><category term='Android'/><category term='SVN'/><category term='Analysis'/><category term='.NET'/><title type='text'>Bernard on Technology</title><subtitle type='html'>don't lose your dinosaur...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>68</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-5582648655646201894</id><published>2011-12-18T20:20:00.000-08:00</published><updated>2011-12-18T20:31:17.304-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Leadership'/><category scheme='http://www.blogger.com/atom/ns#' term='Philosophy'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Accounting'/><title type='text'>In Response to "The Engineering Route to Accounting"</title><content type='html'>A clever blogger I follow (John Cook) posted this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.johndcook.com/blog/2011/12/14/engineering-route-to-accounting/"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;http://www.johndcook.com/blog/2011/12/14/engineering-route-to-accounting/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Regarding "The Engineering Route to Accounting". The guts of the post is probably summarised by the sentence "Many people find themselves approving expense reports for people who do the work they enjoy doing, or used to enjoy doing. &lt;span style="font-style: italic;"&gt;[i.e. engineering]&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;I responded, and thought I may as well repost as I spent a fair bit of time composing it! As follows:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic; font-family:courier new;" &gt;OK, I _somewhat_ agree that “by the time you have your degree, you have 5–10 years to go before, if you have any ambition, you end up a manager of some kind” – I would swap the word “any” for “a good amount of”, and I would add to the word “ambition” the words “competence”, “enthusiasm”, “empathy”, “confidence”, “integrity”, etc,. Not everyone is asked to lead, or manage.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-family:courier new;" &gt;I do not agree that “you don’t get to build anything, technicians do that … you only approve their expense reports …”. I think as a manager/leader, you are still building things, maybe just not in the same way an engineer would. Would Steve Jobs say he didn’t build the iPhone? Would Bill Gates say he didn’t build the Microsoft Corporation?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-family:courier new;" &gt;Currently, I am effectively a relatively hands-off development manager. I am passionate about software development (among other things); I do it in my spare time and have done so for many years. For several years following graduation, I was privileged enough to be able to work as a software developer professionally; I enjoyed that. Many grads don’t get to work as engineers. Eventually, I found myself in a position where I was regarded as having enough experience and maturity that the organization I work with looked to me to take the lead. I took the opportunity gladly, why wouldn’t I? Opportunity came knocking – it doesn’t come to everyone and it doesn’t come often. I like challenges and I like solving complex problems – this is partly why software development appeals to me. My current role has many, many interesting challenges, and many complex, multifaceted problems to solve. I enjoy managing software developers; I enjoy watching them and the systems they develop evolve, mature, and prosper. I enjoy contributing to my organization by assisting with strategic software development direction.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-family:courier new;" &gt;    I think that just like when I was doing software development, the thrill I get out of leadership and management is in the belief that when I do my job well, my efforts may help to improve peoples lives. Hmm, yeah, actually I had better get back to work ;-)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As an afterthought to this response I wrote:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-style: italic;font-family:courier new;" &gt;... – my comment may come across as quite complacent.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-style: italic;font-family:courier new;" &gt;So I should say that I agree leadership/development is not for everyone; it can be a burden, and it can be misused terribly.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-style: italic;font-family:courier new;" &gt;I think your list of “What can you do if you want to avoid going into management/accounting?” is pretty spot-on John, nice one.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I hope if you stumble across this and have made the transition from engineering to management/leadership, that you find some of this useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-5582648655646201894?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/5582648655646201894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/12/in-response-to-engineering-route-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5582648655646201894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5582648655646201894'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/12/in-response-to-engineering-route-to.html' title='In Response to &quot;The Engineering Route to Accounting&quot;'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-8030106084345822411</id><published>2011-11-27T11:47:00.001-08:00</published><updated>2011-11-27T12:02:54.269-08:00</updated><title type='text'>Inappropriate Use of the WWW</title><content type='html'>Seen a couple of technical presentations/documents recently that contained a diagram, depicting the WWW like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-5veGHecUV4A/TtKUBhHw-MI/AAAAAAAAAQ0/HQXLwiR42D4/s1600/wwwcloud.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 226px;" src="http://3.bp.blogspot.com/-5veGHecUV4A/TtKUBhHw-MI/AAAAAAAAAQ0/HQXLwiR42D4/s320/wwwcloud.bmp" alt="" id="BLOGGER_PHOTO_ID_5679764833859336386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Not specifically with SFTP, but other miscellaneous (non-HTTP) protocols.&lt;br /&gt;&lt;br /&gt;I guess that this is an architectural misnomer. Technically, the WWW does not propagate anything but HTTP(S) (and whatever you choose to encapsulate within the HTTP protocol) - yes?&lt;br /&gt;&lt;br /&gt;So if you were dealing with (for example) SOAP or RESTful web-services, putting "WWW" in the cloud thingy 'might' be appropriate, otherwise it's just the plain old internet.&lt;br /&gt;&lt;br /&gt;Just putting it out there, mainly because I have not blogged anything for a little while...I bet the title of this post made you think it was about something much more interesting though, right?&lt;br /&gt;&lt;br /&gt;;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-8030106084345822411?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/8030106084345822411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/11/inappropriate-use-of-www.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8030106084345822411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8030106084345822411'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/11/inappropriate-use-of-www.html' title='Inappropriate Use of the WWW'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-5veGHecUV4A/TtKUBhHw-MI/AAAAAAAAAQ0/HQXLwiR42D4/s72-c/wwwcloud.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-1119020923651354076</id><published>2011-08-01T03:27:00.000-07:00</published><updated>2011-08-01T14:03:55.848-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Problems'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Eclipse, Android Development Problem - "Error: Error generating final archive: Debug Certificate expired"</title><content type='html'>&lt;div&gt;A really nasty problem, could have burnt through a fair bit of time. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Luckily I found this article after looking at the "Problems" tab in Eclipse and seeing my debug certificate had expired at the exact minute that I started getting the error message:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="https://sites.google.com/site/322261/post-q-a/errorerrorgeneratingfinalarchivedebugcertificateexpired"&gt;https://sites.google.com/site/322261/post-q-a/errorerrorgeneratingfinalarchivedebugcertificateexpired&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Resolution was reached as follows: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Renaming the debug.keystore file and running a "Clean". Eclipse put a new debug.keystore in place and away I went...however on the next build I get the following trace (my App is called SimpleList):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div  style="font-family:courier new;"&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;[2011-08-01 22:32:47 - SimpleList] ------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;[2011-08-01 22:32:47 - SimpleList] Android Launch!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;[2011-08-01 22:32:47 - SimpleList] adb is running normally.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;[2011-08-01 22:32:47 - SimpleList] Performing com.infostructure.simplelist.SimpleListActivity activity launch&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;[2011-08-01 22:32:47 - SimpleList] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'Magic'&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;[2011-08-01 22:32:47 - SimpleList] Uploading SimpleList.apk onto device 'emulator-5554'&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;[2011-08-01 22:32:48 - SimpleList] Installing SimpleList.apk...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;[2011-08-01 22:32:50 - SimpleList] Re-installation failed due to different application signatures.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;[2011-08-01 22:32:50 - SimpleList] You must perform a full uninstall of the application. WARNING: This will remove the application data!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;[2011-08-01 22:32:50 - SimpleList] Please execute 'adb uninstall com.infostructure.simplelist' in a shell.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;[2011-08-01 22:32:50 - SimpleList] Launch canceled!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bugger. Not to worry, found the directory with the adb application in it (&amp;lt;...&amp;gt;Eclipse\android-sdk-windows\platform-tools) and run the command as specified - "&lt;span class="Apple-style-span" style="  ;font-family:'courier new';font-size:85%;"  &gt;&lt;b&gt;adb uninstall com.infostructure.simplelist&lt;/b&gt;&lt;/span&gt;" - command runs fine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next build works fine, and I'm back in business.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-1119020923651354076?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/1119020923651354076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/08/eclipse-android-development-problem.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1119020923651354076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1119020923651354076'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/08/eclipse-android-development-problem.html' title='Eclipse, Android Development Problem - &quot;Error: Error generating final archive: Debug Certificate expired&quot;'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-5695592020920457780</id><published>2011-07-27T03:19:00.000-07:00</published><updated>2011-07-31T12:33:34.953-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AutoMapper'/><category scheme='http://www.blogger.com/atom/ns#' term='POCO'/><category scheme='http://www.blogger.com/atom/ns#' term='Entity Framework 4.1'/><category scheme='http://www.blogger.com/atom/ns#' term='SVN'/><title type='text'>Software Development Stuff, July 2011</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;VS2010 Integrated SVN&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have recently discovered the AnkhSVN Visual Studio add-in for linking Visual Studio 2010 to your SVN repositories - it's fantastic:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://ankhsvn.open.collab.net/"&gt;http://ankhsvn.open.collab.net/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/-Ay6QXEoWts0/Ti_pJ4YtdEI/AAAAAAAAAQE/_E-iM7xoUQM/s320/SVN_VS2010_Integration.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 266px;" alt="" id="BLOGGER_PHOTO_ID_5633978014827902018" border="0" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Full Visual Studio 2010 integration - gives you those nice neat “checks” and other icons in the solution explorer, to indicate modifications, new items, etc. It's just like a bought one! &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Data Access, Entity Framework 4.1, POCO&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Have also recently discovered Entity Framework version 4.1 for awesome POCO (i.e. "code first") support - doesn't quite "just work" off the bat, but it's pretty damn close:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-code-first-walkthrough.aspx"&gt;http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-code-first-walkthrough.aspx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Couple of hints - initially, I kept on getting the following error message:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;System.Data.SqlClient.SqlException: Invalid object name 'dbo.Users'.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;...obviously I've got a table called [User]. There seems to be some issue (probably not an issue, but just my not reading enough about the framework) with pluralisation. Anyway, the solution is easy – decorate the EF POCO class with the TableAttribute:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;pre style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt; namespace Infostructure.SimpleList.DataModel.Models&lt;br /&gt;{&lt;br /&gt;[Table("User", Schema = "dbo")]&lt;br /&gt;public class User&lt;br /&gt;{ ...&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;JSON Serialisation with EF and AutoMapper&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the piece of work I'm doing a the moment (an MVC app that manages a bunch of “simple lists”) I want to be able to serialise to JSON where an incoming GET request is not ASP.NET authenticated and a UID and PW has come through on the query string.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ran into trouble immediately with serialising my EF POCO objects to JSON, as they have circular references. So, I'm translating to ViewModels. Basically if I don't translate to my matching ViewModels, then I get ye olde "A circular reference was detected while serializing an object of type" exception.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enter the fantastical AutoMapper library.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I use AutoMapper to handle the mapping from EF POCO objects to my ViewModels. The Mapper needs to be configured in the Global.asax ideally, or alternatively, just anywhere prior to where you intend to do the mapping. Like so:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;pre style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt; AutoMapper.Mapper.CreateMap&amp;lt;DataModel.Models.SimpleList, Models.SimpleListViewModel&amp;gt;();  &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's some code from an Index method in one of my Controllers:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt;     public ActionResult Index()&lt;br /&gt;{&lt;br /&gt;  string userName = Request.QueryString["userName"];&lt;br /&gt;  string password = Request.QueryString["password"];&lt;br /&gt;  if (User.Identity.IsAuthenticated)&lt;br /&gt;  {&lt;br /&gt;    _simpleListRepository = new SimpleListRepository();&lt;br /&gt;    var simpleLists = _simpleListRepository.GetSimpleLists(User.Identity.Name);&lt;br /&gt;    return View("Index", simpleLists);&lt;br /&gt;  }&lt;br /&gt;  else if (userName != null &amp;amp;&amp;amp; password != null)&lt;br /&gt;  {&lt;br /&gt;    _simpleListRepository = new SimpleListRepository();&lt;br /&gt;    var simpleLists = _simpleListRepository.GetSimpleLists(userName, password);&lt;br /&gt;    var simpleListsDto = AutoMapper.Mapper.Map&amp;lt;IEnumerable&amp;lt;DataModel.Models.SimpleList&amp;gt;, IEnumerable&amp;lt;Models.SimpleListViewModel&amp;gt;&amp;gt;(simpleLists);&lt;br /&gt;    return Json(simpleLists, JsonRequestBehavior.AllowGet);&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;    return View("Index");&lt;br /&gt;} &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's the link to AutoMapper:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://automapper.codeplex.com/"&gt;http://automapper.codeplex.com/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's all for now. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The code samples I've provided, etc, are a bit rough-and-ready as usual. However, should you happen to have stumbled on this post, and end up following some of it's recommendations, then I hope you enjoy using these features/tools as much as I have!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;======= EDIT - 2011-08-01 =======&lt;br /&gt;&lt;br /&gt;Unfortuantely AutoMapper uses Reflection.Emit, which is not allowed in a Medium Trust environment (i.e. my shared hosting web host).&lt;br /&gt;&lt;br /&gt;There is an alternative out there called ValueInjector, which is not quite as complete-a-tool as AutoMapper as far as I can tell and has a bit of a steeper learning curve. Apparently it can be used in a Medium Trust environment:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://valueinjecter.codeplex.com/"&gt;http://valueinjecter.codeplex.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've reverted to a custom mapping implementation for the time being, since what I'm doing right now is not DTO-intensive. AutoMapper is great though and ValueInjector looks interesting.&lt;br /&gt;&lt;br /&gt;======= EDIT - 2011-08-01 =======&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-5695592020920457780?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/5695592020920457780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/07/software-development-stuff-july-2011.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5695592020920457780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5695592020920457780'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/07/software-development-stuff-july-2011.html' title='Software Development Stuff, July 2011'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Ay6QXEoWts0/Ti_pJ4YtdEI/AAAAAAAAAQE/_E-iM7xoUQM/s72-c/SVN_VS2010_Integration.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-6066894433902353149</id><published>2011-07-12T01:45:00.000-07:00</published><updated>2011-07-27T03:19:40.154-07:00</updated><title type='text'>New Zealand Innovation</title><content type='html'>&lt;div&gt;So, some irony - two articles forwarded to me yesterday, both regarding software innovation in NZ, both at opposite ends of the optimism scale:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(1): &lt;a href="http://www.stuff.co.nz/technology/5264129/Kiwi-software-skills-shallow"&gt;http://www.stuff.co.nz/technology/5264129/Kiwi-software-skills-shallow&lt;/a&gt; (thanks Ann)&lt;/div&gt;&lt;div&gt;(2): &lt;a href="http://www.nzherald.co.nz/business/news/article.cfm?c_id=3&amp;amp;objectid=10737621"&gt;http://www.nzherald.co.nz/business/news/article.cfm?c_id=3&amp;amp;objectid=10737621&lt;/a&gt; (thanks Dad)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My $0.02...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Perhaps the overqualified expat CRM corporate executives of the world (seriously Dr McKendry, please don't tell me you think that Siebel is an innovate product?) should remember where they came from.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;NZ'ers split the atom, climbed Mt Everest and invented the electric fence; what's wrong with producing actual solutions to actual business problems in between?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Go uncle Ed! &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Go back to Silicon Valley Dr  McKendry...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PS: I'm fairly confident that my response is exactly the sort that Dr McKendry was hoping to invoke with his talk!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-6066894433902353149?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/6066894433902353149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/07/so-some-irony-two-articles-forwarded-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/6066894433902353149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/6066894433902353149'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/07/so-some-irony-two-articles-forwarded-to.html' title='New Zealand Innovation'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-9207138554482870631</id><published>2011-05-19T03:08:00.000-07:00</published><updated>2011-05-19T04:04:10.138-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Frederick P. Brooks'/><title type='text'>Book: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)</title><content type='html'>&lt;p style="margin-bottom: 0cm"&gt;&lt;span class="Apple-style-span"&gt;The Mythical Man Month comes with a big reputation attached.  &lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span class="Apple-style-span"&gt;The books was originally written in 1975. The author (Frederick P. Brooks, Jr) is a prominent Computer Scientist and software engineer, who most notably managed the development of the IBM OS/360 operating system. To quote &lt;a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month"&gt;Wikipedia&lt;/a&gt;, “t&lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;&lt;span style="font-weight: normal"&gt;he book is widely regarded as a classic on the human elements of software engineering”.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;&lt;span style="font-weight: normal"&gt;Honestly this was, for me, a difficult one to read. It's a little bit like trying to read the Bible in some parts (which &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;personally, I find tough going). But I would say it is well worth it. In reading this book, I can see that Brook's writing has had an influence on almost every other serious piece of literature on the management and practice of software engineering that I have ever encountered.&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;&lt;span style="font-weight: normal"&gt;The book is entitled “Essays on Software Engineering” and that's what it serves up. The chapters of the book are arranged in some sort of order, but really they're fairly distinct. The first few chapters are introductory and the last few tie a conclusion together, however for the most part you could practically select a chapter such as “Hatching a Catastrophe” (deals with software project schedules and the black art of software estimation) and read it stand-alone comprehensibly.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;&lt;span style="font-weight: normal"&gt;So, all that's left really is to provide a couple of thoughts as to where the book shined, in my opinion. There were many more sections which I thought were enlightening, these are a random few which I noted:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;&lt;span style="font-weight: normal"&gt;Brooks is strong on specification and design up-front, in the same way that Joel Spolsky is. Chapter 6 “Passing The Word” goes into detail on specification.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span class="Apple-style-span"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;&lt;span style="font-weight: normal"&gt;On page 155, in the “Hatching a Catastrophe” chapter, Brooks says “&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;i&gt;&lt;span style="font-weight: normal"&gt;A baseball manager recognizes a nonphysical talent, hustle, as an essential gift of great players and great teams. It is the characteristic of running faster than necessary, moving sooner than necessary, trying harder than necessary. It is essential for great programming teams, too. Hustle provides the cushion, the reserve capacity, that enables a team to cope with routine mishaps, to anticipate and forfend minor calamities. The calculated response, the measured effort, are the wet blankets that dampen hustle&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;&lt;span style="font-weight: normal"&gt;”...I like it!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;&lt;span style="font-weight: normal"&gt;In Chapter 1, “The Tar Pit”, there is a section on “The Joys of the Craft” and then one on “The Woes of the Craft”. I find these sections to put into words, my feelings regarding software development. I won't type the sections out (cause they're long!), but if you get the chance, read them. Anyone who's ever known the elation of writing even the tiniest program and watched it bring a machine to life in some way will be able to relate to these passages. The only other way that I could express the feeling is to say that it's something like this (Tom Hanks “creates fire”, in Castaway):&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;&lt;span style="font-weight: normal"&gt;&lt;a href="http://www.youtube.com/watch?v=IS7Og1zvdy8"&gt;http://www.youtube.com/watch?v=IS7Og1zvdy8&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span class="Apple-style-span"&gt;&lt;a name="0201835959_R2UabF7UUZ_commentText"&gt;&lt;/a&gt; &lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;&lt;span style="font-weight: normal"&gt;Finally, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;&lt;span style="font-weight: normal"&gt;I think the following excerpt from near the end of the book captures the essence..."&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;i&gt;&lt;span style="font-weight: normal"&gt;[the book] is only incidentally about software but primarily about how people in teams make things&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;&lt;span style="font-weight: normal"&gt;".&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;&lt;span style="font-weight: normal"&gt;So that's it. In summary, a difficult read, but well worth the effort in my opinion.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;&lt;span style="font-weight: normal"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm"&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; "&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; "&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Title: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; "&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Author: Fredrick P. Brooks, Jr&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; "&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Link: &lt;a href="http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959"&gt;Amazon&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; "&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Tags: Book, Fredrick P. Brooks, Project Management, Software Development, Software Engineering&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="line-height: 18px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS', Verdana, Arial, sans-serif; font-size: 13px; line-height: 18px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS', Verdana, Arial, sans-serif; font-size: 13px; line-height: 18px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-9207138554482870631?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/9207138554482870631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/05/book-mythical-man-month-essays-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/9207138554482870631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/9207138554482870631'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/05/book-mythical-man-month-essays-on.html' title='Book: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-5293676806346067426</id><published>2011-04-24T16:36:00.000-07:00</published><updated>2011-04-24T16:53:42.860-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><category scheme='http://www.blogger.com/atom/ns#' term='Joel'/><title type='text'>Book: Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and [...]</title><content type='html'>&lt;div style="text-align: left;"&gt;This book is effectively a collection of Joel's blog postings and letters, assembled into a somewhat coherent sequence of five parts. The first two parts are the most useful - “Bits and Bytes: The Practice of Programming” and “Managing Developers”.&lt;/div&gt; &lt;p style="text-align: left;margin-bottom: 0cm; "&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;I found part two exceptionally enlightening – this is the first book/article that I've read which deals with the matter of managing software developers directly, from the point of view of a former/current programmer.  &lt;/p&gt; &lt;p style="text-align: left;margin-bottom: 0cm; "&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;Part one (The Practice of Programming) contains a very useful series of four chapters entitled “Painless Functional Specifications” - again, fantastically simple ideas and solid reasoning as to why it's critical that (almost) any piece of software development should be preceded by the thought process and documentation phase that amounts to a functional specification. I would just about say that this series of articles (or something resembling it) is a must read for any developer. Too many developers (myself included at certain times in the past) in my opinion are all to willing to dive into coding ahead of putting the simplest of designs on paper – this process alone can reveal fundamental flaws in a plan. Joel goes so far as to recommend that developers take a simple course on practical writing, totally agree. Almost all of the other chapters in this section are brilliant and enlightening – certainly however “Painless Functional Specifications” stands out as gold IMO.&lt;/p&gt;&lt;p style="margin-bottom: 0cm"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;img src="http://4.bp.blogspot.com/-ifuP5VHkltQ/TbS2_3hyNsI/AAAAAAAAANs/haVf_dwTUzE/s320/R001-129.JPG" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 217px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5599301445082035906" /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;Parts three, four and five are not so well organised and  start to devolve somewhat into (loose?) assemblies of blog postings; many of which are revealing and fascinating (especially IMO, where Joel makes comparisons to his experiences as a Program Manager at Microsoft). There's a few posting about .NET that are particularly intriguing.  &lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;Many of the articles in the book were written in the years ranging 1999-though-2004; a period of time that the .NET Framework was in it's beta manifestation or in v1.0 and v1.1. I find this section fascinating for two reasons. Firstly, Joel has recorded, like a time capsule, some of the ridiculous announcements and summaries of .NET that Microsoft first put out there. I remember at the time, as a student and emerging professional developer being simultaneously intrigued and baffled as to what the heck .NET actually was. Over a period of a couple of years the hype boiled down to an apps development framework that was more-or-less similar to Java. Some of the fantastically broad and meaningless spiels that Microsoft were using to describe .NET at the time made it seem of equivalent magnitude and significance to a manned mission to Mars or &lt;a href="http://en.wikipedia.org/wiki/Skynet_(Terminator)"&gt;Skynet&lt;/a&gt; becoming self aware, without providing any detail whatsoever about what .NET actually was. I guess however a campaign that marketed .NET as “Microsoft's equivalent to Java” wouldn't go down to well with non-technical folk. Joel saw though the bollocks back then with crystal clarity. The other element of Joel's commentary of .NET that rang true was his questioning of the need to engage .NET seriously as a development platform, and the cost of rewriting existing code-bases to integrate with .NET. To do this is a costly venture that many businesses are still struggling with the practicality of today. I remember at the time, the organisation that I was working with was wary of .NET and the cost that it represented from a business perspective. Joel's writings from this era reflect the exact same sentiment. For myself, at this time I was a fledgling developer who has just realised what .NET was all about and was keen as to get stuck into it – this didn't help things, and eventually led to my departure from a good company (voluntarily!). I have gone on to become a strong and accomplished .NET developer, at the cost of an opportunity to be part of a great NZ success story. Them's the breaks I guess – I enjoy what I do regardless and am still on good terms with the company that  provided me with my first break into the software development industry (they are my Aunty and Uncle – the company is &lt;a href="http://www.abtrac.com/"&gt;Abtrac&lt;/a&gt;), and that's what counts I think. Besides, I have moved on to another NZ success story! In summary, Joel's critique on the turmoil that the introduction of the .NET Framework brought to the Microsoft software development community is in depth and,  I think, heartfelt. I enjoyed it.&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;In summary, this is an extremely useful book that is written in a lively and humorous manner. Well worth a read for anyone who has anything to do with software development. And in my opinion, a must read for Microsoft software development leadership/management people.&lt;/p&gt;&lt;p style="margin-bottom: 0cm"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102); font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px; "&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;Title: Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity&lt;/div&gt;&lt;div&gt;Author: Joel Spolsky&lt;/div&gt;&lt;div&gt;Link: &lt;a href="http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898"&gt;&lt;span class="Apple-style-span" style="color: rgb(187, 51, 0); "&gt;A&lt;/span&gt;&lt;span class="Apple-style-span"&gt;mazon&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Tags: .NET, Book, Joel, Management, Software Development&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-5293676806346067426?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/5293676806346067426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/04/book-joel-on-software-and-on-diverse.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5293676806346067426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5293676806346067426'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/04/book-joel-on-software-and-on-diverse.html' title='Book: Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and [...]'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-ifuP5VHkltQ/TbS2_3hyNsI/AAAAAAAAANs/haVf_dwTUzE/s72-c/R001-129.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-212346803264923590</id><published>2011-04-22T04:06:00.000-07:00</published><updated>2011-04-22T06:07:09.183-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reading'/><category scheme='http://www.blogger.com/atom/ns#' term='Career'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>Reading Log and Career Path</title><content type='html'>I started another blog - "Bernard's Reading Log" recently. Then I realised that since I don't post a lot of stuff anyway, and also because much of what I'm reading that I want to post about is related to technology (some more, some less), I may as well have it all in the same place. Makes my posting stats look more impressive in any case... So I imported that blog to this blog. I've got a few more books queued up that I've read (or am reading) recently - hopefully will get them posted soon.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Regarding the other topic in this post's header; my reading history (which can be viewed by searching for the Tag "Book") gives away the story of what's happened with my career in the last year-or-so. In January 2010 our Development Team Leader left the company that I work with to go out on his own. A bold and respectable manoeuvre, which I believe is working out well for him. For me that meant that I was offered his job - which I accepted.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since taking starting as a DTL, I have found that professionally, things have changed for me significantly. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Managing and leading a team (I more-or-less do both) is a &lt;i&gt;totally&lt;/i&gt; different job than programming. I enjoy it, but it's difficult to say why. If you asked me why I enjoy programming, that's pretty easy to answer - I won't go into it, but I think that anyone who enjoys programming will give you roughly the same answer; best description I've read to-date is &lt;a href="http://www.xs4all.nl/~driek/me/mmm.html"&gt;here[1]&lt;/a&gt;. The buzz of management and leadership is more challenging to define. I started trying to write up a description just now but got lost - I'll come back to this in a later post!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://1.bp.blogspot.com/-mz98vnLS0q4/TbFymDgdcwI/AAAAAAAAANk/qkYpq_m1emQ/s320/IMG_2120_1.jpg" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 240px; height: 320px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5598381809900286722" /&gt;Anyway, as part of my transition to this new world, I thought it wise to seek professional help; I took a leadership skills course in mid 2010. It was led by an American lady (I'll remember her name and post it), she told lots of stories about her career, provided tons of valuable advise, etc; it was a generally worthwhile programme. The resounding message that I took away from it though was that although her overriding advise was to read more about leadership and management, regularly, more than 90% of people taking the programme wouldn't change their behaviour. I was determined not to be in that 90% and as such have kicked off a personal reading programme and am blogging my progress for my own reference, and for the benefit/amusement of anyone who may happen upon my blog.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Something else I've read recently, in the "painless functional specifications" section of Joel on Software (&lt;a href="http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898"&gt;the book&lt;/a&gt;[2]), is that it's useful to have strong writing skills, in order to help with writing functional specifications and with day-to-day business in general. That makes sense to me. I guess Joel achieves this by writing tons of blog posts and the odd book. I doubt I'll write a book, but I can certainly put the odd blog post together.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, in summary, my blog has changed tack, somewhat. Still technology oriented, but now leaning toward the leadership and management side of things. Most likely this just means it'll become more wordy. I'll start chucking a few more pictures in for good measure - they may be random (e.g. in this post they are of a trip I took to Hong Kong with my family in 2004). In any case, I hope it's a change for the better, and I hope if you happen upon my scrawlings here, you find them at least amusing!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "&gt;[1] The Mythical Man-Month, Addison-Wesley, 1975, p.7-9.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "&gt;[2] "Painless Functional Specifications": &lt;/span&gt;&lt;a href="http://www.joelonsoftware.com/articles/fog0000000036.html"&gt;http://www.joelonsoftware.com/articles/fog0000000036.html&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-212346803264923590?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/212346803264923590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/04/reading-log-and-career-path.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/212346803264923590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/212346803264923590'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/04/reading-log-and-career-path.html' title='Reading Log and Career Path'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-mz98vnLS0q4/TbFymDgdcwI/AAAAAAAAANk/qkYpq_m1emQ/s72-c/IMG_2120_1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-6582402234145235869</id><published>2011-04-06T01:55:00.000-07:00</published><updated>2011-04-06T02:52:19.933-07:00</updated><title type='text'>Using XLinq &amp; MVVM to Populate DDL for ASP.NET MVC</title><content type='html'>&lt;div&gt;&lt;div&gt;Making some adjustments to a website recently. It's not a heavily used beast, but my client required some dynamic functionality - pulling data from a semi-static data-source that he would be able to edit. Hooking up a SQL Server back-end would have been overkill, so I looked into XLinq as an alternative. I have tinkered with XLinq in the past but haven't ever found any particularly useful application for it. This time however it worked out beautifully.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Setup an MVVM for the page that I was working with and used a technique for loading the data that admittedly I need to credit to &lt;a href="http://sachabarber.net/?p=92"&gt;Sascha Barber&lt;/a&gt;. The technique is fantastic and works perfectly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Here's my data, stored in a file name things.xml at http://things.com/things.xml:&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;lt;things&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;thing&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&amp;lt;name&amp;gt;-- STUFF --&amp;lt;/name&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;/thing&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;thing&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&amp;lt;name&amp;gt;THING ONE&amp;lt;/name&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;/thing&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;thing&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&amp;lt;name&amp;gt;THING TWO&amp;lt;/name&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;/thing&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;...&lt;/div&gt;&lt;div&gt;&amp;lt;/things&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Here's the MVVM:&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;using System;&lt;/div&gt;&lt;div&gt;using System.Collections.Generic;&lt;/div&gt;&lt;div&gt;using System.Linq;&lt;/div&gt;&lt;div&gt;using System.Web;&lt;/div&gt;&lt;div&gt;using System.Web.Mvc;&lt;/div&gt;&lt;div&gt;using System.Collections;&lt;/div&gt;&lt;div&gt;using System.Xml.Linq;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;namespace ThingSite.Controllers.ViewModels&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;public class ThingsViewModel&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;{        &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;...&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;public SelectList Things { get; private set; }&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;public Thing CurrentThing { get; private set; }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// constructor&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;public ThingsViewModel()&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Things = new SelectList(GetThings(), "Text", "Value");&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;...&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;private IEnumerable GetThings()&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;string fullXmlPath = "http://things.com/things.xml";&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;var xmlThingResults =&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;from thing in Common.StreamElements(fullXmlPath, "thing")&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;select new SelectListItem&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;Text = thing.Element("name").Value,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;Value = thing.Element("name").Value,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;Selected = false&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;};&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;var list = xmlThingResults.ToList&lt;selectlistitem&gt;();&lt;/selectlistitem&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;return list;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Here's the Common.StreamElements() static method (thanks Sascha!):&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;public static IEnumerable&lt;xelement&gt; StreamElements(string uri, string name)&lt;/xelement&gt;&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;using (XmlReader reader = XmlReader.Create(uri))&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;reader.MoveToContent();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;while (reader.Read())&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;if ((reader.NodeType == XmlNodeType.Element) &amp;amp;&amp;amp; (reader.Name == name))&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;XElement element = (XElement)XElement.ReadFrom(reader);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;yield return element;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Here's the code that returns the MVVM from the Controller:&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;using System;&lt;/div&gt;&lt;div&gt;using System.Collections.Generic;&lt;/div&gt;&lt;div&gt;using System.Linq;&lt;/div&gt;&lt;div&gt;using System.Web;&lt;/div&gt;&lt;div&gt;using System.Web.Mvc;&lt;/div&gt;&lt;div&gt;using ThingSite.Controllers.ViewModels;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;namespace ThingSite.Controllers&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;public class ThingBookingController : Controller&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;...&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;//&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// GET: /ThingBooking/Create&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;public ActionResult Create()&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;return View(new ThingsViewModel());&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;And here's how it's used in the View to populate a DDL:&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;%@ Page Title="" &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Language="C#" &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;MasterPageFile="~/Views/Shared/Site.Master" &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Inherits="System.Web.Mvc.ViewPage&amp;lt;ThingSite.Controllers.ViewModels.ThingsViewModel&amp;gt;&lt;thingsite.controllers.viewmodels.thingsviewmodel&gt;" %&amp;gt;&lt;/thingsite.controllers.viewmodels.thingsviewmodel&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;...&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;% Html.EnableClientValidation(); %&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&amp;lt;td colspan="3"&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;&amp;lt;%: &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Html.DropDownListFor(m =&amp;gt; m.CurrentThing, Model.Things)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;%&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;&amp;lt;span class="validation"&amp;gt;&amp;lt;%= Html.ValidationMessageFor(m =&amp;gt; m.CurrentThing) %&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&amp;lt;/td&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So providing he more-or-less knows how to edit an XML file (he does!) my client is able to go into the XML file and adjust the list of things available for the DDL to be populated by. I reckon that's a pretty nifty technique, for lightweight use.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-6582402234145235869?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/6582402234145235869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/04/mvvm-using-xlinq-to-populate-ddl-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/6582402234145235869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/6582402234145235869'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/04/mvvm-using-xlinq-to-populate-ddl-for.html' title='Using XLinq &amp; MVVM to Populate DDL for ASP.NET MVC'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-3635795832225552585</id><published>2011-02-17T00:46:00.000-08:00</published><updated>2011-04-22T04:02:13.000-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Development Methodology'/><title type='text'>Book: Agile Project Management with Scrum</title><content type='html'>This book provides an excellent coverage of how the Scrum software development methodology works. It introduces the key concepts then chapter by chapter reveals the intricacies involved in implementing the methodology by providing many, many, real world examples.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The author is one of the original signatories to the &lt;a href="http://agilemanifesto.org/"&gt;Agile Manifesto&lt;/a&gt;. He knows his stuff. Aside from the odd very dry joke, and perhaps the first chapter or two, the book does not deviate from the following pattern:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Chapter addresses one of the key features of the Scrum methodology (e.g. the purpose of the SrumMaster).&lt;/li&gt;&lt;li&gt;The chapter's introduction covers the overview of the concept and explains how the chapter will deal with it.&lt;/li&gt;&lt;li&gt;Two or three section (the "body") take us through some strategically selected real world examples, including an analysis of each.&lt;/li&gt;&lt;li&gt;A conclusion ties the chapter together, and ponders the various outcomes of the scenarios provided.  &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's written in a predictable and confident manner. Exactly what you want in a book about project management and software development methodology. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Appendix A of the book along with the glossary is fantastic. It provides all the necessary information required for a quick start, and for reference material once Scrum is underway. Only thing left to do now is start using Scrum for real!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102); font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px; "&gt;&lt;div&gt;Title: Agile Project Management with Scrum&lt;/div&gt;&lt;div&gt;Author: Ken Schwaber&lt;/div&gt;&lt;div&gt;Link: &lt;a href="http://www.amazon.com/Agile-Project-Management-Microsoft-Professional/dp/073561993X"&gt;&lt;span class="Apple-style-span"&gt;A&lt;/span&gt;mazon&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Tags: Project Management, Software Development Methodology&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-3635795832225552585?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/3635795832225552585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/02/book-agile-project-management-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/3635795832225552585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/3635795832225552585'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/02/book-agile-project-management-with.html' title='Book: Agile Project Management with Scrum'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-3630053516086067838</id><published>2011-02-09T00:47:00.000-08:00</published><updated>2011-04-22T04:02:13.001-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Leadership'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><category scheme='http://www.blogger.com/atom/ns#' term='Sustained Individual Success'/><title type='text'>Book: The One Thing You Need to Know...About Great Managing, Great Leading, and Sustained Individual Success</title><content type='html'>As the title suggests, this book is partitioned into three sections - in the opinion of the author:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How to be a great manager&lt;/div&gt;&lt;div&gt;How to be a great leader&lt;/div&gt;&lt;div&gt;How to achieve sustained individual success&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I found this book useful as it clearly defines what the core competencies of a "leader" and a "manager" are; which is something that I have not found elsewhere as yet. Have to admit that some of what I read was news to me - I've realised that my role involves both. To spell it out, effectively managing is looking after your individuals and your team; helping them find success in their work and supporting them. Leading is about providing a vision for your constituents (team) which they can aspire to; painting a picture of what things will be like when the goal is achieved and being clear about what it'll take to get there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The author introduces the concept of a "controlling insight". This is a succinct description of the one thing that stands out clearly as being the key to success in any distinct pursuit (for example, being a great manager). Each section starts by developing a hypothesis, then revealing the controlling insight that the hypothesis supports. From there each section goes onto explain how to use the controlling insight to your advantage in order to achieve success in that area.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I found the section on sustained individual success most intriguing. The author encourages the reader to cleave away the parts of their existence that they find dull or annoying and reclaim that space for pursuits that inspire them. He offers some clever techniques to do this mostly without disruption. Many useful concepts and approaches are covered. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The content is persuasive and inspiring. My one comment would be that there are a statements made that indicate the author believes that the phenomenon of religion is currently in the process of being phased out and replaced by the world of business and technology - I'll simply say that I disagree. Overall a very good book.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px; color: rgb(102, 102, 102); line-height: 18px; "&gt;&lt;div&gt;Title: The One Thing You Need to Know...About Great Managing, Great Leading, and Sustained Individual Success&lt;/div&gt;&lt;div&gt;Author: Marcus Buckingham&lt;/div&gt;&lt;div&gt;Link: &lt;a href="http://books.google.co.nz/books?id=063rJZBYaXEC&amp;amp;printsec=frontcover&amp;amp;dq=the+one+thing+you+need+to+know&amp;amp;source=bl&amp;amp;ots=pTRicDHLPY&amp;amp;sig=2eRw9TH2UbdDhlmGoaMRRMhkN7Y&amp;amp;hl=en&amp;amp;ei=eVtSTauaBIuycaX6kKUH&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=7&amp;amp;ved=0CFMQ6AEwBg#v=onepage&amp;amp;q&amp;amp;f=false"&gt;Google Books&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Tags: Leadership, Management, Sustained Individual Success&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-3630053516086067838?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/3630053516086067838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/02/book-one-thing-you-need-to-knowabout.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/3630053516086067838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/3630053516086067838'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/02/book-one-thing-you-need-to-knowabout.html' title='Book: The One Thing You Need to Know...About Great Managing, Great Leading, and Sustained Individual Success'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-7196960387138927813</id><published>2011-01-18T01:18:00.000-08:00</published><updated>2011-01-18T01:19:00.764-08:00</updated><title type='text'>The SOA Manifesto</title><content type='html'>&lt;a href="http://www.soa-manifesto.org/"&gt;http://www.soa-manifesto.org/&lt;/a&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-7196960387138927813?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/7196960387138927813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/01/soa-manifesto.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/7196960387138927813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/7196960387138927813'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/01/soa-manifesto.html' title='The SOA Manifesto'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-4186622248576012797</id><published>2011-01-03T23:51:00.000-08:00</published><updated>2011-04-22T04:02:13.001-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business'/><category scheme='http://www.blogger.com/atom/ns#' term='Analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><category scheme='http://www.blogger.com/atom/ns#' term='Negotiation'/><title type='text'>Book: Getting to yes: negotiating agreement without giving in</title><content type='html'>&lt;div&gt;This book presents a technique developed at the Harvard Negotiation Project, in alignment with the Harvard Law School. The technique is called "principled negotiation". The technique can be broken down into four key tenants, as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Separate the people from the problem&lt;/div&gt;&lt;div&gt;Focus on interests not positions&lt;/div&gt;&lt;div&gt;Invent options for mutual gain&lt;/div&gt;&lt;div&gt;Insist on using objective criteria&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The book itself is divided into five sections. The first section dismantles and analyzes the traditional style of negotiation whereby each party takes a position and makes a stand on that basis; the negotiation goes back and forth until the positions are shifted enough so as they are closely matched. The author spends this first section setting the scene by saying that this style of negotiation is potentially dangerous - "don't bargain over positions".   &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The next section of the book deals with the method of principled negotiation in detail, and the four tenants, as listed above. This section goes into each tenant in depth, looking at the reasoning for this approach at a psychological level. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The third section addresses what to do in the situation where negotiations are complex or difficult. Introduces the concepts of BATNA (best alternative to negotiated agreement) and "Negotiation Jiujitsu" - using the energy of the other sides attack to develop constructive negotiation. It also looks at what to do if the other side is using "dirty tricks" (for example - extreme commitment, deliberate deception, etc). This section also covers an approach called the "one-text procedure", whereby a third party is enabled to step in and broker an agreement. Worth noting that this technique is more-or-less the same as the requirements gathering process that a seasoned engineering consultant would go through with a client in order to develop a proposed solution that fits a specific business problem. The situation where negotiation procedure itself is negotiated is examined - doing this is encouraged, if for example, the other side is using tricky tactics. This is probably the most useful section of the book as it's more-or-less about putting the theory into practice.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The fourth section is the conclusion - it's only a few pages long. Covers the fact that most of what is presented is understood by many people already, that the content of the book is only useful if put into practice and that negotiation isn't about "winning" but about mutual agreement.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The final section deals with "ten questions people ask about 'getting to yes'". This section is itself broken into four sections; questions about fairness and "principled" negotiation, questions about dealing with people, practical questions, questions about power.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Useful quotes:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;"If you want someone to understand your reasoning, give your interests and reasoning first and your conclusions and proposals later".&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"Where disagreement persists, seek second order agreements - agreement on where you disagree".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"It will be easier to reform the negotiation process than it will be to reform those with whom you are dealing. Don't be diverted from the negotiation by the urge to teach them a lesson".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"A clever strategy cannot make up for lack of preparation. If you formulate a step-by-step strategy that is sure to knock their socks off, you will run into trouble when they come to the negotiation wearing sandals".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Title: Getting to yes: negotiating agreement without giving in&lt;/div&gt;&lt;div&gt;Author: Roger Fisher, William Ury and (for second edition) Bruce Patton&lt;/div&gt;&lt;div&gt;Link: &lt;a href="http://books.google.co.nz/books?id=sjH3emOkC1MC&amp;amp;lpg=PP1&amp;amp;ots=3jR5B3Ft25&amp;amp;dq=Getting%20To%20Yes&amp;amp;pg=PP1#v=onepage&amp;amp;q&amp;amp;f=false"&gt;Google Books&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Tags: Business, Negotiation, Analysis&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-4186622248576012797?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/4186622248576012797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/01/book-getting-to-yes-negotiating.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/4186622248576012797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/4186622248576012797'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2011/01/book-getting-to-yes-negotiating.html' title='Book: Getting to yes: negotiating agreement without giving in'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-1113330194558904608</id><published>2010-12-21T01:40:00.000-08:00</published><updated>2011-04-22T04:02:13.001-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Leadership'/><category scheme='http://www.blogger.com/atom/ns#' term='Business'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>Book: Helping People Win at Work</title><content type='html'>This book provides a useful framework for performance review. The main premise is that you give the individual the "test" at the start of the review process - meaning that you work out between you and them what their goals are for the quater in advance.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The book is divided into four sections. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first section looks at the review structure - it's a little bit boring, but useful nonetheless. Reviews are quaterly and the review at the end of the quater is filled out by the team member (or "tribe member") only; the team leader ("tribe leader") looks at the review and may enter into a discussion where there is a difference in opinion as to how a member has progressed with a stated goal.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The second section talks about building a culture; assumptions, beliefs, vision and values. How to develop a learning culture and how to cultivate a strong vision and set of shared values. Some really useful learning in this section.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The third discusses/reviews the leadership style of Garry Ridge, president of the WD-40 Company. This is and interesting one, as Garry goes into his background and how he's ended up being the influential and thoughtful leader he clearly is. Garry promotes the idea of looking to your background to help you define yourself as a leader and your leadership style.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally, Ken Blanchard finishes off with the fourth section by providing a series of "simple truths" about how to help people win at work. For example; "servant leadership is the only way to go", "celebrate success", etc. Again all invaluable insights. I like the concept of &lt;a href="http://en.wikipedia.org/wiki/Servant_leadership"&gt;Servant Leadership&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There's a section at the end of the book that gives a set of tables which can be used to build up a performance review framework as is described in section one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Overall, really useful book. Would certainly recommend it. A very quick read in-fact, probably a fast reader could knock it off in a day or a couple of hours even.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Title: Helping People Win at Work "Don't Mark My Paper, Help Me Get An A"&lt;/div&gt;&lt;div&gt;Author: Ken Blanchard and Garry Ridge&lt;/div&gt;&lt;div&gt;Link: &lt;a href="http://books.google.co.nz/books?id=4owodQGOKDEC&amp;amp;lpg=PP1&amp;amp;dq=Helping%20People%20Win%20at%20Work%20%22Don't%20Mark%20My%20Paper%2C%20Help%20Me%20Get%20An%20A%22&amp;amp;pg=PP1#v=onepage&amp;amp;q&amp;amp;f=false"&gt;Google Books&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Tags: Business, Leadership&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-1113330194558904608?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/1113330194558904608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/12/book-helping-people-win-at-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1113330194558904608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1113330194558904608'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/12/book-helping-people-win-at-work.html' title='Book: Helping People Win at Work'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-5508773503097156047</id><published>2010-11-23T01:44:00.000-08:00</published><updated>2010-11-23T02:00:35.948-08:00</updated><title type='text'></title><content type='html'>Really useful posts here on how to setup JUnit unit testing for Android:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://dtmilano.blogspot.com/2008/11/android-testing-on-android-platform.html"&gt;http://dtmilano.blogspot.com/2008/11/android-testing-on-android-platform.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.laliluna.de/articles/eclipse-junit-testing-tutorial.html"&gt;http://www.laliluna.de/articles/eclipse-junit-testing-tutorial.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-5508773503097156047?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/5508773503097156047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/11/really-useful-post-here-on-how-to-setup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5508773503097156047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5508773503097156047'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/11/really-useful-post-here-on-how-to-setup.html' title=''/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-8873245172250662206</id><published>2010-11-04T03:09:00.000-07:00</published><updated>2010-11-04T03:16:55.477-07:00</updated><title type='text'>"Androids in Auckland" Meetup group</title><content type='html'>&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Really useful meeting this-evening at the &lt;span class="Apple-style-span" style="line-height: 18px; "&gt;"&lt;a href="http://www.meetup.com/Androids-In-Auckland/"&gt;Androids in Auckland&lt;/a&gt;" Meetup group. Met some like minded droid-velopers (let's see if that catches on) and gained a few useful pointers, particularly around unit testing with Android software development.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;Here's a link to the &lt;/span&gt;&lt;a href="http://melber.s3.amazonaws.com/DemosAndPressos/Android_Presso_2010104.pdf" style="line-height: 18px; "&gt;presentation &lt;/a&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;that I did at tonight's meeting. It's effectively an "enhanced" version of the post that I made on the same subject earlier in October. There are a couple of errors/typos - if you're keen enough to read it, then you may feel free ask me what they are ;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-8873245172250662206?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/8873245172250662206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/11/androids-in-auckland-meetup-group.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8873245172250662206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8873245172250662206'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/11/androids-in-auckland-meetup-group.html' title='&quot;Androids in Auckland&quot; Meetup group'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-1528423436796285458</id><published>2010-10-14T13:25:00.000-07:00</published><updated>2010-10-14T14:31:08.290-07:00</updated><title type='text'>Programming the Droid...</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-NZ&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin:0cm;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;Over the past few months I have become an Android enthusiast, user (HTC Magic 32b), and "emerging" applications developer.&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://4.bp.blogspot.com/_xKxDIF4xHUc/TLd0Fa1J1nI/AAAAAAAAAMM/2aERU1cSb-4/s1600/magic.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 154px; height: 291px;" src="http://4.bp.blogspot.com/_xKxDIF4xHUc/TLd0Fa1J1nI/AAAAAAAAAMM/2aERU1cSb-4/s320/magic.png" alt="" id="BLOGGER_PHOTO_ID_5528014704071005810" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;i&gt;So, here’s what I have discovered around Android programming so-far…&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;The fundamental component if you’re interested in applications development (as opposed to platform/OS development) is Eclipse IDE for Java. Previously I've used &lt;a href="http://netbeans.org/"&gt;Netbeans &lt;/a&gt;for J2ME development, but it seems Eclipse is "the one" for Android. mobile Eclipse is a fantastic IDE, that I have used in the past for all sorts of other stuff – comparable to Microsoft Visual Studio in every manner, with some advantages over it, including the fact that it’s free!&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://www.eclipse.org/"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 122px; height: 69px;" src="http://1.bp.blogspot.com/_xKxDIF4xHUc/TLd0nJPjZCI/AAAAAAAAAMU/b7m20dgeRj0/s320/eclipse.png" alt="" id="BLOGGER_PHOTO_ID_5528015283465446434" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="http://www.eclipse.org/" target="_blank"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://www.eclipse.org/" target="_blank"&gt;http://www.eclipse.org/&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Also, once you get into user interface design, you’ll find that one of the few areas where Eclipse is lacking is that it does not have an Android UI designer. The “Droid Draw” program is ideal for putting user interfaces together for the Java Android API. Again, it’s free. It can be used on the web or you can download an EXE. Basically you use it to put the UI together the way you want it, then copy the XML output code into Eclipse, attach event listeners to the controls, and away you go.&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="http://www.droiddraw.org/" target="_blank"&gt;http://www.droiddraw.org/&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://www.droiddraw.org/" target="_blank"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;i&gt;The following is an annotated series of links that I’ve cobbled together that have helped me get to the stage where I can develop web-services connection Android applications…&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;These links provide the basic details to help you get your Eclipse IDE setup for Android development:&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="http://developer.android.com/resources/tutorials/hello-world.html"&gt;http://developer.android.com/resources/tutorials/hello-world.html&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="http://www.mikeplate.com/getting-ready-for-android-development/"&gt;http://www.mikeplate.com/getting-ready-for-android-development/&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;This is an end-to-end application development scenario – a basic calculator, with user interface:&lt;/p&gt;   &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="http://www.datasprings.com/Resources/ArticlesInformation/AndroidSDKExampleApplicationSampleCode.aspx" target="_blank"&gt;http://www.datasprings.com/Resources/ArticlesInformation/AndroidSDKExampleApplicationSampleCode.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;This link tells you how to arrange security settings for your application if you want to (for example) connect it to a web-service on the internet:&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="http://stackoverflow.com/questions/2169294/how-to-add-manifest-permission-to-android-application" target="_blank"&gt;http://stackoverflow.com/qu&lt;/a&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;a href="http://stackoverflow.com/questions/2169294/how-to-add-manifest-permission-to-android-application" target="_blank"&gt;estions/2169294/how-to-add-manifest-permission-to-android-application&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;This link is a project that some kind soul has put on the web which shows us how to connect to and consume a JSON web-service. The code provided can easily be extended and adapted to become a fully fledged RESTful client (leveraging other HTTP commands, rather than just GET):&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="http://www.josecgomez.com/2010/04/30/android-accessing-restfull-web-services-using-json/" target="_blank"&gt;http://www.josecgomez.com/2010/04/30/android-accessing-restfull-web-services-using-json/&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;This link provides a bit deeper detail on how to attach those GSON jar files (that Jose C Gomez describes in the above article) to your Eclipse IDE project, and consume them for your own use:&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="http://www.wikihow.com/Add-JARs-to-Project-Build-Paths-in-Eclipse-%28Java%29"&gt;http://www.wikihow.com/Add-JARs-to-Project-Build-Paths-in-Eclipse-%28Java%29&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://www.wikihow.com/Add-JARs-to-Project-Build-Paths-in-Eclipse-%28Java%29"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Connect with your peers...&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;Finally, it is always useful to talk face-to-face with people, user group meetings are great for that. I joined the "&lt;a href="http://www.meetup.com/Androids-In-Auckland/"&gt;Androids in Auckland&lt;/a&gt;" Meetup group yesterday.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://www.android.com/"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 250px; height: 188px;" src="http://3.bp.blogspot.com/_xKxDIF4xHUc/TLd1h_cuuuI/AAAAAAAAAMc/BDu2uuZkYZk/s320/android.png" alt="" id="BLOGGER_PHOTO_ID_5528016294448642786" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-1528423436796285458?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/1528423436796285458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/10/programming-droid.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1528423436796285458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1528423436796285458'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/10/programming-droid.html' title='Programming the Droid...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xKxDIF4xHUc/TLd0Fa1J1nI/AAAAAAAAAMM/2aERU1cSb-4/s72-c/magic.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-8150439720288242564</id><published>2010-07-01T22:45:00.000-07:00</published><updated>2010-11-28T15:44:38.814-08:00</updated><title type='text'>Telecom New Zealand Exchange Tour - Mayoral Drive and Airedale Street...</title><content type='html'>&lt;!--[if !mso]&gt; &lt;style&gt; v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} &lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves&gt;false&lt;/w:TrackMoves&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-NZ&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:"Cambria Math";  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:0;  mso-generic-font-family:roman;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1107304683 0 0 415 0;} @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;  mso-generic-font-family:swiss;  mso-font-pitch:variable;  mso-font-signature:-520092929 1073786111 9 0 415 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin:0cm;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;} .MsoChpDefault  {mso-style-type:export-only;  mso-default-props:yes;  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;  mso-fareast-language:EN-US;} .MsoPapDefault  {mso-style-type:export-only;  margin-bottom:10.0pt;  line-height:115%;} @page Section1  {size:595.3pt 841.9pt;  margin:72.0pt 72.0pt 72.0pt 72.0pt;  mso-header-margin:35.4pt;  mso-footer-margin:35.4pt;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin-top:0cm;  mso-para-margin-right:0cm;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0cm;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;  mso-ansi-language:EN-MY;  mso-fareast-language:EN-US;} &lt;/style&gt; &lt;![endif]--&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Believe it not, we were welcome to take photos! So here are a few...&lt;/span&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;Carrier X’s “Unbundled Copper Local Loop” (UCLL) gear:&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xKxDIF4xHUc/TC19uMTFU9I/AAAAAAAAAK0/I-3zDvaygRc/s1600/1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_xKxDIF4xHUc/TC19uMTFU9I/AAAAAAAAAK0/I-3zDvaygRc/s320/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5489181753363223506" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1033" type="#_x0000_t75" style="'width:451.5pt;"&gt;  &lt;v:imagedata src="file:///C:\Users\bernardo\AppData\Local\Temp\msohtmlclip1\01\clip_image001.jpg" href="cid:image002.jpg@01CB0EEC.908CAC00"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;Carrier Y’s UCLL gear:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1032" type="#_x0000_t75" style="'width:451.5pt;height:602.25pt;"&gt;  &lt;v:imagedata src="file:///C:\Users\bernardo\AppData\Local\Temp\msohtmlclip1\01\clip_image002.jpg" href="cid:image004.jpg@01CB0EEC.908CAC00"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xKxDIF4xHUc/TC1-FUJT7mI/AAAAAAAAAK8/ZcwW7v__zK8/s1600/2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_xKxDIF4xHUc/TC1-FUJT7mI/AAAAAAAAAK8/ZcwW7v__zK8/s320/2.jpg" alt="" id="BLOGGER_PHOTO_ID_5489182150606712418" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;The Airedale “Main Distribution Frame” (MDF):&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1031" type="#_x0000_t75" style="'width:768pt;height:1023.75pt;"&gt;  &lt;v:imagedata src="file:///C:\Users\bernardo\AppData\Local\Temp\msohtmlclip1\01\clip_image003.jpg" href="cid:image006.jpg@01CB0EEC.908CAC00"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1030" type="#_x0000_t75" style="'width:768pt;height:1023.75pt;visibility:visible'"&gt;  &lt;v:imagedata src="file:///C:\Users\bernardo\AppData\Local\Temp\msohtmlclip1\01\clip_image004.jpg" href="cid:image008.jpg@01CB0EEC.908CAC00"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xKxDIF4xHUc/TC1-QevEr_I/AAAAAAAAALE/LP6aeTR_uAQ/s1600/5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_xKxDIF4xHUc/TC1-QevEr_I/AAAAAAAAALE/LP6aeTR_uAQ/s320/5.jpg" alt="" id="BLOGGER_PHOTO_ID_5489182342428012530" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;The Mayoral Drive “Cable Well” (where all the cabling for the entire exchange enters the site – in the basement) – copper below and fibre above. The clear tubes are pumping pressurised super-dry air down the pipes containing copper:&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xKxDIF4xHUc/TC1-fouBPNI/AAAAAAAAALM/Ew6H2btzswQ/s1600/7.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_xKxDIF4xHUc/TC1-fouBPNI/AAAAAAAAALM/Ew6H2btzswQ/s320/7.jpg" alt="" id="BLOGGER_PHOTO_ID_5489182602805984466" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;Mayoral Drive Cable Well again; this is where the incoming cables start to get split up, before they are channelled through the floor into the MDF:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xKxDIF4xHUc/TC1-wIr3w-I/AAAAAAAAALU/zR3iueYSlrg/s1600/9.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_xKxDIF4xHUc/TC1-wIr3w-I/AAAAAAAAALU/zR3iueYSlrg/s320/9.jpg" alt="" id="BLOGGER_PHOTO_ID_5489182886264816610" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1028" type="#_x0000_t75" style="'width:451.5pt;height:602.25pt;"&gt;  &lt;v:imagedata src="file:///C:\Users\bernardo\AppData\Local\Temp\msohtmlclip1\01\clip_image006.jpg" href="cid:image012.jpg@01CB0EEC.908CAC00"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;Mayoral Drive; the upper level of the Cable Well, you can see further splitting going on there and juuust visible are some fibre splitters in black casing – I think they called them “FOTS" (20101129 - EDIT: they did - Fibre Optic Transmission System).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1027" type="#_x0000_t75" style="'width:451.5pt;height:602.25pt;"&gt;  &lt;v:imagedata src="file:///C:\Users\bernardo\AppData\Local\Temp\msohtmlclip1\01\clip_image007.jpg" href="cid:image014.jpg@01CB0EEC.908CAC00"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xKxDIF4xHUc/TC1-6woINxI/AAAAAAAAALc/GiM21XmAKNw/s1600/11.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_xKxDIF4xHUc/TC1-6woINxI/AAAAAAAAALc/GiM21XmAKNw/s320/11.jpg" alt="" id="BLOGGER_PHOTO_ID_5489183068785227538" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;The MDR MDF; fibre on the right, copper on the left:&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xKxDIF4xHUc/TC1_FKXKDkI/AAAAAAAAALk/QeSN44-tpMw/s1600/14.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_xKxDIF4xHUc/TC1_FKXKDkI/AAAAAAAAALk/QeSN44-tpMw/s320/14.jpg" alt="" id="BLOGGER_PHOTO_ID_5489183247492058690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;MDR; a fibre patch tray that a tech had been (accidentally?) left open. Interestingly I was asked mot to use a flash here (not that my camera had one), as that would wreck havoc with the fibre optics. Each plastic bag there contains a splice:&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xKxDIF4xHUc/TC1_PBa3lkI/AAAAAAAAALs/nFlg7OkLVjg/s1600/12.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_xKxDIF4xHUc/TC1_PBa3lkI/AAAAAAAAALs/nFlg7OkLVjg/s320/12.jpg" alt="" id="BLOGGER_PHOTO_ID_5489183416890398274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75" style="'width:451.5pt;height:602.25pt;"&gt;  &lt;v:imagedata src="file:///C:\Users\bernardo\AppData\Local\Temp\msohtmlclip1\01\clip_image009.jpg" href="cid:image018.jpg@01CB0EEC.908CAC00"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-8150439720288242564?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/8150439720288242564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/07/telecom-new-zealand-exchange-tour.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8150439720288242564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8150439720288242564'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/07/telecom-new-zealand-exchange-tour.html' title='Telecom New Zealand Exchange Tour - Mayoral Drive and Airedale Street...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xKxDIF4xHUc/TC19uMTFU9I/AAAAAAAAAK0/I-3zDvaygRc/s72-c/1.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-5856646523735652957</id><published>2010-02-07T19:08:00.001-08:00</published><updated>2010-10-14T15:01:09.266-07:00</updated><title type='text'>Code to Search SQL Server Objects for a Text String...</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;declare @SearchFor        varchar(100);&lt;br /&gt;set @SearchFor = 'blah blah blah';&lt;br /&gt;&lt;br /&gt;if left(@SearchFor, 1) != '%' set @SearchFor = '%' + @SearchFor;&lt;br /&gt;if right(@SearchFor, 1) != '%' set @SearchFor = @SearchFor + '%';&lt;br /&gt;&lt;br /&gt;select&lt;br /&gt;   &lt;/span&gt;&lt;/span&gt; &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;s.name&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;                as SchemaName&lt;br /&gt;   ,&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;o.name&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;                as ObjectName&lt;br /&gt;   ,o.type_desc        as ObjectTypeDesc&lt;br /&gt;   ,o.is_ms_shipped    as IsMSShipped&lt;br /&gt;   ,'exec sp_helptext ''[' + &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;s.name&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt; + '].[' + &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;o.name&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt; + ']'';'        as GetCode&lt;br /&gt;from&lt;br /&gt;   sys.sql_modules sm&lt;br /&gt;   inner join sys.objects o&lt;br /&gt;       on sm.object_id = o.object_id&lt;br /&gt;   inner join sys.schemas s&lt;br /&gt;       on o.schema_id = s.schema_id&lt;br /&gt;where&lt;br /&gt;   definition            like @SearchFor        -- What we are looking for&lt;br /&gt;and    o.is_ms_shipped        = 0                    -- Not a Microsoft bit of code&lt;br /&gt;order by&lt;br /&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;s.name&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;br /&gt;   ,&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;o.name&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Edit - 20101015: It's worth nothing that this is not the most efficient piece of code, and that there is a free RedGate product out there that will search your SQL instance for you (SSMS integrated):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.red-gate.com/products/SQL_Search/"&gt;http://www.red-gate.com/products/SQL_Search/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-5856646523735652957?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/5856646523735652957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/02/code-to-search-sql-server-objects-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5856646523735652957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5856646523735652957'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/02/code-to-search-sql-server-objects-for.html' title='Code to Search SQL Server Objects for a Text String...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-3390176307974634835</id><published>2010-02-06T13:13:00.001-08:00</published><updated>2010-02-06T13:13:13.399-08:00</updated><title type='text'>VS2008 BUG: "Visual Studio Hangs When editing .aspx or .master file"</title><content type='html'>&lt;div class="gmail_quote"&gt;&lt;div&gt;Apparently the bug is closed as fixed.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;a href="http://connect.microsoft.com/VisualStudio/feedback/details/520522/visual-studio-hangs-when-editing-aspx-or-master-file" target="_blank"&gt;http://connect.microsoft.com/VisualStudio/feedback/details/520522/visual-studio-hangs-when-editing-aspx-or-master-file&lt;/a&gt;&lt;div&gt;  &lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://connect.microsoft.com/VisualStudio/feedback/details/520522/visual-studio-hangs-when-editing-aspx-or-master-file" target="_blank"&gt;&lt;/a&gt;&lt;div&gt;Only catch is you have to use VS2010 Beta 2 - what a drag...&lt;/div&gt; &lt;div&gt; &lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-3390176307974634835?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/3390176307974634835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/02/vs2008-bug-visual-studio-hangs-when.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/3390176307974634835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/3390176307974634835'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/02/vs2008-bug-visual-studio-hangs-when.html' title='VS2008 BUG: &quot;Visual Studio Hangs When editing .aspx or .master file&quot;'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-5479962767237517625</id><published>2010-01-22T16:14:00.000-08:00</published><updated>2010-01-22T16:31:33.445-08:00</updated><title type='text'>Merging Changes Made to a Rogue SVN Project...</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Today I discovered that a project I have been working with is not able to sync with my SVN repository. This is because I moved disk partitions of both the repository and the project recently. I should have known.&lt;div&gt;&lt;br /&gt;&lt;div&gt;Anyway, for future reference - here's the solution (using TortiseSVN):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Rename the root directory of the project.&lt;/li&gt;&lt;li&gt;Checkout your project to the same directory that the 'rogue' project is in.&lt;/li&gt;&lt;li&gt;Open 2x explorer windows side-by-side and go into each respective project folder - so your seeing the contents of each of the project folders, one in each window.&lt;/li&gt;&lt;li&gt;Select everything in the rogue folder, RIGHT click and drag to the window with the legit checked-out project in it.&lt;/li&gt;&lt;li&gt;Select the "SVN Export all items here" option. You can safely overwrite everything when prompted, because it's all unmodified stuff straight out of your repository.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/_xKxDIF4xHUc/S1pBsUt3P7I/AAAAAAAAAJ0/_pTZOoSM3T4/s320/SVN.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 318px; height: 242px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5429724530479677362" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now you can check everything in and your SVN repository is happy again!&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-5479962767237517625?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/5479962767237517625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/01/merging-changes-made-to-rogue-svn.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5479962767237517625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5479962767237517625'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2010/01/merging-changes-made-to-rogue-svn.html' title='Merging Changes Made to a Rogue SVN Project...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xKxDIF4xHUc/S1pBsUt3P7I/AAAAAAAAAJ0/_pTZOoSM3T4/s72-c/SVN.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-5045692865211486459</id><published>2009-10-29T15:58:00.000-07:00</published><updated>2009-11-22T14:51:02.370-08:00</updated><title type='text'>MySQL Connector - Error with Multiple Versions on Dev Machine - "...column 'InvariantName' is constrained to be unique..."</title><content type='html'>I installed another version of the MySQL connector on my development machine yesterday, parallel to my existing version - so I now have both 5.0.6 and 5.07 installed. I use these two different versions of it for a couple of different applications I work with. Now however I find that I’m unable to open EDMX files in projects using Entity Framework. I get the following error when I double click on the designer file:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xKxDIF4xHUc/SuogfyBOQHI/AAAAAAAAAI4/rR4_mhc7PlY/s1600-h/EDMX_Error.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 158px;" src="http://2.bp.blogspot.com/_xKxDIF4xHUc/SuogfyBOQHI/AAAAAAAAAI4/rR4_mhc7PlY/s320/EDMX_Error.png" alt="" id="BLOGGER_PHOTO_ID_5398162833731895410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Looking at the machine.config file, I can see there are 2 entries in there for MySQL and sure enough, the invariant names are the same:&lt;span style="font-size:78%;"&gt;&lt;dbproviderfactories&gt;&lt;dbproviderfactories&gt;&lt;/dbproviderfactories&gt;&lt;/dbproviderfactories&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;dbproviderfactories&gt;&lt;br /&gt;   &amp;lt;DbProviderFactories&amp;gt;&lt;br /&gt;    ...&lt;br /&gt;    &amp;lt;add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=5.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /&amp;gt;&lt;br /&gt;    &amp;lt;add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=5.0.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /&amp;gt;&lt;br /&gt;    ...&lt;br /&gt;&amp;lt;/DbProviderFactories&amp;gt;&lt;add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=5.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"&gt;&lt;add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=5.0.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"&gt;&lt;br /&gt; &lt;/add&gt;&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;/span&gt;&lt;/add&gt;&lt;/dbproviderfactories&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The solution - basically instead of uninstalling one of the MySQL Connectors, I just commented one of them out in the machine.config file. Now my EDMX designer works again ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-5045692865211486459?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/5045692865211486459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/10/mysql-connector-error-with-multiple.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5045692865211486459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5045692865211486459'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/10/mysql-connector-error-with-multiple.html' title='MySQL Connector - Error with Multiple Versions on Dev Machine - &quot;...column &apos;InvariantName&apos; is constrained to be unique...&quot;'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_xKxDIF4xHUc/SuogfyBOQHI/AAAAAAAAAI4/rR4_mhc7PlY/s72-c/EDMX_Error.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-2406332833588664243</id><published>2009-10-28T17:43:00.001-07:00</published><updated>2009-10-28T17:48:56.605-07:00</updated><title type='text'>The potential PROs and CONs of using ASP.NET MVC 1.0 for your next  web project...</title><content type='html'>PROS:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Properly testable and allows you to develop more elegant code.&lt;/li&gt;&lt;li&gt;You are ‘forced’ to apply the MVC design pattern by the framework, so the only option is to have a properly defined data model + business logic layer (Model), presentation layer (View) and controller to manage their interaction.&lt;/li&gt;&lt;li&gt;You also don’t have to deal with the ASPX page lifecycle.&lt;/li&gt;&lt;li&gt;Because ASP.NET MVC is RESTful also, it can be used easily with jQuery/JSON, etc - the way the application is organised is more like a RESTful service. The ‘Views’ are like enhanced transforms, layered across the top of the service, that convert the dynamic application output into HTML (if that’s how you choose to define your View), rather than a series of concrete ‘pages’.&lt;/li&gt;&lt;li&gt;Because of the way the URLs are put together (i.e. you mostly don’t need to use a suffix - like .aspx - especially under IIS7), the style is better aligned for web search engine optimisation. &lt;/li&gt;&lt;li&gt;Web design is much easier - if you get a nice HTML page from a designer, it’s much easier to integrate with the application.&lt;/li&gt;&lt;li&gt;You don’t end up with crazy HTML element names, view state in the page, etc - there appears to be much less ‘behind-the-scenes’ messing around with the output HTML by the ASP.NET process than there is with WebForms.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;CONS:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It’s a different way of thinking than WebForms, from a Microsoft web-dev perspective - almost completely. So there’s a learning curve. When you get used to it however, it does seem more ‘natural’ approach than WebForms.&lt;/li&gt;&lt;li&gt;It’s new, so although MVC version 1.0 is integrated into .NET 3.5 SP1 (although I understand MVC 2.0 is now available - with VS2010 Beta...?); you need to know a few special tricks to get things up and running in production. You need to download some ‘futures’ resources from CodePlex, etc.&lt;/li&gt;&lt;li&gt;There are not that many people out there using it yet, so there’s less support and material out there, if you need help.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-2406332833588664243?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/2406332833588664243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/10/potential-pros-and-cons-of-using-aspnet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/2406332833588664243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/2406332833588664243'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/10/potential-pros-and-cons-of-using-aspnet.html' title='The potential PROs and CONs of using ASP.NET MVC 1.0 for your next  web project...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-9035522580149512419</id><published>2009-10-28T14:45:00.001-07:00</published><updated>2009-10-28T14:45:08.634-07:00</updated><title type='text'>SQL Server - database mail - just “because you can”, doesn’t make it right!!</title><content type='html'>&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CUsers%5Cbernardo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CUsers%5Cbernardo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cbernardo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-520092929 1073786111 9 0 415 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:10.0pt; 	margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;} p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing 	{mso-style-priority:1; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:595.3pt 841.9pt; 	margin:72.0pt 72.0pt 72.0pt 72.0pt; 	mso-header-margin:35.4pt; 	mso-footer-margin:35.4pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;  &lt;p class="MsoNoSpacing"&gt;Was thinking the other day (discussing across the office with a couple of colleagues actually ;-) about using database mail out of SQL Server in relation to using .NET components to send mail – kind of a hot topic for us, or at least one that's heating up.&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;My opinion on this type of thing (thankfully shared by our DBA) is that despite the fact that SQL Server provides a very adequate email platform, and there are lots of MSDN type examples out there showing you how do this type of thing, sending bulk email from the database server (for – e.g. – an email marketing campaign type stuff) is bad form.&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;For one thing you're putting unnecessary load on the server and slowing down applications that are using the server for doing what it's designed to do (manage and serve up relational data), and for another thing – there is simply &lt;i style=""&gt;much&lt;/i&gt; better support for doing this type of thing outside of the database, in application code.&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;Here's my analogy; say you want to do some work on your car – among other tools, you have an adjustable spanner and a professional socket set. Using database mail for everything is like using the adjustable spanner for everything "because you can". You save overhead by not having to change tools here and there, but you spend much more time overall trying to get to places in the car that a professional socket set could reach with ease. And your mate who you asked to help you ends up standing around because he wants to use the spanner too…&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;The moral of the story - just "because you can", doesn't make it right!!&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-9035522580149512419?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/9035522580149512419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/10/sql-server-database-mail-just-because.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/9035522580149512419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/9035522580149512419'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/10/sql-server-database-mail-just-because.html' title='SQL Server - database mail - just “because you can”, doesn’t make it right!!'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-477495984100579961</id><published>2009-10-17T15:13:00.000-07:00</published><updated>2009-10-17T15:32:29.006-07:00</updated><title type='text'>Using ASP.NET MVC 1.0 with Dynamic Data...</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Getting Started:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Dynamic data is part of 3.5 SP1, but if you want to use MVC you need to specify that the DLLs should be copied to your \bin folder:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://4.bp.blogspot.com/_xKxDIF4xHUc/StpB6TBGExI/AAAAAAAAAIo/aEscn417xYA/s320/MVC.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 154px; height: 320px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5393695973522674450" /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Setting “Copy Local” to True for the highlighted DLLs will copy them to the output folder automatically when you build and publish. Makes a bin-deploy of the MVC project easier. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;...And Then:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Read Scott Hanselman's talk about MVC and DD sites together: &lt;/span&gt;&lt;a href="http://www.hanselman.com/blog/PlugInHybridsASPNETWebFormsAndASPMVCAndASPNETDynamicDataSideBySide.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://www.hanselman.com/blog/PlugInHybridsASPNETWebFormsAndASPMVCAndASPNETDynamicDataSideBySide.aspx&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Then, go to this site:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=14473"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=14473&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;...and get this sample:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=14473#DownloadId=37136"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=14473#DownloadId=37136&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;You need to reference system.web.dynamicdata:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.web.dynamicdata.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://msdn.microsoft.com/en-us/library/system.web.dynamicdata.aspx&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Here's what needs to be done to enable configuration of DD for a new site:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://blogs.msdn.com/scothu/archive/2008/06/23/how-to-add-dynamic-data-to-an-existing-web-site.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://blogs.msdn.com/scothu/archive/2008/06/23/how-to-add-dynamic-data-to-an-existing-web-site.aspx&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Need to use entities data source DD project if using entities:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://blogs.msdn.com/astoriateam/archive/2008/05/12/ado-net-data-services-framework-beta-1-is-live.aspx#8501769"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://blogs.msdn.com/astoriateam/archive/2008/05/12/ado-net-data-services-framework-beta-1-is-live.aspx#8501769&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Need to reference the System.Web.Entity assembly:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.entitydatasource.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.entitydatasource.aspx&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;...or you get this error message: &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;“The type or namespace name 'EntityDataSource' does not exist in the namespace 'System.Web.UI.WebControls'” &lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Copy the following code into your Global.asax.cs file in order to get your Dynamic Data working in the original MVC project, with your existing entities:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;            MetaModel model = new MetaModel();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;            model.RegisterContext(typeof(&lt;/span&gt;&lt;/span&gt;&lt;your_entities&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;), new ContextConfiguration() { ScaffoldAllTables = true });&lt;/span&gt;&lt;/span&gt;&lt;/your_entities&gt;&lt;/div&gt;&lt;div&gt;            &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;            routes.Add(new DynamicDataRoute("{table}/{action}.aspx")&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;            {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;                Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;                Model = model&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;            });&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Authentication – good article:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://stackoverflow.com/questions/944857/how-do-i-restrict-access-to-certain-pages-in-asp-net-mvc"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://stackoverflow.com/questions/944857/how-do-i-restrict-access-to-certain-pages-in-asp-net-mvc &lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Dynamic Data – displaying database errors:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://blogs.msdn.com/davidebb/archive/2008/12/11/handling-database-exceptions-in-dynamic-data.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://blogs.msdn.com/davidebb/archive/2008/12/11/handling-database-exceptions-in-dynamic-data.aspx &lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Entities Framework: If/When you get this error -&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; “Unable to create a constant value of type 'Closure type'. Only primitive types ('such as Int32, String, and Guid') are supported in this context.”&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://gmontrone.com/problem-with-casting-enums-in-linq-to-entities/"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://gmontrone.com/problem-with-casting-enums-in-linq-to-entities/ &lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Need Dynamic Data Futures DLL&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=14475"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=14475 &lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Handling DD custom views:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.asp.net/learn/3.5-sp1/video-293.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://www.asp.net/learn/3.5-sp1/video-293.aspx &lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Other Tips:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;File upload field template:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://csharpbits.notaclue.net/2008/09/dynamic-data-part-3-fileupload.html"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://csharpbits.notaclue.net/2008/09/dynamic-data-part-3-fileupload.html &lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;If you put html tags into any of the fields you want to edit in your dynamic data views, you will cause it to stop working.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Good link for DD date formatting:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://aspadvice.com/blogs/robertb/archive/2008/08/14/Dynamic-Data-DateTime-Formatting-for-Edits.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://aspadvice.com/blogs/robertb/archive/2008/08/14/Dynamic-Data-DateTime-Formatting-for-Edits.aspx&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  - use &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;{0:d/M/yyyy HH:mm:ss}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-477495984100579961?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/477495984100579961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/10/using-aspnet-mvc-10-with-dynamic-data.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/477495984100579961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/477495984100579961'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/10/using-aspnet-mvc-10-with-dynamic-data.html' title='Using ASP.NET MVC 1.0 with Dynamic Data...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xKxDIF4xHUc/StpB6TBGExI/AAAAAAAAAIo/aEscn417xYA/s72-c/MVC.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-833541731309194890</id><published>2009-10-17T00:58:00.001-07:00</published><updated>2009-10-17T00:58:35.486-07:00</updated><title type='text'>Web.Config Inheritence to Virtual Directory Application -  'inheritInChildApplications' Attribute...</title><content type='html'>&lt;div&gt;Had a problem recently where an &lt;a href="http://ASP.NET"&gt;ASP.NET&lt;/a&gt; MVC 1.0 site was not reading the web.config in the virtual directory that we has created for it (using Helm). It was defaulting back to the main site&amp;#39;s web.config file (in the wwwroot directorty). The error message we got was like this:&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;============================================================&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Server Error in &amp;#39;/blah&amp;#39; Application.&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;br&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Configuration Error&lt;/i&gt;&lt;/b&gt;&lt;/div&gt; &lt;div&gt;&lt;b&gt;&lt;i&gt;Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. &lt;/i&gt;&lt;/b&gt;&lt;/div&gt; &lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;br&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Parser Error Message: Could not load file or assembly &amp;#39;MagicAjax&amp;#39; or one of its dependencies. The system cannot find the file specified. (&amp;lt;path_to_folder&amp;gt;\wwwroot\web.config line 133)&lt;/i&gt;&lt;/b&gt;&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;============================================================&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;...so, (FYI, this has nothing to do with MagicAjax, just using this error as an example of the type of problem that can crop up) the site is trying to read &amp;#39;&amp;lt;path_to_folder&amp;gt;\wwwroot\web.config&amp;#39;, instead of the web.config file in the virtual directory we had setup, which was  &amp;#39;&amp;lt;path_to_folder&amp;gt;\wwwroot\blah\web.config&amp;#39;. &lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This problem is something that can be handled in the top level (wwwroot) config file by using the &amp;#39;inheritInChildApplications&amp;#39; attribute – the following article provides further detail:&lt;/div&gt;&lt;div&gt; &lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.kowitz.net/archive/2007/05/16/stopping-asp.net-web.config-inheritance.aspx"&gt;http://www.kowitz.net/archive/2007/05/16/stopping-asp.net-web.config-inheritance.aspx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt; &lt;div&gt;I encountered this error on the evening of deployment – a couple of long hours of tense Googling yielded this result, which worked...&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-833541731309194890?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/833541731309194890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/10/webconfig-inheritence-to-virtual.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/833541731309194890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/833541731309194890'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/10/webconfig-inheritence-to-virtual.html' title='Web.Config Inheritence to Virtual Directory Application -  &apos;inheritInChildApplications&apos; Attribute...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-2139125856112686650</id><published>2009-09-13T11:30:00.001-07:00</published><updated>2009-09-13T11:34:52.339-07:00</updated><title type='text'>Dynamically Alter a PDF in ASP.NET Using iTextSharp...</title><content type='html'>&lt;span class="Apple-style-span"   style=" border-collapse: collapse;  font-family:arial;font-size:13px;"&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-size:13px;"&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;Here's a class/method that can be used to generate a PDF order form on the fly, on your website. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's only really applicable in the current state if you had a site that was selling a single product at a time, but this provides a proof-of-concept which you could extend/evolve to do more-or-less whatever you want, within reason. You wouldn't want to be (re)generating the PDF each time an order was placed for example, but it could be useful if you had a fax order form for a product(s) and their price(s) needed to be changed by (e.g.) 10%:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:'courier new';font-size:85%;"&gt;&lt;span style="font-size: 10px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;using System;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;using System.IO;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;using iTextSharp.text;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;using iTextSharp.text.pdf;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;namespace YourProject.Utils&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;    public class PDFGeneration&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;    {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;        public static void RegenerateFaxOrderForm(&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            string title,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            string rrp,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            string price)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;        {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            // get the filename&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;#if DEBUG&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            string fileNameFaxOrderForm =&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                @"&lt;path_to_your_app&gt;\Content\&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;Images\FaxOrderForm\&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;FaxOrderForm.pdf";&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            string fileNameFaxOrderFormOriginal =&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                @"&lt;path_to_your_app&gt;\Content\&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;Images\FaxOrderForm\&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;FaxOrderFormOriginal.pdf";&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;#else&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            string fileNameFaxOrderForm = HttpContext.Current.Server.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;MapPath("~/Content/Images/&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;FaxOrderForm/FaxOrderForm.pdf"&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            string fileNameFaxOrderFormOriginal = HttpContext.Current.Server.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;MapPath("~/Content/Images/&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;FaxOrderForm/&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;FaxOrderFormOriginal.pdf");&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;#endif&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            PdfReader pdfReader = null;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            PdfStamper pdfStamper = null;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            try&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                pdfReader = new PdfReader(&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;fileNameFaxOrderFormOriginal);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                pdfStamper = new PdfStamper(pdfReader, new FileStream(&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;fileNameFaxOrderForm, FileMode.Create));&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                BaseFont bf = BaseFont.CreateFont("&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;Helvetica", BaseFont.CP1252, BaseFont.NOT_EMBEDDED);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                PdfContentByte overContent = pdfStamper.GetOverContent(1);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                Rectangle pageSize = pdfReader.GetPageSize(1);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                Rectangle cropBox = pdfReader.GetCropBox(1);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                overContent.BeginText();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                // titles&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                overContent.SetFontAndSize(&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;bf, 11);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                overContent.SetTextMatrix(60, 583);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                overContent.ShowText(title);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                // RRP&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                overContent.SetFontAndSize(&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;bf, 11);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                overContent.SetTextMatrix(&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;270, 583);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                overContent.ShowText(rrp);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                // prices&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                overContent.SetFontAndSize(&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;bf, 11);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                overContent.SetTextMatrix(&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;345, 583);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                overContent.ShowText(price);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                // write it out&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                overContent.EndText();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            catch (Exception ex)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                // do what you like with the exception&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                Console.WriteLine(ex.Message)&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;wbr&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            finally&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                if (pdfStamper != null)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                    pdfStamper.Close();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                if (pdfReader != null)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                    pdfReader.Close();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;                }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;            }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;        }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;...obviously using &lt;a href="http://itextsharp.sourceforge.net/" target="_blank" style="color: rgb(64, 100, 128); "&gt;iTextSharp&lt;/a&gt; here, which is IMHO a truly excellent library! &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;div&gt; &lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new', monospace;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-2139125856112686650?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/2139125856112686650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/09/dynamically-alter-pdf-in-aspnet-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/2139125856112686650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/2139125856112686650'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/09/dynamically-alter-pdf-in-aspnet-using.html' title='Dynamically Alter a PDF in ASP.NET Using iTextSharp...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-725394044256066829</id><published>2009-08-17T02:37:00.001-07:00</published><updated>2009-08-17T02:37:24.000-07:00</updated><title type='text'>Using jQuery to make HTTP GET requests for JSON functions in ASP.NET  MVC ...</title><content type='html'>Doesn&amp;#39;t work for IE...&lt;i&gt;&lt;b&gt;because IE caches the results&lt;/b&gt;&lt;/i&gt; of the $.getJSON(...) HTTP GET query &lt;b&gt;&lt;i&gt;and you end up with the appearance of the same response every time&lt;/i&gt;&lt;/b&gt;. &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;For example, I was writing some code that required a countdown this-evening and everytime I refreshed my IE window, I was starting from the same place I sarted before - e.g. if there were 32 minutes 7 seconds remaining on the counter, the counter counts down 10 seconds and you refresh the browser, you end up back at 32 minutes 7 seconds...frustrating, cause (of course) the problem only occurs in IE!&lt;div&gt; &lt;br&gt;&lt;/div&gt;&lt;div&gt;Way to solve it is the use a POST request. Go into your jquery-1.3.2.js file (or whatever version you&amp;#39;re using), and find the getJSON method that you&amp;#39;re using the make the GET request. Underneath that, paste in the following code:&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;postJSON: function(url, data, callback) { &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;    return jQuery.post(url, data, callback, &amp;quot;json&amp;quot;);&lt;/div&gt; &lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;},&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;...then simply change the javascript methodcall you&amp;#39;re making to postJSON instead of getJSON. Oh, and you&amp;#39;ll need to decorate the method you had exposed in your &lt;a href="http://ASP.NET"&gt;ASP.NET&lt;/a&gt; MVC controller with the [AcceptVerbs(HttpVerbs.Post)] attribute, so as it knows it&amp;#39;s a POST method. Apparently it&amp;#39;s officially acceptable to cache the output of the HTTP GET command, because of it&amp;#39;s idempotent nature: &lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html"&gt;http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html&lt;/a&gt;&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;So I guess despite my frustration, I learnt two new things today; the real intention of the HTTP GET command and the word &amp;#39;&lt;a href="http://dictionary.reference.com/browse/idempotent"&gt;idempotent&lt;/a&gt;&amp;#39; ;-)&lt;/div&gt; &lt;/div&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-725394044256066829?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/725394044256066829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/08/using-jquery-to-make-http-get-requests.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/725394044256066829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/725394044256066829'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/08/using-jquery-to-make-http-get-requests.html' title='Using jQuery to make HTTP GET requests for JSON functions in ASP.NET  MVC ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-8183866631909000988</id><published>2009-07-26T21:55:00.001-07:00</published><updated>2009-07-26T22:00:48.141-07:00</updated><title type='text'>How to Prevent Debugger Step-Thru Spontaneously Dying in IIS 7.0 ...</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div class="Section1"&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;This frustrated me for a while until I Googled it and discovered it’s a preventable thing.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;I guess there’s a good reason for it (somewhere), but when your stepping through debugging your ASP.NET website and just getting to the bottom of an issue when the debugger quits saying that the web server was unresponsive for 59.999 seconds, it can get on your nerves ;-) Here’s how to prevent that from happening…&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Go to the application pool for the app you’re debugging and check out the ‘Advanced Settings’:&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xKxDIF4xHUc/Sm0z2TpSjDI/AAAAAAAAAH4/t4AZvd0sukk/s1600-h/IIS7_APP_POOL.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 262px; height: 320px;" src="http://3.bp.blogspot.com/_xKxDIF4xHUc/Sm0z2TpSjDI/AAAAAAAAAH4/t4AZvd0sukk/s320/IIS7_APP_POOL.jpg" alt="" id="BLOGGER_PHOTO_ID_5362999739347536946" border="0" /&gt;&lt;/a&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;… set ‘Ping Enabled’ to false and you will find you can leave your debugger hanging as long as you like (again) while you dig through stuff…&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-8183866631909000988?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/8183866631909000988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/07/how-to-prevent-debugger-step-thru.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8183866631909000988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8183866631909000988'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/07/how-to-prevent-debugger-step-thru.html' title='How to Prevent Debugger Step-Thru Spontaneously Dying in IIS 7.0 ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xKxDIF4xHUc/Sm0z2TpSjDI/AAAAAAAAAH4/t4AZvd0sukk/s72-c/IIS7_APP_POOL.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-1324393086918633917</id><published>2009-07-02T22:10:00.001-07:00</published><updated>2009-07-02T22:13:29.998-07:00</updated><title type='text'>ASP.NET MVC + Dynamic Data ... &lt;tagMapping /&gt; and App_Code folder</title><content type='html'>If I have a &amp;lt;tagMapping /&amp;gt; config file entry associated with a class in the App_Code folder, I seem to get the following error message without fail, at runtime:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  ;font-family:Arial;font-size:11px;"&gt;&lt;b style="font-family: Verdana; font-weight: bold; color: black; margin-top: -5px; "&gt;Parser Error Message: &lt;/b&gt;The type 'MyNamespace.CustomDynamicValidator' is ambiguous: it could come from assembly 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary &lt;a href="http://asp.net/"&gt;ASP.NET&lt;/a&gt; Files\root\50512c51\4b64a02d\App_Code._ejsf967.DLL' or from assembly 'C:\WebApps\MyApp\ MyApp\bin\MyAssembly.DLL'. Please specify the assembly explicitly in the type name.&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No biggie, just kind of a PITA actually. Now I need to put any code I'm using &amp;lt;tagMapping /&amp;gt; with in the root directory, and then it works fine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-1324393086918633917?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/1324393086918633917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/07/aspnet-mvc-dynamic-data-and-appcode.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1324393086918633917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1324393086918633917'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/07/aspnet-mvc-dynamic-data-and-appcode.html' title='ASP.NET MVC + Dynamic Data ... &amp;lt;tagMapping /&amp;gt; and App_Code folder'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-5720510337792952565</id><published>2009-05-19T15:13:00.001-07:00</published><updated>2009-05-19T15:13:31.336-07:00</updated><title type='text'>net time</title><content type='html'>Sync the time on your local machine with a network server&amp;#39;s:&lt;br&gt;&lt;br&gt;net time \\timesrv /set /yes&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-5720510337792952565?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/5720510337792952565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/05/net-time.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5720510337792952565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5720510337792952565'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/05/net-time.html' title='net time'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-2601746290970794365</id><published>2009-05-18T16:50:00.000-07:00</published><updated>2009-05-18T18:33:39.064-07:00</updated><title type='text'>Handy Tip - Enabling SSL on IIS 7.0 Using Self-Signed Certificates</title><content type='html'>Compliments of ScottGu:&lt;br&gt;&lt;br&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br&gt; &lt;/a&gt;&lt;br&gt;... ;-)&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-2601746290970794365?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/2601746290970794365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/05/handy-tip-enabling-ssl-on-iis-70-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/2601746290970794365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/2601746290970794365'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/05/handy-tip-enabling-ssl-on-iis-70-using.html' title='Handy Tip - Enabling SSL on IIS 7.0 Using Self-Signed Certificates'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-4512391409916358354</id><published>2009-05-17T23:01:00.001-07:00</published><updated>2009-05-17T23:01:59.452-07:00</updated><title type='text'>Google - microsoft related information only switch</title><content type='html'>&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CUsers%5Cbernardo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CUsers%5Cbernardo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cbernardo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;style&gt; &amp;lt;!--  /* Font Definitions */  @font-face 	{font-family:&amp;quot;Cambria Math&amp;quot;; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-alt:&amp;quot;Calisto MT&amp;quot;; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-alt:&amp;quot;Arial Rounded MT Bold&amp;quot;; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:&amp;quot;&amp;quot;; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:&amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;;} a:link, span.MsoHyperlink 	{mso-style-noshow:yes; 	mso-style-priority:99; 	color:blue; 	text-decoration:underline; 	text-underline:single;} a:visited, span.MsoHyperlinkFollowed 	{mso-style-noshow:yes; 	mso-style-priority:99; 	color:purple; 	mso-themecolor:followedhyperlink; 	text-decoration:underline; 	text-underline:single;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt;} @page Section1 	{size:612.0pt 792.0pt; 	margin:72.0pt 72.0pt 72.0pt 72.0pt; 	mso-header-margin:36.0pt; 	mso-footer-margin:36.0pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&amp;gt; &lt;/style&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;Limit your search to MS related stuff only!&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;a href="http://www.google.com/microsoft.html"&gt;http://www.google.com/microsoft.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;(I'm not sure what other Google switches are out there)&lt;/span&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-4512391409916358354?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/4512391409916358354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/05/google-microsoft-related-information.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/4512391409916358354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/4512391409916358354'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/05/google-microsoft-related-information.html' title='Google - microsoft related information only switch'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-1306456084698979997</id><published>2009-05-16T13:26:00.001-07:00</published><updated>2009-05-16T13:26:46.192-07:00</updated><title type='text'>ASP.NET MVC v1.0 - Generic Html.ActionLink(...)</title><content type='html'>... was removed for release of version 1.0.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This has been documented in about a million other places, but not many posts reference where to get the &amp;#39;&lt;a href="http://ASP.NET"&gt;ASP.NET&lt;/a&gt; MVC v1.0 Futures&amp;#39; DLL (as opposed to the BETA Futures).&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;It&amp;#39;s here:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aspnet&amp;amp;DownloadId=61773&amp;amp;FileTime=128813720881730000&amp;amp;Build=15036"&gt;http://download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aspnet&amp;amp;DownloadId=61773&amp;amp;FileTime=128813720881730000&amp;amp;Build=15036&lt;/a&gt;&lt;br&gt; &lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;You need this DLL if you want to use the generic version of the ActionLink - which can be used like this:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;==================================================================&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;lt;%@ Page Title=&amp;quot;&amp;quot; Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/Views/Shared/Site.Master&amp;quot; Inherits=&amp;quot;System.Web.Mvc.ViewPage&amp;quot; %&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;lt;%@ Import Namespace=&amp;quot;Bernard.Controllers&amp;quot;%&amp;gt;&lt;/div&gt; &lt;div&gt;&lt;span class="Apple-style-span" style="background-color: rgb(255, 255, 0);"&gt;&amp;lt;%@ Import Namespace=&amp;quot;Microsoft.Web.Mvc&amp;quot;%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;asp:Content ID=&amp;quot;Content1&amp;quot; ContentPlaceHolderID=&amp;quot;TitleContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;/div&gt; &lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;Index&lt;/div&gt;&lt;div&gt;&amp;lt;/asp:Content&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;asp:Content ID=&amp;quot;Content2&amp;quot; ContentPlaceHolderID=&amp;quot;MainContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;/div&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;    &amp;lt;h2&amp;gt;Index&amp;lt;/h2&amp;gt;&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;    &amp;lt;ol&amp;gt;&lt;/div&gt;&lt;div&gt;        &amp;lt;li&amp;gt;&lt;/div&gt;&lt;div&gt;            &lt;span class="Apple-style-span" style="background-color: rgb(255, 255, 51);"&gt;&amp;lt;%= Html.ActionLink&amp;lt;MyController&amp;gt;(c =&amp;gt; c.Index(), &amp;quot;MyStuff&amp;quot;)%&amp;gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;        &amp;lt;/li&amp;gt;&lt;/div&gt;&lt;div&gt;    &amp;lt;/ol&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;/asp:Content&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;==================================================================&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;As per the above example - remember to throw the additional &amp;#39;import&amp;#39; statement in ...&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-1306456084698979997?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/1306456084698979997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/05/aspnet-mvc-v10-generic-htmlactionlink.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1306456084698979997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1306456084698979997'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/05/aspnet-mvc-v10-generic-htmlactionlink.html' title='ASP.NET MVC v1.0 - Generic Html.ActionLink&lt;T&gt;(...)'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-4603807079618227727</id><published>2009-02-22T14:56:00.001-08:00</published><updated>2009-02-22T14:56:56.360-08:00</updated><title type='text'>My First Lambda Expression ...</title><content type='html'>Instead of using the following code to bypass an invalid site certificate for the HTTPS web-service I&amp;#39;m using:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: courier new,monospace;"&gt;System.Net.ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CertificateValidation);&lt;/span&gt;&lt;br style="font-family: courier new,monospace;"&gt; &lt;span style="font-family: courier new,monospace;"&gt;...&lt;/span&gt;&lt;br style="font-family: courier new,monospace;"&gt;&lt;span style="font-family: courier new,monospace;"&gt;private bool CertificateValidation(&lt;/span&gt;&lt;br style="font-family: courier new,monospace;"&gt; &lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Object sender,&lt;/span&gt;&lt;br style="font-family: courier new,monospace;"&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509Certificate cert,&lt;/span&gt;&lt;br style="font-family: courier new,monospace;"&gt; &lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509Chain chain,&lt;/span&gt;&lt;br style="font-family: courier new,monospace;"&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SslPolicyErrors Errors)&lt;/span&gt;&lt;br style="font-family: courier new,monospace;"&gt; &lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br style="font-family: courier new,monospace;"&gt;&lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;/span&gt;&lt;br style="font-family: courier new,monospace;"&gt; &lt;span style="font-family: courier new,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;br&gt;You can use a lambda expression to do the same thing - like this:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: courier new,monospace;"&gt;System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, cert, chain, Errors) =&amp;gt; true);&lt;/span&gt;&lt;br&gt; &lt;font face="arial,helvetica,sans-serif"&gt;&lt;br&gt;Sweet ;-)&lt;br&gt;&lt;/font&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-4603807079618227727?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/4603807079618227727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/02/my-first-lambda-expression.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/4603807079618227727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/4603807079618227727'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/02/my-first-lambda-expression.html' title='My First Lambda Expression ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-5619435202346902024</id><published>2009-02-18T17:03:00.000-08:00</published><updated>2009-02-18T17:05:20.886-08:00</updated><title type='text'>The SDLC ...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xKxDIF4xHUc/SZywOg8JMSI/AAAAAAAAAHw/FE6Mf59lU1w/s1600-h/Swing-design.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 238px;" src="http://2.bp.blogspot.com/_xKxDIF4xHUc/SZywOg8JMSI/AAAAAAAAAHw/FE6Mf59lU1w/s320/Swing-design.gif" alt="" id="BLOGGER_PHOTO_ID_5304308224542454050" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-5619435202346902024?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/5619435202346902024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/02/sdlc.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5619435202346902024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5619435202346902024'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/02/sdlc.html' title='The SDLC ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_xKxDIF4xHUc/SZywOg8JMSI/AAAAAAAAAHw/FE6Mf59lU1w/s72-c/Swing-design.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-8541872920734748457</id><published>2009-02-12T01:55:00.000-08:00</published><updated>2009-02-12T02:05:17.241-08:00</updated><title type='text'>Creating  New User in SQL Server 2K5 and 2K8</title><content type='html'>&lt;span style="font-family:arial;"&gt;Basically the GUI doesn't work properly - so just script it! Like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CREATE USER [NT AUTHORITY\NETWORK SERVICE] &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;FOR LOGIN [NT AUTHORITY\NETWORK SERVICE] &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;WITH DEFAULT_SCHEMA=[your_schema]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The problem is when you want to assign a default Schema to your User - it just won't do it. You select 'your_schema', and hit 'Ok':&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;img src="file:///C:/Users/bernard/AppData/Local/Temp/moz-screenshot-3.jpg" alt="" /&gt;&lt;img src="file:///C:/Users/bernard/AppData/Local/Temp/moz-screenshot-4.jpg" alt="" /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xKxDIF4xHUc/SZPzLnAWt3I/AAAAAAAAAHo/MmcA1BHGlPw/s1600-h/NewUserForSchema2008.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 287px;" src="http://2.bp.blogspot.com/_xKxDIF4xHUc/SZPzLnAWt3I/AAAAAAAAAHo/MmcA1BHGlPw/s320/NewUserForSchema2008.jpg" alt="" id="BLOGGER_PHOTO_ID_5301848567119787890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;... only to find that your queries don't run as expected and when you go back into the settings GUI, the default Schema has gone back to 'dbo'. Grrrr ...&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-8541872920734748457?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/8541872920734748457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/02/creating-new-user-in-sql-server-2k5-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8541872920734748457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8541872920734748457'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/02/creating-new-user-in-sql-server-2k5-and.html' title='Creating  New User in SQL Server 2K5 and 2K8'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_xKxDIF4xHUc/SZPzLnAWt3I/AAAAAAAAAHo/MmcA1BHGlPw/s72-c/NewUserForSchema2008.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-8847272319048803850</id><published>2009-01-21T21:18:00.001-08:00</published><updated>2009-01-21T21:21:18.172-08:00</updated><title type='text'>Building SOAP Web-Service Clients in .NET 2.0 - Notes To Self ...</title><content type='html'>&lt;span style="font-size:85%;"&gt;This post is a few notes to help me next time I come across issues building a web-service client ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Some often used code snippets:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For completeness, init the client proxy:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new,monospace;"&gt;&lt;span style="font-weight: bold;"&gt;If you are using WSE:&lt;/span&gt; ServiceWse svc = new ServiceWse();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;span style="font-weight: bold;"&gt;Else:&lt;/span&gt; &lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new,monospace;" &gt;Service svc = new Service();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Set the web-proxy to null, so as to bypass a firewall:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new,monospace;"&gt;svc.Proxy = new System.Net.WebProxy();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Set the version of SOAP - by default .NET uses 1.1 - incase you need another version, you can do this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new,monospace;"&gt;svc.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Code to use if your client needs to use UsernameToken authentication (WSE 3.0):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new,monospace;"&gt;Microsoft.Web.Services3.Security.Tokens.UsernameToken usrToken = &lt;/span&gt; &lt;span style="font-family:courier new,monospace;"&gt;new Microsoft.Web.Services3.Security.Tokens.UsernameToken("UID", "PW", Microsoft.Web.Services3.Security.Tokens.PasswordOption.SendHashed);&lt;/span&gt;   &lt;span style="font-family:courier new,monospace;"&gt;svc.RequestSoapContext.Security.Tokens.Add(usrToken);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Code to use if you need to bypass an invalid certificate:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new,monospace;"&gt;System.Net.ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(myCertificateValidation);&lt;/span&gt;   &lt;span style="font-family:courier new,monospace;"&gt;...&lt;/span&gt; &lt;span style="font-family:courier new,monospace;"&gt;public bool myCertificateValidation(Object sender,&lt;/span&gt;   &lt;span style="font-family:courier new,monospace;"&gt;          X509Certificate cert,&lt;/span&gt; &lt;span style="font-family:courier new,monospace;"&gt;          X509Chain chain,&lt;/span&gt;   &lt;span style="font-family:courier new,monospace;"&gt;          SslPolicyErrors Errors)&lt;/span&gt; &lt;span style="font-family:courier new,monospace;"&gt;{&lt;/span&gt;   &lt;span style="font-family:courier new,monospace;"&gt;          return true; //You should check the cert yourself here&lt;/span&gt; &lt;span style="font-family:courier new,monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This all relates back to a couple of previous posts that I have made on this matter:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bernard-on-technology.blogspot.com/2007/12/how-to-change-version-of-http-that-your.html" target="_blank"&gt;http://bernard-on-technology.blogspot.com/2007/12/how-to-change-version-of-http-that-your.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bernard-on-technology.blogspot.com/2008/02/add-or-remove-web-service-protocols-at.html" target="_blank"&gt;http://bernard-on-technology.blogspot.com/2008/02/add-or-remove-web-service-protocols-at.html&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;Error messages when instantiating the generated client proxy, such as:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id=":1vl" class="ArwC7c ckChnd"&gt;&lt;b&gt;WCF Service Reference:&lt;/b&gt; "The XML element 'BlahResponse' from namespace '&lt;a href="http://namespace/" target="_blank"&gt;http://namespace&lt;/a&gt;' references a method and a type. Change the method's message name using WebMethodAttribute or change the type's root element using the XmlRootAttribute."&lt;br /&gt;&lt;br /&gt;&lt;b&gt;.NET 2.0 Web Reference:&lt;/b&gt; "Method webServiceClient.Blah can not be reflected."&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Can be from any number of issues. However, first port of call should be to pick a function that you are confident works on the web-service (use soapUI to establish this), then comment out the code in Reference.cs (or Reference.vb) for all other web-methods. Retry instantiating the client proxy with only the web-method that works implemented. It could be that you have some web-methods in there that are not properly implemented at the web-server and are causing a bit of chaos in the generated client code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Error messages in response to a request to the web-service:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;In your SOAP envelope response (received from a Java web-service):&lt;/b&gt; "Error reading XMLStreamReader."&lt;br /&gt;&lt;br /&gt;In this case, check the protocol versions for HTTP and SOAP that your client is using. You will definitely get this message if your SOAP version is not the same as that of the service, and I think the message is similar if the HTTP version is different(?).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Diagnosis tools to use:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Fiddler:&lt;/b&gt; for diagnosis of HTTP traffic - picks up incoming and outgoing XML - &lt;a href="http://www.fiddlertool.com/fiddler/"&gt;http://www.fiddlertool.com/fiddler/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;soapUI:&lt;/b&gt; highly configurable test client for web-services - &lt;a href="http://www.soapui.org/"&gt;http://www.soapui.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SoapExtension class:&lt;/b&gt; allows you to capture incoming and outgoing SOAP traffic - &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soapextension.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soapextension.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-8847272319048803850?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/8847272319048803850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/01/building-web-service-clients-in-net-20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8847272319048803850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8847272319048803850'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/01/building-web-service-clients-in-net-20.html' title='Building SOAP Web-Service Clients in .NET 2.0 - Notes To Self ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-242782825111131030</id><published>2009-01-21T12:08:00.001-08:00</published><updated>2009-01-21T12:08:04.463-08:00</updated><title type='text'>Auckland SQL Server User Group</title><content type='html'>Did a talk at last night&amp;#39;s meeting of the Auckland SQL Server User Group.&lt;br&gt;&lt;br&gt;My slides can be found here: &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CUsers%5Cbernardo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CUsers%5Cbernardo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cbernardo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;style&gt; &amp;lt;!--  /* Font Definitions */  @font-face 	{font-family:&amp;quot;Cambria Math&amp;quot;; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-alt:&amp;quot;Calisto MT&amp;quot;; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-alt:&amp;quot;Arial Rounded MT Bold&amp;quot;; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:&amp;quot;&amp;quot;; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:&amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;;} a:link, span.MsoHyperlink 	{mso-style-noshow:yes; 	mso-style-priority:99; 	color:blue; 	text-decoration:underline; 	text-underline:single;} a:visited, span.MsoHyperlinkFollowed 	{mso-style-noshow:yes; 	mso-style-priority:99; 	color:purple; 	mso-themecolor:followedhyperlink; 	text-decoration:underline; 	text-underline:single;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt;} @page Section1 	{size:612.0pt 792.0pt; 	margin:72.0pt 72.0pt 72.0pt 72.0pt; 	mso-header-margin:36.0pt; 	mso-footer-margin:36.0pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&amp;gt; &lt;/style&gt;&lt;span style="" lang="EN-US"&gt;&lt;a href="http://www.aucklandsql.com/Library/Presentations.aspx"&gt;http://www.aucklandsql.com/Library/Presentations.aspx&lt;/a&gt;&lt;br&gt;&lt;br&gt;My talk was on the new SQL Server 2008 Spatial Data Types.&lt;br&gt; &lt;br&gt;When I figure out how to blog things like .ppt files, I&amp;#39;ll put it up here too!&lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-242782825111131030?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/242782825111131030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/01/auckland-sql-server-user-group.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/242782825111131030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/242782825111131030'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2009/01/auckland-sql-server-user-group.html' title='Auckland SQL Server User Group'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-3476762495017806530</id><published>2008-12-14T01:13:00.000-08:00</published><updated>2008-12-14T01:17:03.118-08:00</updated><title type='text'>MCTS - SQL Server 2008 - Database Developer</title><content type='html'>Was pleasantly surprised on Friday to discover that I passed the beta exam that I sat a couple of months ago! Just need to get the MCP site logo-builder to work now, so I can update and show-off my MCTS logo ...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xKxDIF4xHUc/SUTOspQI79I/AAAAAAAAAGA/nrUk7hpxnFU/s1600-h/MCTS.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 138px;" src="http://1.bp.blogspot.com/_xKxDIF4xHUc/SUTOspQI79I/AAAAAAAAAGA/nrUk7hpxnFU/s320/MCTS.JPG" alt="" id="BLOGGER_PHOTO_ID_5279571929568178130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;... couldn't resist posting this screen-shot tho ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-3476762495017806530?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/3476762495017806530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/12/mcts-sql-server-2008-database-developer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/3476762495017806530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/3476762495017806530'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/12/mcts-sql-server-2008-database-developer.html' title='MCTS - SQL Server 2008 - Database Developer'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xKxDIF4xHUc/SUTOspQI79I/AAAAAAAAAGA/nrUk7hpxnFU/s72-c/MCTS.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-6980129791909704837</id><published>2008-12-13T10:38:00.000-08:00</published><updated>2008-12-13T10:43:09.892-08:00</updated><title type='text'>How to enable table-designer updates in SSMS 2008 ...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xKxDIF4xHUc/SUQB1WO9ApI/AAAAAAAAAF4/5nYZgM1ccCs/s1600-h/SSMS2K8.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 207px;" src="http://1.bp.blogspot.com/_xKxDIF4xHUc/SUQB1WO9ApI/AAAAAAAAAF4/5nYZgM1ccCs/s320/SSMS2K8.JPG" alt="" id="BLOGGER_PHOTO_ID_5279346679198057106" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-6980129791909704837?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/6980129791909704837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/12/how-to-enable-table-designer-updated-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/6980129791909704837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/6980129791909704837'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/12/how-to-enable-table-designer-updated-in.html' title='How to enable table-designer updates in SSMS 2008 ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xKxDIF4xHUc/SUQB1WO9ApI/AAAAAAAAAF4/5nYZgM1ccCs/s72-c/SSMS2K8.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-6563539682127188943</id><published>2008-12-10T13:33:00.001-08:00</published><updated>2008-12-10T13:33:59.447-08:00</updated><title type='text'>SQL PASS Community Connection Event 2008 ...</title><content type='html'>&lt;font style="color: rgb(0, 0, 0);" size="2"&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: 12pt;" lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font style="color: rgb(0, 0, 0);" size="2"&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;This event was held in Porirua (NZ) on the weekend of 7th and 8th of December &amp;#39;08. Posting this snippet from an email I sent the the NZ SQL Server Mailing List, as a future reminder to myself about how useful the event was ;-)&lt;br&gt; &lt;br&gt;...&lt;br&gt;&lt;br&gt;My personal favourites were Adam and Greg&amp;#39;s &amp;#39;Iron DBA&amp;#39; (which was a nice wakeup for the first morning), Pete Smith&amp;#39;s spatial data talk (I&amp;#39;m biased on this one), and James&amp;#39; talk about certification (quite motivating!).&lt;/span&gt;&lt;br style="font-family: arial,helvetica,sans-serif;"&gt;&lt;br style="font-family: arial,helvetica,sans-serif;"&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;I was also quite interested in Adam&amp;#39;s reporting services talk, but I realised there was a server failure at work about that time so spent most of the time doing emergency recovery type stuff :-/ Fortunately my colleagues took lots of notes (I hope!). To top it off, Chris&amp;#39; SQL Data Services talk was a bit of a riot and certainly captured the interest of the whole group I think.&lt;/span&gt;&lt;br style="font-family: arial,helvetica,sans-serif;"&gt;&lt;br style="font-family: arial,helvetica,sans-serif;"&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;All in all well worth the trip from Auckland. The only thing I will complain about is the weather - why did NZ have to turn on the finest two days of the year on &lt;/span&gt;&lt;i style="font-family: arial,helvetica,sans-serif;"&gt;that &lt;/i&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;weekend??&lt;br&gt;&lt;br&gt;...&lt;br&gt;&lt;/span&gt;&lt;/font&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-6563539682127188943?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/6563539682127188943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/12/sql-pass-community-connection-event.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/6563539682127188943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/6563539682127188943'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/12/sql-pass-community-connection-event.html' title='SQL PASS Community Connection Event 2008 ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-3222861437414255292</id><published>2008-11-16T14:22:00.001-08:00</published><updated>2008-11-16T14:22:48.997-08:00</updated><title type='text'>RYO AJAX script ...</title><content type='html'>Because I haven&amp;#39;t posted anything for a litle while - I thought I&amp;#39;d dig out some old code and blog it in the name of consistency ... &lt;br&gt;&lt;br&gt;So here&amp;#39;s how to roll your own AJAX - to - .NET XML web-service call:&lt;br&gt; &lt;br&gt;----------------------------------------------------------------------------&lt;br&gt;-- YOUR SAMPLE JAVASCRIPT FUNCTIONS --&lt;br&gt;----------------------------------------------------------------------------&lt;br&gt;// Get the XMLHttpRequest object &lt;br&gt; function getXmlHttpRequest()&lt;br&gt;{&lt;br&gt;if (window.XMLHttpRequest)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlHttpRequest = new XMLHttpRequest();&lt;br&gt;}&lt;br&gt;else if (typeof ActiveXObject != &amp;quot;undefined&amp;quot;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlHttpRequest = new ActiveXObject(&amp;quot; Microsoft.XMLHTTP&amp;quot;);&lt;br&gt; }&lt;br&gt;return xmlHttpRequest;&lt;br&gt;}&lt;br&gt;&lt;br&gt;// Send the text to server&lt;br&gt;function sendSelectedText()&lt;br&gt;{&lt;br&gt;var xmlHttpRequest = getXmlHttpRequest();&lt;br&gt;if (xmlHttpRequest != null)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;// send data to server&lt;br&gt; &amp;nbsp;var url = &amp;quot;http://&amp;quot; + location.hostname + &amp;quot;/AJAXSample/WebService.asmx/GetData?strParam=&amp;quot; + document.getElementById(txtBlah).value;&lt;br&gt;&amp;nbsp;xmlHttpRequest.open(&amp;quot;GET&amp;quot;, url, false);&lt;br&gt;&amp;nbsp;xmlHttpRequest.setRequestHeader(&amp;quot;Content-Type&amp;quot;, &amp;quot;application/x-www-form-urlencoded&amp;quot;); &lt;br&gt; &amp;nbsp;xmlHttpRequest.send(null);&lt;br&gt;&lt;br&gt;&amp;nbsp;// show returned result&lt;br&gt;&amp;nbsp;alert(xmlHttpRequest.responseXML.getElementsByTagName(&amp;quot;string&amp;quot;)[0].firstChild.data);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch(e)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;alert(e.message);&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt; }&lt;br&gt;}&lt;br&gt;&lt;br&gt;...&lt;br&gt;&lt;br&gt;&amp;lt;input type=&amp;quot;button&amp;quot; id=&amp;quot;btnBlah&amp;quot; onclick=&amp;quot;sendSelectedText()&amp;quot;&amp;gt;&amp;lt;/input&amp;gt;&lt;br&gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;txtBlah&amp;quot;&amp;gt;&amp;lt;/input&amp;gt;&lt;br&gt;&lt;br&gt; ------------------------------------------------------------------------------&lt;br&gt;-- YOUR SAMPLE WEB SERVICE WEBMETHOD --&lt;br&gt;------------------------------------------------------------------------------ &lt;br&gt;[WebMethod]&lt;br&gt; public string GetData(string strParam)&lt;br&gt;{&lt;br&gt;// your data access code&lt;br&gt;return &amp;quot;blah blah your data here&amp;quot;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;------------------------------------------------------------------&lt;br&gt;-- YOUR SAMPLE WEB.CONFIG FILE --&lt;br&gt; ------------------------------------------------------------------&lt;br&gt;&amp;lt;system.web&amp;gt;&lt;br&gt;...&lt;br&gt;&amp;lt;webServices&amp;gt; &lt;br&gt;&amp;lt;protocols&amp;gt;&lt;br&gt;&amp;lt;add name=&amp;quot;HttpGet&amp;quot;/&amp;gt;&lt;br&gt;&amp;lt;add name=&amp;quot;HttpPost&amp;quot;/&amp;gt;&lt;br&gt; &amp;lt;/protocols&amp;gt;&lt;br&gt;&amp;lt;/webServices&amp;gt;&lt;br&gt;&amp;lt;/system.web&amp;gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------&lt;br&gt;&lt;br&gt;... use it if you dare!!&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-3222861437414255292?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/3222861437414255292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/11/ryo-ajax-script.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/3222861437414255292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/3222861437414255292'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/11/ryo-ajax-script.html' title='RYO AJAX script ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-1974147161604109034</id><published>2008-10-11T15:05:00.001-07:00</published><updated>2008-10-11T15:05:59.082-07:00</updated><title type='text'>Beta Exam 71-433: TS: Microsoft SQL Server 2008, Database Development</title><content type='html'>&lt;div dir="ltr"&gt;Did this exam on Friday afternoon (10/10/08).&lt;br&gt;&lt;br&gt;I wrote down the significant tested &amp;#39;areas&amp;#39; and counted the number of times they came up. The exam format was 75 X multi choice questions, no practical component. It went a bit like this:&lt;br&gt; &lt;ul&gt;&lt;li&gt;XML ~12 questions&lt;/li&gt;&lt;li&gt;CLR ~2 questions&lt;/li&gt;&lt;li&gt;Service Broker ~3 questions&lt;/li&gt;&lt;li&gt;Recursion ~3 questions&lt;/li&gt;&lt;li&gt;Triggers (DML/DDL) ~5 questions&lt;/li&gt;&lt;li&gt;Full Text Index ~3 questions&lt;/li&gt;&lt;li&gt;Database Mail ~2 questions&lt;/li&gt; &lt;li&gt;Monitoring and Troubleshooting (DMV, process monitoring, etc) ~7 questions&lt;/li&gt;&lt;li&gt;Spatial Datatypes (Geography/Geometry) 1 question&lt;/li&gt;&lt;li&gt;Windows Powershell 1 question (cmdlet)&lt;br&gt;&lt;/li&gt;&lt;li&gt;Database/Server Collation ~2 questions&lt;/li&gt; &lt;li&gt;Change Tracking ~7 questions&lt;br&gt;&lt;/li&gt;&lt;li&gt;etc ...&lt;/li&gt;&lt;/ul&gt;Actually I think that this preparation guide provides quite an accurate summary of what to expect: &lt;a href="http://www.microsoft.com/learning/en/us/exams/70-433.mspx"&gt;http://www.microsoft.com/learning/en/us/exams/70-433.mspx&lt;/a&gt; &lt;br&gt; &lt;br&gt;Areas of emphasis seemed to be general query implementation, XML based data management, triggers and change tracking. Some questions were clearly not directly targeting knowledge of these emphasised features, but contained a component of the feature that you needed to understand to be able to answer the &amp;#39;primary&amp;#39; question.&lt;br&gt; &lt;br&gt;The rest was general query implementation (e.g. &amp;quot;You have an X and a Y table, which of the following queries will produce result Z?&amp;quot;), questions on how to create and call stored procedures, when/where to create a view, etc.&lt;br&gt; &lt;br&gt;Overall it was a great test - much more enjoyable than 70-431 for me, since it definitely geared specifically towards database development, with minimal emphasis on maintenance.&lt;br&gt;&lt;br&gt;Finally, was interesting to note that after all the hype around SQL Spatial Datatypes, there was only a single question out of the 75 on this - albeit a fairly curly one ;-)&lt;br&gt; &lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-1974147161604109034?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/1974147161604109034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/10/beta-exam-71-433-ts-microsoft-sql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1974147161604109034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1974147161604109034'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/10/beta-exam-71-433-ts-microsoft-sql.html' title='Beta Exam 71-433: TS: Microsoft SQL Server 2008, Database Development'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-4138630230397419329</id><published>2008-09-11T16:09:00.001-07:00</published><updated>2008-09-11T16:09:16.991-07:00</updated><title type='text'>How to turn [master].dbo.[xp_cmdshell] on - SQL Server 2005/2008 ...</title><content type='html'>&lt;div dir="ltr"&gt;EXECUTE sp_configure &amp;#39;show advanced options&amp;#39;, 1&lt;br&gt;RECONFIGURE WITH OVERRIDE&lt;br&gt;GO&lt;br&gt;EXECUTE sp_configure &amp;#39;xp_cmdshell&amp;#39;, &amp;#39;1&amp;#39;&lt;br&gt;RECONFIGURE WITH OVERRIDE&lt;br&gt;GO&lt;br&gt;EXECUTE sp_configure &amp;#39;show advanced options&amp;#39;, 0&lt;br&gt; RECONFIGURE WITH OVERRIDE&lt;br&gt;GO&lt;br&gt;&lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-4138630230397419329?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/4138630230397419329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/09/how-to-turn-masterdboxpcmdshell-on-sql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/4138630230397419329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/4138630230397419329'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/09/how-to-turn-masterdboxpcmdshell-on-sql.html' title='How to turn [master].dbo.[xp_cmdshell] on - SQL Server 2005/2008 ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-6340355819497421114</id><published>2008-09-10T18:30:00.001-07:00</published><updated>2008-09-10T18:30:51.414-07:00</updated><title type='text'>One I learnt the hard way ...</title><content type='html'>&lt;div dir="ltr"&gt;Don&amp;#39;t use a 32-bit int to represent a phone number.&lt;br&gt;&lt;br&gt;When I first started writing code for telecommunications applications, I used int all over the place in my TSQL. I soon clicked that this was not such a good idea (prior to any chaos being caused), and went around swapping out my ints for varchars. Unfortunately I didn&amp;#39;t get them all ...&lt;br&gt; &lt;br&gt;In NZ, the longest mobile phone numbers we have had for quite some time have been 10 digits, starting with 02 - so like 0275555555 would have been a long-ish one. As I have noted due to recent &amp;#39;issues&amp;#39; arising with one of my real-time systems, we have recently moved (in NZ) to include 11 digit mobile numbers. Which pushes my dodgy code into exception (largest signed 32-bit int being 2147483647).&lt;br&gt; &lt;br&gt;Great, so that kept me very busy for a couple of hours yesterday, extracting the remaining phone number ints out of my TSQL. Sometimes we learn lessons the hard way I guess ;-)&lt;br&gt;&lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-6340355819497421114?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/6340355819497421114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/09/one-i-learnt-hard-way.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/6340355819497421114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/6340355819497421114'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/09/one-i-learnt-hard-way.html' title='One I learnt the hard way ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-1834932693919036275</id><published>2008-09-04T19:31:00.001-07:00</published><updated>2008-09-04T19:31:10.435-07:00</updated><title type='text'>Microsoft SQL Server 2008, Database Development</title><content type='html'>&lt;div dir="ltr"&gt;&lt;div&gt;There is now an MCTS exam directed specifically toward database developers (like me!):&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;a href="http://www.microsoft.com/learning/en/us/exams/70-433.mspx"&gt;http://www.microsoft.com/learning/en/us/exams/70-433.mspx&lt;/a&gt;&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;Looking forward to giving this one a go ...&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-1834932693919036275?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/1834932693919036275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/09/microsoft-sql-server-2008-database.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1834932693919036275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1834932693919036275'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/09/microsoft-sql-server-2008-database.html' title='Microsoft SQL Server 2008, Database Development'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-191615656052416917</id><published>2008-09-02T13:33:00.001-07:00</published><updated>2008-09-02T13:33:19.938-07:00</updated><title type='text'>WPF: use IValueConverter to implement dynamic binding to an XML data source ...</title><content type='html'>&lt;div dir="ltr"&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CUsers%5Cbernardo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CUsers%5Cbernardo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cbernardo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;style&gt; &amp;lt;!--  /* Font Definitions */  @font-face 	{font-family:&amp;quot;Cambria Math&amp;quot;; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:&amp;quot;&amp;quot;; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:10.0pt; 	margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:&amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;} p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing 	{mso-style-priority:1; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:&amp;quot;&amp;quot;; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:&amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:595.3pt 841.9pt; 	margin:72.0pt 72.0pt 72.0pt 72.0pt; 	mso-header-margin:35.4pt; 	mso-footer-margin:35.4pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&amp;gt; &lt;/style&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;Here are some swift details on how to use IValueConverter to implement dynamic binding to an XML data source.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;Add the XML source to your XAML page/window as a resource. Also add your URL converter that gives you customises your input. You could use XLINQ here to get some nice thingie going. I'm using it for manipulation of a static application map:&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&amp;lt;Page.Resources&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-indent: 36pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&amp;lt;XmlDataProvider x:Key=&amp;quot;ApplicationMap&amp;quot; Source=&amp;quot;ApplicationMap.xml&amp;quot;/&amp;gt; &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-indent: 36pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&amp;lt;src:PageURLConverter x:Key=&amp;quot;pageURLConverter&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&amp;lt;/Page.Resources&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size: 10pt;"&gt;Make yourself a Frame and use the XML source and the converter to build the URL that the Frame will hold:&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&amp;lt;Frame &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-indent: 36pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;Name=&amp;quot;frameContent&amp;quot; &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-indent: 36pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;Source=&amp;quot;{Binding XPath=@PageLink, Converter={StaticResource pageURLConverter}}&amp;quot;&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-indent: 36pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;NavigationUIVisibility=&amp;quot;Hidden&amp;quot;&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-indent: 36pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;Focusable=&amp;quot;False&amp;quot;&amp;gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;   &lt;p class="MsoNoSpacing"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&amp;lt;/Frame&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size: 10pt;"&gt;The converter looks like this:&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;public class PageURLConverter : IValueConverter&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;{&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public object Convert(object value, Type targetType, object parameter, CultureInfo culture)&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;string url = (string)value;&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if (url.StartsWith(&amp;quot;http://&amp;quot;)) return YourURLManipulateMethod(url)&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;else return url;&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return value;&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;i style=""&gt;&lt;span style="font-size: 10pt;"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size: 10pt;"&gt;I used this method in a CRM-type application to whack an Account Code on the end of a URL query string. Allowed me to load a pre-existing &lt;a href="http://ASP.NET"&gt;ASP.NET&lt;/a&gt; component of the CRM into a Frame in the WPF app for the same account the user was working with.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-191615656052416917?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/191615656052416917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/09/wpf-use-ivalueconverter-to-implement.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/191615656052416917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/191615656052416917'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/09/wpf-use-ivalueconverter-to-implement.html' title='WPF: use IValueConverter to implement dynamic binding to an XML data source ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-3914383595287791449</id><published>2008-09-01T22:26:00.001-07:00</published><updated>2008-09-01T22:32:45.458-07:00</updated><title type='text'>SQL Server 2008 and Spatial Data ...</title><content type='html'>&lt;div dir="ltr"&gt;DId a bit of a talk at the most recent &lt;a href="http://dot.net.nz/Default.aspx?tabid=116"&gt;Code Camp&lt;/a&gt; event in Auckland City. My talk centred around spatial data, and how it is used in the telecommunications industry.&lt;br /&gt;&lt;br /&gt;I've been doing a bit of research in relation to this matter recently and found that Microsoft have finally published a nice big section of MSDN stuff dedicated to how to use the spatial data components of SQL 2008. Looking forward to getting stuck into that!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933876.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb933876.aspx&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-3914383595287791449?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/3914383595287791449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/09/sql-server-2008-and-spatial-data.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/3914383595287791449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/3914383595287791449'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/09/sql-server-2008-and-spatial-data.html' title='SQL Server 2008 and Spatial Data ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-3672751388081164257</id><published>2008-07-28T21:35:00.001-07:00</published><updated>2008-07-28T21:35:16.374-07:00</updated><title type='text'>Efficient way to find specific WPF elements further up the Visual Tree ...</title><content type='html'>&lt;div dir="ltr"&gt;Implement a search method like this:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: times new roman,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static T FindFirstVisualTreeParentByType&amp;lt;T&amp;gt;(DependencyObject initial) where T : DependencyObject&lt;/span&gt;&lt;br style="font-family: times new roman,serif;"&gt; &lt;span style="font-family: times new roman,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br style="font-family: times new roman,serif;"&gt;&lt;span style="font-family: times new roman,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DependencyObject current = initial;&lt;/span&gt;&lt;br style="font-family: times new roman,serif;"&gt; &lt;span style="font-family: times new roman,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (current != null)&lt;/span&gt;&lt;br style="font-family: times new roman,serif;"&gt;&lt;span style="font-family: times new roman,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br style="font-family: times new roman,serif;"&gt; &lt;span style="font-family: times new roman,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (current is Visual || current is Visual3D) { current = VisualTreeHelper.GetParent(current); }&lt;/span&gt;&lt;br style="font-family: times new roman,serif;"&gt;&lt;span style="font-family: times new roman,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else { current = LogicalTreeHelper.GetParent(current); }&lt;/span&gt;&lt;br style="font-family: times new roman,serif;"&gt; &lt;span style="font-family: times new roman,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (current is T) return (T)current;&lt;/span&gt;&lt;br style="font-family: times new roman,serif;"&gt;&lt;span style="font-family: times new roman,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family: times new roman,serif;"&gt; &lt;span style="font-family: times new roman,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;/span&gt;&lt;br style="font-family: times new roman,serif;"&gt;&lt;span style="font-family: times new roman,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;br&gt;And use it like this:&lt;br&gt; &lt;br&gt;&lt;span style="font-family: times new roman,serif;"&gt;Global.FindFirstVisualTreeParentByType&amp;lt;YourType&amp;gt;(this).YourTypesProperty = value;&lt;/span&gt;&lt;br&gt;&lt;br&gt;;-)&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-3672751388081164257?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/3672751388081164257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/07/efficient-way-to-find-specific-wpf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/3672751388081164257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/3672751388081164257'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/07/efficient-way-to-find-specific-wpf.html' title='Efficient way to find specific WPF elements further up the Visual Tree ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-7320563547232379111</id><published>2008-06-16T23:52:00.001-07:00</published><updated>2008-06-28T18:22:11.656-07:00</updated><title type='text'>Resharper</title><content type='html'>Forgot how cool resharper is - brilliant tool for VS!! Does slow the system down a bit however, but not to a level that is intollerable ;-)&lt;br /&gt;&lt;br /&gt;Reason number 1: Although I will need to suppliment what I have learnt with further reading on the subject, Resharper has helped me come up to speed with C# 3.0 much more quickly than I would have been able to by reading any book.&lt;br /&gt;&lt;br /&gt;Will think of more reasons and post them later ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-7320563547232379111?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/7320563547232379111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/06/resharper.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/7320563547232379111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/7320563547232379111'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/06/resharper.html' title='Resharper'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-8560089293301904392</id><published>2008-06-16T18:48:00.001-07:00</published><updated>2008-06-16T18:48:18.206-07:00</updated><title type='text'>SQL Server 2005 - Generic Cursor Code</title><content type='html'>&lt;div&gt;I always forget how to put a cursor together, so I&amp;#39;m blogging it!&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt;DECLARE&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt; GenericCursor &lt;span style="COLOR: blue"&gt;INSENSITIVE&lt;/span&gt; &lt;span style="COLOR: blue"&gt;CURSOR&lt;/span&gt; &lt;span style="COLOR: blue"&gt;FOR&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;fields&lt;/b&gt;&lt;span style="COLOR: gray"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; &lt;span style="COLOR: gray"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;table&lt;/b&gt;&lt;span style="COLOR: gray"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt; &lt;span style="COLOR: gray"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;criteria&lt;/b&gt;&lt;span style="COLOR: gray"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt;OPEN&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt; GenericCursor&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt;DECLARE&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt; &lt;span style="COLOR: gray"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;variables&lt;/b&gt;&lt;span style="COLOR: gray"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt;FETCH&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt; &lt;span style="COLOR: blue"&gt;NEXT&lt;/span&gt; &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; GenericCursor &lt;span style="COLOR: blue"&gt;INTO&lt;/span&gt; &lt;span style="COLOR: gray"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;variables&lt;/b&gt;&lt;span style="COLOR: gray"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt;WHILE&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt; &lt;span style="COLOR: fuchsia"&gt;@@FETCH_STATUS&lt;/span&gt; &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; 0&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt;BEGIN&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;exec CRUD statement&lt;/b&gt;&lt;span style="COLOR: gray"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;FETCH&lt;/span&gt; &lt;span style="COLOR: blue"&gt;NEXT&lt;/span&gt; &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; GenericCursor &lt;span style="COLOR: blue"&gt;INTO&lt;/span&gt; &lt;span style="COLOR: gray"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;variables&lt;/b&gt;&lt;span style="COLOR: gray"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt;END&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt;CLOSE&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt; GenericCursor&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt;DEALLOCATE&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: &amp;#39;Courier New&amp;#39;; mso-no-proof: yes"&gt; GenericCursor&lt;/span&gt;&lt;/p&gt; &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;There are a few basic rules surrounding the field selection exactly matching the list of variables that you use. These things tend to work themselves out if error messages are correctly interpreted anyway, so I won&amp;#39;t give a practical example&amp;nbsp;;-)&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;All fairly self-explanatory - and I suppose this code does not change betwen versions of SQL - but I have not tested that ...&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-8560089293301904392?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/8560089293301904392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/06/sql-server-2005-generic-cursor-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8560089293301904392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8560089293301904392'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/06/sql-server-2005-generic-cursor-code.html' title='SQL Server 2005 - Generic Cursor Code'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-8357614055439629437</id><published>2008-06-09T13:55:00.001-07:00</published><updated>2008-06-09T13:55:27.887-07:00</updated><title type='text'>LINQ to XML</title><content type='html'>&lt;div&gt;Not too many postings of late, as have had twins born a few weeks ago which has (and will)&amp;nbsp;kept me very busy!!&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;Anyway, getting back into the swing of things somewhat this week and have taken an interest personally and professionally in LINQ to XML. Found this post on the subject that uses this&amp;nbsp;paradigm in a very&amp;nbsp;innovative way:&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;a href="http://blogs.msdn.com/bethmassi/archive/2008/04/25/querying-html-with-linq-to-xml.aspx"&gt;http://blogs.msdn.com/bethmassi/archive/2008/04/25/querying-html-with-linq-to-xml.aspx&lt;/a&gt;&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;I like that idea ;-)&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;Anyway, have recently been doing some work with WPF - so hopefully more posts to come on that subject ...&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-8357614055439629437?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/8357614055439629437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/06/linq-to-xml.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8357614055439629437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8357614055439629437'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/06/linq-to-xml.html' title='LINQ to XML'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-5993555892546194553</id><published>2008-04-07T19:29:00.001-07:00</published><updated>2008-04-07T19:29:20.235-07:00</updated><title type='text'>Useful tip for testing with NUnit - for when you are testing a class library that (obviously) has no config file ...</title><content type='html'>When you are testing a class library, that depends on the executable&amp;#39;s config file, you can find yourself in bit of a fix. NUnit does allow you to use a config file, but it needs to be in the same directory as the build of the test project (which is also a DLL) and named &amp;lt;test_lib_name&amp;gt;.dll.config.&lt;br&gt; &lt;br&gt;This is the easy way to get yourself setup to test against a DLL - you go into the project properties, and you put the following command into the &amp;quot;Pre-Build Event Command Line&amp;quot; box:&lt;br&gt;&lt;i&gt;&lt;br&gt;copy /Y &amp;quot;$(ProjectDir)App.config&amp;quot; &amp;quot;$(TargetDir)$(TargetFileName).config&amp;quot;&lt;/i&gt;&lt;br&gt; &lt;br&gt;You then copy your App.Config file from your EXE project and away you go - the command provided (above) takes care of naming the config file and copying it to the right directory evey time you build the project!&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-5993555892546194553?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/5993555892546194553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/04/useful-tip-for-testing-with-nunit-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5993555892546194553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/5993555892546194553'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/04/useful-tip-for-testing-with-nunit-for.html' title='Useful tip for testing with NUnit - for when you are testing a class library that (obviously) has no config file ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-2137207941887373729</id><published>2008-03-31T21:56:00.001-07:00</published><updated>2008-03-31T21:56:21.936-07:00</updated><title type='text'>SQL Server 2008 Client Tools ...</title><content type='html'>&lt;div&gt;Is not ready - i.e. is buggy ... and even worse - it bunged my installation of the 2005 client tools :-/&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;Recommend you give it a miss at least&amp;nbsp;until it&amp;#39;s out of CTP - unless you&amp;#39;re running it on a VM that you can scrap.&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-2137207941887373729?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/2137207941887373729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/03/sql-server-2008-client-tools.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/2137207941887373729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/2137207941887373729'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/03/sql-server-2008-client-tools.html' title='SQL Server 2008 Client Tools ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-8082929920158888004</id><published>2008-03-25T13:40:00.001-07:00</published><updated>2008-03-25T13:40:38.396-07:00</updated><title type='text'>Test Driven Development (TDD) ... a few thoughts ...</title><content type='html'>&lt;div&gt;I&amp;nbsp;completed a project a few months ago using TDD (got motivated to give it a go following the &lt;a href="http://www.dot.net.nz/Default.aspx?tabid=102"&gt;architecture camp&lt;/a&gt;). The system is in production, and&amp;nbsp;is by all accounts performing well.&amp;nbsp;So yes, pleased with the results. It is difficult however for me to know whether I would have been able to acheive the same results if I had not done TDD - if I were to guess ...&amp;nbsp;I think the result would have been solid either way. The system is non UI, back-end process, so all of the complexities associated with accommodating a UI system (WinForms or &lt;a href="http://ASP.NET"&gt;ASP.NET&lt;/a&gt;, Page/From lifecycle, blah, blah,&amp;nbsp;etc) were removed.&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;The learning curve was certainly frustrating - I think in during steepest part of the learning curve I sent a post to the DNUG entitled &amp;#39;TDD-ious?&amp;#39; as a result of my frustration :-/&amp;nbsp;The DNUG however was certainly a valuable resource during this time, and once it was recommended to me -&amp;nbsp;and&amp;nbsp;I started using Resharper and TestDriven.NET - the penny dropped. Actually, I think that doing TDD without using a tool like Resharper is equivalent to doing .NET development using Notepad (i.e. without VS)&amp;nbsp;- it&amp;#39;s really painful and&amp;nbsp;just not worth it when these tools exist.&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;So, my approach&amp;nbsp;was to implement the &lt;a href="http://en.wikipedia.org/wiki/Dependency_injection"&gt;Dependency Injection&lt;/a&gt; pattern, TestDriven.NET and NUnit for testing, etc,&amp;nbsp;NMock for object mocking (Rhino Mocks is probably more popular), and Resharper for everything in between. All of this makes VS feel a little top heavy, and you want to get ontop of your configuration and settings&amp;nbsp;fairly quickly. I think the significant (i.e. frustrating) part of the learning curve was over by the time the work was about 50% complete (by &amp;quot;about 50% complete&amp;quot;, I mean &amp;quot;of the total number of hours that went into the project, half of them were gone&amp;quot; - i.e. not &amp;quot;about 50% of the code had been written&amp;quot;), from there I had the DI pattern sorted, had come to grips with Resharper, and was able to&amp;nbsp;implement a test then develop the implied code fiarly efficiently. I still felt a bit clunkly with TDD once I had closed the project, but feel competent enough with it&amp;nbsp;to say that I understand how it works. I&amp;nbsp;estimate&amp;nbsp;that across the course of the project, 20-odd percent&amp;nbsp;of my time could be attributable to &amp;#39;learning TDD&amp;#39;. I think that this 20-odd percent would have become less and less if I had continued with TDD.&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;Summary - if/when you get a suitable opportunity to give TDD a go, then I recommend you go for it - you have nothing to lose and everything to gain by trying it. You may even be fortunate enough to see the light (I think&amp;nbsp;I caught a glimpse of it ;-)! I think TDD is a useful approach to know how to use, whether you pursue it long-term or not. Also, the TDD following seems to be growing right now, so if you&amp;#39;re going to be in the software development business for a while,&amp;nbsp;at some stage you&amp;#39;re almost certainly going to encounter a situation that requires an understanding of it.&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;Personally, I&amp;#39;m not using TDD right now - I have no excuses&amp;nbsp;;-)&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-8082929920158888004?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/8082929920158888004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/03/test-driven-development-tdd-few.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8082929920158888004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/8082929920158888004'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/03/test-driven-development-tdd-few.html' title='Test Driven Development (TDD) ... a few thoughts ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-2825943450871766122</id><published>2008-02-17T16:56:00.001-08:00</published><updated>2008-02-17T16:56:53.809-08:00</updated><title type='text'>Add or remove web-service protocols at the server ...</title><content type='html'>Found this useful blog entry just now:&lt;br&gt;&lt;br&gt;&lt;a href="http://blogs.msdn.com/kaevans/archive/2005/11/10/491640.aspx"&gt;http://blogs.msdn.com/kaevans/archive/2005/11/10/491640.aspx&lt;/a&gt;&lt;br&gt;&lt;br&gt;The crux is this:&lt;br&gt;&lt;br&gt;&lt;table border="1"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;th align="left"&gt;Member name&lt;/th&gt; &lt;th align="left"&gt;Description&lt;/th&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;AnyHttpSoap&lt;/b&gt;&lt;/td&gt; &lt;td&gt;Any version of the HTTP SOAP protocol.&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;/td&gt; &lt;td&gt;The Web Services Documentation protocol.&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td&gt;&lt;b&gt;HttpGet&lt;/b&gt;&lt;/td&gt; &lt;td&gt;The HTTP GET protocol.&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td&gt;&lt;b&gt;HttpPost&lt;/b&gt;&lt;/td&gt; &lt;td&gt;The HTTP POST protocol.&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td&gt;&lt;b&gt;HttpPostLocalhost&lt;/b&gt;&lt;/td&gt; &lt;td&gt;The HTTP POST LOCALHOST protocol.&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td&gt;&lt;b&gt;HttpSoap&lt;/b&gt;&lt;/td&gt; &lt;td&gt;The HTTP SOAP protocol.&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td&gt;&lt;b&gt;HttpSoap12&lt;/b&gt;&lt;/td&gt; &lt;td&gt;The HTTP SOAP version 1.2 protocol.&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td&gt;&lt;b&gt;Unknown&lt;/b&gt;&lt;/td&gt; &lt;td&gt;Unknown protocol.&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;You can use these values in the webServices/protocols element to add and remove capability.&amp;nbsp; For instance, if you want to remove SOAP 1.2 support for your service, you would include the following in your web.config:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&lt;br&gt;&amp;lt;configuration&amp;gt;&lt;br&gt;    &amp;lt;system.web&amp;gt;&lt;br&gt;        &amp;lt;webServices &amp;gt;&lt;br&gt;            &amp;lt;protocols&amp;gt;&lt;br&gt;                &amp;lt;remove name=&amp;quot;HttpSoap12&amp;quot;/&amp;gt;&lt;br&gt;            &amp;lt;/protocols&amp;gt;		&lt;br&gt;         &amp;lt;/webServices&amp;gt;&lt;br&gt;    &amp;lt;/system.web&amp;gt;	&lt;br&gt;&amp;lt;/configuration&amp;gt;&lt;br&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Similarly, if you want to remove support for SOAP 1.1 and only support SOAP 1.2, you would use the following config:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&lt;br&gt;&amp;lt;configuration&amp;gt;&lt;br&gt;    &amp;lt;system.web&amp;gt;&lt;br&gt;        &amp;lt;webServices &amp;gt;&lt;br&gt;             &amp;lt;protocols&amp;gt;&lt;br&gt;                &amp;lt;remove name=&amp;quot;HttpSoap&amp;quot;/&amp;gt;&lt;br&gt;            &amp;lt;/protocols&amp;gt;		&lt;br&gt;        &amp;lt;/webServices&amp;gt;&lt;br&gt;    &amp;lt;/system.web&amp;gt;	&lt;br&gt;&amp;lt;/configuration&amp;gt;&lt;br&gt;&lt;/code&gt;&lt;/pre&gt; &lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-2825943450871766122?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/2825943450871766122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/02/add-or-remove-web-service-protocols-at.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/2825943450871766122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/2825943450871766122'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/02/add-or-remove-web-service-protocols-at.html' title='Add or remove web-service protocols at the server ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-767494960506853976</id><published>2008-02-06T16:15:00.001-08:00</published><updated>2008-02-06T16:15:42.788-08:00</updated><title type='text'>Awesome blog entry by Ivan Porto Carrero</title><content type='html'>I have yet to read all of the articles that the 10 links he has listed lead to, but plan to do so when I get the time:&lt;br&gt;&lt;br&gt;&lt;a href="http://www.flanders.co.nz/blog/archive/2008/02/07/on-software-development-the-myth-of-no-maintenance-etc.aspx"&gt;http://www.flanders.co.nz/blog/archive/2008/02/07/on-software-development-the-myth-of-no-maintenance-etc.aspx&lt;/a&gt;&lt;br&gt; &lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-767494960506853976?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/767494960506853976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/02/awesome-blog-entry-by-ivan-porto.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/767494960506853976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/767494960506853976'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/02/awesome-blog-entry-by-ivan-porto.html' title='Awesome blog entry by Ivan Porto Carrero'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-4823718097854450803</id><published>2008-01-08T00:56:00.001-08:00</published><updated>2008-01-08T00:56:52.722-08:00</updated><title type='text'>2008 Summer Road Trip - Auckland</title><content type='html'>This is going to be great - really looking forward to it!&lt;br&gt;&lt;br&gt;&lt;a href="http://aucklandroadtrip08.events.live.com/default.aspx"&gt;http://aucklandroadtrip08.events.live.com/default.aspx&lt;/a&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-4823718097854450803?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/4823718097854450803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/01/2008-summer-road-trip-auckland.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/4823718097854450803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/4823718097854450803'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/01/2008-summer-road-trip-auckland.html' title='2008 Summer Road Trip - Auckland'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-7866018373038571030</id><published>2008-01-08T00:46:00.001-08:00</published><updated>2008-01-08T00:46:36.562-08:00</updated><title type='text'>iTextSharp PDF toolkit/library ...</title><content type='html'>... is an absolutely brilliant set of tools for working with PDF documents (among other things). Wish I had found this toolkit eariler!&lt;br&gt;&lt;br&gt;It&amp;#39;s an open source port of a Java library:&lt;br&gt;&lt;br&gt;&lt;a href="http://sourceforge.net/projects/itextsharp/"&gt; http://sourceforge.net/projects/itextsharp/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Things I have found particularly useful are on-the-fly PDF watermarking and merging.&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-7866018373038571030?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/7866018373038571030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/01/itextsharp-pdf-toolkitlibrary.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/7866018373038571030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/7866018373038571030'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/01/itextsharp-pdf-toolkitlibrary.html' title='iTextSharp PDF toolkit/library ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-2076100749381774649</id><published>2008-01-03T19:51:00.001-08:00</published><updated>2009-09-10T16:28:31.036-07:00</updated><title type='text'>SQL 2005/2008 TRANSACTION in TRY/CATCH BLOCK</title><content type='html'>BEGIN TRY&lt;br /&gt;   BEGIN TRANSACTION &lt;br /&gt;&lt;br /&gt;       ... your code here ...&lt;br /&gt;&lt;br /&gt;   COMMIT TRANSACTION                 &lt;br /&gt;END TRY&lt;br /&gt;BEGIN CATCH&lt;br /&gt;   ROLLBACK TRANSACTION&lt;br /&gt;   DECLARE @ErrorMessage as varchar(max)&lt;br /&gt;   SET @ErrorMessage = 'The error message is:' + (SELECT ERROR_MESSAGE())&lt;br /&gt;   RAISERROR(@ErrorMessage, 16, 1)&lt;br /&gt;END CATCH&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-2076100749381774649?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/2076100749381774649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/01/sql-2005-transaction-in-trycatch-block.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/2076100749381774649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/2076100749381774649'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2008/01/sql-2005-transaction-in-trycatch-block.html' title='SQL 2005/2008 TRANSACTION in TRY/CATCH BLOCK'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-1680423670027781395</id><published>2007-12-23T19:44:00.001-08:00</published><updated>2007-12-23T19:44:32.851-08:00</updated><title type='text'>How to change the version of HTTP that your .NET web-service client proxy class uses ...</title><content type='html'>.NET uses HTTP version 1.1 by default for HTTP traffic. There are a number of &lt;a href="http://www.research.att.com/%7Ebala/papers/h0vh1.html"&gt;differences&lt;/a&gt; between HTTP 1.1 and HTTP 1.0, so if you are talking to a HTTP 1.0  web-service (which you will be if you are talking with a Java web-service), then your generated .NET client proxy class will not be able to successfully communicate. This is frustrating, given the fact that you can read and process the WSDL, and build a client against it, but then not use the web-service. &lt;br&gt;&lt;br&gt;The easy work-around for this problem is to use a .NET 2.0+ Partial Class - as follows:&lt;br&gt;&lt;br&gt; /***********************************************************************************************/&lt;br&gt;&lt;br&gt;using System;&lt;br&gt;using System.Net;&lt;br&gt;&lt;br&gt;public partial class YourProxyClassName&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override  System.Net.WebRequest GetWebRequest(Uri uri)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // set proxy config while we are in here&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WebRequest.DefaultWebProxy = null;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Net.HttpWebRequest req;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; req = ( System.Net.HttpWebRequest)base.GetWebRequest(uri);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; req.ProtocolVersion = System.Net.HttpVersion.Version10;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return req;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;/***********************************************************************************************/ &lt;br&gt;&lt;br&gt;This code effectively overrides the version of HTTP that is used, replacing the default of version 1.1, with version 1.0.&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-1680423670027781395?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/1680423670027781395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2007/12/how-to-change-version-of-http-that-your.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1680423670027781395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/1680423670027781395'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2007/12/how-to-change-version-of-http-that-your.html' title='How to change the version of HTTP that your .NET web-service client proxy class uses ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-9096474433694083918</id><published>2007-12-13T16:37:00.001-08:00</published><updated>2007-12-13T16:38:13.862-08:00</updated><title type='text'>XSLT replace - the code</title><content type='html'>Extending on my post earlier today - thought I may as well include the code:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span class="syntaxactiveorange"&gt;&amp;lt;?xml&lt;/span&gt;&lt;span class="syntaxactiveorange"&gt; version="1.0"&lt;/span&gt;&lt;span class="syntaxactiveorange"&gt; ?&amp;gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:stylesheet&lt;/span&gt; &lt;span class="syntaxkeyword"&gt;xmlns:xsl&lt;/span&gt;="&lt;a href="http://www.w3.org/1999/XSL/Transform"&gt;http://www.w3.org/1999/XSL/Transform &lt;/a&gt;" &lt;span class="syntaxkeyword"&gt;version&lt;/span&gt;="1.0"&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt; &lt;/span&gt;&lt;span class="syntaxcomment"&gt;&amp;lt;!--&lt;/span&gt;&lt;span class="syntaxcomment"&gt;  reusable replace-string function &lt;/span&gt;&lt;span class="syntaxcomment"&gt;--&amp;gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt; &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:template&lt;/span&gt; &lt;span class="syntaxkeyword"&gt; name&lt;/span&gt;="replace-string"&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;    &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:param&lt;/span&gt; &lt;span class="syntaxkeyword"&gt;name&lt;/span&gt;="text"/&amp;gt; &lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;    &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:param&lt;/span&gt; &lt;span class="syntaxkeyword"&gt;name&lt;/span&gt;="from"/&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;    &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:param&lt;/span&gt; &lt;span class="syntaxkeyword"&gt;name&lt;/span&gt;="to"/&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;     &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:choose&lt;/span&gt;&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;      &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:when&lt;/span&gt; &lt;span class="syntaxkeyword"&gt; test&lt;/span&gt;=&lt;span class="syntaxstring"&gt;"&lt;/span&gt;contains($text, $from)"&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt; &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:variable&lt;/span&gt;  &lt;span class="syntaxkeyword"&gt;name&lt;/span&gt;="before" &lt;span class="syntaxkeyword"&gt;select&lt;/span&gt;=&lt;span class="syntaxstring"&gt;"&lt;/span&gt;substring-before($text, $from)"/&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span class="syntaxfirebrick"&gt; &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:variable&lt;/span&gt; &lt;span class="syntaxkeyword"&gt;name&lt;/span&gt;="after" &lt;span class="syntaxkeyword"&gt;select&lt;/span&gt;=&lt;span class="syntaxstring"&gt;" &lt;/span&gt;substring-after($text, $from)"/&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt; &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:variable&lt;/span&gt; &lt;span class="syntaxkeyword"&gt;name&lt;/span&gt;="prefix"  &lt;span class="syntaxkeyword"&gt;select&lt;/span&gt;=&lt;span class="syntaxstring"&gt;"&lt;/span&gt;concat($before, $to)"/&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt; &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt; xsl:value-of&lt;/span&gt; &lt;span class="syntaxkeyword"&gt;select&lt;/span&gt;=&lt;span class="syntaxstring"&gt;"&lt;/span&gt;$before"/&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt; &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt; xsl:value-of&lt;/span&gt; &lt;span class="syntaxkeyword"&gt;select&lt;/span&gt;=&lt;span class="syntaxstring"&gt;"&lt;/span&gt;$to"/&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;        &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt; xsl:call-template&lt;/span&gt; &lt;span class="syntaxkeyword"&gt;name&lt;/span&gt;="replace-string"&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;   &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:with-param &lt;/span&gt; &lt;span class="syntaxkeyword"&gt;name&lt;/span&gt;="text" &lt;span class="syntaxkeyword"&gt;select&lt;/span&gt;=&lt;span class="syntaxstring"&gt;"&lt;/span&gt;$after"/&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;    &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:with-param&lt;/span&gt; &lt;span class="syntaxkeyword"&gt;name&lt;/span&gt;="from" &lt;span class="syntaxkeyword"&gt;select&lt;/span&gt;=&lt;span class="syntaxstring"&gt;"&lt;/span&gt;$from"/&amp;gt; &lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;   &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:with-param&lt;/span&gt; &lt;span class="syntaxkeyword"&gt;name&lt;/span&gt;="to" &lt;span class="syntaxkeyword"&gt; select&lt;/span&gt;=&lt;span class="syntaxstring"&gt;"&lt;/span&gt;$to"/&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt; &lt;/span&gt;&amp;lt;/&lt;span class="syntaxactiveblue"&gt;xsl:call-template&lt;/span&gt;&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;      &lt;/span&gt;&amp;lt;/&lt;span class="syntaxactiveblue"&gt;xsl:when&lt;/span&gt;&amp;gt;&lt;span class="syntaxfirebrick"&gt; &lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;       &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:otherwise&lt;/span&gt;&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;        &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:value-of&lt;/span&gt; &lt;span class="syntaxkeyword"&gt; select&lt;/span&gt;=&lt;span class="syntaxstring"&gt;"&lt;/span&gt;$text"/&amp;gt;&lt;span class="syntaxfirebrick"&gt;  &lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;      &lt;/span&gt;&amp;lt;/&lt;span class="syntaxactiveblue"&gt; xsl:otherwise&lt;/span&gt;&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;    &lt;/span&gt;&amp;lt;/&lt;span class="syntaxactiveblue"&gt;xsl:choose&lt;/span&gt;&amp;gt;&lt;span class="syntaxfirebrick"&gt;            &lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt; &lt;/span&gt;&amp;lt;/&lt;span class="syntaxactiveblue"&gt;xsl:template&lt;/span&gt;&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt; &lt;/span&gt;&lt;span class="syntaxcomment"&gt;&amp;lt;!-- &lt;/span&gt;&lt;span class="syntaxcomment"&gt; test the function &lt;/span&gt;&lt;span class="syntaxcomment"&gt;--&amp;gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt; &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:template &lt;/span&gt; &lt;span class="syntaxkeyword"&gt;match&lt;/span&gt;=&lt;span class="syntaxstring"&gt;"&lt;/span&gt;/"&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;     &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:call-template &lt;/span&gt; &lt;span class="syntaxkeyword"&gt;name&lt;/span&gt;="replace-string"&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;        &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:with-param&lt;/span&gt;  &lt;span class="syntaxkeyword"&gt;name&lt;/span&gt;="text"&lt;br /&gt;            &lt;span class="syntaxkeyword"&gt;select&lt;/span&gt;=&lt;span class="syntaxstring"&gt;"&lt;/span&gt;'Mary had a little lamb, little lamb, little lamb.'"/&amp;gt; &lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;        &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:with-param&lt;/span&gt; &lt;span class="syntaxkeyword"&gt;name&lt;/span&gt;="from" &lt;span class="syntaxkeyword"&gt; select&lt;/span&gt;=&lt;span class="syntaxstring"&gt;"&lt;/span&gt;'little lamb'"/&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;        &lt;/span&gt;&amp;lt;&lt;span class="syntaxactiveblue"&gt;xsl:with-param &lt;/span&gt; &lt;span class="syntaxkeyword"&gt;name&lt;/span&gt;="to" &lt;span class="syntaxkeyword"&gt;select&lt;/span&gt;=&lt;span class="syntaxstring"&gt;"&lt;/span&gt;'little steak'"/&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt;     &lt;/span&gt;&amp;lt;/&lt;span class="syntaxactiveblue"&gt;xsl:call-template&lt;/span&gt;&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntaxfirebrick"&gt; &lt;/span&gt;&amp;lt;/&lt;span class="syntaxactiveblue"&gt;xsl:template&lt;/span&gt;&amp;gt;&lt;span class="syntaxfirebrick"&gt;&lt;br /&gt;&lt;/span&gt;&amp;lt;/&lt;span class="syntaxactiveblue"&gt;xsl:stylesheet&lt;/span&gt;&amp;gt;&lt;/pre&gt;Will make life a bit easier if I ever come to use this code again ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-9096474433694083918?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/9096474433694083918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2007/12/xstl-replace-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/9096474433694083918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/9096474433694083918'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2007/12/xstl-replace-code.html' title='XSLT replace - the code'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-2190951756575387388</id><published>2007-12-13T16:35:00.001-08:00</published><updated>2007-12-13T16:39:11.872-08:00</updated><title type='text'>XSLT output-tokens function ...</title><content type='html'>This can be used to split a string into tokens and add &amp;lt;br /&amp;gt;s where appropriate:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;lt;!-- reusable tokening function --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &amp;lt;xsl:template name="output-tokens"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        &amp;lt;xsl:param name="list" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        &amp;lt;xsl:variable name="newlist" select="concat(normalize-space($list), ' ')" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        &amp;lt;xsl:variable name="first" select="substring-before($newlist, ' ')" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        &amp;lt;xsl:variable name="remaining" select="substring-after($newlist, ' ')" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        &amp;lt;br /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            &amp;lt;xsl:value-of select="$first" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        &amp;lt;br /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        &amp;lt;xsl:if test="$remaining"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            &amp;lt;xsl:call-template name="output-tokens"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                &amp;lt;xsl:with-param name="list" select="$remaining" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            &amp;lt;/xsl:call-template&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        &amp;lt;/xsl:if&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;very handy ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-2190951756575387388?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/2190951756575387388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2007/12/xslt-output-tokens-function.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/2190951756575387388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/2190951756575387388'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2007/12/xslt-output-tokens-function.html' title='XSLT output-tokens function ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-19397558935012618</id><published>2007-12-13T13:33:00.000-08:00</published><updated>2007-12-13T13:35:39.702-08:00</updated><title type='text'>Test Email Blog</title><content type='html'>&lt;div&gt; &lt;div&gt;  &lt;div class="Section1"&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Testing 123!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-19397558935012618?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/19397558935012618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2007/12/test-email-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/19397558935012618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/19397558935012618'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2007/12/test-email-blog.html' title='Test Email Blog'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-4701499256249545568</id><published>2007-12-13T12:54:00.001-08:00</published><updated>2007-12-13T13:06:49.928-08:00</updated><title type='text'>XSLT replace(,,) in VS200* ...</title><content type='html'>I would really like to be able to use the XSLT replace(,,) function in some work that I'm doing right now - but it seems as though I'm not able to, even in VS2008, because the .NET framework class libraries only support XSLT and XPath 1.0.&lt;br /&gt;&lt;br /&gt;Have looked into Saxon for .NET, but there seems to be almost no documentation avialable as to how to use this component. The VS2008 XSLT debugger is actually superb, so I'm a bit baffled by this lack of support for XSLT and XPath 2.0 :-/&lt;br /&gt;&lt;br /&gt;Anyway, I was sent this &lt;a href="http://aspn.activestate.com/ASPN/Cookbook/XSLT/Recipe/65426"&gt;link ...&lt;/a&gt;&lt;br /&gt;&lt;span class="syntaxactiveorange"&gt;&lt;xsl:stylesheet xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;&lt;xsl:template name="replace-string"&gt;&lt;xsl:param name="text"&gt;&lt;xsl:param name="from"&gt;&lt;xsl:param name="to"&gt;&lt;xsl:choose&gt;&lt;xsl:when test="contains($text, $from)"&gt;&lt;xsl:variable name="before" select="substring-before($text, $from)"&gt;&lt;xsl:variable name="after" select="substring-after($text, $from)"&gt;&lt;xsl:variable name="prefix" select="concat($before, $to)"&gt;&lt;xsl:value-of select="$before"&gt;&lt;xsl:value-of select="$to"&gt;&lt;xsl:call-template name="replace-string"&gt;&lt;xsl:template match="/"&gt;&lt;xsl:call-template name="replace-string"&gt;&lt;br /&gt;Which provides a code-listing that implements a custom search-and-replace function in XSLT. Works like a charm ;-)&lt;/xsl:call-template&gt;&lt;/xsl:template&gt;&lt;/xsl:call-template&gt;&lt;/xsl:value-of&gt;&lt;/xsl:value-of&gt;&lt;/xsl:variable&gt;&lt;/xsl:variable&gt;&lt;/xsl:variable&gt;&lt;/xsl:when&gt;&lt;/xsl:choose&gt;&lt;/xsl:param&gt;&lt;/xsl:param&gt;&lt;/xsl:param&gt;&lt;/xsl:template&gt;&lt;/xsl:stylesheet&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-4701499256249545568?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/4701499256249545568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2007/12/xslt-replace-in-vs200.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/4701499256249545568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/4701499256249545568'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2007/12/xslt-replace-in-vs200.html' title='XSLT replace(,,) in VS200* ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-6182019788637037075</id><published>2007-02-26T23:38:00.000-08:00</published><updated>2007-02-27T00:38:22.224-08:00</updated><title type='text'>Simply, superb ...</title><content type='html'>&lt;a href="http://www.metacafe.com/watch/445498/robotic_beer_launching_refrigerator/"&gt;http://www.metacafe.com/watch/445498/robotic_beer_launching_refrigerator/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-6182019788637037075?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/6182019788637037075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2007/02/simply-superb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/6182019788637037075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/6182019788637037075'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2007/02/simply-superb.html' title='Simply, superb ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1895469180493848136.post-4296402460053191729</id><published>2007-02-06T20:24:00.000-08:00</published><updated>2010-10-16T03:26:44.428-07:00</updated><title type='text'>DAL Ponderings ...</title><content type='html'>&lt;span style="font-family: arial;font-family:arial;font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Here's something I have just posted to the &lt;a href="http://dot.net.nz/"&gt;NZDNUG&lt;/a&gt; sql-server mailing list that I thought might make for a useful post:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Hi all,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;I have just completed a largish  project designing and building a back-end system that is implemented across a  series of processes, some of which are multithreaded. I have effectively  designed and built this system from database design through to external  interface implementation. A relatively complex system by requirement, but it has  all come together fairly nicely (pats self on back ;-)). &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;What I have come to realise however  in looking back at this experience, and in stepping back and looking at the  'complete' system, is that the part where things get a little twisted is in my  sproc implementation. Although it all works nicely, I find that development of  TSQL and SQL scripts in general, when compared to .NET (and OO) development  tends to get a little 'hairy'. I find that TSQL and SQL don't really lend  themselves to structured software design techniques, so I just tend to develop  scripts (using as much foresight and caution as is practical of course) as the  need develops. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;I've studied databases to stage III  at university, and have worked closely with databases throughout my IT career,  but have found that there is not much documentation out there (or perhaps I've  just not come across much) that goes into in-depth theoretical detail as to how  sprocs can be organised in a structured manner. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;I'd like to open a discussion about  this to investigate what peoples thoughts are in this regard.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Cheers,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Bernard.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-weight: bold; font-family: arial;font-family:arial;font-size:85%;"&gt;And another one:&lt;/span&gt;&lt;span style="font-family: arial;font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;"&gt;&lt;span style=";font-size:85%;"&gt;…further to my previous  email…&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;"&gt;&lt;span style=";font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;"&gt;&lt;span style=";font-size:85%;"&gt;For example – you have then need to  access/update/insert lots of small bits and pieces of seemingly unrelated data –  some scalar, some that would return/update/insert only a few 'small' records.  Lump them all together in a single API type sproc ( i.e. pass thru a parameter,  and receive back the appropriate data/confirmation), or make a separate sproc  for each?&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;"&gt;&lt;span style=";font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;"&gt;&lt;span style=";font-size:85%;"&gt;Another scenario - you have large  chunks of data that are being pushed and pulled through a system. The data has  potentially been modified as it is shifted around. The database code needs to (  i.e. it is appropriate for the db code to) analyse it to be able to determine if  a change has occurred, then marshal the data accordingly. The data may be passed  in this way though several different marshalling 'gates' before it finds it's  way to it's home in the db table(s). Is it best to generate a tree-like series  of sprocs that the data percolates though before it reaches the tables, or try  to lump the whole thing into a single script? &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;"&gt;&lt;span style=";font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;"&gt;&lt;span style=";font-size:85%;"&gt;What I'd like to be able to develop  I think is a more mature way of managing the problem of data manipulation  through the sproc 'layer'. Ideally I'd like to be able to apply some methodology  - in the same way I can organise my .NET code into manageable portions by  employing OO methodologies. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;"&gt;&lt;span style=";font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;"&gt;&lt;span style=";font-size:85%;"&gt;After some development experience it  does seem to become clearer to distinguish which section of a data manipulation  procedure should be performed in db-side code and which shouldn't. Some  discussion on this topic would also be &lt;span style=""&gt;warranted  &lt;/span&gt;though I think, especially with the onslaught of technologies such as  DLINQ which are set to dissolve these db-side/custom-app-side data manipulation  boundaries even further. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;"&gt;&lt;span style=";font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;"&gt;&lt;span style=";font-size:85%;"&gt;Bernard.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;"&gt;&lt;span style=";font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;"&gt;&lt;span style=";font-size:85%;"&gt;&lt;b&gt;Edit - 20101016:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;"&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: 14px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; font-family: arial;"&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: 14px;"&gt;When I originally made this post on the NZ .NET user group mailing list, several senior developers came back to me and said bluntly "don't put that business logic in your database" and/or "the RDBMS is designed for data, not code"...all I can say is, they were so, so right...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1895469180493848136-4296402460053191729?l=bernard-on-technology.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bernard-on-technology.blogspot.com/feeds/4296402460053191729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bernard-on-technology.blogspot.com/2007/02/heres-something-i-have-just-posted-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/4296402460053191729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1895469180493848136/posts/default/4296402460053191729'/><link rel='alternate' type='text/html' href='http://bernard-on-technology.blogspot.com/2007/02/heres-something-i-have-just-posted-to.html' title='DAL Ponderings ...'/><author><name>Bernard O'Leary</name><uri>http://www.blogger.com/profile/04932452319352698360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_xKxDIF4xHUc/TLl5SX3URtI/AAAAAAAAAMo/-6dU7dz3wbo/S220/face.jpg'/></author><thr:total>0</thr:total></entry></feed>
