<?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-21661688</id><updated>2011-12-23T19:23:35.940Z</updated><category term='WPF C# TextBox'/><category term='Add'/><title type='text'>Andrew Jones - Alquist Consulting Ltd</title><subtitle type='html'>My blog about Carbon Reduction Commitment, c#, asp.net, general networking and structured cabling. &lt;a href="http://www.alquist.co.uk" title="Alquist Consulting Web Page"&gt;www.alquist.co.uk&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>87</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-21661688.post-2405087943903811949</id><published>2011-12-08T23:13:00.000Z</published><updated>2011-12-08T23:13:38.109Z</updated><title type='text'>Celsius wins at 2011 UK IT Industry Awards</title><content type='html'>&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-evgg1P7Ist8/TuFEFarLRDI/AAAAAAAAAIM/uTY60a6LWPo/s1600/BBC+Radio+Cambridgeshire.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="84px" mda="true" src="http://2.bp.blogspot.com/-evgg1P7Ist8/TuFEFarLRDI/AAAAAAAAAIM/uTY60a6LWPo/s320/BBC+Radio+Cambridgeshire.png" width="320px" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;﻿I'll be talking about how our celsius product won the Infrastructure Innovation of the Year Award at the 2011 UK IT Industry Awards at 06:20 on 12/12/2011&amp;nbsp;- BBC Radio Cambridgeshire.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-2405087943903811949?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/2405087943903811949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=2405087943903811949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/2405087943903811949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/2405087943903811949'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2011/12/celsius-wins-at-2011-uk-it-industry.html' title='Celsius wins at 2011 UK IT Industry Awards'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-evgg1P7Ist8/TuFEFarLRDI/AAAAAAAAAIM/uTY60a6LWPo/s72-c/BBC+Radio+Cambridgeshire.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-3023896120096176000</id><published>2011-11-30T20:43:00.000Z</published><updated>2011-11-30T20:43:51.031Z</updated><title type='text'>BBC Micro is 30 years old!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/thumb/3/32/BBC_Micro_Front_Restored.jpg/300px-BBC_Micro_Front_Restored.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" dda="true" src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/32/BBC_Micro_Front_Restored.jpg/300px-BBC_Micro_Front_Restored.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;A great article on the BBC Micro which is 30 years old today &lt;a href="http://www.reghardware.com/2011/11/30/bbc_micro_model_b_30th_anniversary/"&gt;http://www.reghardware.com/2011/11/30/bbc_micro_model_b_30th_anniversary/&lt;/a&gt;. The BBC Model B was my third computer (after a self-assembled ZX80, and a ZX81 and excluding the school Research Machines RML 380Z which I exclusivly used but never really owned). Those were the days! I remember saving up all my paper round money to&amp;nbsp;go on&amp;nbsp;an Acorn dealer courses for the BBC Micro when I was about 17. It cost a fortune to go on the 5 day course. To their great credit Acorn never invoiced me for that course. I guess sitting at the front and asking all the questions has some benifit. Cheers Acorn!&lt;br /&gt;&lt;br /&gt;It's strange now that I'm&amp;nbsp;based in Cambridge and occasionally bump into people who were involved with Acorn / Sinclair in the old days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-3023896120096176000?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/3023896120096176000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=3023896120096176000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/3023896120096176000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/3023896120096176000'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2011/11/bbc-micro-is-30-years-old.html' title='BBC Micro is 30 years old!'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-7283291386592216071</id><published>2011-11-16T16:08:00.002Z</published><updated>2011-11-16T16:08:57.725Z</updated><title type='text'>Silicon Valley comes to Cambridge</title><content type='html'>&lt;span id="yui-gen8"&gt;Looking forward to meeting Reid Hoffman (Chairman of LinkedIn) and numerous other of the most exciting and disruptive Silicon Valley companies (Apple, Google...) at the Silicon Valley comes to UK event in Cambridge on Friday. Alquist are one of the showcase companies exhibiting at the event. It should be an interesting day!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-7283291386592216071?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/7283291386592216071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=7283291386592216071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/7283291386592216071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/7283291386592216071'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2011/11/silicon-valley-comes-to-cambridge.html' title='Silicon Valley comes to Cambridge'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-2906173357698466741</id><published>2011-11-11T15:20:00.000Z</published><updated>2011-11-11T15:20:58.403Z</updated><title type='text'>UK IT Industry Awards</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-UcLck2cWWzY/Tr08_rvXO0I/AAAAAAAAAH8/BdN5B965lM4/s1600/UK+IT+Winner+200.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" nda="true" src="http://4.bp.blogspot.com/-UcLck2cWWzY/Tr08_rvXO0I/AAAAAAAAAH8/BdN5B965lM4/s1600/UK+IT+Winner+200.png" /&gt;&lt;/a&gt;&lt;/div&gt;Great news! We won the 2011 UK IT Industry award for Infrastructure Innovation with celsius, our high definition temperature monitoring solution for data centres. The award was presented to us by TV funny man, Alexander Armstrong.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-C_VGMGiQqWg/Tr09HiJkN2I/AAAAAAAAAIE/bCPwtgMLPjY/s1600/andrew-jones-alquist-15-370x229.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="198px" nda="true" src="http://4.bp.blogspot.com/-C_VGMGiQqWg/Tr09HiJkN2I/AAAAAAAAAIE/bCPwtgMLPjY/s320/andrew-jones-alquist-15-370x229.jpg" width="320px" /&gt;&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/21661688-2906173357698466741?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/2906173357698466741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=2906173357698466741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/2906173357698466741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/2906173357698466741'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2011/11/uk-it-industry-awards.html' title='UK IT Industry Awards'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-UcLck2cWWzY/Tr08_rvXO0I/AAAAAAAAAH8/BdN5B965lM4/s72-c/UK+IT+Winner+200.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-7053062252803844895</id><published>2011-09-02T15:56:00.003+01:00</published><updated>2011-09-05T17:11:36.911+01:00</updated><title type='text'></title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-JrFkfm9TqfI/TmDubLl7PHI/AAAAAAAAAH4/n11izuhseco/s1600/UK-IT-Industry-Awards-2011-Finalist.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-JrFkfm9TqfI/TmDubLl7PHI/AAAAAAAAAH4/n11izuhseco/s1600/UK-IT-Industry-Awards-2011-Finalist.png" xaa="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://www.alquist.co.uk/"&gt;Alquist&lt;/a&gt;'s celsius product has been named as a finalist in the British Computer Society &amp;amp; Computing UK IT Industry Awards 2011, in the category of &lt;a href="http://www.bcs.org/content/ConWebDoc/41535"&gt;Infrastructure Innovation of the Year&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The UK IT Awards are a platform for the entire profession to celebrate best practice, innovation and excellence. The shortlisted organisations have been selected based on their business success in the past 12 months, and demonstrable high levels of customer satisfaction and business benefits from the users of their products and services, with judges considering each on its merits in terms of professionalism, excellence, innovation and measurable success.&lt;br /&gt;&lt;br /&gt;With the announcement of the finalists, David Clarke, Chief Executive Officer, BCS, The Chartered Institute for IT, said: “Congratulations to the finalists; the competition to reach this stage of our prestigious Awards is tough. Our Awards are central to our mission to recognise the innovation and professionalism of those working in IT and I’m delighted that every year we have such a variety of high quality entries. They are an excellent reflection of the impact IT has on so many aspects of our information society and the potential IT has to transform business, society and our lives.”&lt;br /&gt;&lt;br /&gt;Abigail Waraker, Editor of Computing commented: “I would like to congratulate the finalists. The UK IT Industry Awards are rigorously judged and to be announced as a finalist is a great achievement.”&lt;br /&gt;&lt;br /&gt;The award ceremony itself will take place in London on 10th November. &lt;br /&gt;&amp;nbsp; &lt;br /&gt;See &lt;a href="http://www.ukitindustryawards.co.uk/"&gt;http://www.ukitindustryawards.co.uk/&lt;/a&gt;&amp;nbsp;and &lt;a href="http://www.computing.co.uk/ctg/news/2105894/finalists-announced-uk-industry-awards-2011?WT.rss_f=&amp;amp;WT.rss_a=Finalists+announced+for+the+UK+IT+Industry+Awards+2011"&gt;Computing Magazine Article&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-7053062252803844895?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/7053062252803844895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=7053062252803844895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/7053062252803844895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/7053062252803844895'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2011/09/alquist-has-been-named-as-finalist-in.html' title=''/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-JrFkfm9TqfI/TmDubLl7PHI/AAAAAAAAAH4/n11izuhseco/s72-c/UK-IT-Industry-Awards-2011-Finalist.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-9070330880123742606</id><published>2010-12-28T21:48:00.002Z</published><updated>2010-12-28T21:53:50.997Z</updated><title type='text'>Datacenter Leaders Award winner</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_1ejZjmvGNJ4/TRpaYP_HCKI/AAAAAAAAAHg/pifz3L-Ctrk/s1600/celsius+box.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="156" n4="true" src="http://1.bp.blogspot.com/_1ejZjmvGNJ4/TRpaYP_HCKI/AAAAAAAAAHg/pifz3L-Ctrk/s320/celsius+box.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;I am&amp;nbsp;delighted that our c&lt;a href="http://www.alquist.co.uk/products.aspx"&gt;www.alquist.co.uk/products.aspx&lt;/a&gt;elsius product won the 2010 DataCenterDynamics "Future Thinking and Design Concepts" award. Presented by comedian Rory Bremner at the Lancaster London hotel on Thursday 16 December 2010. For more information please see &lt;a href="http://www.datacenterdynamics.com/awards"&gt;www.datacenterdynamics.com/awards&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_1ejZjmvGNJ4/TRpb-NXiw6I/AAAAAAAAAHk/gKs_iJekT34/s1600/dcd+leaders+award+small.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" n4="true" src="http://1.bp.blogspot.com/_1ejZjmvGNJ4/TRpb-NXiw6I/AAAAAAAAAHk/gKs_iJekT34/s1600/dcd+leaders+award+small.jpg" /&gt;&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/21661688-9070330880123742606?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/9070330880123742606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=9070330880123742606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/9070330880123742606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/9070330880123742606'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2010/12/datacenter-leaders-award-winner.html' title='Datacenter Leaders Award winner'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1ejZjmvGNJ4/TRpaYP_HCKI/AAAAAAAAAHg/pifz3L-Ctrk/s72-c/celsius+box.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-9201239059749673307</id><published>2010-07-02T16:06:00.001+01:00</published><updated>2010-07-02T16:06:18.944+01:00</updated><title type='text'>Vodafone Sure Signal with Vigor 2820</title><content type='html'>&lt;p&gt;In order to get my Vodafone Sure Signal to work with my Vigor 2820 router I needed to make the following changes on the Router. The Vigor 2820 is running firmware 3.3.4_232201. &lt;/p&gt;  &lt;p&gt;The Sure Signal uses DHCP to get an IP address. I made sure I had allocated a fixed address using the LAN-&amp;gt;Bind IP to MAC menu. The MAC address is shown on the Sure Signal serial sticker.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1ejZjmvGNJ4/TC4AUvqH1dI/AAAAAAAAAGs/uJ8guZMONoE/s1600-h/image%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_1ejZjmvGNJ4/TC4AVUVAftI/AAAAAAAAAGw/Of8HNucuIzY/image_thumb.png?imgmax=800" width="244" height="140" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;From the NAT-&amp;gt;Open Ports menu I added an entry to the list of open ports&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_1ejZjmvGNJ4/TC4AVmDf4nI/AAAAAAAAAG0/73UAWEr0RC0/s1600-h/image%5B5%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_1ejZjmvGNJ4/TC4AWQTDZFI/AAAAAAAAAG4/-PyI1qGsIm4/image_thumb%5B1%5D.png?imgmax=800" width="244" height="126" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I named the entry “Vodafone Sure Signal”, entered the fixed IP address of the Sure Signal (192.168.65.2 in my case, yours will undoubtedly be different) and entered the following port numbers.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1ejZjmvGNJ4/TC4AW6OzFMI/AAAAAAAAAG8/67pIFB798sQ/s1600-h/image%5B9%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_1ejZjmvGNJ4/TC4AXgDrfFI/AAAAAAAAAHA/HISTaWfY-SA/image_thumb%5B3%5D.png?imgmax=800" width="440" height="302" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;TCP&amp;#160;&amp;#160; Port 50   &lt;br /&gt;UDP&amp;#160;&amp;#160; Port 500    &lt;br /&gt;UDP&amp;#160;&amp;#160; Port 4500&lt;/p&gt;  &lt;p&gt;Once all the settings were made it took about 15 minutes before the @ light stopped flashing slowly and the bottom green tick light came on.&lt;/p&gt;  &lt;p&gt;The lights now look like this :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_1ejZjmvGNJ4/TC4AYiPcrHI/AAAAAAAAAHE/SbBUUtPbHGI/s1600-h/image%5B12%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_1ejZjmvGNJ4/TC4AZuKd88I/AAAAAAAAAHI/2wTJ007jzOY/image_thumb%5B4%5D.png?imgmax=800" width="242" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;(all lights are on and not flashing)&lt;/p&gt;  &lt;p&gt;And for the first time in 7 years I have a 5 bar 3G mobile signal at home!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_1ejZjmvGNJ4/TC4AaFpDADI/AAAAAAAAAHM/C3LcV-ry158/s1600-h/image%5B15%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_1ejZjmvGNJ4/TC4AaXW_FAI/AAAAAAAAAHQ/mv6v3cnXOM4/image_thumb%5B5%5D.png?imgmax=800" width="178" height="63" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Until now I’ve not been able to get any signal at all. Fantastic, I can finally use my phone!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-9201239059749673307?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/9201239059749673307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=9201239059749673307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/9201239059749673307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/9201239059749673307'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2010/07/vodafone-sure-signal-with-vigor-2820.html' title='Vodafone Sure Signal with Vigor 2820'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_1ejZjmvGNJ4/TC4AVUVAftI/AAAAAAAAAGw/Of8HNucuIzY/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-5992292598037619407</id><published>2010-07-02T15:17:00.001+01:00</published><updated>2010-07-02T15:17:15.029+01:00</updated><title type='text'>New iPhone 4</title><content type='html'>&lt;p&gt;My new Vodafone iPhone 4 arrived today. I was previously with O2 but switched to Vodafone so i could use their Sure Signal Femto Cell repeater.&lt;/p&gt;  &lt;p&gt;I was worried that switching networks would be a problem. I’m pleased to report it was very straightforward.&lt;/p&gt;  &lt;p&gt;I plugged the new iPhone4 into my PC. iTunes recognised the new phone and restored my old 3G settings. After about 30 minutes of copying files it was all working and my old number was working on the new network.&lt;/p&gt;  &lt;p&gt;The only thing I had to do was re-enter my Wi-Fi and email passwords.&lt;/p&gt;  &lt;p&gt;It was really easy despite changing networks.&lt;/p&gt;  &lt;p&gt;The only annoying thing with Vodafone is that they do not seem to support visual voicemail on the iPhone 4. Apart from that moving networks was very easy.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-5992292598037619407?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/5992292598037619407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=5992292598037619407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/5992292598037619407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/5992292598037619407'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2010/07/new-iphone-4.html' title='New iPhone 4'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-1837275021176991753</id><published>2010-05-10T12:16:00.001+01:00</published><updated>2010-05-10T12:16:01.818+01:00</updated><title type='text'>URLScan blocks download of Click Once setup.exe file</title><content type='html'>&lt;p&gt;I was setting up an IIS7.5 site to host a Click Once application yesterday. I found that URLScan was blocking the setup.exe file from being downloaded. Once I removed URLScan the clients could download setup.exe.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-1837275021176991753?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/1837275021176991753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=1837275021176991753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/1837275021176991753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/1837275021176991753'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2010/05/urlscan-blocks-download-of-click-once.html' title='URLScan blocks download of Click Once setup.exe file'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-3405382518812223799</id><published>2010-01-08T11:49:00.001Z</published><updated>2010-01-08T11:49:21.501Z</updated><title type='text'>IIS7 SMTP Logging on Windows Server 2008</title><content type='html'>&lt;p&gt;I’ve just noticed that SMTP logging on Windows Server 2008 does not work unless you add the “ODBC Logging” module to the Web Server role. It appears that the ODBC logging module must be added even if you are using a non-ODBC logging format.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-3405382518812223799?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/3405382518812223799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=3405382518812223799' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/3405382518812223799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/3405382518812223799'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2010/01/iis7-smtp-logging-on-windows-server.html' title='IIS7 SMTP Logging on Windows Server 2008'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-4892805326064051934</id><published>2009-10-07T10:29:00.001+01:00</published><updated>2009-10-07T10:30:00.040+01:00</updated><title type='text'>WPF ComboBox select item when using ItemsSource</title><content type='html'>&lt;p&gt;I have a WPF ComboBox that is databound to a Linq query.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;var mylinqdata = from d &lt;span class="kwrd"&gt;in&lt;/span&gt; DataTable0.AsEnumerable()&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;select &lt;span class="kwrd"&gt;new&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre class="alt"&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;Status = d.Field&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(0).Trim(),&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre class="alt"&gt;Progress = d.Field&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(1).Trim()&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;};&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;dlg.cb_Status.ItemsSource = mylinqdata;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;When data is bound to a WPF control using ItemsSource you must change the selected item using SelectedIndex. Here is the code I use.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;dlg.cb_Status.SelectedIndex = mylinqdata.ToList().FindIndex(d =&amp;gt; d.Status == loom.Status);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;Here is the XAML of the ComboBox&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&amp;lt;ComboBox Name=&lt;span class="str"&gt;&amp;quot;cb_Status&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;ComboBox.ItemTemplate&amp;gt;&lt;br /&gt;        &amp;lt;DataTemplate&amp;gt;&lt;br /&gt;            &amp;lt;TextBlock Text=&lt;span class="str"&gt;&amp;quot;{Binding Path=Progress}&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/TextBlock&amp;gt;&lt;br /&gt;        &amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;    &amp;lt;/ComboBox.ItemTemplate&amp;gt;&lt;br /&gt;&amp;lt;/ComboBox&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-4892805326064051934?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/4892805326064051934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=4892805326064051934' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/4892805326064051934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/4892805326064051934'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2009/10/wpf-combobox-select-item-when-using.html' title='WPF ComboBox select item when using ItemsSource'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-2141331717209343076</id><published>2009-10-02T16:12:00.001+01:00</published><updated>2009-10-02T16:12:58.162+01:00</updated><title type='text'>Linq group by multiple columns</title><content type='html'>&lt;p&gt;Here is a bit of linq to group by multiple columns. It’s not very well documented so I’ve included a sample below.The trick is to use an anonymous type after the group by clause.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;var data3 = from d &lt;span class="kwrd"&gt;in&lt;/span&gt; db.Assembly_V2s&lt;br /&gt;group d by &lt;span class="kwrd"&gt;new&lt;/span&gt; { Column1 = d.AssemblyID / 100, Column2 = d.Description.Trim() } into g&lt;br /&gt;orderby g.Key.Column1&lt;br /&gt;select &lt;span class="kwrd"&gt;new&lt;/span&gt; { Column1 = g.Key.Column1, Column2 = g.Key.Column2 };&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-2141331717209343076?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/2141331717209343076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=2141331717209343076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/2141331717209343076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/2141331717209343076'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2009/10/linq-group-by-multiple-columns.html' title='Linq group by multiple columns'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-210667775405528182</id><published>2009-09-23T15:26:00.001+01:00</published><updated>2009-09-24T10:59:00.223+01:00</updated><title type='text'>HyperLinkField in GridView with multiple fields does not work</title><content type='html'>&lt;div class="csharpcode"&gt;   &lt;div class="csharpcode"&gt;     &lt;pre class="alt"&gt;&amp;lt;asp:GridView ID=&lt;span class="str"&gt;&amp;quot;GV&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; AutoGenerateColumns=&lt;span class="str"&gt;&amp;quot;False&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre&gt;&amp;lt;Columns&amp;gt;    &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre class="alt"&gt;&amp;lt;asp:HyperLinkField DataNavigateUrlFields=&lt;span class="str"&gt;&amp;quot;CAM,Floor,Riser&amp;quot;&lt;/span&gt; DataNavigateUrlFormatString=&lt;span class="str"&gt;&amp;quot;HorzHandover.aspx?CAM={0}&amp;amp;amp;Floor={1}&amp;amp;amp;Riser={2}&amp;quot;&lt;/span&gt;     Text=&lt;span class="str"&gt;&amp;quot;Handover&amp;quot;&lt;/span&gt;/&amp;gt;     &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre class="alt"&gt;&amp;lt;asp:TemplateField&amp;gt;        &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre&gt;    &amp;lt;ItemTemplate&amp;gt;            &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre class="alt"&gt;    &amp;lt;asp:HyperLink ID=&lt;span class="str"&gt;&amp;quot;HyperLink1&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;  NavigateUrl=&lt;span class="str"&gt;'&amp;lt;%# &amp;quot;Export.aspx?CAM=&amp;quot;+Eval(&amp;quot;CAM&amp;quot;)+&amp;quot;&amp;amp;Floor=&amp;quot;+Eval(&amp;quot;Floor&amp;quot;)+&amp;quot;&amp;amp;Riser=&amp;quot;+Eval(&amp;quot;Riser&amp;quot;) %&amp;gt;'&lt;/span&gt; Text=&lt;span class="str"&gt;&amp;quot;Signoff&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/asp:HyperLink&amp;gt;            &amp;lt;/ItemTemplate&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre&gt;&amp;lt;/asp:TemplateField&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre class="alt"&gt;&amp;lt;/Columns&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre&gt;&amp;lt;/asp:GridView&amp;gt;&lt;/pre&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/div&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I think this is a bug in asp.net. HyperLinkField in GridViews with multiple fields do not seem to work at all. You have to turn column into a template to make it work (as shown above)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-210667775405528182?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/210667775405528182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=210667775405528182' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/210667775405528182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/210667775405528182'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2009/09/hyperlinkfield-in-gridview-with.html' title='HyperLinkField in GridView with multiple fields does not work'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-2955357922227950334</id><published>2009-08-27T23:24:00.001+01:00</published><updated>2009-08-27T23:24:15.333+01:00</updated><title type='text'>Serving Silverlight 3 apps from IIS6</title><content type='html'>&lt;p&gt;If you want to serve Silverlight 3 apps from an IIS6 server running on Windows Server 2003 you need to add the following three mime types (I added them at the server level). If you don’t make these changes the web page will show a blank Silverlight window. You can right click to get the Silverlight menu but your app does not run.&lt;/p&gt;  &lt;p&gt;.xap&amp;#160;&amp;#160;&amp;#160;&amp;#160; application/x-silverlight-app    &lt;br /&gt;.xaml&amp;#160;&amp;#160;&amp;#160; application/xaml+xml     &lt;br /&gt;.xbap&amp;#160;&amp;#160;&amp;#160; application/x-ms-xbap&lt;/p&gt;  &lt;p&gt;I discovered that IIS needs to be restarted before the settings take effect. To restart IIS run IISRESET from a command prompt.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-2955357922227950334?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/2955357922227950334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=2955357922227950334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/2955357922227950334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/2955357922227950334'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2009/08/serving-silverlight-3-apps-from-iis6.html' title='Serving Silverlight 3 apps from IIS6'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-3734352957274161837</id><published>2009-08-22T14:30:00.001+01:00</published><updated>2009-08-22T14:30:24.130+01:00</updated><title type='text'>WPF auto fading error message</title><content type='html'>&lt;p&gt;Here is a small control template to display an error message. The message will fade away after a couple of seconds. You set the message like this:-&lt;/p&gt;  &lt;pre class="csharpcode"&gt;Label1.Content = DateTime.Now.ToString();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Here is the xaml:-&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Window&lt;/span&gt; &lt;span class="attr"&gt;x:Class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TRM_Uploader.Window2&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"&gt;xmlns:x&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"&gt;Title&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Window2&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;300&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;300&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Window.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ControlTemplate&lt;/span&gt; &lt;span class="attr"&gt;x:Key&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;MyErrorMessage&amp;quot;&lt;/span&gt;&lt;br /&gt;                         &lt;span class="attr"&gt;TargetType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{x:Type Label}&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt; &lt;span class="attr"&gt;Orientation&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Horizontal&amp;quot;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ErrorMessage&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt; &lt;span class="attr"&gt;CornerRadius&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;4&amp;quot;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="attr"&gt;BorderThickness&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="attr"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Red&amp;quot;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;4,0&amp;quot;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="attr"&gt;BorderBrush&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Transparent&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt; &lt;span class="attr"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;White&amp;quot;&lt;/span&gt;&lt;br /&gt;                           &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt;&lt;br /&gt;                           &lt;span class="attr"&gt;Padding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;4,2&amp;quot;&lt;/span&gt;&lt;br /&gt;                           &lt;span class="attr"&gt;FontWeight&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Bold&amp;quot;&lt;/span&gt;&lt;br /&gt;                           &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Part1&amp;quot;&lt;/span&gt;&lt;br /&gt;                           &lt;span class="attr"&gt;Visibility&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Visible&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Error&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!-- This TextBlock accepts the content from the parent 'label'. It is not actually displayed, just used to bind data--&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Part3&amp;quot;&lt;/span&gt;&lt;br /&gt;                           &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{TemplateBinding Content}&amp;quot;&lt;/span&gt;&lt;br /&gt;                           &lt;span class="attr"&gt;Visibility&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Collapsed&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!-- This TextBlock binds to the one above and triggers an animation when it gets updated. --&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!-- Its required because TemplateBinding does not allow NotifyOnTargetUpdate --&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt;&lt;br /&gt;                           &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Part2&amp;quot;&lt;/span&gt;&lt;br /&gt;                           &lt;span class="attr"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Red&amp;quot;&lt;/span&gt;&lt;br /&gt;                           &lt;span class="attr"&gt;Padding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt;&lt;br /&gt;                           &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{Binding ElementName=Part3, Path=Text,NotifyOnTargetUpdated=True}&amp;quot;&lt;/span&gt;&lt;br /&gt;                           &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ControlTemplate.Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!-- When Text property of Part2 is blank hide entire control--&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Trigger&lt;/span&gt; &lt;span class="attr"&gt;SourceName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Part3&amp;quot;&lt;/span&gt;&lt;br /&gt;                         &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Text&amp;quot;&lt;/span&gt;&lt;br /&gt;                         &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt; &lt;span class="attr"&gt;TargetName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ErrorMessage&amp;quot;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Visibility&amp;quot;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Hidden&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Trigger&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="rem"&gt;&amp;lt;!-- This trigger is called when Part2 updates which in turn is updated by Part3's databind.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;                     It uses animation to make the label fade away after a few seconds.                        --&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;EventTrigger&lt;/span&gt; &lt;span class="attr"&gt;SourceName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Part2&amp;quot;&lt;/span&gt;&lt;br /&gt;                              &lt;span class="attr"&gt;RoutedEvent&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Binding.TargetUpdated&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;BeginStoryboard&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Storyboard&lt;/span&gt; &lt;span class="attr"&gt;TargetName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ErrorMessage&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DoubleAnimation&lt;/span&gt; &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetProperty&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Opacity&amp;quot;&lt;/span&gt;&lt;br /&gt;                                             &lt;span class="attr"&gt;Duration&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0:0:0&amp;quot;&lt;/span&gt;&lt;br /&gt;                                             &lt;span class="attr"&gt;To&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DoubleAnimation&lt;/span&gt; &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetProperty&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Opacity&amp;quot;&lt;/span&gt;&lt;br /&gt;                                             &lt;span class="attr"&gt;Duration&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0:0:2&amp;quot;&lt;/span&gt;&lt;br /&gt;                                             &lt;span class="attr"&gt;From&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;br /&gt;                                             &lt;span class="attr"&gt;To&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0.0&amp;quot;&lt;/span&gt;&lt;br /&gt;                                             &lt;span class="attr"&gt;BeginTime&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0:0:1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Storyboard&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;BeginStoryboard&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;EventTrigger&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ControlTemplate.Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ControlTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Window.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt; &lt;span class="attr"&gt;Orientation&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Vertical&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt; &lt;span class="attr"&gt;Template&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{StaticResource MyErrorMessage}&amp;quot;&lt;/span&gt;&lt;br /&gt;               &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Label1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Click&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;button1_Click&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;click to test&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Window&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;And the c#&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Window2 : Window&lt;br /&gt;    {&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; Window2 ()&lt;br /&gt;        {&lt;br /&gt;        InitializeComponent();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; button1_Click (&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;        Label1.Content = DateTime.Now.ToString();&lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-3734352957274161837?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/3734352957274161837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=3734352957274161837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/3734352957274161837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/3734352957274161837'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2009/08/wpf-auto-fading-error-message.html' title='WPF auto fading error message'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-4837384925752208896</id><published>2009-08-20T19:27:00.001+01:00</published><updated>2009-08-20T19:27:34.670+01:00</updated><title type='text'>How to make a bootable USB memory stick in Windows 7</title><content type='html'>&lt;p&gt;I spent ages on this last night without any success, tonight it took me about 60 seconds. Here is the trick.&lt;/p&gt;  &lt;p&gt;First you need to download Windows Enabler from &lt;a href="http://www.angelfire.com/falcon/speedload/Enabler.htm"&gt;http://www.angelfire.com/falcon/speedload/Enabler.htm&lt;/a&gt;. This allows any disabled controls to be re-enabled. Install the program and click on its system tray icon to enable it. The Icon should show ‘on’ to show it’s working :&lt;/p&gt;  &lt;p&gt;With Windows Enabler running you can go into Windows Explorer and format your memory stick (obviously this will erase everything on the stick). Normally the “create an MS-DOS startup disk” is disabled for everything except floppy disks but with Windows Enabler running you can click the disabled checkbox to use the option with any drive.&lt;/p&gt;  &lt;p&gt;I think the file system needs to be set to “FAT”. Once formatted your stick will be a bootable MS-DOS 4.9.3000 boot disk. Easy!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-4837384925752208896?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/4837384925752208896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=4837384925752208896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/4837384925752208896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/4837384925752208896'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2009/08/how-to-make-bootable-usb-memory-stick.html' title='How to make a bootable USB memory stick in Windows 7'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-1623730091812366124</id><published>2009-08-20T17:01:00.001+01:00</published><updated>2009-08-20T17:01:39.558+01:00</updated><title type='text'>IE image visibility bug</title><content type='html'>&lt;p&gt;I found two very strange bugs in IE 8 yesterday (probably in other IE versions as well). I have an image and some text in a SPAN that is made visible with some JavaScript. Here is the HTML :&lt;/p&gt;  &lt;p&gt;&amp;lt;img id=&amp;quot;ctl00_ContentPlaceHolder1_Image3&amp;quot; src=&amp;quot;Graphics/waiting.gif&amp;quot; align=&amp;quot;middle&amp;quot; style=&amp;quot;border-width:0px;visibility:hidden&amp;quot; /&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;span id=&amp;quot;ctl00_ContentPlaceHolder1_Label4&amp;quot; style=&amp;quot;visibility:hidden&amp;quot;&amp;gt;Please wait. Adding results to database.&amp;lt;/span&amp;gt;&lt;/p&gt;  &lt;p&gt;The Javascript attempts to change the visibility like this :&lt;/p&gt;  &lt;p&gt;ctl00_ContentPlaceHolder1_Label4.style.visibility='visible';&lt;/p&gt;  &lt;p&gt;ctl00_ContentPlaceHolder1_Image3.style.visibility='visible';&lt;/p&gt;  &lt;p&gt;for SPAN tags this works. for IMG tags it has absolutely no effect!&lt;/p&gt;  &lt;p&gt;The solution is a horrible hack :-&lt;/p&gt;  &lt;p&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/p&gt;  &lt;p&gt;function UploadComplete()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;ctl00_ContentPlaceHolder1_Label4.style.visibility='visible';&lt;/p&gt;  &lt;p&gt;document.all.ctl00_ContentPlaceHolder1_Image3.style.display='none';&lt;/p&gt;  &lt;p&gt;document.all.ctl00_ContentPlaceHolder1_Image3.style.display='block';&lt;/p&gt;  &lt;p&gt;document.all.ctl00_ContentPlaceHolder1_Image3.style.visibility='visible';&lt;/p&gt;  &lt;p&gt;document.all.ctl00_ContentPlaceHolder1_Image3.src='waiting.gif';&lt;/p&gt;  &lt;p&gt;window.setTimeout(TurnAnimatedGifBackOn, 500);&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;function TurnAnimatedGifBackOn ()&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;var tmp = document.all.ctl00_ContentPlaceHolder1_Image3;&lt;/p&gt;  &lt;p&gt;if(typeof (tmp) == 'object')&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;tmp.style.visibility = 'visible'; tmp.src='waiting.gif';&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;  &lt;p&gt;To fix the problem the IMG tag has to have it’s display property toggled from ‘none’ and back to ‘block’.&lt;/p&gt;  &lt;p&gt;The second bug is that animated gifs stop animating when a page post back occurs. To fix this problem I’ve used a timer to alter the image 500ms after the page post back. To get the animation working the src tag must be reloaded with the image url.&lt;/p&gt;  &lt;p&gt;Other browsers do not seem to have this problem.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-1623730091812366124?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/1623730091812366124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=1623730091812366124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/1623730091812366124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/1623730091812366124'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2009/08/ie-image-visibility-bug.html' title='IE image visibility bug'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-6053619320844198826</id><published>2009-08-20T14:01:00.001+01:00</published><updated>2009-08-20T14:01:42.440+01:00</updated><title type='text'>Enable Hardware Virtualization on Sony VGN-AR71ZU</title><content type='html'>&lt;p&gt;It is really annoying to discover that Sony disable hardware virtualization and do not provide a bios setting to allow it to be re-enabled. This prevents you from being able to use Windows Virtual PC/MP Mode in Windows 7. I finally managed to hack the bios and now have full hardware virtualization!&lt;/p&gt;  &lt;p&gt;Hacking the bios is actually trivial provided you know the right register to change. Chris Hay has a blog post which describes the change for a VGN-AR71ZU (bios = Phoenix R2090J8). (&lt;a title="http://silverlightuk.blogspot.com/2009/04/enabling-hardware-virtualization-on.html" href="http://silverlightuk.blogspot.com/2009/04/enabling-hardware-virtualization-on.html"&gt;http://silverlightuk.blogspot.com/2009/04/enabling-hardware-virtualization-on.html&lt;/a&gt;) &lt;/p&gt;  &lt;p&gt;The trouble I had was creating a bootable USB memory stick. I spent hours messing around last night with absolutely no success. In the end I gave up on the USB stick and found an old USB floppy drive. I downloaded the ms-dos 6.22 disk images from MSDN and made myself a set of three setup disks. I then booted off the floppy, exited ms-dos setup with F3 and ran SYMCMOS as described in Chris’s blog post. The process was not helped by the fact that the USB floppy would not work on Vista or Windows 7 so I had to create the ms-dos setup disks on an old XP machine.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-6053619320844198826?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/6053619320844198826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=6053619320844198826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/6053619320844198826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/6053619320844198826'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2009/08/enable-hardware-virtualization-on-sony.html' title='Enable Hardware Virtualization on Sony VGN-AR71ZU'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-8006507954249317404</id><published>2009-07-01T21:11:00.002+01:00</published><updated>2009-07-01T21:14:53.405+01:00</updated><title type='text'>Firefox 3.5 causes WiFi problems</title><content type='html'>I have a Intel 4965AGN WiFi card running Windows 7 RC. Yesterday Firefox 3.5 was installed. I think the new location services (which uses WiFi to work out your location) is causing the Windows 7 WiFi to stop working. uninstalled Firefox and WiFi started working again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-8006507954249317404?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/8006507954249317404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=8006507954249317404' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/8006507954249317404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/8006507954249317404'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2009/07/firefox-35-causes-wifi-problems.html' title='Firefox 3.5 causes WiFi problems'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-1723331370128420139</id><published>2009-06-19T17:08:00.003+01:00</published><updated>2009-06-19T17:14:06.201+01:00</updated><title type='text'>FTP.exe on Windows 7</title><content type='html'>&lt;div&gt;I have a scheduled batch file that sends some files to an FTP server. This stopped working when I upgraded to Windows 7 a few weeks ago. I finally tracked down the problem to the new improved firewall in Windows 7. If you want to use FTP you must edit the Inbound Rule for "File Transfer Program" Private profile and change the TCP action from blocked to allow. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_1ejZjmvGNJ4/Sju45RRtP6I/AAAAAAAAADU/uFPZvKoOagU/s1600-h/FTP.PNG"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 178px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5349072276462321570" border="0" alt="" src="http://4.bp.blogspot.com/_1ejZjmvGNJ4/Sju45RRtP6I/AAAAAAAAADU/uFPZvKoOagU/s400/FTP.PNG" /&gt;&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/21661688-1723331370128420139?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/1723331370128420139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=1723331370128420139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/1723331370128420139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/1723331370128420139'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2009/06/ftpexe-on-windows-7.html' title='FTP.exe on Windows 7'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1ejZjmvGNJ4/Sju45RRtP6I/AAAAAAAAADU/uFPZvKoOagU/s72-c/FTP.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-3241594261055874676</id><published>2009-05-14T19:47:00.002+01:00</published><updated>2009-05-14T19:51:17.174+01:00</updated><title type='text'>Tweeting real time energy usage</title><content type='html'>I finally joined Twitter and promptly wrote a cool windows service that tweets the cost of electricity used in our buildings every half hour. See &lt;a href="http://twitter.com/alquistarj"&gt;http://twitter.com/alquistarj&lt;/a&gt; Could this be the most boring tweet of all time?&lt;br /&gt;&lt;br /&gt;Andrew&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-3241594261055874676?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/3241594261055874676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=3241594261055874676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/3241594261055874676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/3241594261055874676'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2009/05/tweeting-real-time-energy-usage.html' title='Tweeting real time energy usage'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-5963680956822872736</id><published>2008-12-02T14:44:00.003Z</published><updated>2008-12-02T14:57:15.950Z</updated><title type='text'>CRM 4.0 Get accountid from Customer Name (account name)</title><content type='html'>I could not find a c# web services example of how to get the accountid from an account given the name of the customer. Here is some c# code that can easily be adapted to search for other entities. In this example CrmService is my connection to the web service.&lt;br /&gt;&lt;br /&gt;Use it like this :-&lt;br /&gt;&lt;br /&gt;string accountid = GetAccountId("My Company Name");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private string GetAccountID (string customername)&lt;br /&gt;{&lt;br /&gt;string ret = "";&lt;br /&gt;&lt;br /&gt;// Query condition&lt;br /&gt;ConditionExpression condition = new ConditionExpression();&lt;br /&gt;condition.AttributeName = "name";&lt;br /&gt;condition.Operator = ConditionOperator.Equal;&lt;br /&gt;condition.Values = new object[1];&lt;br /&gt;condition.Values[0] = customername;&lt;br /&gt;&lt;br /&gt;// FilterExpression&lt;br /&gt;FilterExpression filterPrincipal = new FilterExpression();&lt;br /&gt;filterPrincipal.FilterOperator = LogicalOperator.And;&lt;br /&gt;filterPrincipal.Conditions = new ConditionExpression[] { condition };&lt;br /&gt;&lt;br /&gt;// Columns to return&lt;br /&gt;ColumnSet columns = new ColumnSet();&lt;br /&gt;columns.Attributes = new string[] { "accountid" };&lt;br /&gt;&lt;br /&gt;// Query Contact&lt;br /&gt;QueryExpression Query = new QueryExpression();&lt;br /&gt;Query.EntityName = EntityName.account.ToString();&lt;br /&gt;Query.ColumnSet = columns;&lt;br /&gt;Query.Criteria = filterPrincipal;&lt;br /&gt;&lt;br /&gt;// Get entities&lt;br /&gt;BusinessEntityCollection entities = (BusinessEntityCollection) CrmService.RetrieveMultiple (Query);&lt;br /&gt;foreach (BusinessEntity entity in entities.BusinessEntities)&lt;br /&gt;{&lt;br /&gt;account Account = entity as account;&lt;br /&gt;return Account.accountid.Value.ToString();&lt;br /&gt;}&lt;br /&gt;return "";&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-5963680956822872736?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/5963680956822872736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=5963680956822872736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/5963680956822872736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/5963680956822872736'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2008/12/crm-40-get-accountid-from-customer-name.html' title='CRM 4.0 Get accountid from Customer Name (account name)'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-5038580575616850454</id><published>2008-09-11T21:22:00.002+01:00</published><updated>2008-09-11T21:23:56.180+01:00</updated><title type='text'>Virtual PC 2007 Version numbers</title><content type='html'>Virtual PC 2007 = Version 6.0.156.0&lt;br /&gt;Virtual PC 2007 SP1 = Version 6.0.192.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-5038580575616850454?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/5038580575616850454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=5038580575616850454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/5038580575616850454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/5038580575616850454'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2008/09/virtual-pc-2007-version-numbers.html' title='Virtual PC 2007 Version numbers'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-8423924851744974040</id><published>2008-09-11T21:19:00.003+01:00</published><updated>2008-09-11T21:22:45.049+01:00</updated><title type='text'>SQL 2008 Error 5120</title><content type='html'>Today I was trying to attach some databases to SQL 2008 on a Vista machine but kept getting Error 5120. To avoid this problem you must start SQL Server Management Studio in Administrator mode. (right click the link, select Properties, click Advanced and enable "run as Administrator").&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-8423924851744974040?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/8423924851744974040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=8423924851744974040' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/8423924851744974040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/8423924851744974040'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2008/09/sql-2008-error-5120.html' title='SQL 2008 Error 5120'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-5479842649739271406</id><published>2008-09-11T21:15:00.002+01:00</published><updated>2008-09-11T21:19:15.486+01:00</updated><title type='text'>SMTP server in Windows Server 2008</title><content type='html'>&lt;div&gt;This took me a while to find today. If you install the SMTP server in Windows 2008 the management tool is in Internet Information Services (IIS) 6.0 Manager rather then in the new IIS7 tool.&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_1ejZjmvGNJ4/SMl9IPmxn0I/AAAAAAAAACE/MXqZ0MeXE-k/s1600-h/Capture.JPG"&gt;&lt;img style="CURSOR: hand" id="BLOGGER_PHOTO_ID_5244860821631246146" border="0" alt="" src="http://1.bp.blogspot.com/_1ejZjmvGNJ4/SMl9IPmxn0I/AAAAAAAAACE/MXqZ0MeXE-k/s400/Capture.JPG" /&gt;&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/21661688-5479842649739271406?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/5479842649739271406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=5479842649739271406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/5479842649739271406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/5479842649739271406'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2008/09/smtp-server-in-windows-server-2008.html' title='SMTP server in Windows Server 2008'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1ejZjmvGNJ4/SMl9IPmxn0I/AAAAAAAAACE/MXqZ0MeXE-k/s72-c/Capture.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-8826267226026586267</id><published>2008-09-02T09:11:00.002+01:00</published><updated>2008-09-02T09:14:57.900+01:00</updated><title type='text'>PopupControlExtender bug with buttons</title><content type='html'>There seems to be a bug in the Ajax Control Toolkit that generates a Javascript error when you click on a button inside a PopupControlExtender panel. I replaced the Button with a LinkButton and managed to get things working.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-8826267226026586267?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/8826267226026586267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=8826267226026586267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/8826267226026586267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/8826267226026586267'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2008/09/popupcontrolextender-bug-with-buttons.html' title='PopupControlExtender bug with buttons'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-4107680923190001100</id><published>2008-08-31T22:49:00.004+01:00</published><updated>2008-08-31T22:55:26.961+01:00</updated><title type='text'>IIS7 folder rights when uploading files</title><content type='html'>IIS7 seems to create a new Application Pool for each web site. The app pool uses the "NetworkService" identity by default (right click on the application pool and select Advanced Settings to see the details). You therefore need to allow "Network Service" (Note space) to have write permission to any folders where you want to save uploaded files into when using Anonymous or Forms authentication.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-4107680923190001100?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/4107680923190001100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=4107680923190001100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/4107680923190001100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/4107680923190001100'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2008/08/iis7-folder-rights-when-uploading-files.html' title='IIS7 folder rights when uploading files'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-6885556491073731540</id><published>2008-08-31T00:29:00.003+01:00</published><updated>2008-08-31T22:48:58.188+01:00</updated><title type='text'>IIS7 Membership provider</title><content type='html'>I've just installed Windows 2008 on one of my main web servers. I have an ASP.NET web site that uses the SQL Membership provider.&lt;br /&gt;&lt;br /&gt;Originally I had this in my web.config file :-&lt;br /&gt;&lt;br /&gt;&lt; defaultprovider="MyMembershipProvider"&gt;&lt;br /&gt;&lt;&gt;&lt;br /&gt;&lt; name="MyMembershipProvider" connectionstringname="MyMembershipConnectionString" type="System.Web.Security.SqlMembershipProvider" applicationname="MyAppName" enablepasswordretrieval="false" enablepasswordreset="true" requiresquestionandanswer="true" requiresuniqueemail="true" passwordformat="Hashed"&gt;&lt;br /&gt;&lt; /add &gt;&lt;br /&gt;&lt; /providers &gt;&lt;br /&gt;&lt; /membership &gt;&lt;br /&gt;&lt;br /&gt;But I discovered that this works as a membership provider but does not allow IIS Manager to display the users when the .NET Users button is clicked. If you replace the type attribute above with :-&lt;br /&gt;&lt;br /&gt;type="System.Web.Security.SqlMembershipProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"&lt;br /&gt;&lt;br /&gt;it works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-6885556491073731540?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/6885556491073731540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=6885556491073731540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/6885556491073731540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/6885556491073731540'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2008/08/iis7-membership-provider.html' title='IIS7 Membership provider'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-6742284177699714357</id><published>2008-08-27T21:22:00.004+01:00</published><updated>2008-08-27T21:35:18.766+01:00</updated><title type='text'>iPhone 3G - Useless</title><content type='html'>Today I took a trip by train from Cambridge to London with my new iPhone 3G. What a waste of time the iPhone is. The main problem seems to be getting any sort of reliable connectivity. The phone is constantly switching from GPRS to Edge to 3G to WiFi and each time it does this it seems to freeze for a few seconds. If this is twice as fast as the old iPhone I'm glad I never had one. It makes working with a 56K modem seem like fun. I suppose I was playing with the phone for an hour on the train but by 11:53 am the phone was flat! I'd only managed a couple of hours - Totally useless!!! I'm almost tempted to send it straight back. I can understand connectivity on the train being a problem but it's no better in central London. I'll wait and see if V2.1 is any better.&lt;br /&gt;&lt;br /&gt;It's also really annoying that the mail application cannot be rotated and where is the copy &amp; paste functionality? I understand copy &amp; paste is a security issue but surely it’s an essential feature.&lt;br /&gt;&lt;br /&gt;Overall : not at all impressed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-6742284177699714357?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/6742284177699714357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=6742284177699714357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/6742284177699714357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/6742284177699714357'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2008/08/iphone-3g-useless.html' title='iPhone 3G - Useless'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-2443462926646074730</id><published>2008-07-09T22:51:00.000+01:00</published><updated>2008-07-09T22:52:12.420+01:00</updated><title type='text'>Good quote...</title><content type='html'>If you are willing to satisfy people with good enough, you can make just about everybody happy. If you delight people and create change that lasts, you're going to offend those that hate change in all its forms. Your choice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-2443462926646074730?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/2443462926646074730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=2443462926646074730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/2443462926646074730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/2443462926646074730'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2008/07/good-quote.html' title='Good quote...'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-4201976290117171645</id><published>2008-06-12T11:06:00.001+01:00</published><updated>2008-06-12T22:13:07.135+01:00</updated><title type='text'>Adding OpenID to an existing ASP.NET application</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;[Updated 22:00 12 June 2008] To include improvements suggested by Andrew Arnott.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;In this post I'll describe the steps I took to add OpenID support to an existing ASP.NET app that used forms authentication. The application originally used the users email address as their username. The OpenID login process therefore needs to provide an email address to avoid having to rewrite loads of code. Not all OpenID providers allow email addresses to be sent so new users might have to partially re-register the first time they use their OpenID.&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Downloaded the latest DotNetOpenID zip file from http://dotnetopenid.googlecode.com/files/&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Unziped the package&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Copied and renamed login.aspx and login.cs from \Samples\RelyingPartyPortal to my project's root folder, renaming them loginOpenID.aspx and loginOpenID.cs. Changed codebehind attribute in loginOpenID.aspx from CodeBehind="login.aspx.cs" to CodeBehind="loginOpenID.aspx.cs". I then added a link named "Login with OpenID" on my original login.aspx page pointing to the new  loginOpenID.aspx page. I then changed some of the properties on the OpenIdLogin control as I wanted to ask the OpenID provider to supply the users FullName and Email address. Unfortunately some providers (eg Yahoo.com) do not allow the FullName &amp;amp; Email info to be sent so we'll have to deal with this in code later.&lt;br/&gt;&lt;br/&gt;&amp;lt;RP:OpenIdLogin ID="OpenIdLogin1"&lt;br/&gt;                 runat="server"&lt;br/&gt;                 RequestFullName="Require"&lt;br/&gt;                 RequestEmail="Require"&lt;br/&gt;                 RememberMeVisible="True"&lt;br/&gt;                 PolicyUrl="~/PrivacyPolicy.aspx"&lt;br/&gt;                 TabIndex="1"&lt;br/&gt;                 OnLoggedIn="OpenIdLogin1_LoggedIn"    &lt;br/&gt;                 OnCanceled="OpenIdLogin1_Canceled"&lt;br/&gt;                 OnFailed="OpenIdLogin1_Failed"&lt;br/&gt;                 OnSetupRequired="OpenIdLogin1_SetupRequired" RememberMe="True"&lt;br/&gt;                  /&amp;gt;&lt;br/&gt;&lt;br /&gt;				&lt;/li&gt;&lt;li&gt;Copied \Samples\RelyingPartyPortal\Code\state.cs to my project's App_Code folder&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Copied \Samples\RelyingPartyPortal\xrds.aspx to my project's root folder. Modified this file to point to my new loginOpenID.aspx page changing&lt;br/&gt;&lt;br/&gt;&amp;lt;URI&amp;gt;&amp;lt;%=new Uri(Request.Url, Response.ApplyAppPathModifier("~/login.aspx"))%&amp;gt;&amp;lt;/URI&amp;gt;&lt;br/&gt;&lt;br/&gt;to&lt;br/&gt;&lt;br/&gt;&amp;lt;URI&amp;gt;&amp;lt;%=new Uri(Request.Url, Response.ApplyAppPathModifier("~/loginopenid.aspx"))%&amp;gt;&amp;lt;/URI&amp;gt;&lt;br/&gt;&lt;br /&gt;				&lt;/li&gt;&lt;li&gt;Copied \Samples\RelyingPartyPortal\privacypolicy.aspx to my project's root folder. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;I added the following to default.aspx (the default document for this domain).&lt;br/&gt;&amp;lt;%@ Register Assembly="DotNetOpenId" Namespace="DotNetOpenId" TagPrefix="openid" %&amp;gt;&lt;br/&gt;&amp;lt;openid:XrdsPublisher runat="server" XrdsUrl="~/xrds.aspx" /&amp;gt;&lt;br/&gt;This was required to get myopenid.com accounts to work.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Added a reference to the DotNetOpenID.dll from the \Samples\RelyingPartyPortal\bin folder&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;I then added code to OpenIdLogin1_LoggedIn in loginOpenID.cs to ensure we have the user's real email address. If for whatever reason we cannot get their email address redirect them to the partially populated registration page.&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;protected void OpenIdLogin1_LoggedIn (object sender, OpenIdEventArgs e)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    State.ProfileFields = e.ProfileFields;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt;&lt;/p&gt;&lt;p&gt;    //    Setup linq connection to SQL database                        &lt;br /&gt;&lt;/p&gt;&lt;p&gt;    DataClassesDataContext db = new DataClassesDataContext(ConfigurationManager.ConnectionStrings["DB_RW"].ConnectionString);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    People people = null;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    //    See if user has logged on using OpenID before                &lt;br /&gt;&lt;/p&gt;&lt;p&gt;    try&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        people = (from c in db.Peoples&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                  where c.OpenID == e.ClaimedIdentifier.ToString()&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                  select c).Single();&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    catch&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    if (people == null)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        //    This is the first time this OpenID identity has been used    &lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (e.ProfileFields.Email == null)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            //    Force user to register as their OpenID provider did not send their email&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            //    address (eg Yahoo.com) and this app needs their real email address.        &lt;br /&gt;&lt;/p&gt;&lt;p&gt;            e.Cancel = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            Response.Redirect("RegisterNewAccount.aspx?mode=OpenID_NoEmailSupplied");&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            return;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        else&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            //    See if user has created an account already                &lt;br /&gt;&lt;/p&gt;&lt;p&gt;            try&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                people = (from c in db.Peoples&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                          where c.Email == e.ProfileFields.Email&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                          select c).Single();&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            catch&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                //    email address does not exist in our user table redirect user    &lt;br /&gt;&lt;/p&gt;&lt;p&gt;                //    to registration page.                                            &lt;br /&gt;&lt;/p&gt;&lt;p&gt;                e.Cancel = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                Response.Redirect("RegisterNewAccount.aspx?mode=OpenID_UnknownEmail");&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                return;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    if (people.Status.StartsWith("Reject T&amp;amp;C"))&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        e.Cancel = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        loginFailedLabel.Text = "Your account has been suspended because you have rejected our T&amp;amp;C's.";&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        loginFailedLabel.Visible = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        return;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    if (people.Status != "Verified")&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        e.Cancel = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        loginFailedLabel.Text = "Your account has not been verified yet. Check your email for further instructions.";&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        loginFailedLabel.Visible = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        return;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    //    Remember OpenID identity for next time            &lt;br /&gt;&lt;/p&gt;&lt;p style='margin-left: 18pt'&gt;people.OpenID = e.ClaimedIdentifier.ToString();&lt;br/&gt;people.LoginCount = (people.LoginCount ?? 0) + 1;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    db.SubmitChanges();&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    //    I set some other Session variables here&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Session["UserEmail"] = people.Email;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;//    The openID code will now redirect to the requesting page    &lt;br /&gt;&lt;/p&gt;&lt;p&gt;//    and set context.user.identity.name to the OpenID identity    &lt;br /&gt;&lt;/p&gt;&lt;p&gt;//    eg http://andrew.jones.myopemid.com                             &lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;br/&gt;&lt;br /&gt;					&lt;/p&gt;&lt;/li&gt;&lt;li&gt;The RegisterNewAccount.aspx pre-populates as much information as it can. Any additional user information sent by the OpenID provider is available in State.ProfileFields.&lt;/li&gt;&lt;/ol&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-4201976290117171645?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/4201976290117171645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=4201976290117171645' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/4201976290117171645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/4201976290117171645'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2008/06/adding-openid-to-existing-aspnet.html' title='Adding OpenID to an existing ASP.NET application'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-4518492272718602991</id><published>2008-06-05T16:23:00.003+01:00</published><updated>2008-06-05T16:48:47.836+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Add'/><title type='text'>DataGridViewRow SelectedRows selection order</title><content type='html'>When you use SelectedRows to get the selected rows from a DataGridView the order of items is dependent on the order they were selected. If you start at the top and select down the item list will be reversed. Selecting from the bottom row up is OK. Selecting random rows with CTRL pressed will leave the most recent item at the start of the list. The list therefore needs to be sorted based on the DataGridViewRow.Index property.&lt;br /&gt;&lt;br /&gt;Here is a function to sort the list&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt; color: black;&lt;br /&gt; font-family: Consolas, "Courier New", Courier, Monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="rem"&gt;//    Create a generics list to hold selected rows so it can be sorted later&lt;/span&gt;&lt;br /&gt;List&amp;lt;DataGridViewRow&amp;gt; SelectedRows = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;DataGridViewRow&amp;gt;();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; (DataGridViewRow dgvr &lt;span class="kwrd"&gt;in&lt;/span&gt; yourDataGridViewControl.SelectedRows)&lt;br /&gt;    SelectedRows.Add(dgvr);&lt;br /&gt;    &lt;br /&gt;&lt;span class="rem"&gt;//    Sort list based on DataGridViewRow.Index    &lt;/span&gt;&lt;br /&gt;SelectedRows.Sort (DataGridViewRowIndexCompare);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; DataGridViewRowIndexCompare (DataGridViewRow x, DataGridViewRow y)&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (x == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;    {&lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (y == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;        &lt;span class="rem"&gt;// If x is null and y is null, they're&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;// equal. &lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; 0;&lt;br /&gt;        }&lt;br /&gt;    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;        {&lt;br /&gt;        &lt;span class="rem"&gt;// If x is null and y is not null, y&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;// is greater. &lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; -1;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;    &lt;span class="rem"&gt;// If x is not null...&lt;/span&gt;&lt;br /&gt;    &lt;span class="rem"&gt;//&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (y == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;    &lt;span class="rem"&gt;// ...and y is null, x is greater.&lt;/span&gt;&lt;br /&gt;        {&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; 1;&lt;br /&gt;        }&lt;br /&gt;    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;        {&lt;br /&gt;        &lt;span class="rem"&gt;// ...and y is not null, compare the &lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;// lengths of the two strings.&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;//&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;int&lt;/span&gt; retval = x.Index.CompareTo (y.Index);&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (retval != 0)&lt;br /&gt;            {&lt;br /&gt;            &lt;span class="rem"&gt;// If the strings are not of equal length,&lt;/span&gt;&lt;br /&gt;            &lt;span class="rem"&gt;// the longer string is greater.&lt;/span&gt;&lt;br /&gt;            &lt;span class="rem"&gt;//&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; retval;&lt;br /&gt;            }&lt;br /&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;            &lt;span class="rem"&gt;// If the strings are of equal length,&lt;/span&gt;&lt;br /&gt;            &lt;span class="rem"&gt;// sort them with ordinary string comparison.&lt;/span&gt;&lt;br /&gt;            &lt;span class="rem"&gt;//&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; x.Index.CompareTo(y.Index);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-4518492272718602991?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/4518492272718602991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=4518492272718602991' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/4518492272718602991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/4518492272718602991'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2008/06/datagridviewrow-selectedrows-selection.html' title='DataGridViewRow SelectedRows selection order'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-8518902970160588915</id><published>2008-06-02T12:40:00.002+01:00</published><updated>2008-06-02T12:45:03.298+01:00</updated><title type='text'>TCP/IP Fundamentals</title><content type='html'>Microsoft have released a very useful (free) PDF book describing in details TCP/IP.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://download.microsoft.com/download/9/4/6/946958ef-7b86-4ddc-bfdb-c7ed2af4ce51/TCPIP_Fund.pdf"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-8518902970160588915?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/8518902970160588915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=8518902970160588915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/8518902970160588915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/8518902970160588915'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2008/06/tcpip-fundamentals.html' title='TCP/IP Fundamentals'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-8641469898769737704</id><published>2008-05-09T17:29:00.001+01:00</published><updated>2008-05-09T17:31:19.378+01:00</updated><title type='text'>LinkedIn BICSI RCDD group</title><content type='html'>I've just created a BICSI RCDD group on LinkedIn. If you are a BICSI RCDD click on the link below to join :-&lt;br /&gt;&lt;br /&gt;http://www.linkedin.com/e/gis/101866/2861405DDA38&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-8641469898769737704?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/8641469898769737704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=8641469898769737704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/8641469898769737704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/8641469898769737704'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2008/05/linkedin-bicsi-rcdd-group.html' title='LinkedIn BICSI RCDD group'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-8892163476498681149</id><published>2008-02-19T23:15:00.009Z</published><updated>2008-02-20T00:31:56.999Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF C# TextBox'/><title type='text'>WPF Limit number of lines in multi line TextBox</title><content type='html'>WPF TextBox controls do not have a property to limit the number of lines of text that can be entered into a control. Here is a bit of C# to provide the functionality&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;XAML&lt;/strong&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBox&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="138"&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="textBox_DeliverFrom"&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="257"&lt;/span&gt; &lt;span class="attr"&gt;AcceptsReturn&lt;/span&gt;&lt;span class="kwrd"&gt;="True"&lt;/span&gt; &lt;span class="attr"&gt;PreviewKeyDown&lt;/span&gt;&lt;span class="kwrd"&gt;="textBox_DeliverFrom_PreviewKeyDown"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; textBox_DeliverFrom_PreviewKeyDown (&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, KeyEventArgs e)&lt;br /&gt;    {&lt;br /&gt;    &lt;span class="rem"&gt;//    Do not allow more than 8 Lines    &lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (e.Key == Key.Enter)&lt;br /&gt;        {&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (textBox_DeliverFrom.LineCount &amp;gt; 7)&lt;br /&gt;            e.Handled = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;&lt;br /&gt;One needs to add a PreviewKeyDown handler and ignore then Enter key if the control has reached the required limit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-8892163476498681149?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/8892163476498681149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=8892163476498681149' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/8892163476498681149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/8892163476498681149'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2008/02/wpf-limit-number-of-lines-in-multi-line.html' title='WPF Limit number of lines in multi line TextBox'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-1874093577832428288</id><published>2007-11-06T21:54:00.001Z</published><updated>2007-11-06T22:45:17.413Z</updated><title type='text'>Installing msi on Vista without UAC prompts</title><content type='html'>I've been using VS2005 to create an .msi to install on Vista without UAC prompts. The installer is fairly simple and there is no real reason for a UAC prompt as the files are not being installed to any system folders however msi files always UAC prompt on Vista unless specifically told not to.&lt;br /&gt;&lt;br /&gt;Msiinfo.exe allows you to modify a msi file. In the example below I'm setting a flag to indicate that the msi file does not need to UAC prompt. This flag is only read when the file is installed on Vista.&lt;br /&gt;&lt;br /&gt;I've added the following PostBuildEvents to the VS2005 Deployment project.&lt;br /&gt;&lt;br /&gt;rem ----------------------------------------------------------&lt;br /&gt;rem First set flag to indicate no UAC on Vista&lt;br /&gt;rem ----------------------------------------------------------&lt;br /&gt;"C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin\msiinfo" "$(BuiltOuputPath)" -w 10&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;rem ----------------------------------------------------------&lt;br /&gt;rem Code sign the msi file&lt;br /&gt;rem ----------------------------------------------------------&lt;br /&gt;"C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin\signtool.exe" sign /f "$(ProjectDir)&lt;em&gt;CodeSignKey.pfx&lt;/em&gt;" /p &lt;em&gt;mypassword&lt;/em&gt; /d "&lt;em&gt;Product Name&lt;/em&gt;" /du "&lt;a href="http://www.producturl/"&gt;&lt;em&gt;http://www.productURL&lt;/em&gt;&lt;/a&gt;" /t "&lt;a href="http://timestamp.comodoca.com/authenticode"&gt;&lt;em&gt;http://timestamp.comodoca.com/authenticode&lt;/em&gt;&lt;/a&gt;" "$(BuiltOuputPath)"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;rem ----------------------------------------------------------&lt;br /&gt;rem Code sign the setup.exe file&lt;br /&gt;rem ----------------------------------------------------------&lt;br /&gt;"C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin\signtool.exe" sign /f "$(ProjectDir)&lt;em&gt;CodeSignKey.pfx&lt;/em&gt;" /p &lt;em&gt;mypassword&lt;/em&gt; /d "&lt;em&gt;Product Name&lt;/em&gt;" /du "&lt;a href="http://www.producturl/"&gt;&lt;em&gt;http://www.productURL&lt;/em&gt;&lt;/a&gt;" /t "&lt;a href="http://timestamp.comodoca.com/authenticode"&gt;&lt;em&gt;http://timestamp.comodoca.com/authenticode&lt;/em&gt;&lt;/a&gt;" "setup.exe"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;msiinfo.exe&lt;/strong&gt; is available in the &lt;a onclick="javascript:Track('ctl00_LibFrame_ctl01ctl00_LibFrame_ctl23',this);" href="http://msdn2.microsoft.com/en-us/library/aa370834.aspx"&gt;Windows SDK Components for Windows Installer Developers&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;signtool.exe&lt;/strong&gt; is available in the Microsoft Visual Studio 2005/.NET Framework 2.0&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CodeSignKey.pfx&lt;/strong&gt; is a code signing certificate. I bought mine from &lt;a href="http://www.instantssl.com/code-signing/code-signing.html"&gt;http://www.instantssl.com/code-signing/code-signing.html&lt;/a&gt;. This file must be manually exported from Internet Explorer 7 if you used Vista to purchase a code signing certificate. In this example i've put the pfx file in the same folder as the project .vdproj file.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;mypassword&lt;/strong&gt; is the password used when exporting the CodeSignKey.pfx from Internet Explorer. When you buy a code signing certificate using Vista it gets automatically installed into your Personal Certificates store in Internet Explorer. This article describes how to export this certificate so it can be used by SignTool. &lt;a href="http://www.tech-pro.net/export-to-pfx.html"&gt;http://www.tech-pro.net/export-to-pfx.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;product name&lt;/strong&gt; is the name of your installer. This is displayed along with the company name when you execute setup.exe&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.producturl/"&gt;&lt;strong&gt;http://www.productURL&lt;/strong&gt;&lt;/a&gt; is a url that can be used to get more info on the product&lt;br /&gt;&lt;br /&gt;&lt;a href="http://timestamp.comodoca.com/authenticode"&gt;&lt;strong&gt;http://timestamp.comodoca.com/authenticode&lt;/strong&gt;&lt;/a&gt; is the url of the Comodo time server. Certificates are valid for one year so it's important to time stamp the file when it is created. This allows the file to be protected for ever. If the file was not time stamped it would stop running when the certificate expired.&lt;br /&gt;&lt;br /&gt;When installing on Vista launch the .msi file without using setup.exe. Any program called setup.exe automatically UAC prompts on Vista wiping out all the good work above.&lt;br /&gt;&lt;br /&gt;Once you have done all this you can launch the msi file and not have to worry about it UAC prompting. In a corporate enviromnent it is a real pain to have to enter an admin password whenever someone wants to install a program. Preventing UAC when it is not required makes the process much easier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-1874093577832428288?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/1874093577832428288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=1874093577832428288' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/1874093577832428288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/1874093577832428288'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2007/11/installing-msi-on-vista-without-uac.html' title='Installing msi on Vista without UAC prompts'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-292132648292810829</id><published>2007-10-14T21:14:00.001+01:00</published><updated>2007-10-14T21:14:23.568+01:00</updated><title type='text'>Vista start-up crash solved</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;&lt;span style='font-family:Georgia; font-size:12pt'&gt;Ever since I installed Vista on my Sony VGN-AR21S it has randomly crashed about every third re-boot. Task Manager would show the 'system' process using 98-100% processor utilisation. After about 10 minutes all 2Gb of memory would get used up and Vista would crash with a BSOD, typically a kernel in page error. I partially solved this problem by hibernating rather than shutting down the machine. I think I have now solved the problem.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Georgia; font-size:12pt'&gt;I downloaded the excellent Sysinternals Process Monitor (http://www.microsoft.com/technet/sysinternals/default.mspx) which provides a full display of the individual executables running as part of the system process. Process Monitor showed that ndis.sys!NdisInitializeWrapper was consuming all the processor time and memory. This information indicated a network driver problem.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Georgia; font-size:12pt'&gt;The machine has an Intel Pro 100/VE Ethernet card and an Intel Wireless 3945ABG Wi-Fi card. I downloaded the latest network drivers from the Intel web site and installed them. I then used device manager to delete both network devices. Device manager then re-detected both network cards. Having done this the machine appears to start-up without any problems.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Georgia; font-size:12pt'&gt;It's really annoying that neither the Microsoft nor Sony update sites offer these new network drivers. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-292132648292810829?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/292132648292810829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=292132648292810829' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/292132648292810829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/292132648292810829'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2007/10/vista-start-up-crash-solved.html' title='Vista start-up crash solved'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-1018023861433349540</id><published>2007-08-22T16:08:00.000+01:00</published><updated>2007-08-22T16:16:06.637+01:00</updated><title type='text'>3Com V3000 ATA Ringing on UK Phones</title><content type='html'>I've been configuring a 3Com V3000 VOIP PABX. If you want to connect a UK spec phone you need to ensure you use a "&lt;strong&gt;PSTN full master"&lt;/strong&gt;. "PABX Masters" or "Secondary adapters" will not allow the phone to ring.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_1ejZjmvGNJ4/RsxSBs_-LjI/AAAAAAAAAA8/HKVP3TFdz0Q/s1600-h/UK+Full+Master.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5101542667116752434" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_1ejZjmvGNJ4/RsxSBs_-LjI/AAAAAAAAAA8/HKVP3TFdz0Q/s400/UK+Full+Master.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A UK PSTN Full Master contains a capacitor, resistor and spark suppressor. If you use anything other than a PSTN Master you can use the phone to make calls but it will not ring.&lt;br /&gt;&lt;br /&gt;There are many different PSTN Masters available with different pinouts. I have sucessfully tested the following Krone part:-&lt;br /&gt;&lt;br /&gt;Krone P/N : 6536/1/601/11&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-1018023861433349540?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/1018023861433349540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=1018023861433349540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/1018023861433349540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/1018023861433349540'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2007/08/3com-v3000-ata-ringing-on-uk-phones.html' title='3Com V3000 ATA Ringing on UK Phones'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1ejZjmvGNJ4/RsxSBs_-LjI/AAAAAAAAAA8/HKVP3TFdz0Q/s72-c/UK+Full+Master.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-2050725674239150924</id><published>2007-08-22T13:50:00.000+01:00</published><updated>2007-08-22T13:53:31.538+01:00</updated><title type='text'>3Com 4500 default admin password</title><content type='html'>I have been configuring a 3Com 3CR17571-91 POW switch this week. Again the default password is not listed in the manuals. The admin username is : admin and the default password is blank. Hope that saves you some time if you are setting up one of these.&lt;br /&gt;&lt;br /&gt;So far I'm not impressed with the quality of documentation from 3Com.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-2050725674239150924?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/2050725674239150924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=2050725674239150924' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/2050725674239150924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/2050725674239150924'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2007/08/3com-4500-default-admin-password.html' title='3Com 4500 default admin password'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-1589555442444897051</id><published>2007-08-22T13:49:00.001+01:00</published><updated>2007-08-22T13:50:15.976+01:00</updated><title type='text'>3Com V3000 BRI Admin password</title><content type='html'>I could not find this anywhere in the 3Com manuals. The default admin password for a 3Com V3000 is :-&lt;br /&gt;&lt;br /&gt;0000&lt;br /&gt;&lt;br /&gt;(tha's 4 zeros)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-1589555442444897051?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/1589555442444897051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=1589555442444897051' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/1589555442444897051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/1589555442444897051'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2007/08/3com-v3000-bri-admin-password.html' title='3Com V3000 BRI Admin password'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-6034194550822422010</id><published>2007-08-22T12:58:00.001+01:00</published><updated>2007-08-22T16:08:40.336+01:00</updated><title type='text'>3Com V3000 ATA to UK Phones</title><content type='html'>I've been configuring a 3Com V3000BRI PABX this week and have had some difficulty connecting the ATA ports to UK phones. First it's inportant to understand that UK approved phones use different pins to USA phones. This means you cannot connect a UK phone to a 3Com ATA using a RJ11 straight through lead. The diagram above shows how UK approved phones and UK phone cords work.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_1ejZjmvGNJ4/RswlGM_-LfI/AAAAAAAAAAc/nUboBwdRUoI/s1600-h/UK+Line+Cords.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5101493266402913778" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_1ejZjmvGNJ4/RswlGM_-LfI/AAAAAAAAAAc/nUboBwdRUoI/s400/UK+Line+Cords.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;If you want to connect a UK approved Telephone to an item of USA equipment you need to make a RJ11 lead like this:-&lt;/p&gt;&lt;a href="http://1.bp.blogspot.com/_1ejZjmvGNJ4/RswoWM_-LgI/AAAAAAAAAAk/5-OGdLnoVPo/s1600-h/UK-USA+Line+Cord.png"&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_1ejZjmvGNJ4/RswqGM_-LhI/AAAAAAAAAAs/AeiQs0CY7S4/s1600-h/UK-USA+Line+Cord.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5101498763961052690" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_1ejZjmvGNJ4/RswqGM_-LhI/AAAAAAAAAAs/AeiQs0CY7S4/s400/UK-USA+Line+Cord.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Here is the full end to end pinout&lt;/p&gt;&lt;a href="http://4.bp.blogspot.com/_1ejZjmvGNJ4/RswtW8_-LiI/AAAAAAAAAA0/SOU_D9j-Q2I/s1600-h/uk+TO+usa+END+TO+END.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5101502350258744866" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_1ejZjmvGNJ4/RswtW8_-LiI/AAAAAAAAAA0/SOU_D9j-Q2I/s400/uk+TO+usa+END+TO+END.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;It's really annoying that the 3Com documentation does not show the pinouts of the ATA RJ11 sockets.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-6034194550822422010?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/6034194550822422010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=6034194550822422010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/6034194550822422010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/6034194550822422010'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2007/08/uk-telephone-line-cords.html' title='3Com V3000 ATA to UK Phones'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1ejZjmvGNJ4/RswlGM_-LfI/AAAAAAAAAAc/nUboBwdRUoI/s72-c/UK+Line+Cords.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-3381104443434816450</id><published>2007-04-30T10:51:00.000+01:00</published><updated>2007-04-30T11:00:52.052+01:00</updated><title type='text'>Attaching databases to different Sql Servers</title><content type='html'>I often attach a SQL database created on my development machine to a production SQL server. When you do this you need to re-create the sql login accounts (SQL Server Management Studio -&gt; Security -&gt; Logins -&gt; New Login...) on the target server and then run the following command to map the two accounts back together.&lt;br /&gt;&lt;br /&gt;Open a query window from the attached database and run this command replacing DatabaseUsername and ServerUsername with your own values.&lt;br /&gt;&lt;br /&gt;EXEC sp_change_users_login 'Update_One', 'DatabaseUsername', 'ServerUsername';&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-3381104443434816450?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/3381104443434816450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=3381104443434816450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/3381104443434816450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/3381104443434816450'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2007/04/attaching-databases-to-different-sql.html' title='Attaching databases to different Sql Servers'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-6191732903508733315</id><published>2007-03-21T16:03:00.000Z</published><updated>2007-03-21T16:38:22.191Z</updated><title type='text'>VSTO 2005 SE Publish Wizard</title><content type='html'>Warning : If you use the VSTS 2005 SE Publish Wizard it creates a set of files that cannot be moved from the published folder.&lt;br /&gt;&lt;br /&gt;An easier way of deploying your Excel application to a small number of clients is to compile and then copy the *.xls and *.dll file from your application bin\release folder to a location on your network or client pc.&lt;br /&gt;&lt;br /&gt;You then need to setup a .NET 2.0 trust for the folder containing your files. I prefer to use the graphical UI tool to do this. In order to get the "Microsoft .NET Framework 2.0 Configuration" tool in Control Panel-&gt;Admin Tools you need to install the .NET 2.0 SDK. Get it here &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=FE6F2099-B7B4-4F47-A244-C96D69C35DEC&amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=FE6F2099-B7B4-4F47-A244-C96D69C35DEC&amp;amp;displaylang=en&lt;/a&gt; 340Mb just to get one tool...ouch! When you install this you only need the tools, don't install the samples or documentation.&lt;br /&gt;&lt;br /&gt;Once you have installed the SDK you can open "Microsoft .NET Framework 2.0 Configuration" from Control Panel-&gt;Admin tools to setup a trust for the folder holding your files. Open "Microsoft .NET Framework 2.0 Configuration" and expand my Computer -&gt; Runtime Security Policy -&gt; Machine -&gt; Code Groups -&gt; All_Code -&gt; My_Computer_Zone, right click on My_Computer_Zone and select "New...". Name the item and press Next, change the Membership condition to URL and enter the path to your folder in this format:-&lt;br /&gt;&lt;br /&gt;&lt;a href="file://c:/FolderName/"&gt;file://c:\FolderName\&lt;/a&gt;*&lt;br /&gt;&lt;br /&gt;The "file://" is required as a prefix. "\*" is required at the end so the entire folder is trusted. Then on the Permission Set tab change to FullTrust. This sets up trust to allow anything in the c:\FolderName folder to execute. You may want to setup a more restrictive permission set. You may also want to uninstall the SDK once you have setup the trust. You can also use a command line tool to setup these trusts but I could not work out how to use it as you cannot see what it has changed.&lt;br /&gt;&lt;br /&gt;If you are installing the files on a network folder you need to use LocalIntranet_Zone rather than My_Computer_Zone.&lt;br /&gt;&lt;br /&gt;In order to change these settings you need local admin rights on the client pc.&lt;br /&gt;&lt;br /&gt;Before you can install a VSTO SE App you need the following :-&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Office 2003 Professional &lt;/strong&gt;&lt;br /&gt;SP2 is not required but well worth installing anyway&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Microsoft .NET Framework 2.0 &lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Microsoft .NET Framework 2.0 SDK&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=FE6F2099-B7B4-4F47-A244-C96D69C35DEC&amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=FE6F2099-B7B4-4F47-A244-C96D69C35DEC&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Office 2003 Primary Interop Assemblies&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=3c9a983a-ac14-4125-8ba0-d36d67e0f4ad&amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=3c9a983a-ac14-4125-8ba0-d36d67e0f4ad&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;VSTO 2005 SE runtime&lt;br /&gt;&lt;/strong&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f5539a90-dc41-4792-8ef8-f4de62ff1e81&amp;DisplayLang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=f5539a90-dc41-4792-8ef8-f4de62ff1e81&amp;amp;DisplayLang=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Install in the order shown above.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-6191732903508733315?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/6191732903508733315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=6191732903508733315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/6191732903508733315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/6191732903508733315'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2007/03/vsto-2005-se-publish-wizard.html' title='VSTO 2005 SE Publish Wizard'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-280629294896461674</id><published>2007-03-15T14:46:00.000Z</published><updated>2007-03-15T14:55:54.416Z</updated><title type='text'>VSTO SE only works with Office 2003 Professional</title><content type='html'>I think I have finally established that VSTO SE only works with Office 2003 Professional (or any version of Office 2007) when using &lt;strong&gt;document &lt;/strong&gt;level applications, Office 2003 Standard is not supported. Apparently you can install &lt;strong&gt;application&lt;/strong&gt; level apps on Office 2003 Standard (although I have not tested this).&lt;br /&gt;&lt;br /&gt;This Microsoft document &lt;a href="http://msdn2.microsoft.com/en-us/library//2ac08ee2(vs.80).aspx"&gt;http://msdn2.microsoft.com/en-us/library//2ac08ee2(vs.80).aspx&lt;/a&gt; which indicates that VSTO SE will install on Office 2003 Standard is therefore wrong, or at best incomplete, as in fact only application level apps are supported on Office 2003 Standard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-280629294896461674?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/280629294896461674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=280629294896461674' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/280629294896461674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/280629294896461674'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2007/03/vsto-se-only-works-with-office-2003.html' title='VSTO SE only works with Office 2003 Professional'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-4158679513009528773</id><published>2007-03-14T22:35:00.000Z</published><updated>2007-03-15T11:28:14.961Z</updated><title type='text'>Deploying VSTO SE Excel applications</title><content type='html'>I've had real trouble attempting to deploy an Excel VSTO SE app today. I cannot believe how difficult they have made this. It's dead easy to write the application using Visual Studio 2005 but the deployment is an absolute nightmare.&lt;br /&gt;&lt;br /&gt;I've eventually found a solution. Starting from an empty XP SP2 machine do this and it should work. I'm sure it's not the most secure configuration but at least it works.&lt;br /&gt;&lt;br /&gt;1) Install .NET 2.0&lt;br /&gt;2) Install .NET 2.0 SDK (Tools only, no need for samples or docs)&lt;br /&gt;This is required so you get the .NET Framework 2.0 Configuration tool in control panel -&gt; admin tools. Unfortunately it's no longer distributed as part of the framework as it was in V1.1.&lt;br /&gt;3) Install Excel Professional 2003, use advanced customization and add under Excel ".NET Programability support" to be installed to disk&lt;br /&gt;4) Install Office SP2&lt;br /&gt;5) Install VSTO SE Runtime&lt;br /&gt;&lt;br /&gt;Use the .NET Framework 2.0 Configuration tool and right click on My Computer-&gt; Runtime Security Policy-&gt; Machine-&gt; All_Code-&gt; LocalIntranet_Zone and select "New...".&lt;br /&gt;&lt;br /&gt;On the first tab enter any name for your app.&lt;br /&gt;On the second tab set the membership condition to be URL and enter the folder containing your published files followed by \* (eg &lt;a href="file:////MyServer/my"&gt;file:////MyServer/my&lt;/a&gt; excel app\*).&lt;br /&gt;On the third tab change Permission Set to Full Trust.&lt;br /&gt;&lt;br /&gt;Once you have done this you should be able to open the Excel spreadsheet from the published location.&lt;br /&gt;&lt;br /&gt;This assumes you have used the Publish Wizard in VS2005 to create the application folder which contains the .xls and .dll files together with the associated manifests and config files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-4158679513009528773?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/4158679513009528773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=4158679513009528773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/4158679513009528773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/4158679513009528773'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2007/03/deploying-vsto-se-excel-applications.html' title='Deploying VSTO SE Excel applications'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-4398970313760741774</id><published>2007-03-09T16:14:00.000Z</published><updated>2007-03-11T20:56:34.080Z</updated><title type='text'>www.vodafone.net does not work with IE7 or FF2</title><content type='html'>Today I discovered that &lt;a href="http://www.vodafone.net"&gt;www.vodafone.net&lt;/a&gt; does not work with IE7 on Vista or FF2. It works OK in IE6. This is because the site uses 40 bit MD5 encryption which (along with 56 bit) has been discontinued in IE7 and FF2 because it is too insecure.&lt;br /&gt;&lt;br /&gt;If you want to access the site you can use Firefox 2 and type &lt;strong&gt;about:config&lt;/strong&gt; into the location bar and press enter. Find the setting security.ssl3.rsa_rc2_40_md5 and double-click on it to change its value to true.&lt;br /&gt;&lt;br /&gt;I cannot find a solution for IE7 from the client end. Vodafone simply need to replace the totally insecure 40 bit encryption on their servers.&lt;br /&gt;&lt;br /&gt;I cannot believe that Vodafone can run a 'secure' site that relies on obsolete 40 bit encryption.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-4398970313760741774?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/4398970313760741774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=4398970313760741774' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/4398970313760741774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/4398970313760741774'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2007/03/wwwvodafonenet-does-not-work-with-ie7.html' title='www.vodafone.net does not work with IE7 or FF2'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-6181580593604144448</id><published>2007-03-08T21:30:00.000Z</published><updated>2007-03-08T21:36:56.531Z</updated><title type='text'>Sony W880i</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_1ejZjmvGNJ4/RfCAtSXYkKI/AAAAAAAAAAM/R5FunVvAWA8/s1600-h/w880i.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5039669498539970722" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_1ejZjmvGNJ4/RfCAtSXYkKI/AAAAAAAAAAM/R5FunVvAWA8/s320/w880i.jpg" border="0" /&gt;&lt;/a&gt;I upgraded my phone to a Sony Ericsson W880i this week. It's a cool phone. The only thing it could do with is WiFi. Unfortunately  I cannot get any 3G coverage so I cannot make any video calls.&lt;br /&gt;&lt;br /&gt;Another problem is the lack of Vista support. The PC Sync software will only install in XP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-6181580593604144448?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/6181580593604144448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=6181580593604144448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/6181580593604144448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/6181580593604144448'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2007/03/sony-w880i.html' title='Sony W880i'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1ejZjmvGNJ4/RfCAtSXYkKI/AAAAAAAAAAM/R5FunVvAWA8/s72-c/w880i.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-8834586962038462057</id><published>2007-02-21T15:59:00.000Z</published><updated>2007-02-21T16:01:55.487Z</updated><title type='text'>SQL 2005 Dump Transaction Log</title><content type='html'>I always forget how to dump a transaction log on SQL server. Here is the answer:-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BACKUP LOG {DatabaseName} WITH NO_LOG&lt;br /&gt;GO&lt;br /&gt;DBCC SHRINKDATABASE ({DatabaseName}, 0)&lt;br /&gt;GO&lt;br /&gt;DBCC SQLPERF(logspace)&lt;br /&gt;GO&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-8834586962038462057?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/8834586962038462057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=8834586962038462057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/8834586962038462057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/8834586962038462057'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2007/02/sql-2005-dump-transaction-log.html' title='SQL 2005 Dump Transaction Log'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-116618228307743129</id><published>2006-12-15T11:28:00.000Z</published><updated>2006-12-15T11:33:33.010Z</updated><title type='text'>Fluke DTX 1200 &amp; DTX 1800 not on Vista</title><content type='html'>&lt;a href="http://photos1.blogger.com/x/blogger/1390/2194/1600/790260/dtx.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://photos1.blogger.com/x/blogger/1390/2194/320/388288/dtx.jpg" border="0" /&gt;&lt;/a&gt;I was trying to download some test results from a Fluke DTX 1200 and 1800 yesterday but discovered that the Fluke USB drivers do not work on Vista. &lt;p&gt;Fluke tech support have no idea when drivers will be available.&lt;/p&gt;&lt;p&gt;In addition the help system in LinkWare 2.6 is based on WinHlp32.exe and this is not available in Vista so you cannot view the help file.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-116618228307743129?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/116618228307743129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=116618228307743129' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116618228307743129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116618228307743129'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/12/fluke-dtx-1200-dtx-1800-not-on-vista.html' title='Fluke DTX 1200 &amp; DTX 1800 not on Vista'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-116595474897051256</id><published>2006-12-12T20:07:00.000Z</published><updated>2006-12-12T20:19:08.993Z</updated><title type='text'>Create .lnk file in C#</title><content type='html'>Here is some C# code to create a shortcut to a folder. These are actually .lnk files which are handled in a special way by Windows Explorer.&lt;br /&gt;&lt;br /&gt;First include a reference to &lt;strong&gt;C:\Windows\System32\wshom.ocx&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Second, include the following using statement :-&lt;br /&gt;&lt;div style="BACKGROUND: white;font-family:Consolas;font-size:10pt;color:black;"   &gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; IWshRuntimeLibrary;&lt;br /&gt;&lt;br /&gt;Third, Here is the code :-&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div style="BACKGROUND: white;font-family:Consolas;font-size:10pt;color:black;"   &gt;&lt;br /&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="BACKGROUND: #c7f5c8;color:blue;" &gt;//    This creates a Folder Shortcut    &lt;/span&gt;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;&lt;span style="color:#2b91af;"&gt;IWshShell&lt;/span&gt; wsh = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;WshShellClass&lt;/span&gt;();&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;IWshShortcut&lt;/span&gt; shortcut = (&lt;span style="color:#2b91af;"&gt;IWshShortcut&lt;/span&gt;) wsh.CreateShortcut (shortcutpathfilename);&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;shortcut.TargetPath = targetdir;&lt;br /&gt;&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;shortcut.Save();&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;shortcutpathfilename is a path &amp; filename of the .lnk file.&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt;targetdir is the directory the link points to.&lt;/p&gt;&lt;p style="MARGIN: 0px"&gt; &lt;/p&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/21661688-116595474897051256?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/116595474897051256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=116595474897051256' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116595474897051256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116595474897051256'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/12/create-lnk-file-in-c.html' title='Create .lnk file in C#'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-116489885836538140</id><published>2006-11-30T14:58:00.000Z</published><updated>2006-11-30T15:00:58.376Z</updated><title type='text'>Code needed to dynamically write a .PNG from ASP.NET</title><content type='html'>For some strange reason you need to use the following code to dynamically output Jpeg's from an ASP.NET page.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Bitmap bitmap = new Bitmap (Path.Combine (dir , "link-notfound.png"));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;bitmap.Save (Response.OutputStream, ImageFormat.Jpeg);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But a &gt;PNG requires the following code :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Bitmap bitmap = new Bitmap (Path.Combine (dir , "link-notfound.png"));&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;// This is the code required to send a PNG file. I'm not&lt;br /&gt;// sure why it differs from the much simpler JPEG code&lt;br /&gt;// bitmap.Save (Response.OutputStream, ImageFormat.Jpeg);&lt;br /&gt;MemoryStream tempST = new MemoryStream();&lt;br /&gt;bitmap.Save (tempST, ImageFormat.Png);&lt;br /&gt;Response.ClearContent();&lt;br /&gt;Response.ContentType = "image/png";&lt;br /&gt;Response.BinaryWrite (tempST.ToArray());&lt;br /&gt;Response.End();&lt;br /&gt;}&lt;br /&gt;catch&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;bitmap.Dispose();&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-116489885836538140?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/116489885836538140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=116489885836538140' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116489885836538140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116489885836538140'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/11/code-needed-to-dynamically-write-png.html' title='Code needed to dynamically write a .PNG from ASP.NET'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-116428602130048869</id><published>2006-11-23T12:45:00.000Z</published><updated>2006-11-23T12:47:01.303Z</updated><title type='text'>HP 4200C will not install on Vista</title><content type='html'>&lt;a href="http://photos1.blogger.com/x/blogger/1390/2194/1600/49680/HP4200C.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://photos1.blogger.com/x/blogger/1390/2194/320/697275/HP4200C.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've found another device that will not install on Vista an HP 4200C colour USB scanner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-116428602130048869?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/116428602130048869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=116428602130048869' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116428602130048869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116428602130048869'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/11/hp-4200c-will-not-install-on-vista.html' title='HP 4200C will not install on Vista'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-116428587413220268</id><published>2006-11-23T12:42:00.000Z</published><updated>2006-11-23T12:44:34.143Z</updated><title type='text'>Feeware to Mount ISO files as CD or DVD</title><content type='html'>Here is a great freeware tool to mount .ISO CD/DVD image files so they appear as a normal CD/DVD drive.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.magiciso.com/"&gt;http://www.magiciso.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-116428587413220268?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/116428587413220268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=116428587413220268' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116428587413220268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116428587413220268'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/11/feeware-to-mount-iso-files-as-cd-or.html' title='Feeware to Mount ISO files as CD or DVD'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-116402588873769413</id><published>2006-11-20T12:09:00.000Z</published><updated>2006-11-20T12:35:40.360Z</updated><title type='text'>Prolific PL-2303 USB to RS232 on Vista</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/pl-2303.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/320/pl-2303.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Another USB device would not install on Vista until I tricked it...&lt;br /&gt;&lt;br /&gt;1) Download the Prolific PL-2303 XP driver from &lt;a href="http://www.prolific.com.tw/eng/downloads.asp?ID=31"&gt;http://www.prolific.com.tw/eng/downloads.asp?ID=31&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) Unzip and then run the setup program. This will fail on Vista so run it on an XP machine.&lt;br /&gt;&lt;br /&gt;3) The setup program creates a folder called &lt;strong&gt;PL-2303_loggedDrv&lt;/strong&gt; in c:\windows\temp. This folder contains the signed 32 bit driver you need to install on Vista. Copy the PL-2303_loggedDrv folder to your Vista machine.&lt;br /&gt;&lt;br /&gt;4) Plug the device into your USB port. The driver install will fail as it cannot find the driver on Windows Update. Select the "Search for driver on my PC" and point it at the PL-2303_loggedDrv folder.&lt;br /&gt;&lt;br /&gt;5) The driver should now install correctly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-116402588873769413?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/116402588873769413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=116402588873769413' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116402588873769413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116402588873769413'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/11/prolific-pl-2303-usb-to-rs232-on-vista.html' title='Prolific PL-2303 USB to RS232 on Vista'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-116401714480842320</id><published>2006-11-20T09:35:00.000Z</published><updated>2006-11-21T15:33:08.670Z</updated><title type='text'>Nvidia GeForce Go 7600 GT on Vista</title><content type='html'>I discovered how to get the GeForce Go 7600 GT graphics card working in Vista!&lt;br /&gt;&lt;br /&gt;1) Download the Vista Beta 2 driver from &lt;a href="http://www.nvidia.com"&gt;www.nvidia.com&lt;/a&gt; (V96.85).&lt;br /&gt;2) Run the program to create a c:\nvidia\WinVista\96.85 folder.&lt;br /&gt;3) Next you need to replace the nv_disp.inf file with a new one that includes a definition for your graphics card. I found one on this site &lt;a href="http://www.laptopvideo2go.com/forum/index.php?showtopic=11478"&gt;http://www.laptopvideo2go.com/forum/index.php?showtopic=11478&lt;/a&gt;&lt;br /&gt;4) You can now run setup.exe from the c:\nvidia\WinVista\96.85 folder and the installation program should now recognise the card and install the drivers.&lt;br /&gt;&lt;br /&gt;The LV2Go website is a fantastic resource for laptop owners looking for the latest graphics drivers.&lt;br /&gt;&lt;br /&gt;"Until recently, &lt;a href="http://www.nvidia.com/"&gt;nVidia&lt;/a&gt; by default has not natively supported laptop GPUs with WHQL and beta drivers. This limitation is due only to the INF. Drivers supplied by manufacturers (Dell, Toshiba, etc.) are rarely updated and easily become outdated thus not supporting the latest graphics technology. This is where LaptopVideo2Go (LV2Go) comes in. LV2Go provides unofficial support for all of the GPUs that nVidia has created and laptops produced by manufacturers. LV2Go enhances the drivers by modding the INF to fix problems and reveal hidden features. &lt;a href="http://www.laptopvideo2go.com/forum/index.php?showtopic=8128"&gt;What is a modded INF?&lt;/a&gt; The LV2Go &lt;a href="http://www.laptopvideo2go.com/forum"&gt;community&lt;/a&gt; has built up nicely. Come pay a visit to the forums for more specific drivers for your laptop, news or solutions to your problems."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-116401714480842320?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/116401714480842320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=116401714480842320' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116401714480842320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116401714480842320'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/11/nvidia-geforce-go-7600-gt-on-vista.html' title='Nvidia GeForce Go 7600 GT on Vista'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-116401519643852270</id><published>2006-11-20T09:32:00.000Z</published><updated>2006-11-20T09:33:16.460Z</updated><title type='text'>BT Voyager 105 USB ADSL Modem on Vista</title><content type='html'>I discovered that BT Voyager 105 USB ADSL modems will not install on Vista.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-116401519643852270?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/116401519643852270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=116401519643852270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116401519643852270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116401519643852270'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/11/bt-voyager-105-usb-adsl-modem-on-vista.html' title='BT Voyager 105 USB ADSL Modem on Vista'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-116389600866728226</id><published>2006-11-19T00:21:00.000Z</published><updated>2006-11-19T00:26:48.683Z</updated><title type='text'>Vista on Sony VGN-A497XP</title><content type='html'>Again a re-partition and fresh install. Vista installed without any problems. The only device that does not work is the Memory stick reader.&lt;br /&gt;&lt;br /&gt;I also notice that the Sony custom buttons (eg Volume up &amp;amp; down) are not working.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-116389600866728226?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/116389600866728226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=116389600866728226' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116389600866728226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116389600866728226'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/11/vista-on-sony-vgn-a497xp.html' title='Vista on Sony VGN-A497XP'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-116389265960808526</id><published>2006-11-18T23:22:00.000Z</published><updated>2006-11-21T15:33:40.870Z</updated><title type='text'>Vista on Sony VGN-AR21S</title><content type='html'>This was a disaster! It was a brand new "Vista Ready" machine with Windows XP Media Centre Edition. I decided to upgrade rather than re-install from fresh. The machine was running fantastically well before the upgrade. These are the problems I had:-&lt;br /&gt;&lt;br /&gt;1) I had to uninstall the Toshiba Bluetooth application before Vista would even start&lt;br /&gt;2) The Nvidia GeForce Go 7600 GT was not recognised and the machine reverted to VGA mode. Neither Sony or Nvidia have any drivers available on their web sites.&lt;br /&gt;3) Audio does not work at all&lt;br /&gt;4) TV In does not work&lt;br /&gt;5) Media Centre blue screens when you start it&lt;br /&gt;&lt;br /&gt;I've emailed Sony to see if they have a fix.&lt;br /&gt;&lt;br /&gt;I'm really annoyed that a machine sold as "Vista Ready" should be rendered virtually useless by the upgrade. If I don't get a prompt response to this I'll complain to the advertising standards people.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-116389265960808526?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/116389265960808526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=116389265960808526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116389265960808526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116389265960808526'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/11/vista-on-sony-vgn-ar21s.html' title='Vista on Sony VGN-AR21S'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-116389217054294234</id><published>2006-11-18T23:15:00.000Z</published><updated>2006-11-18T23:22:50.553Z</updated><title type='text'>Vista on Sony PCG-GRT896HP</title><content type='html'>Like all the other geeks on the planet I've spent the day installing Vista.&lt;br /&gt;&lt;br /&gt;The first laptop was a Sony PCG-GRT896HP. I booted from the DVD (Press F2 when Sony logo appears to go into Bios to allow booting from DVD) and re-partitioned the drive. Vista installed with no problems, the audio drivers were installed once the machine connected to Windows Update.&lt;br /&gt;&lt;br /&gt;A Logitech QuickCam Messenger webcam that was occasionally connected could not be re-installed.&lt;br /&gt;&lt;br /&gt;I'm not completely happy that the video driver is working 100% correctly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-116389217054294234?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/116389217054294234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=116389217054294234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116389217054294234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116389217054294234'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/11/vista-on-sony-pcg-grt896hp.html' title='Vista on Sony PCG-GRT896HP'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-116377593374967463</id><published>2006-11-17T14:51:00.000Z</published><updated>2006-11-18T22:57:55.083Z</updated><title type='text'>NTBackup.exe on Vista</title><content type='html'>I've just been preparing my machine for an upgrade to Vista. I was shocked to discover that the backup &amp; restore program in Vista does not allow you to read XP .bkf files!&lt;br /&gt;&lt;br /&gt;Microsoft are apparently writing a tool to allow you to read .bkf files from Vista but it is not currectly available.&lt;br /&gt;&lt;br /&gt;I discovered you can actually use the old program if you do this:-&lt;br /&gt;&lt;br /&gt;Copy the following four files from your XP installation to a new folder. &lt;strong&gt;Do this before you upgrade to Vista. &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;c:\Windows\System32\NTBackup.exe&lt;br /&gt;c:\Windows\System32\SetupApi.dll&lt;br /&gt;c:\Windows\System32\VssApi.dll&lt;br /&gt;c:\Windows\System32\NtMsApi.dll&lt;br /&gt;&lt;br /&gt;Provided your backups are on disk (not tape) you can now run NTBackup from the new folder.&lt;br /&gt;&lt;br /&gt;You will need to make sure you right click on NtBackup.exe and select "Run as administrator" to ensure you have rights to write to the original locations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-116377593374967463?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/116377593374967463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=116377593374967463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116377593374967463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116377593374967463'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/11/ntbackupexe-on-vista.html' title='NTBackup.exe on Vista'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-116197834387172670</id><published>2006-10-27T20:17:00.000+01:00</published><updated>2006-10-27T20:45:43.883+01:00</updated><title type='text'>SQL Server 2005 replication</title><content type='html'>We've been playing with SQL Server 2005 replication today. We have been testing a configuration with a single publisher and multiple subscribers. The subscribers are all in different Actibe Directory (AD) domains with no trust between them. Comms between the servers needs to be locked down with the minimum number of ports opened. All of the SQL books I have read show how to do SQL replication between servers in the same AD domain.&lt;br /&gt;&lt;br /&gt;To test the configuration we had 5 servers running SQL server 2005 on Windows Server 2003 SR2. The firewall was turned on and a single TCP port (1433) was opened on each server. All the servers were set to communicate using TCP/IP only, all other client and server protocols were turned off.&lt;br /&gt;&lt;br /&gt;In order to replicate between servers the following settings were required:-&lt;br /&gt;&lt;br /&gt;1) SQL server was setup to allow SQL Authentication mode. An account was setup specifically for the subscribers to use when connecting to the publishing server.&lt;br /&gt;&lt;br /&gt;2) In order to replicate between the servers it was necessary to setup a HOSTS file with the IP address of the remote server. Replication does not work if you use either a raw IP address or a fully qualified domein name configured in the DNS server. I suspect this is because the server name is used to establish both a TCP/IP connection and an application level connection to the SQL server.&lt;br /&gt;&lt;br /&gt;If you use these settings you should be able to replicate sucessfully.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-116197834387172670?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/116197834387172670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=116197834387172670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116197834387172670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/116197834387172670'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/10/sql-server-2005-replication.html' title='SQL Server 2005 replication'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-115922303811685421</id><published>2006-09-25T23:23:00.000+01:00</published><updated>2006-09-25T23:23:58.193+01:00</updated><title type='text'>SQL Server 2005 SP1 does not work on Vista 5728</title><content type='html'>&lt;span xmlns=""&gt;&lt;p&gt;SQL Server 2005 can be installed on Vista 5728 (Despite the warning indicating it's not compatible), but installing SP1 seems to stop SQL from working. The solution seems to be to remove and then re-install SQL Server 2005.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;When is SQL Server 2005 SP2 going to be available? Apparently this will be the version supported on Vista.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-115922303811685421?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/115922303811685421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=115922303811685421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115922303811685421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115922303811685421'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/09/sql-server-2005-sp1-does-not-work-on.html' title='SQL Server 2005 SP1 does not work on Vista 5728'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-115921616574309327</id><published>2006-09-25T21:23:00.000+01:00</published><updated>2006-09-25T21:29:25.746+01:00</updated><title type='text'>SQL Server 2005 SP1</title><content type='html'>I had a wierd problem trying to install SP1 on SQL Server 2005 today...&lt;br /&gt;&lt;br /&gt;Originally I had the upgrade file (SQLServer2005SP1-KB913090-x86-ENU.exe) on an external USB hard drive, I found that I had to copy the file from an external USB hard disk to my local machine and then remove the external USB drive from my system for the install to work. Before I removed the USB drive the upgrade tool was putting the unpacked files on the USB drive (probably as it had most free space) and for some wierd reason they would not install from there. Once the USB drive was removed the installer unpacked the files to drive D: and the installer worked fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-115921616574309327?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/115921616574309327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=115921616574309327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115921616574309327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115921616574309327'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/09/sql-server-2005-sp1.html' title='SQL Server 2005 SP1'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-115921574426444814</id><published>2006-09-25T21:20:00.000+01:00</published><updated>2006-09-25T21:22:24.316+01:00</updated><title type='text'>Vista 5728</title><content type='html'>I’ve been running Vista RC1 for a couple of weeks and have just upgraded to 5728. Seems nice and stable. Plugged in a 1Gb USB key to see how much of a speed improvement ReadyBoost gives. It seems quicker when you have loads of apps open. However my Sony MemoryStick and volume controls still don't work.&lt;br /&gt;&lt;br /&gt;I had some trouble upgrading Office 2007 to B2TR. In the end I had to remove Office B2 and reinstall. I could not use the uninstall option and had to resort to using the following utility to remove Office 2007 Beta 2.&lt;br /&gt;&lt;br /&gt;You can try the Cleanup Utility from here : &lt;a title="http://support.microsoft.com/kb/290301/en-us" href="http://support.microsoft.com/kb/290301/en-us"&gt;http://support.microsoft.com/kb/290301/en-us&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-115921574426444814?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/115921574426444814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=115921574426444814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115921574426444814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115921574426444814'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/09/vista-5728.html' title='Vista 5728'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-115714761397867853</id><published>2006-09-01T22:48:00.000+01:00</published><updated>2006-09-01T22:53:33.990+01:00</updated><title type='text'>Vista 5536</title><content type='html'>I've been running 5536 for a couple of days now and it's looking much better than earlier builds. The video driver is now recognising my laptop screen correctly. However still two problem drivers. The extra buttons on my Sony laptop still don't work. In addition the Memory stick has still not been fixed. I emailed Sony about these problems however I don't expect any response from them...they are not good at customer support!&lt;br /&gt;&lt;br /&gt;Just found out that 5600 will be available next week. Still waiting to get hold of Office 2007 B2TR..hopefully that will be out soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-115714761397867853?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/115714761397867853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=115714761397867853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115714761397867853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115714761397867853'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/09/vista-5536.html' title='Vista 5536'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-115625931191551162</id><published>2006-08-22T16:03:00.000+01:00</published><updated>2006-08-22T16:08:31.930+01:00</updated><title type='text'>Visual Studio 2005 File Open Crash</title><content type='html'>Today I had a c# project that caused VS2005 to crash whenever I tried to open a file using file-&gt;Open-&gt;File...&lt;br /&gt;&lt;br /&gt;I think the hidden user options file (projectname.suo) had become corrupt. As soon as I deleted the .suo file I could use file open command again.&lt;br /&gt;&lt;br /&gt;The .suo file is in the same folder as the .snl file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-115625931191551162?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/115625931191551162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=115625931191551162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115625931191551162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115625931191551162'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/08/visual-studio-2005-file-open-crash.html' title='Visual Studio 2005 File Open Crash'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-115390309263729800</id><published>2006-07-26T09:33:00.000+01:00</published><updated>2006-07-26T09:38:12.690+01:00</updated><title type='text'>Vista 5472</title><content type='html'>&lt;span xmlns=""&gt;&lt;p&gt;Yesterday I upgraded my Vista Beta2 machine to the latest build 5472. The upgrade completed successfully but took about 4 hours to finish! So far I have found the following problems:-&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I have a Sony VGN-A497XP laptop with an ATI X600 screen. Since upgrading to 5472 my max resolution has dropped from 1920x1200 to 1600x1200. I’m not happy with this!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;There are now 3 devices without drivers. Windows update cannot find them.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The memory stick still does not work&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Laptop extra buttons (volume up down, CD eject etc) still do not work.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Welcome Centre-&amp;gt;Setup Devices does not work as it says reinstdrvs.exe does not exist.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-115390309263729800?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/115390309263729800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=115390309263729800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115390309263729800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115390309263729800'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/07/vista-5472.html' title='Vista 5472'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-115135175262099199</id><published>2006-06-26T20:52:00.000+01:00</published><updated>2006-06-26T21:12:11.596+01:00</updated><title type='text'>Another hard disk dead</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/freecom.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/320/freecom.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I had a Freecom Classic Mobile HD 2.5" 40Gb external USB hard drive on which I had installed Office 2007 &amp;amp; VS2005. It stopped working today despite only having bought it a couple of months ago.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-115135175262099199?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/115135175262099199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=115135175262099199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115135175262099199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115135175262099199'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/06/another-hard-disk-dead.html' title='Another hard disk dead'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-115083384140311283</id><published>2006-06-20T20:59:00.000+01:00</published><updated>2006-06-20T21:07:58.243+01:00</updated><title type='text'>Desktop background</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Meribel.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/200/Meribel.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here is my favourite 1900 x 1200 photo of Meribel that I took earlier this year. Feel free to use it as your desktop background.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.alquist.co.uk/meribel.jpg"&gt;Download File&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-115083384140311283?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/115083384140311283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=115083384140311283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115083384140311283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115083384140311283'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/06/desktop-background.html' title='Desktop background'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-115070897455557990</id><published>2006-06-19T10:17:00.000+01:00</published><updated>2006-06-19T10:22:54.570+01:00</updated><title type='text'>10GBaseT &amp; Cabling Standards</title><content type='html'>Last week I was at the British Standards Institute TCT7 committee meeting reviewing several important changes to the UK &amp; European cabling standards. I thought I would provide a quick summary, if you would like any further details please ask.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10GBaseT – Ethernet Standards&lt;br /&gt;&lt;/strong&gt;The IEEE have finished the 10 Gigabit Ethernet over copper cabling standard on time and it will be officially published very soon. However there is widespread concern that important elements have been omitted in a rush to finish the standard “on time”. Please remember the 10GBaseT standard is an electronic protocol standard NOT a cabling standard. 10GBaseT will support a channel length of 100m over Cat 6 FTP and Cat 7 FTP (both available today) and over 100m of Cat6a UTP (in the future – standard work is just starting now). The chipset manufacturers are having problems with the large amount of power needed for each chip. They currently need about 15W per port, unfortunately the chips themselves will only support 4W without overheating. As a result the pre-production chips are having to be manufactured in a larger package so they can disperse the heat better. The amount of power required is a big concern as a typical 24 port 1U switch will get very hot and thus un-reliable. The electronics industry is hoping that by making the chips smaller they can reduce the heat output, unfortunately this technology is not currently available but should be within 4-5 years. Some manufacturers have introduced pre-standard chipsets but they do not work with each other as they use different techniques to reduce power requirements. The current non-standard chipsets have only been able to manage a 30m link over Cat 6 as these can be produced more easily as they do not need as much electronics and so stay cooler. There is significant work to do before 10GBaseT becomes mainstream, do not expect widespread desktop deployment for 5-7 years.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;European Cabling Standards&lt;br /&gt;&lt;/strong&gt;Firstly it’s important to remember that there are two cabling standards the American TIA/EIA who define Cat 5, Cat 5e, Cat 6 and will define Cat 6a in the future. The rest of the world uses the ISO 11801:2002 Class D, Class E (and Class Ea in the future) series of standards. Until now Cat 5e and Cat 6 have been almost identical to Class D and Class E however the American Cat 6a standard is looking as though it will be much less stringent than the Worldwide Class Ea standard. This problem of Cat 6a not being equal to Class Ea is a big issue that will hopefully be resolved before either standard is published. The very earliest these standards could be published is Q2 2007 but this would mean several important items would have to be left out and added later.&lt;br /&gt;&lt;br /&gt;Official work on the cabling standard could not start until the 10GBaseT standard was published. Today we reviewed some of the proposed amendments to ISO 11801:2002 to add Class Ea limits. The amendments proposed will probably be rejected by the UK committee because they are very incomplete and in places simply wrong.  Some of the cabling manufacturers are pushing to get this amendment published to support their “10Gig” product story. However the amendments include parameters for the “Channel” only, there are no “Permanent link” limits. This has been done in an attempt to speed up the process, adding permanent link parameters will take an extra 12-18 months. Without any “Permanent link” limits there will be nothing that installers can use to test a system. In my view there is no point publishing a new standard if it does not have any parameters that can be used to test against. The standard needs to be done properly with both channel and permanent link limits, it is likely that this process will take until at least Q2 or Q3 2008.&lt;br /&gt;&lt;br /&gt;Any cable manufacturer pushing a “10 Gig” story now is really selling something that is still 18-24 months from being completed. (and that assumes everything goes to plan... history shows that this seldom happens and the process will take much longer)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;XML Test Result Export&lt;br /&gt;&lt;/strong&gt;My initiative to create a standard file format for exporting test results from handheld testers is now a European EN50346 draft format and will be fully reviewed at the September meeting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-115070897455557990?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/115070897455557990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=115070897455557990' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115070897455557990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/115070897455557990'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/06/10gbaset-cabling-standards.html' title='10GBaseT &amp; Cabling Standards'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-114902833573439279</id><published>2006-05-30T23:28:00.000+01:00</published><updated>2006-05-30T23:32:15.743+01:00</updated><title type='text'>Vista &amp; Office 2007 Beta 2</title><content type='html'>&lt;span xmlns=""&gt;&lt;p&gt;I’m now running on Vista Ultimate Beta 2 with Office 2007 Beta 2. The Vista install worked fairly well although it did not install an audio driver for my Sony VGN-A497XP laptop. The XP audio driver seemed to install OK. There are still 4 or 5 devices without drivers. One being the Sony memory stick which no longer seems to work.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Office installed without any problems. I’m not very impressed with Outlook it still does a terrible job of multi-tasking. We use an outsourced Exchange Server provider so we access Exchange using RPC over HTTPS and the whole program hangs when getting data from the server. Why is this not implemented on a separate thread so it does not stop the whole UI? Cached mode with RPC over HTTPS does not seem to work. Word is great, if you can read this then it has successfully uploaded this blog entry from Word.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;One thing to notice when using Visual Studio 2005...you must right click on the application and select “Run as Administrator” if you want to debug any ASP.NET pages. If you do not do this then the execution does not stop at any of the breakpoints.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-114902833573439279?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/114902833573439279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=114902833573439279' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/114902833573439279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/114902833573439279'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/05/vista-office-2007-beta-2.html' title='Vista &amp; Office 2007 Beta 2'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-114288797753331472</id><published>2006-03-20T20:47:00.000Z</published><updated>2006-03-20T20:52:57.556Z</updated><title type='text'>Get TEXTMETRIC from font in C#</title><content type='html'>Today I needed to get the TEXTMETRIC details for a font in c#. In C++ this was very easy but .NET does not seem to have any functions to get this information. Here is how I ended up doing it:-&lt;br /&gt;&lt;br /&gt;&lt;div style="background: white none repeat scroll 0%; font-family: Courier New; font-size: 10pt; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;p style="margin: 0px;"&gt;[&lt;span style="color: teal;"&gt;Serializable&lt;/span&gt;, &lt;span style="color: teal;"&gt;StructLayout&lt;/span&gt; (&lt;span style="color: teal;"&gt;LayoutKind&lt;/span&gt;.Sequential, CharSet = &lt;span style="color: teal;"&gt;CharSet&lt;/span&gt;.Auto)]&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;struct&lt;/span&gt; &lt;span style="color: teal;"&gt;TEXTMETRIC&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    {&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; tmHeight;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; tmAscent;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; tmDescent;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; tmInternalLeading;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; tmExternalLeading;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; tmAveCharWidth;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; tmMaxCharWidth;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; tmWeight;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; tmOverhang;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; tmDigitizedAspectX;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; tmDigitizedAspectY;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;char&lt;/span&gt; tmFirstChar;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;char&lt;/span&gt; tmLastChar;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;char&lt;/span&gt; tmDefaultChar;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;char&lt;/span&gt; tmBreakChar;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;byte&lt;/span&gt; tmItalic;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;byte&lt;/span&gt; tmUnderlined;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;byte&lt;/span&gt; tmStruckOut;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;byte&lt;/span&gt; tmPitchAndFamily;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;byte&lt;/span&gt; tmCharSet;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    }&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;[&lt;span style="color: teal;"&gt;DllImport&lt;/span&gt; (&lt;span style="color: maroon;"&gt;"gdi32.dll"&lt;/span&gt;, CharSet = &lt;span style="color: teal;"&gt;CharSet&lt;/span&gt;.Unicode)]&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;extern&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; GetTextMetrics (&lt;span style="color: teal;"&gt;IntPtr&lt;/span&gt; hdc, &lt;span style="color: blue;"&gt;out&lt;/span&gt; &lt;span style="color: teal;"&gt;TEXTMETRIC&lt;/span&gt; lptm);&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;[&lt;span style="color: teal;"&gt;DllImport&lt;/span&gt; (&lt;span style="color: maroon;"&gt;"gdi32"&lt;/span&gt;)]&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;extern&lt;/span&gt; &lt;span style="color: teal;"&gt;IntPtr&lt;/span&gt; SelectObject (&lt;/p&gt; &lt;p style="margin: 0px;"&gt;   &lt;span style="color: teal;"&gt;IntPtr&lt;/span&gt; hdc,&lt;/p&gt; &lt;p style="margin: 0px;"&gt;   &lt;span style="color: teal;"&gt;IntPtr&lt;/span&gt; hObj&lt;/p&gt; &lt;p style="margin: 0px;"&gt;   );&lt;/p&gt; &lt;/div&gt; &lt;br /&gt;&lt;br /&gt;In my paint code (FontName is a string holding the name of the font)&lt;br /&gt;&lt;br /&gt;&lt;div style="background: white none repeat scroll 0%; font-family: Courier New; font-size: 10pt; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="background: gray none repeat scroll 0%; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;//    Get TEXTMETRIC details for font        &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: teal;"&gt;Font&lt;/span&gt; font = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;Font&lt;/span&gt; (FontName, size, &lt;span style="color: teal;"&gt;FontStyle&lt;/span&gt;.Bold, &lt;span style="color: teal;"&gt;GraphicsUnit&lt;/span&gt;.Pixel);&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: teal;"&gt;IntPtr&lt;/span&gt; hdc = g.GetHdc ();&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: teal;"&gt;IntPtr&lt;/span&gt; hFontOld = SelectObject (hdc, font.ToHfont ());&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: teal;"&gt;TEXTMETRIC&lt;/span&gt; tm;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;GetTextMetrics (hdc, &lt;span style="color: blue;"&gt;out&lt;/span&gt; tm);&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;SelectObject (hdc, hFontOld);&lt;/p&gt; &lt;p style="margin: 0px;"&gt;g.ReleaseHdc (hdc);&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Then I can use the tm object to extract all the font details&lt;br /&gt;&lt;br /&gt;&lt;div style="background: white none repeat scroll 0%; font-family: Courier New; font-size: 10pt; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: teal;"&gt;PointF&lt;/span&gt; topleft = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;PointF&lt;/span&gt; (x + cx, displayy + cy - (tm.tmExternalLeading + tm.tmInternalLeading));&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/21661688-114288797753331472?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/114288797753331472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=114288797753331472' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/114288797753331472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/114288797753331472'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/03/get-textmetric-from-font-in-c.html' title='Get TEXTMETRIC from font in C#'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-114175158670257155</id><published>2006-03-07T17:11:00.000Z</published><updated>2006-03-07T17:13:31.076Z</updated><title type='text'>IE7 stops VS2005 CSS Style Builder</title><content type='html'>When you install IE7 it stops VS2005's CSS style builder from working. There is a fix for this bug documented on the Microsoft web site:-&lt;br /&gt;&lt;br /&gt;&lt;a title="http://lab.msdn.microsoft.com/ProductFeedback/viewFeedback.aspx?feedbackId=FDBK46543" href="http://lab.msdn.microsoft.com/ProductFeedback/viewFeedback.aspx?feedbackId=FDBK46543"&gt;http://lab.msdn.microsoft.com/ProductFeedback/viewFeedback.aspx?feedbackId=FDBK46543&lt;/a&gt;&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/21661688-114175158670257155?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/114175158670257155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=114175158670257155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/114175158670257155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/114175158670257155'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/03/ie7-stops-vs2005-css-style-builder.html' title='IE7 stops VS2005 CSS Style Builder'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-114087796212013976</id><published>2006-02-25T14:13:00.000Z</published><updated>2006-02-25T14:32:42.133Z</updated><title type='text'>Word Action Pane with VSTO in C# 2005</title><content type='html'>I have created a Word Action pane with a tab control contained within the user control. In order to force the user control to strech to fill the action pane space you need the following code:&lt;br /&gt;&lt;br /&gt;&lt;div style="background: white none repeat scroll 0%; font-family: Courier New; font-size: 10pt; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: teal;"&gt;QuoteBuilder&lt;/span&gt; qb_actionpane = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;QuoteBuilder&lt;/span&gt; ();&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; ThisDocument_Startup (&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, System.&lt;span style="color: teal;"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            {&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            qb_actionpane.Dock = &lt;span style="color: teal;"&gt;DockStyle&lt;/span&gt;.Fill;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            &lt;span style="color: blue;"&gt;this&lt;/span&gt;.ActionsPane.StackOrder = Microsoft.Office.Tools.&lt;span style="color: teal;"&gt;StackStyle&lt;/span&gt;.None;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            &lt;span style="color: blue;"&gt;this&lt;/span&gt;.ActionsPane.Controls.Add (qb_actionpane);&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            }&lt;/p&gt; &lt;/div&gt; &lt;br /&gt;The problem is that VS2005 does not display the .Dock property so you have to set it yourself in code.  In addition you need the following code&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;this&lt;/span&gt;.ActionsPane.StackOrder = Microsoft.Office.Tools.&lt;span style="color: teal;"&gt;StackStyle&lt;/span&gt;.None;&lt;br /&gt;&lt;br /&gt;Without this the user control does not fill the available space.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-114087796212013976?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/114087796212013976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=114087796212013976' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/114087796212013976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/114087796212013976'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/02/word-action-pane-with-vsto-in-c-2005.html' title='Word Action Pane with VSTO in C# 2005'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-114010016057991780</id><published>2006-02-16T14:11:00.000Z</published><updated>2006-02-16T14:29:20.603Z</updated><title type='text'>C# - Fill TreeView with SQL data</title><content type='html'>Here is some c# code to fill a treeview with hierarchal data from an sql table. The SQL table looks like this:-&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1390/2194/1600/TreeView1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1390/2194/320/TreeView1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Each item in the database has a pointer to it's parent (which can be null for top level items). The DisplayOrder field is used to alter the display order of items at the same level. NodeType should be "Node" for a nodes, anything else is assumed to be a "document".&lt;br /&gt;&lt;br /&gt;The tree is displayed like this:-&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1390/2194/1600/TreeView2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1390/2194/320/TreeView2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is the code&lt;br /&gt;&lt;br /&gt;&lt;div style="background: white none repeat scroll 0%; font-family: Courier New; font-size: 10pt; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; LoadTreeview ()&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    {&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="background: gray none repeat scroll 0%; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;//    This code fills a DataTable with an SQL Query    &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="color: teal;"&gt;DataTable&lt;/span&gt; table = &lt;span style="color: teal;"&gt;DatabaseUtility&lt;/span&gt;.ExecuteDataTable (&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;SqlConnection&lt;/span&gt;&lt;span style="color: teal;"&gt;Settings&lt;/span&gt;.Default.SQL_DSN),&lt;/span&gt; (Properties.&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="color: maroon;"&gt;"select ID, ParentID, DisplayOrder, NodeType, NodeText from TableName"&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;                                                      );&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="background: gray none repeat scroll 0%; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;//    Fill the TreeView with database data. Use null    &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="background: gray none repeat scroll 0%; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;//    as parentid for top level                        &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    AddKids (&lt;span style="color: blue;"&gt;null&lt;/span&gt;, &lt;span style="color: maroon;"&gt;"ParentID is null"&lt;/span&gt;, &lt;span style="color: maroon;"&gt;"DisplayOrder"&lt;/span&gt;, table);&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    }&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; AddKids (&lt;span style="color: blue;"&gt;string&lt;/span&gt; parentid, &lt;span style="color: blue;"&gt;string&lt;/span&gt; filter, &lt;span style="color: blue;"&gt;string&lt;/span&gt; sort, &lt;span style="color: teal;"&gt;DataTable&lt;/span&gt; table)&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;{&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color: teal;"&gt;DataRow&lt;/span&gt;[] foundRows = table.Select (filter, sort);&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (foundRows.Length == 0)&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="color: blue;"&gt;return&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="background: gray none repeat scroll 0%; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;//    Get TreeNode of parent using Find which looks in the name    &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="background: gray none repeat scroll 0%; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;//    property of each node. true itterates all children            &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color: teal;"&gt;TreeNode&lt;/span&gt;[] parentNode = treeView1.Nodes.Find (parentid, &lt;span style="color: blue;"&gt;true&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (parentid != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="color: blue;"&gt;if&lt;/span&gt; (parentNode.Length == 0)&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;        &lt;span style="color: blue;"&gt;return&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="background: gray none repeat scroll 0%; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;//    Add each row to tree    &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt; (&lt;span style="color: blue;"&gt;int&lt;/span&gt; i = 0; i &lt;= foundRows.GetUpperBound (0); i++)&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    {&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="color: blue;"&gt;string&lt;/span&gt; nodetype = foundRows[i][&lt;span style="color: maroon;"&gt;"NodeType"&lt;/span&gt;].ToString ();&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="color: blue;"&gt;string&lt;/span&gt; nodetext = foundRows[i][&lt;span style="color: maroon;"&gt;"NodeText"&lt;/span&gt;].ToString ();&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="color: blue;"&gt;string&lt;/span&gt; nodeid = foundRows[i][&lt;span style="color: maroon;"&gt;"ID"&lt;/span&gt;].ToString ();&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="color: teal;"&gt;TreeNode&lt;/span&gt; node = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;TreeNode&lt;/span&gt; ();&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    node.Text = nodetext;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    node.Name = nodeid;    &lt;span style="background: gray none repeat scroll 0%; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;//    This is critical as the Find method searches the Name property    &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="color: blue;"&gt;if&lt;/span&gt; (parentid == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;        treeView1.Nodes.Add (node);        &lt;span style="background: gray none repeat scroll 0%; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;//    Top Level                    &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;        parentNode[0].Nodes.Add (node);    &lt;span style="background: gray none repeat scroll 0%; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;//    Add children under parent    &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="background: gray none repeat scroll 0%; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;//    Itterate into any nodes        &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    &lt;span style="color: blue;"&gt;if&lt;/span&gt; (nodetype.ToLower () == &lt;span style="color: maroon;"&gt;"node"&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;        AddKids (nodeid, &lt;span style="color: maroon;"&gt;"ParentID="&lt;/span&gt; + nodeid, sort, table);&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;    }&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="font-size:78%;"&gt;}&lt;/span&gt;&lt;/p&gt; &lt;/div&gt; &lt;br /&gt;The trick here is to use the nodetype.Name to hold a unique ID of each item. The treeview.Nodes.Find("xxx") command is the olny way you can search the entire tree (including children) and it searches the .Name property only.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-114010016057991780?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/114010016057991780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=114010016057991780' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/114010016057991780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/114010016057991780'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/02/c-fill-treeview-with-sql-data.html' title='C# - Fill TreeView with SQL data'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-114008244769769803</id><published>2006-02-16T09:16:00.000Z</published><updated>2006-02-16T11:29:23.596Z</updated><title type='text'>Using ASP.NET 2.0 GridView Template Controls</title><content type='html'>I'm using a GridView control on an ASP.NET 2.0 page. I have added some templated columns so the grid looks like this:-&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1390/2194/1600/GridView.1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1390/2194/320/GridView.1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;When the Test button is pressed I want to get the values in the TextBoxes. There are two options:-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Option 1&lt;/span&gt;&lt;br /&gt;Set the CommandArgument of the Test button to hold a value indicating the row number. You need to add the following to the Test button's  HTML definition&lt;br /&gt;&lt;br /&gt;&lt;div    style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:Courier New;font-size:10pt;color:black;"&gt; &lt;p style="margin: 0px;"&gt;CommandArgument=&lt;span style="color:maroon;"&gt;'&lt;%# Container.DataItemIndex %&gt;' &lt;/span&gt;&lt;span style="color:maroon;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;/div&gt;&lt;br /&gt;IE7B2 does not render the text above correctly, Firefox is OK, it should look like this : &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1390/2194/1600/GridView2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1390/2194/320/GridView2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then you can get the Row and TextBox contents using this code&lt;br /&gt;&lt;br /&gt;&lt;div    style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:Courier New;font-size:10pt;color:black;"&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; GridView1_RowCommand (&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color:teal;"&gt;GridViewCommandEventArgs&lt;/span&gt; e)&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    {&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color:blue;"&gt;if&lt;/span&gt; (e.CommandName.ToLower () == &lt;span style="color:maroon;"&gt;"test"&lt;/span&gt;)&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        {&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="background: gray none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;color:white;" &gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt; rowindex = &lt;span style="color:blue;"&gt;int&lt;/span&gt;.Parse (e.CommandArgument.ToString ());&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="color:teal;"&gt;GridViewRow&lt;/span&gt; row1 = GridView1.Rows[rowindex];&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="color:teal;"&gt;TextBox&lt;/span&gt; tb_percent1 = row1.FindControl (&lt;span style="color:maroon;"&gt;"TextBox1"&lt;/span&gt;) &lt;span style="color:blue;"&gt;as&lt;/span&gt; &lt;span style="color:teal;"&gt;TextBox&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="color:teal;"&gt;TextBox&lt;/span&gt; tb_value1 = row1.FindControl (&lt;span style="color:maroon;"&gt;"TextBox2"&lt;/span&gt;) &lt;span style="color:blue;"&gt;as&lt;/span&gt; &lt;span style="color:teal;"&gt;TextBox&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="color:teal;"&gt;TextBox&lt;/span&gt; tb_month1 = row1.FindControl (&lt;span style="color:maroon;"&gt;"TextBox3"&lt;/span&gt;) &lt;span style="color:blue;"&gt;as&lt;/span&gt; &lt;span style="color:teal;"&gt;TextBox&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="color:teal;"&gt;TextBox&lt;/span&gt; tb_year1 = row1.FindControl (&lt;span style="color:maroon;"&gt;"TextBox4"&lt;/span&gt;) &lt;span style="color:blue;"&gt;as&lt;/span&gt; &lt;span style="color:teal;"&gt;TextBox&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Option 2&lt;/span&gt;&lt;br /&gt;You can use the following code. With this option you do not need to set the CommandArgument on the button.&lt;br /&gt;&lt;br /&gt;&lt;div    style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:Courier New;font-size:10pt;color:black;"&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; GridView1_RowCommand (&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color:teal;"&gt;GridViewCommandEventArgs&lt;/span&gt; e)&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    {&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    &lt;span style="color:blue;"&gt;if&lt;/span&gt; (e.CommandName.ToLower () == &lt;span style="color:maroon;"&gt;"test"&lt;/span&gt;)&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        {&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="color:teal;"&gt;GridViewRow&lt;/span&gt; row2 = (&lt;span style="color:teal;"&gt;GridViewRow&lt;/span&gt;) ((&lt;span style="color:teal;"&gt;Control&lt;/span&gt;) e.CommandSource).Parent.Parent;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="color:teal;"&gt;TextBox&lt;/span&gt; tb_percent2 = row2.FindControl (&lt;span style="color:maroon;"&gt;"TextBox1"&lt;/span&gt;) &lt;span style="color:blue;"&gt;as&lt;/span&gt; &lt;span style="color:teal;"&gt;TextBox&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="color:teal;"&gt;TextBox&lt;/span&gt; tb_value2 = row2.FindControl (&lt;span style="color:maroon;"&gt;"TextBox2"&lt;/span&gt;) &lt;span style="color:blue;"&gt;as&lt;/span&gt; &lt;span style="color:teal;"&gt;TextBox&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="color:teal;"&gt;TextBox&lt;/span&gt; tb_month2 = row2.FindControl (&lt;span style="color:maroon;"&gt;"TextBox3"&lt;/span&gt;) &lt;span style="color:blue;"&gt;as&lt;/span&gt; &lt;span style="color:teal;"&gt;TextBox&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="color:teal;"&gt;TextBox&lt;/span&gt; tb_year2 = row2.FindControl (&lt;span style="color:maroon;"&gt;"TextBox4"&lt;/span&gt;) &lt;span style="color:blue;"&gt;as&lt;/span&gt; &lt;span style="color:teal;"&gt;TextBox&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/21661688-114008244769769803?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/114008244769769803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=114008244769769803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/114008244769769803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/114008244769769803'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/02/using-aspnet-20-gridview-template.html' title='Using ASP.NET 2.0 GridView Template Controls'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-113939999081620414</id><published>2006-02-08T11:58:00.000Z</published><updated>2006-02-08T12:00:31.403Z</updated><title type='text'>VS2005 Snippets</title><content type='html'>How do I fix this problem with VS2005 snippets?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1390/2194/1600/vs2005snippets.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/1390/2194/320/vs2005snippets.png" alt="" border="0" /&gt;&lt;/a&gt;Notice application and Visual c#2005 are in there twice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-113939999081620414?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/113939999081620414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=113939999081620414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113939999081620414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113939999081620414'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/02/vs2005-snippets.html' title='VS2005 Snippets'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-113939607311633464</id><published>2006-02-08T10:42:00.000Z</published><updated>2006-02-08T11:43:04.306Z</updated><title type='text'>Ambiguous match found error in precompiled ASP.NET page</title><content type='html'>I upgraded an ASP.NET 1.1 project to 2.0 and precompiled it before uploading it to my production web server. Unfortunately one of the pages refused to work (I thought pre-compilation was supposed to find these problems!).&lt;br /&gt;&lt;br /&gt;This is the error I was getting when I viewed the problem page:-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Parser Error Message: Ambiguous match found&lt;/span&gt;.       &lt;br /&gt;&lt;br /&gt;It turns out that Visual Studio 2005 creates hidden field declarations for all controls inserted into a page. For some reason my old code had the following field declaration:-&lt;br /&gt;&lt;br /&gt;&lt;div style="background: white none repeat scroll 0%; font-family: Courier New; font-size: 10pt; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   18&lt;/span&gt; &lt;span style="color: blue;"&gt;namespace&lt;/span&gt; ITM&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   19&lt;/span&gt; {&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   20&lt;/span&gt;     &lt;span style="background: gray none repeat scroll 0%; color: yellow; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;///&lt;/span&gt;&lt;span style="background: gray none repeat scroll 0%; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/span&gt;&lt;span style="background: gray none repeat scroll 0%; color: yellow; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;summary&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   21&lt;/span&gt;     &lt;span style="background: gray none repeat scroll 0%; color: yellow; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;///&lt;/span&gt;&lt;span style="background: gray none repeat scroll 0%; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; Summary description for WebForm1.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   22&lt;/span&gt;     &lt;span style="background: gray none repeat scroll 0%; color: yellow; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;///&lt;/span&gt;&lt;span style="background: gray none repeat scroll 0%; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/span&gt;&lt;span style="background: gray none repeat scroll 0%; color: yellow; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;/summary&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   23&lt;/span&gt;     &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;partial&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: teal;"&gt;WebForm1&lt;/span&gt; : System.Web.UI.&lt;span style="color: teal;"&gt;Page&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   24&lt;/span&gt;     {&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;   25&lt;/span&gt;     &lt;span style="color: blue;"&gt;protected&lt;/span&gt; System.Web.UI.HtmlControls.&lt;span style="color: teal;"&gt;HtmlInputFile&lt;/span&gt; file2;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;/div&gt;&lt;br /&gt;Because my code had a declaration for file2 it clashed with the declaration that VS2005 has created. This results in a project that compiles without any problem but refuses to run!!! (The project woks fine in dynamic compilation mode)&lt;br /&gt;&lt;br /&gt;This bug has already been reported to Microsoft as bug FDBK38831 but it is shown as "Won't Fix" because VS2005 cannot detect the error. It would be better if the error message was a little clearer!&lt;br /&gt;&lt;br /&gt;If you have this problem make sure you do not declare any variables with the same name as any of your controls.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-113939607311633464?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/113939607311633464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=113939607311633464' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113939607311633464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113939607311633464'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/02/ambiguous-match-found-error-in.html' title='Ambiguous match found error in precompiled ASP.NET page'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-113926916083321411</id><published>2006-02-06T23:26:00.000Z</published><updated>2006-02-06T23:42:11.000Z</updated><title type='text'>Upgrade Asp.net app to V2.0</title><content type='html'>I upgraded an asp.net V1.1 app to V2.0 and VS2005 automatically converted my global.aspx.cs file so all the code is located in the App_Code folder. In order to use any of the static functions in the global class it is necessary to add "using Your_Global_Namespace;" to any class that uses any of the global functions.&lt;br /&gt;&lt;br /&gt;This is required because any new web page generated by VS2005 does not seem to place the page class inside your global namespace. Something to do with partial classes?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;VS2003 code generated for a new web page&lt;/strong&gt;&lt;br /&gt;namespace ARJ&lt;br /&gt;{&lt;br /&gt;public partial class BlahBlah : System.Web.UI.Page&lt;br /&gt;  {&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;VS2005 code generated for a new web page&lt;/strong&gt;&lt;br /&gt;public partial class BlahBlah : System.Web.UI.Page&lt;br /&gt;  {&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;you therefore need to add&lt;br /&gt;&lt;br /&gt;using ARJ;&lt;br /&gt;&lt;br /&gt;to any VS2005 web page that uses the any of the global functions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-113926916083321411?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/113926916083321411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=113926916083321411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113926916083321411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113926916083321411'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/02/upgrade-aspnet-app-to-v20.html' title='Upgrade Asp.net app to V2.0'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-113892465256248816</id><published>2006-02-02T23:52:00.000Z</published><updated>2006-02-03T00:28:59.090Z</updated><title type='text'>C# How to load an icon from an embedded resource</title><content type='html'>&lt;p&gt;This is how to load an Icon from an embedded resource and then use it to change a task bar notification icon.&lt;br /&gt;&lt;br /&gt;Firstly embed the icons as a resource. Don't forget to change the Build Action of each icon to "Embedded Resource"&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Declare these variables&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;private System.Drawing.Icon icnNormal;&lt;br /&gt;private System.Drawing.Icon icnAlert;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Put this in your Form_Load() method&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;System.IO.Stream st;&lt;br /&gt;System.Reflection.Assembly a = System.Reflection.Assembly.GetExecutingAssembly ();&lt;br /&gt;st = a.GetManifestResourceStream ("{{{YourAppName}}}.Resources.App.ico");&lt;br /&gt;icnNormal = new System.Drawing.Icon (st);&lt;br /&gt;st = a.GetManifestResourceStream ("{{{YourAppName}}}.Resources.arrow-up_32.ico");&lt;br /&gt;icnAlert = new System.Drawing.Icon (st); &lt;/p&gt;&lt;p&gt;Replace {{{YourAppName}}} with the name of your application&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;To use the icon&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;notifyIcon1.Icon = icnAlert;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-113892465256248816?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/113892465256248816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=113892465256248816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113892465256248816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113892465256248816'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/02/c-how-to-load-icon-from-embedded.html' title='C# How to load an icon from an embedded resource'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-113874957272419914</id><published>2006-01-31T23:17:00.000Z</published><updated>2006-01-31T23:19:32.730Z</updated><title type='text'>IE7 Beta 2</title><content type='html'>I've just upgraded to Internet Explorer 7.0.5296 Beta 2 and I find the Blogger HTML text editor does not work! When will it be fixed?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-113874957272419914?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/113874957272419914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=113874957272419914' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113874957272419914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113874957272419914'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/01/ie7-beta-2.html' title='IE7 Beta 2'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-113874163163523903</id><published>2006-01-31T20:43:00.000Z</published><updated>2006-01-31T21:12:55.613Z</updated><title type='text'>IPSec tunnel from Vigor 2900 to ZyXEL ZyWall 35</title><content type='html'>Today I connected some Vigor 2900's to a ZyXEL 35 using an IPSEC tunnel. The Zyxel settings are unchanged from my blog of 29/01/2006.&lt;br /&gt;&lt;br /&gt;Firstly a version check of the kit I'm using:&lt;br /&gt;ZyWALL 35 : V4.00(WZ.5) 01/06/2006&lt;br /&gt;Vigor 2900 : 2.5.6&lt;br /&gt;&lt;br /&gt;I've screen dumped the configuration pages below. The network IP address of the ZyWALL network is 192.65.100.0/255.255.255.0. The network address of the Vigor 2900 network is 192.168.65.0/255.255.255.0.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Vigor 2900 Settings&lt;br /&gt;&lt;/strong&gt;&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Vigor2600.jpg"&gt;&lt;/a&gt;&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Vigor2600.0.jpg"&gt;&lt;/a&gt;&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Vigor2600.1.jpg"&gt;&lt;/a&gt;&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Vigor2900.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/320/Vigor2900.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Advanced Setup-&gt;VPN and Remote Access Setup-&gt;LAN to LAN Profile Setup&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Vigor1.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Vigor5.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/320/Vigor5.jpg" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.alquist.co.uk/vigor5.png"&gt;See Larger Image&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From this screen "Advanced" button&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Vigor3.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Vigor4.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/320/Vigor4.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;"IKE Pre-Shared Key" button&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Vigor2.0.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Vigor2.2.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/320/Vigor2.0.jpg" 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/21661688-113874163163523903?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/113874163163523903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=113874163163523903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113874163163523903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113874163163523903'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/01/ipsec-tunnel-from-vigor-2900-to-zyxel.html' title='IPSec tunnel from Vigor 2900 to ZyXEL ZyWall 35'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-113866325579777247</id><published>2006-01-30T23:18:00.000Z</published><updated>2006-01-30T23:20:55.806Z</updated><title type='text'>ZyXEL ZyWALL 35 Client VPN IPSEC Dial In</title><content type='html'>The ZyWALL 35 does not seem to support dial in IPSEC Windows XP clients. It seems you have to buy the ZyXEL client software if you want to do this. :-(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-113866325579777247?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/113866325579777247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=113866325579777247' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113866325579777247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113866325579777247'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/01/zyxel-zywall-35-client-vpn-ipsec-dial.html' title='ZyXEL ZyWALL 35 Client VPN IPSEC Dial In'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-113855953469126063</id><published>2006-01-29T18:27:00.000Z</published><updated>2006-01-29T19:47:43.546Z</updated><title type='text'>Free - www.BookMyProperty.com</title><content type='html'>If you have a holiday home you probably have trouble working out which family members are planning to use it. Have a look at this web site that I wrote (&lt;a href="http://www.BookMyProperty.com"&gt;www.BookMyProperty.com&lt;/a&gt;). It allows you to create an on-line booking system to automate the process. It's free! Let me know what you think.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-113855953469126063?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/113855953469126063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=113855953469126063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113855953469126063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113855953469126063'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/01/free-wwwbookmypropertycom.html' title='Free - www.BookMyProperty.com'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-113854852248890319</id><published>2006-01-29T15:23:00.000Z</published><updated>2006-01-31T21:09:47.816Z</updated><title type='text'>IPSec tunnel from Vigor 2600G to ZyXEL ZyWall 35</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Zywall35.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/400/Zywall35.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I recently installed some ZyWALL 35 boxes because they support dual ADSL connections. Here are the settings I used to create an IPSec tunnel from a Vigor 2600G to a ZyXEL ZyWALL 35. Setting up IPSec tunnels between equipment from different manufacturers is always a hassle. Because the ZyWALL has two ADSL connections you have to make sure the data goes out on the right port of the ZyXEL. Unfortunately the ZyWALL does not (yet) support resilient IPSec tunnels.&lt;br /&gt;&lt;br /&gt;Firstly a version check of the kit I'm using:&lt;br /&gt;&lt;br /&gt;ZyWALL 35 : V4.00(WZ.5) 01/06/2006&lt;br /&gt;Vigor 2600 : 2.5.7_UK&lt;br /&gt;&lt;br /&gt;I've screen dumped the configuration pages below. The network IP address of the ZyWALL network is 192.65.100.0/255.255.255.0. The network address of the Vigor 2600 network is 192.168.65.0/255.255.255.0.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Vigor 2600 Settings&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Vigor2600.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/400/Vigor2600.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Advanced Setup-&gt;VPN and Remote Access Setup-&gt;LAN to LAN Profile Setup&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Vigor1.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/400/Vigor1.jpg" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.alquist.co.uk/vigor1.png"&gt;See Larger Image&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;From this screen "Advance" [sic] button&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Vigor3.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/400/Vigor3.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;"IKE Pre-Shared Key" button&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/Vigor2.0.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/400/Vigor2.0.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ZyWALL 35&lt;/strong&gt;&lt;br /&gt;Security-&gt;VPN&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/ZyWall1.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/400/ZyWall1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click on the edit button for "Andrew Home"&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/ZyWall2.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/400/ZyWall2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;On this screen it's important to enter the IP address of the port that should be used for making a connection to the remote network.&lt;br /&gt;&lt;br /&gt;Clicking on the edit button for AJ1 policy&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/ZyWall3.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/400/ZyWall3.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I hope you can read these screen dumps - I'm not sure if Blogger is resizing them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-113854852248890319?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/113854852248890319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=113854852248890319' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113854852248890319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113854852248890319'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/01/ipsec-tunnel-from-vigor-2600g-to-zyxel.html' title='IPSec tunnel from Vigor 2600G to ZyXEL ZyWall 35'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-113854818442761274</id><published>2006-01-29T15:20:00.000Z</published><updated>2006-01-29T18:07:43.596Z</updated><title type='text'>Free Download - SMTP List</title><content type='html'>Check out my web site where you can download a program that will list all the SMTP email addresses associated with each Exchange mailbox. The program also shows the email addresses of any email enabled groups.&lt;br /&gt;&lt;br /&gt;I wrote this program to help the process of outsourcing Exchange to a third party (Cobweb - &lt;a href="http://www.cobweb.co.uk/"&gt;http://www.cobweb.co.uk/&lt;/a&gt;). This server hosts about 30 domains and most people have 10-20 SMTP email addresses associated with each mailbox. It would be nice if there was a counter that showed how many emails have been received for each address. I'm sure people only receive on one or two addresses but working out the important ones is tricky.&lt;br /&gt;&lt;br /&gt;Why does Outlook support just one Exchange account. We have many users who work for several companies and need to access several Exchange accounts in the same instance of outlook. Microsoft - please fix in Office 12!&lt;br /&gt;&lt;br /&gt;see &lt;a href="http://www.alquist.co.uk"&gt;www.alquist.co.uk&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21661688-113854818442761274?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/113854818442761274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=113854818442761274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113854818442761274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113854818442761274'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/01/free-download-smtp-list.html' title='Free Download - SMTP List'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21661688.post-113854641288457478</id><published>2006-01-29T14:23:00.000Z</published><updated>2006-01-29T15:03:04.776Z</updated><title type='text'>Compaq R6000 RS232 Serial Lead</title><content type='html'>This is the pinout of the RS232 serial cable needed to connect a Compaq R6000 UPS to a PC. I could not find this anywhere else on the internet so I have documented it here. This lead is also known by the following HP part numbers:-&lt;br /&gt;&lt;br /&gt;295245-004&lt;br /&gt;340912-B21&lt;br /&gt;122922-001&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/1390/2194/1600/rs232.0.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/1390/2194/400/rs232.jpg" 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/21661688-113854641288457478?l=alquistconsulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alquistconsulting.blogspot.com/feeds/113854641288457478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21661688&amp;postID=113854641288457478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113854641288457478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21661688/posts/default/113854641288457478'/><link rel='alternate' type='text/html' href='http://alquistconsulting.blogspot.com/2006/01/compaq-r6000-rs232-serial-lead.html' title='Compaq R6000 RS232 Serial Lead'/><author><name>Andrew Jones</name><uri>http://www.blogger.com/profile/13107118977345285906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_1ejZjmvGNJ4/SfIOAP0aFkI/AAAAAAAAAC0/hzdvIq5AkSQ/S220/09172-003a-100x100.jpg'/></author><thr:total>0</thr:total></entry></feed>
