<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A08HQHYzeCp7ImA9WhRUFk0.&quot;"><id>tag:blogger.com,1999:blog-11467244</id><updated>2012-01-26T15:30:31.880-05:00</updated><category term="Compiler" /><category term="Visual Studio" /><category term="Performance" /><category term="DNS" /><category term="SQL" /><category term="icons" /><category term="TVUG" /><category term="Amazon" /><category term="Annoyances" /><category term="Windows Server 2008" /><category term="Wix" /><category term="ASP.NET" /><category term="Testing" /><category term="Logitech" /><category term="Delphi" /><category term="Beta" /><category term="family" /><category term="Networking" /><category term="Debugging" /><category term="Foxmarks" /><category term="mcafee" /><category term="workplace" /><category term="FinalBuilder" /><category term="MS Office" /><category term="64 bit" /><category term="Biuld Box" /><category term="IPv6" /><category term="Windows Home Server" /><category term="Plugin" /><category term="VMWare" /><category term="jQuery" /><category term="Toys" /><category term="Web Services" /><category term="Photography" /><category term="FreeNAS" /><category term="Microsoft Security Essentials" /><category term="Windows Server" /><category term="Firefox" /><category term="FiOS" /><category term="Coding Standards" /><category term="Ad Blocking" /><category term="Windows Installer" /><category term="Digital Rights" /><category term="GPS" /><category term="Bluetooth" /><category term="Internet Explorer" /><category term="Windows Server 2003" /><category term="ESX Server" /><category term="virtualization" /><category term="Printing" /><category term="Vista" /><category term="Twitter" /><category term="Backups" /><category term="support" /><category term="OAuth" /><category term="Time Warner Cable" /><category term="XP" /><category term="SQL Server" /><category term="Windows Update" /><category term="Windows Live Writer" /><category term="Remote Desktop" /><category term="Security" /><category term="IDE" /><category term="Stochos" /><category term="Joss Whedon" /><category term="TiVo" /><category term="PowerShell" /><category term="Chrome" /><category term="SmugMug" /><category term="GAC" /><category term="Tablet PC" /><category term="IPv4" /><category term="Neil Patrick Harris" /><category term="Dr. Horrible" /><category term="InstallAware" /><category term="TiVo advertising subtitles" /><category term="DD-WRT" /><category term="Daryl Hall" /><category term="Windows 7" /><category term="ListView" /><category term="wcf" /><category term="Music" /><category term="SharePoint" /><category term="multithreading" /><category term="Gadgets" /><category term="RegEx" /><category term="YouTube" /><category term="Google" /><category term="Blogging" /><category term="C#" /><category term="WinPatrol" /><category term="XAuth" /><category term="TweeVo" /><category term="Install" /><category term="Active Directory" /><category term="virus" /><category term="Hardware" /><category term="IE" /><category term="WPF" /><category term="Silverlight" /><title>Christopher Miller's random thoughts</title><subtitle type="html">Semi-random notes on programming, adoption, and life in general</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://anotherlab.rajapet.net/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>482</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/ChristopherMillersRandomThoughts" /><feedburner:info uri="christophermillersrandomthoughts" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;AkAERnw6fyp7ImA9WhRUE0o.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-5649839643583598194</id><published>2012-01-23T23:18:00.001-05:00</published><updated>2012-01-23T23:18:27.217-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-23T23:18:27.217-05:00</app:edited><title>Ratcheting up the scroll with my Logitech mouse</title><content type="html">&lt;p&gt;With the PC that gets used by the family, we use a wireless Logitech mouse. It’s the &lt;a href="http://www.logitech.com/en-us/428/165?softwareid=671&amp;amp;osid=14"&gt;VX Revolution&lt;/a&gt;. It’s a few years old, but it has all the functionality that we need. &lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-auRfGrFKPVM/Tx4xD_QGNRI/AAAAAAAAAkc/u2328dhrPUM/s1600-h/vx-revolution%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="vx-revolution" border="0" alt="vx-revolution" align="left" src="http://lh5.ggpht.com/-a7RiZ-kFBH4/Tx4xELzmqMI/AAAAAAAAAkk/TKmVz-8Tnuk/vx-revolution_thumb.png?imgmax=800" width="87" height="118"&gt;&lt;/a&gt;I was using it tonight and the scrolling was, for the lack of a better word, wrong.&amp;nbsp; The wheel usually scrolled with a nice ratchet.&amp;nbsp; You moved the wheel, and you would feel a nice soft click as it scroll.&lt;/p&gt; &lt;p&gt;Tonight, it had stopped clicking and the scrolling was too sensitive.&amp;nbsp; You would scroll down a page and when you lifted your finger off the mouse wheel, it would roll back a tiny bit.&amp;nbsp; This would cause the page on the screen to jump back a bit.&amp;nbsp; It was very jarring and annoying.&amp;nbsp; What did I do to this thing and how do I fix it?&lt;/p&gt; &lt;p&gt;On my home dev box, I have a &lt;a href="http://www.logitech.com/en-us/support-downloads/downloads/mice/devices/130"&gt;Logitech MX Revolution&lt;/a&gt;.&amp;nbsp; Kind of like the big brother to the VX.&amp;nbsp; On the MX, I could switch the wheel between the free spinning mode and the ratchet mode by clicking on the wheel.&amp;nbsp; That didn’t work on the VX.&amp;nbsp; I tried playing with the Logitech SetPoint utility that allows you to tweak the mouse settings.&amp;nbsp; &lt;a href="http://washedupcelebrities.blogspot.com/2009/08/andrew-dice-clay.html"&gt;No dice&lt;/a&gt;, nothing jumped out.&lt;/p&gt; &lt;p&gt;When in doubt, see if there is an updated mouse driver from Logitech.&amp;nbsp; I had 6.2 installed, the current version is 6.3.&amp;nbsp; So I grabbed the general Windows 7 setup exe for SetPoint and installed.&amp;nbsp; And that’s when the Logitech driver fell down.&amp;nbsp; Their all in one installer installed the 32 bit driver instead of the 64 bit driver.&amp;nbsp; Usually that’s not a huge deal, but it looked like they installed the 32 driver AS the 64 bit driver.&amp;nbsp; It crashed as soon as I loaded it.&lt;/p&gt; &lt;p&gt;OK, back to square one.&amp;nbsp; I uninstalled the newly broken driver and when back to the Logitech site.&amp;nbsp; Sure enough, I saw a link for the 64 bit only version.&amp;nbsp; I grabbed it, installed it, and it ran with out crashing.&amp;nbsp; It didn’t let me change the scroll wheel behavior, so I was back to square one again.&lt;/p&gt; &lt;p&gt;When in doubt, RTFM.&amp;nbsp; I took a peek at the user guide for the VX, from the Logitech site.&amp;nbsp; Guess what gang, on the bottom of the mouse, there’s an oddly shaped switch control.&lt;/p&gt; &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="400"&gt; &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/-mLMUvihYVME/Tx4xETCWJQI/AAAAAAAAAks/6OzgjdGm7-s/s1600-h/OddlyShaped%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="OddlyShaped" border="0" alt="OddlyShaped" src="http://lh5.ggpht.com/-yCOxCH7ZPc8/Tx4xEiykf5I/AAAAAAAAAk0/HhFZkP1iJLI/OddlyShaped_thumb%25255B2%25255D.png?imgmax=800" width="198" height="244"&gt;&lt;/a&gt;Figure 1 – An oddly shaped control&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;It’s hard to see in this picture, but the smooth circle at the top right of the switch puts the mouse into free wheel mode.&amp;nbsp; The gear shape at the bottom left, puts the mouse in ratchet.&amp;nbsp; Somehow the switch had been changed to free rolling mode.&amp;nbsp; I flicked back to ratchet mode and life was good again.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-5649839643583598194?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=-1Z8CL6yUw4:0pDfuZ0LftQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=-1Z8CL6yUw4:0pDfuZ0LftQ:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=-1Z8CL6yUw4:0pDfuZ0LftQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=-1Z8CL6yUw4:0pDfuZ0LftQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=-1Z8CL6yUw4:0pDfuZ0LftQ:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=-1Z8CL6yUw4:0pDfuZ0LftQ:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=-1Z8CL6yUw4:0pDfuZ0LftQ:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/-1Z8CL6yUw4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/5649839643583598194/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2012/01/ratcheting-up-scroll-with-my-logitech.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5649839643583598194?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5649839643583598194?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/-1Z8CL6yUw4/ratcheting-up-scroll-with-my-logitech.html" title="Ratcheting up the scroll with my Logitech mouse" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-a7RiZ-kFBH4/Tx4xELzmqMI/AAAAAAAAAkk/TKmVz-8Tnuk/s72-c/vx-revolution_thumb.png?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2012/01/ratcheting-up-scroll-with-my-logitech.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcAQ3kycSp7ImA9WhRVFUg.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-689089746651479812</id><published>2012-01-14T09:40:00.001-05:00</published><updated>2012-01-14T09:40:42.799-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-14T09:40:42.799-05:00</app:edited><title>An open letter to Newport Television</title><content type="html">&lt;p&gt;This is a copy of an email that I just sent to &lt;a href="http://www.newporttv.com/default.aspx"&gt;Newport Television&lt;/a&gt;, owners of WXXA-FOX23&lt;/p&gt; &lt;p&gt;Please forward to &lt;a href="http://www.linkedin.com/pub/michael-dipasquale/8/578/772"&gt;Michael DiPasquale&lt;/a&gt;, Vice-President/Asst. General Counsel at Newport Television &lt;br&gt;&lt;br&gt;Dear Mr. DiPasquale,&lt;br&gt;&lt;br&gt;I am a Verizon FiOS subscriber in the Albany, NY area.&amp;nbsp; I have noticed that you have pulled &lt;a href="http://www.fox23news.com/"&gt;WXXA-FOX23&lt;/a&gt; from Verizon FiOS TV because your carriage agreement expired on January 12, 2012.&amp;nbsp; My understanding of this is that your company, &lt;a href="http://www.rbr.com/tv-cable/verizon-blacks-out-newport-tv-stations-over-retrans-impasse.html"&gt;Newport Television, and Verizon could not come to an agreement over the rates&lt;/a&gt;.&lt;br&gt;&lt;br&gt;As someone who watches WXXA, I am one of your customers.&amp;nbsp; As such, I would like to share my opinion.&amp;nbsp; I don't know the details of your carriage rate negotiations, but I think you should settle with Verizon.&amp;nbsp; &lt;br&gt;&lt;br&gt;I don't want to pay more for a channel that I can get over the air (OTA).&amp;nbsp; The FOX network programming that I watch is mostly available via the &lt;a href="http://www22.verizon.com/residential/fiostv/vod/vod.htm"&gt;FiOS Video On Demand (VOD) service&lt;/a&gt;.&amp;nbsp; I won't get to see the show when it airs, but I'll see it within a week.&amp;nbsp; And it will be commercial free.&amp;nbsp; I like my &lt;a href="http://www.tivo.com/"&gt;DVR&lt;/a&gt;, I watch TV on my schedule.&amp;nbsp; &lt;/p&gt; &lt;p&gt;With your channel being OTA only, the only time I'm going to watch it is going to be for sports. I liked watching the FOX23 news, that was one of the few shows you had my attention through commercials.&amp;nbsp; And that was the same for FOX sports.&amp;nbsp; I can put up with the annoyance of switching to the OTA signal for the sports, but for the rest of your coverage, I'll just skip it.&lt;br&gt;&lt;br&gt;FiOS coverage is still small in the Albany area, but the areas with FiOS availability tend to be the &lt;a href="http://en.wikipedia.org/wiki/Bethlehem,_New_York#Demographics"&gt;higher&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Colonie,_New_York#Demographics"&gt;income&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Scotia,_New_York#Demographics"&gt;areas&lt;/a&gt;.&amp;nbsp; We are the people that your advertisers want to reach.&amp;nbsp; You have better access to the subscriber numbers, but I would expect that you are no longer available in 10,000 household in middle to upper middle class neighborhoods in this area.&amp;nbsp; If I were an advertiser with you, I would be negotiating for a lower rate on commercial air time. &lt;br&gt;&lt;br&gt;I don't know the detail of your negotiations with Verizon, but if you are asking for a higher rate, I really think that you should reconsider your terms.&amp;nbsp; I don't know the state of the local economy is in Kansas City, MO; but it's not that great here.&amp;nbsp; Please consider this during your negotiations with Verizon FiOS.&lt;br&gt;&lt;/p&gt; &lt;p&gt;sincerely,&lt;br&gt;Chris Miller&lt;br&gt;Slingerlands, NY&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-689089746651479812?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=vEToVGfmZuc:25wKxeP-KF8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=vEToVGfmZuc:25wKxeP-KF8:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=vEToVGfmZuc:25wKxeP-KF8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=vEToVGfmZuc:25wKxeP-KF8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=vEToVGfmZuc:25wKxeP-KF8:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=vEToVGfmZuc:25wKxeP-KF8:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=vEToVGfmZuc:25wKxeP-KF8:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/vEToVGfmZuc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/689089746651479812/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2012/01/open-letter-to-newport-television.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/689089746651479812?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/689089746651479812?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/vEToVGfmZuc/open-letter-to-newport-television.html" title="An open letter to Newport Television" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2012/01/open-letter-to-newport-television.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QCQHsycSp7ImA9WhRTGU0.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-1125866372198688040</id><published>2011-11-10T01:06:00.001-05:00</published><updated>2011-11-10T01:09:21.599-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-10T01:09:21.599-05:00</app:edited><title>Replacing GetHostByName with GetHostAddresses</title><content type="html">&lt;p&gt;I’m working on some C# code that needs to send some data over a socket connection.&amp;#160; The user can specify the destination by name or by IP address.&amp;#160; I was using syntax like the following to get the address&lt;/p&gt;  &lt;pre class="brush: csharp"&gt;IPAddress addr = Dns.GetHostByName(host).AddressList[0];&lt;br /&gt;&lt;br /&gt;IPEndPoint endPoint = new IPEndPoint(addr, 9100);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;That worked, but VS2010 spits out the following warning:&lt;/p&gt;&lt;p&gt;'System.Net.Dns.GetHostByName(string)' is obsolete: '&amp;quot;GetHostByName is obsoleted for this type, please use GetHostEntry instead. &lt;a href="http://go.microsoft.com/fwlink/?linkid=14202&amp;quot;'"&gt;http://go.microsoft.com/fwlink/?linkid=14202&amp;quot;'&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;So I replaced the call to &lt;a href="http://msdn.microsoft.com/en-us/library/system.net.dns.gethostbyname.aspx"&gt;GetHostByName&lt;/a&gt; with &lt;a href="http://msdn.microsoft.com/en-us/library/ms143998.aspx"&gt;GetHostEntry&lt;/a&gt;. When I passed in the IP address as a string GetHostByName, it threw an error, &amp;quot;No such host is known&amp;quot;. &lt;/p&gt;&lt;p&gt;That's not good. I didn't want to use obsolete code, but the recommended replacement wasn't working. I did a bit of searchnng on the Internets and found that GetHostEntry attempts to do a DNS reverse resolve and that doesn't always work. As it turns out, GetHostEntry is not the only method that can be substituted for GetHostByName. &lt;a href="http://msdn.microsoft.com/en-us/library/system.net.dns.gethostaddresses.aspx"&gt;GetHostAddresses&lt;/a&gt; will return the IP address for the specified host. I was able to use the following code without any warnings: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;IPAddress addr = Dns.GetHostAddresses(host)[0];&lt;br /&gt;&lt;br /&gt;IPEndPoint endPoint = new IPEndPoint(addr, 9100);&lt;/pre&gt;&lt;br /&gt;And we are good. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-1125866372198688040?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=OSyDZ9GqemE:JEeuSeh9zs0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=OSyDZ9GqemE:JEeuSeh9zs0:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=OSyDZ9GqemE:JEeuSeh9zs0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=OSyDZ9GqemE:JEeuSeh9zs0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=OSyDZ9GqemE:JEeuSeh9zs0:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=OSyDZ9GqemE:JEeuSeh9zs0:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=OSyDZ9GqemE:JEeuSeh9zs0:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/OSyDZ9GqemE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/1125866372198688040/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2011/11/replacing-gethostbyname-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/1125866372198688040?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/1125866372198688040?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/OSyDZ9GqemE/replacing-gethostbyname-with.html" title="Replacing GetHostByName with GetHostAddresses" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2011/11/replacing-gethostbyname-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MFSXwyeip7ImA9WhdUFE4.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-4387349377195336644</id><published>2011-09-30T20:20:00.001-04:00</published><updated>2011-09-30T22:16:58.292-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-30T22:16:58.292-04:00</app:edited><title>An odd way to post</title><content type="html">This short little post was composed with the Blogger iPhone app.  It's running on my iPad and I'm using the &lt;a target="_blank" href="http://www.shopping.hp.com/webapp/shopping/product_detail.do?product_code=FB344AA%23AC3&amp;aoid=44661&amp;ci_sku=FB344AA#AC3&amp;ci_gpa=pla&amp;ci_kw=%7Bkeyword%7D"&gt;BlueTooth keyboard&lt;/a&gt; that HP made for the ill-fated TouchPad.&lt;br /&gt;&lt;br /&gt;It works, but I'm limited to basic text entry.  No fancy HTML was harmed in the making of this post.  You can include images, which is something I guess.  I would have liked an app that let you enter in HTML markup using something like markdown.&lt;br /&gt;&lt;br /&gt;On the plus side, the HP keyboard is nice way to enter in extended amounts of text on a touch only device.  Most of the keys work.  The media keys work just fine, but most of the TouchPad specific keys are ignored.  With the exception of the search key, that invokes the iOS search box.  For $20, it's a good enough BT keyboard for my needs. It's &lt;a target="_blank" href="http://en.wikipedia.org/wiki/USB_human_interface_device_class"&gt;HID&lt;/a&gt; enough.&lt;br /&gt;&lt;br /&gt;I went back and edited this post with an app called, &lt;a target="_blank" href="http://blogpressapp.com/index.php"&gt;BlogPress&lt;/a&gt;.  It's not Windows Live Writer, but it's good enough for posting from a tablet.  You can do some basic HTML formatting.  It's a bit quirky, especially when scrolling at the bottom of the page.  The text looks like it's dropping of the bottom of the page and you have to drag the page back up.  But it works.&lt;br /&gt;&lt;p class='blogpress_location'&gt;Location:&lt;a href='http://maps.google.com/maps?q=Home,United%20States%4042.622956%2C-73.878108&amp;z=10'&gt;Home,United States&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-4387349377195336644?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=akobmLEAZpA:x5ctPWom5ZQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=akobmLEAZpA:x5ctPWom5ZQ:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=akobmLEAZpA:x5ctPWom5ZQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=akobmLEAZpA:x5ctPWom5ZQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=akobmLEAZpA:x5ctPWom5ZQ:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=akobmLEAZpA:x5ctPWom5ZQ:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=akobmLEAZpA:x5ctPWom5ZQ:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/akobmLEAZpA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/4387349377195336644/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2011/09/odd-way-to-post.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/4387349377195336644?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/4387349377195336644?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/akobmLEAZpA/odd-way-to-post.html" title="An odd way to post" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2011/09/odd-way-to-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4BQHY8eCp7ImA9WhdTFUU.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-2577731893158830749</id><published>2011-07-13T11:26:00.001-04:00</published><updated>2011-07-13T15:55:51.870-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-13T15:55:51.870-04:00</app:edited><title>How to set the DevExpress ASPxScheduler current time line marker to only appear for the current date</title><content type="html">&lt;p&gt;I’ve been using the &lt;a href="http://www.devexpress.com/"&gt;DevExpress&lt;/a&gt; &lt;a href="http://www.devexpress.com/Products/NET/Controls/ASP/Scheduler/"&gt;ASPxScheduler&lt;/a&gt; with one of our WebForms apps and it’s been a pretty good experience so far. It does pretty much what I need for it to do and I have been able to bend it to do things that I want it to do.&lt;/p&gt;  &lt;p&gt;One feature is that it displays a marker on the scheduler to represent the current time.&amp;#160; This is a feature that Outlook does on its calendar and the ASPxScheduler by and large is trying to mirror that experience.&amp;#160; In this case, they behave slightly differently than Outlook.&amp;#160; In Outlook, the time line marker only appears when the calendar time span includes the current date.&amp;#160; If the calendar view does not include the current date, you don’t see that line.&lt;/p&gt;  &lt;p&gt;&lt;a title="Time line marker documentation" href="http://documentation.devexpress.com/#AspNet/DevExpressWebASPxSchedulerASPxSchedulerOptionsBehavior_ShowTimeMarkertopic"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" border="0" src="http://www.rajapet.net/photos/i-bxbpLgD/0/O/i-bxbpLgD.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1"&gt;(Image of the scheduler control showing the time marker taken from the online documentation)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;With the ASPxScheduler, if you have &lt;a href="http://documentation.devexpress.com/#AspNet/DevExpressWebASPxSchedulerASPxSchedulerOptionsBehavior_ShowTimeMarkertopic"&gt;time line marker enabled&lt;/a&gt;, it’s always being displayed, no matter what the date is.&amp;#160; That is a little bit counter intuitive and doesn’t match the Outlook model that DevExpress is trying to following.&amp;#160; As it turns out, it was easy to change that behavior. &lt;/p&gt;  &lt;p&gt;You can use the &lt;a href="http://documentation.devexpress.com/#AspNet/DevExpressWebASPxSchedulerASPxScheduler_VisibleIntervalChangedtopic"&gt;VisibleIntervalChanged&lt;/a&gt; event of ASPxScheduler control and make the time line marker behave like Outlook with a single line of code:&lt;/p&gt;  &lt;pre class="brush: csharp"&gt;protected void ASPxScheduler1_VisibleIntervalChanged(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;    ASPxScheduler1.OptionsBehavior.ShowTimeMarker = ASPxScheduler1.ActiveView.GetVisibleIntervals().Interval.Contains(DateTime.UtcNow.Date.AddMinutes(1));&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;We use this event to enable the display of the marker when the current date is being displayed by the control, otherwise disable the marker. The call to &lt;a href="http://documentation.devexpress.com/#AspNet/DevExpressWebASPxSchedulerSchedulerViewBase_GetVisibleIntervalstopic"&gt;GetVisibleIntervals()&lt;/a&gt;.Interval returns &lt;a href="http://documentation.devexpress.com/#CoreLibraries/clsDevExpressXtraSchedulerTimeIntervaltopic"&gt;TimeInterval&lt;/a&gt; object, which is a DevExpress.XtraScheduler class that represents an interval of time for the current scheduler view.&amp;#160; You can use the Contains() method to check if a DateTime or TimeInterval object is contained within the interval.&amp;#160; Internally, the ASPxScheduler uses UTC time, so you want to pass the current date as UTC.&amp;#160; We add 1 minute to the time otherwise the DayView for the previous day will include the current date.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This functionality works for the version of the ASPxScheduler that was current at the time this was written, v2011.1.5.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-2577731893158830749?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=nMKzHW7bXik:LbpVEnNtTdA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=nMKzHW7bXik:LbpVEnNtTdA:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=nMKzHW7bXik:LbpVEnNtTdA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=nMKzHW7bXik:LbpVEnNtTdA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=nMKzHW7bXik:LbpVEnNtTdA:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=nMKzHW7bXik:LbpVEnNtTdA:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=nMKzHW7bXik:LbpVEnNtTdA:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/nMKzHW7bXik" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/2577731893158830749/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2011/07/how-to-set-devexpress-aspxscheduler.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/2577731893158830749?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/2577731893158830749?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/nMKzHW7bXik/how-to-set-devexpress-aspxscheduler.html" title="How to set the DevExpress ASPxScheduler current time line marker to only appear for the current date" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2011/07/how-to-set-devexpress-aspxscheduler.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQASHcyeip7ImA9WhZUFUg.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-4642407415782845654</id><published>2011-06-08T13:56:00.001-04:00</published><updated>2011-06-08T14:05:49.992-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-08T14:05:49.992-04:00</app:edited><title>Binding an Enum to a DataSource</title><content type="html">&lt;p&gt;I had some code for an ASP.Net Webforms app where I need to present to the user a list of options that were define as Enum.&amp;#160; I want to populate a combobox with the enumerated type values and do it from code automatically.&amp;#160; This is the Enum in question&lt;/p&gt;  &lt;pre class="brush: csharp"&gt;enum PrintColorSchema {&lt;br /&gt;    Default = 0,&lt;br /&gt;    FullColor = 1,&lt;br /&gt;    GrayScale = 2,&lt;br /&gt;    BlackAndWhite = 3,&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To make things more interesting, I wanted to exclude the first item in the list, “Default”.&amp;#160; One way to do this would be to manually populate a select list with the values from the Enum.&amp;#160; While that would work for this Enum, I wanted to find a way where I didn’t have to hard code the values.&lt;br /&gt;&lt;br&gt;I added a DropDownList control to the page and in the code behind, I added the following code:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;ColorSchema.DataSource = &lt;br /&gt;    Enum.GetValues(typeof(PrintColorSchema))&lt;br /&gt;        .Cast&amp;lt;PrintColorSchema&amp;gt;()&lt;br /&gt;        .Select(en =&amp;gt; new&lt;br /&gt;        {&lt;br /&gt;            Value = en,&lt;br /&gt;            Text = Wordify(en.ToString())&lt;br /&gt;        }).Where (en =&amp;gt; en.Value != PrintColorSchema.Default);&lt;br /&gt;&lt;br /&gt;ColorSchema.DataTextField = &amp;quot;Text&amp;quot;;&lt;br /&gt;ColorSchema.DataValueField = &amp;quot;Value&amp;quot;;&lt;br /&gt;ColorSchema.DataBind();&lt;/pre&gt;&lt;br /&gt;What we are using is a bit of &lt;a href="http://msdn.microsoft.com/en-us/library/bb397919.aspx"&gt;LINQ&lt;/a&gt; to convert the Enum to an IEnumerable collection of an anonymous class. That class has two members, Value and Text. Value is set to the enumerated type and Text is set to prettified version of the enumerated type. That function looks like this: &lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;public static string Wordify(string pascalCaseString)&lt;br /&gt;{&lt;br /&gt;    System.Text.RegularExpressions.Regex r = &lt;br /&gt;       new System.Text.RegularExpressions.Regex(&amp;quot;(?&amp;lt;=[a-z])(?&lt;x&gt;[A-Z])|(?&amp;lt;=.)(?&lt;x&gt;[A-Z])(?=[a-z])&amp;quot;);&lt;br /&gt;    return r.Replace(pascalCaseString, &amp;quot; ${x}&amp;quot;);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;The code &lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;Enum.GetValues(typeof(PrintColorSchema))&lt;/pre&gt;&lt;br /&gt;converts the Enum to an array of constants. The next part &lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;.Cast&amp;lt;PrintColorSchema&amp;gt;()&lt;/pre&gt;&lt;br /&gt;returns an IEnumerable&lt;printcolorschema&gt; collecttion from the array. The code &lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;.Select(en =&amp;gt; new&lt;br /&gt;{&lt;br /&gt;    Value = en,&lt;br /&gt;    Text = Wordify(en.ToString())&lt;br /&gt;})&lt;/pre&gt;&lt;br /&gt;returns a new IEnumerable&amp;lt;&amp;gt; collection of an anonymouse type. That type has the enumeration element as the Value and that element converted to a string as the Text. Since the elements were in &lt;a title="Capitalization Styles" href="http://msdn.microsoft.com/en-us/library/x2dbyw72%28v=vs.71%29.aspx"&gt;&amp;quot;PascalCase&amp;quot;&lt;/a&gt;, a simple RegEx function was used to split the text into multiple words, The final Where operator is used to filter out the first item from the list. &lt;br&gt;&lt;br&gt;The HTML that gets rendered:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: html"&gt;&amp;lt;select id=&amp;quot;ColorSchema&amp;quot; name=&amp;quot;ColorSchema&amp;quot;&amp;gt; &lt;br /&gt;    &amp;lt;option selected value=&amp;quot;FullColor&amp;quot;&amp;gt;Full Color&amp;lt;/option&amp;gt; &lt;br /&gt;    &amp;lt;option value=&amp;quot;GrayScale&amp;quot;&amp;gt;Gray Scale&amp;lt;/option&amp;gt; &lt;br /&gt;    &amp;lt;option value=&amp;quot;BlackAndWhite&amp;quot;&amp;gt;Black And White&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;lt;/select&amp;gt; &lt;/pre&gt;&lt;br /&gt;Which renders like this &lt;br /&gt;&lt;br /&gt;&lt;select id="ColorSchema" name="ColorSchema"&gt; &lt;option value="FullColor"&gt;Full Color&lt;/option&gt; &lt;option value="GrayScale"&gt;Gray Scale&lt;/option&gt; &lt;option value="BlackAndWhite"&gt;Black And White&lt;/option&gt;&lt;/select&gt; &lt;br /&gt;&lt;br /&gt;&lt;p&gt;For this Enum, all the code was overkill, adding three &amp;lt;option&amp;gt; elements to the &amp;lt;select&amp;gt; control would have been less work.&amp;#160; Where this is handy is when you have Enum types with many elements or when the Enum type changes.&amp;#160; If the Enum type changes, no modification to your code is needed to update the combo box.&amp;#160; One less place in the code to fail.&amp;#160; And that is a good thing.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-4642407415782845654?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=KCEimK8oa_4:VwT1abmhTRs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=KCEimK8oa_4:VwT1abmhTRs:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=KCEimK8oa_4:VwT1abmhTRs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=KCEimK8oa_4:VwT1abmhTRs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=KCEimK8oa_4:VwT1abmhTRs:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=KCEimK8oa_4:VwT1abmhTRs:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=KCEimK8oa_4:VwT1abmhTRs:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/KCEimK8oa_4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/4642407415782845654/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2011/06/binding-enum-to-datasource.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/4642407415782845654?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/4642407415782845654?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/KCEimK8oa_4/binding-enum-to-datasource.html" title="Binding an Enum to a DataSource" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2011/06/binding-enum-to-datasource.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAEQXszfip7ImA9WhZXFE4.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-4868883853332661388</id><published>2011-05-03T10:25:00.001-04:00</published><updated>2011-05-03T10:25:00.586-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-03T10:25:00.586-04:00</app:edited><title>There was a Time Warner Cable Disconnect Technician in my yard this morning.</title><content type="html">&lt;p&gt;I had an interesting conversation this morning with a Time Warner Cable (TWC) Disconnect Technician.&amp;#160; I went out to get my paper and he had the cable junction box open.&amp;#160; He was clipping the wires going my house and my neighbor’s house.&amp;#160; We had both switched to Verizon FiOS TV and were no longer paying for any TWC services.&lt;/p&gt;  &lt;p&gt;He came over to me and asked if he could ask a few questions.&amp;#160; I wasn’t sure what to expect, but he was very friendly.&amp;#160; He is a Disconnect Technician. He was driving all over town, clipping the cable wires to houses that had switched from TWC to FiOS.&amp;#160; Since FiOS TV went live in Bethlehem last month, TWC was bleeding customers all over town.&amp;#160; He didn’t give me any numbers, but he said a lot of people had already switched and TWC management are pretty upset.&lt;/p&gt;  &lt;p&gt;He is also a disgruntled ex-employee of TWC.&amp;#160; At one point he was a TWC employee with the full benefits, at some point they terminated his position and hired him back as a contractor to TWC.&amp;#160; He was not happy about the change from being an employee to being a contractor.&amp;#160; He wasn’t the only employee that they did this to, it must have been a cost cutting move on TWC’s part. &lt;/p&gt;  &lt;p&gt;He asked me about the services that I was getting and how much I was paying. Oddly enough, he though I was getting the TV channels through a dish.&amp;#160; He literally didn’t know that FiOS TV was a Verizon package of channels.&amp;#160; He said that he was thinking of getting FiOS service for himself.&lt;/p&gt;  &lt;p&gt;He did say a few times that the local TWC management were upset over the subscribers losses to Verizon.&amp;#160; They don’t have much to offer existing subscribers who want to switch.&amp;#160; They can’t compete on the technology side, but they can compete on the cost.&amp;#160; Raising their rates a month before FiOS TV rolled into town, was not one of their smarter moves.&lt;/p&gt;  &lt;p&gt;When I went to the local TWC office to cancel my service and return the equipment, the staff there made no attempt to keep me as a customer.&amp;#160; They asked where I was moving to, and they were surprised when I said I wasn’t moving.&amp;#160; But they did not ask why I was dropping the service or ask if there was anything that they could do to get me to stay with TWC.&amp;#160;&amp;#160; It would have been a pointless effort, I was already on FiOS TV and there was nothing that TWC could offer to get me to switch back.&amp;#160; Still, it’s general business sense to keep your existing customers.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-4868883853332661388?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=rFc3rouXOwI:BIBkyCaaz68:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=rFc3rouXOwI:BIBkyCaaz68:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=rFc3rouXOwI:BIBkyCaaz68:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=rFc3rouXOwI:BIBkyCaaz68:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=rFc3rouXOwI:BIBkyCaaz68:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=rFc3rouXOwI:BIBkyCaaz68:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=rFc3rouXOwI:BIBkyCaaz68:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/rFc3rouXOwI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/4868883853332661388/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2011/05/there-was-time-warner-cable-disconnect.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/4868883853332661388?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/4868883853332661388?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/rFc3rouXOwI/there-was-time-warner-cable-disconnect.html" title="There was a Time Warner Cable Disconnect Technician in my yard this morning." /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2011/05/there-was-time-warner-cable-disconnect.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IDQHcyfyp7ImA9WhZSGUo.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-5143052707813205873</id><published>2011-04-05T00:59:00.001-04:00</published><updated>2011-04-05T00:59:31.997-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-05T00:59:31.997-04:00</app:edited><title>One week with FiOS TV</title><content type="html">&lt;p&gt;It’s been a week since I switched from Time Warner Cable to Verizon FiOS TV.&amp;#160; After years of having only one choice in my town for cable TV, Verizon just started offering FiOS TV. While I appreciate the quality of support that I had received from TWC, I was ready to switch providers.&amp;#160; I’m getting better technology at lower price from VZ.&lt;/p&gt;  &lt;p&gt;I already had FiOS Internet, bundled with the Verizon Phone service.&amp;#160; I had TWC digital cable with a single Set Top Box (STB) and a CableCARD for my TiVo HD.&amp;#160; I was able to get their digital lineup on two TV sets, and a limited selection of their lineup on the analog channels on two more sets.&amp;#160; I love my TiVo and had two Series 2 boxes on the analog cable, and a TiVo HD connected to the digital cable.&amp;#160; The combined total of FiOS Internet, TiVo subscriptions, phone, and cable, came to around $200 a month.&amp;#160; My FiOS Internet connection speeds where set to 20 MB/s down, and 5 MB/s up.&lt;/p&gt;  &lt;p&gt;I upgraded to the FiOS Extreme Triple Play package.&amp;#160; This gave me a selection of channels a little better than the selection that I had TWC digital cable.&amp;#160; I also gained a faster Internet connection, rated at 25MB/s in both directions.&amp;#160; Over the last week, I did spot tests at different times and I was getting results like this:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.speedtest.net/result/1224347137.png" /&gt;&lt;/p&gt;  &lt;p&gt;If you use any online service for printing digital pictures, you’ll appreciate that upload speed.&amp;#160; On the days where I need to work from home, the connection to my office network is fast enough that I feel like I am at the office.&lt;/p&gt;  &lt;p&gt;Since FiOS TV is digital only, I retired my Series 2 TiVo units.&amp;#160; They had been in use since 2005, it was time to say good bye.&amp;#160; TiVo customer support was nice enough to transfer my TiVo HD to the cheaper rate that I was paying on the Series 2. I ended up getting the &lt;a href="http://www22.verizon.com/residentialhelp/fiostv/receivers/equipment+issues/questionsone/124820.htm"&gt;Verizon multiroom DVR&lt;/a&gt; with three set top boxes.&amp;#160; Each STB would be able to access the shows recorded on the DVR.&amp;#160; That wiped out the loss of the Series 2 boxes.&amp;#160; For the TiVo HD, I got a CableCARD so it could get the FiOS TV Channels.&lt;/p&gt;  &lt;p&gt;Installation was pretty straight forward.&amp;#160; The installer was friendly and professional and had done a lot of FiOS TV installations.&amp;#160; The CableCARD installation was new to him, and we’ll get to that in a minute.&amp;#160; Since I had had FiOS Internet for the last 5 years, most of the installation prep work was already done.&amp;#160; He just had to check all the coax cable connections.and hook up the new hardware.&lt;/p&gt;  &lt;p&gt;Time Warner had done a pretty good job with the coax wiring over the years.&amp;#160; The installer only had to do a couple of things with the coax wiring, mainly removing the splitters from the the two TV sets that had the Series 2 boxes.&lt;/p&gt;  &lt;p&gt;The first thing that was installed was the FiOS router.&amp;#160; He installed an &lt;a href="http://www.actiontec.com/products/product.php?pid=213"&gt;Actiontec MI24WR (Rev F)&lt;/a&gt;.&amp;#160; This router took the Ethernet cable coming in from the &lt;a href="http://www.dslreports.com/faq/12565"&gt;Verizon ONT&lt;/a&gt; and provided the FiOS Internet over WiFi and through the Ethernet jacks.&amp;#160; It provided CATV and TC/IP to the DVR and STBs over the coax cable.&lt;/p&gt;  &lt;p&gt;While this appears to be a decent enough router, my existing &lt;a href="http://www.netgear.com/products/service-providers/routers-and-gateways/gigabit-ethernet-routers-gateways/WNDR3700.aspx"&gt;Netgear WNDR3700 router&lt;/a&gt; has better hardware for WiFi.&amp;#160; After the installer got the Actiontec working, I hooked my router to the Actiontec.&amp;#160; I had to make some minor changes to the Netgear to let it coexist with the Actiontec, then I logged into the Actiontec and turned off it’s WiFi radio.&lt;/p&gt;  &lt;p&gt;It takes a while for the DVR and STBs to come online.&amp;#160; While we were waiting, we tackled my TiVo HD.&amp;#160; This was installer’s first experience with a CableCARD, so he let me help him out. But first, I need to explain something about using a CableCARD with Time Warner.&lt;/p&gt;  &lt;p&gt;Time Warner Cable uses a technology called Switched Digital Video (SDV) to be able to provide their channel lineup with their existing bandwidth.&amp;#160; Usually when you have cable TV, all of the channels that you can get are sent over the cable line at the same time.&amp;#160; Your TV or STB knows what frequency each channel is on and when you change the channel, the appropriate frequency is selected.&amp;#160; Nothing new here, it’s been that way in form or another since the days of &lt;a href="http://en.wikipedia.org/wiki/Milton_Berle#Mr._Television"&gt;Uncle Milty&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;With SDV, only the channels being watched in your general neighborhood are going over the wire.&amp;#160; When you change the channel, the STB requests to have that channel provided.&amp;#160; If that channel is already being sent your street or apartment building, then you get the current frequency of that channel.&amp;#160; Otherwise the local office enables that channel and tells the STB what frequency it’s on.&lt;/p&gt;  &lt;p&gt;A TiVo box has no idea how SDV works.&amp;#160; So the TiVo people and the CableCARD people came up with a device called the &lt;a href="http://www.timewarnercable.com/neowpa/site.faqs/DigitalCab/SwitchedDi/What-is-a-Tuning-Adapter"&gt;tuning adapter&lt;/a&gt;. It sits between the TiVo and the cable and TiVo knows how to talk to the tuning adapter.&amp;#160; When you change the channel on the TiVo, it sends a message to the tuning adapter, which in turn does the SDV dance with the office, and the end result is that you get your channel.&amp;#160; When it works, it’s fast and transparent to the end user.&amp;#160; My experience with the tuning adapter was that every few months or so, it would lose the ability to get the channels and you would have to reboot it.&amp;#160; This functionality isn’t unique to the TiVo, the TWC DVR and STB just have it built in.&lt;/p&gt;  &lt;p&gt;FiOS TV does not use SDV, so I didn’t have to deal with any tuning adapter nonsense.&amp;#160; We pulled the TWC cable card out, unplugged the tuning adapter, and plugged in the VZ supplied CableCARD.&amp;#160; TiVo is very helpful with CableCARDs.&amp;#160; When you insert new one it, TiVo automatically displays the information that installer needs to get the card activated.&amp;#160; With TWC, the installer had to call in the information from the card.&amp;#160; It took a few tries to get it working.&amp;#160; With FiOS, the installer had an app that he installed on my PC and he was able to activate the card easily.&lt;/p&gt;  &lt;p&gt;The TiVo immediately saw that the card was activated, and we went through it’s guided setup to tell it that it had a new cable provider.&amp;#160; For some off reason, Verizon had not notified TiVo that my zipcode was covered by FiOS.&amp;#160; I had called TiVo a few days before the install, and they provided me with a list of zipcodes that would work.&amp;#160; I entered in the closest one in, and my TiVo was now in FiOS country.&lt;/p&gt;  &lt;p&gt;After telling it that it was now on FiOS TV, the TiVo connected to it’s mothership and downloaded the new lineup and channel guide information.&amp;#160; It then migrated over the season passes from the old TWC channel numbers to the channel numbers used for the same stations on FiOS TV.&amp;#160; I was amazed how well that worked.&lt;/p&gt;  &lt;p&gt;We have been using the FiOS TV for a week now and we are very happy with it.&amp;#160; The picture quality appears to be noticeably better than TWC.&amp;#160;&amp;#160; Verizon does not apply any additional compression to the programming, and it looks like Time Warner Cable does.&lt;/p&gt;  &lt;p&gt;The FiOS DVR is very good.&amp;#160; Very easy to use and works great from the STBs.&amp;#160; On a scaled from 1 to 10, where the basic TWC HD DVR is a 1 and the TiVo HD is a 10, I would rate the FiOS DVR a solid 7.&amp;#160; If you never used a TiVo before, you would be very happy with just the FiOS DVR.&amp;#160; While you can’t pick a show to record from the STB, there are mobile apps iPhone, iPad, Android, and the web, that let you easily program the DVR.&amp;#160; The DVR has a 500GB drive, big enough to record 50 to 70 hours of HD programming or 200 hours of SD programming.&amp;#160; That’s about 3 times more storage than I have with the TiVo HD.&lt;/p&gt;  &lt;p&gt;The software running on the DVR and STBs is much nicer than the software running on the TWC STB box.&amp;#160; It’s much snappier to navigate and is just better to use.&lt;/p&gt;  &lt;p&gt;There are few drawbacks.&amp;#160; I lost BBC America HD, I’m going to miss that channel.&amp;#160; FiOS TV does have the SD channels, so I still get to see the shows.&amp;#160; It just wont be in HD.&amp;#160; I know, a “First World Problem”, but I did want to be fair.&amp;#160; It sounds like &lt;a href="http://forums.verizon.com/t5/ideas/v2/ideapage/blog-id/ideas/article-id/1114/page/1#comments"&gt;they are planning on adding BBCA HD&lt;/a&gt;, but I have no idea when.&lt;/p&gt;  &lt;p&gt;If the hardware fails, I have to call and have a replacement shipped to my home,&amp;#160; As of right now, there is no local store for getting replacement hardware.&amp;#160; And any TV set that you want to watch FiOS TV with is going to need a CableCARD or cable box.&amp;#160; The days of just plugging the coax into the back of the TV and letting the TV tune the channels are over.&lt;/p&gt;  &lt;p&gt;I was a loyal Time Warner Cable customer for close to 20 years.&amp;#160; Their service was professional and they did the best they could with dealing with SDV issues.&amp;#160; And they had no way of matching the Internet speeds that I have had with FiOS.&amp;#160; Verizon has the advantage with the newer technology.&amp;#160; With the cancelling the two TiVo subscriptions and consolidating the cable, phone, and Internet, I will save about $40 to $50 a month.&amp;#160; Since I’m getting more features for less money, I’ll count that as a double win.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-5143052707813205873?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=2fkjzi0PJUs:Sw_elavn4sY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=2fkjzi0PJUs:Sw_elavn4sY:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=2fkjzi0PJUs:Sw_elavn4sY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=2fkjzi0PJUs:Sw_elavn4sY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=2fkjzi0PJUs:Sw_elavn4sY:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=2fkjzi0PJUs:Sw_elavn4sY:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=2fkjzi0PJUs:Sw_elavn4sY:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/2fkjzi0PJUs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/5143052707813205873/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2011/04/one-week-with-fios-tv.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5143052707813205873?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5143052707813205873?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/2fkjzi0PJUs/one-week-with-fios-tv.html" title="One week with FiOS TV" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2011/04/one-week-with-fios-tv.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYGSX06eyp7ImA9Wx9UGUk.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-3163942423049597302</id><published>2011-02-17T07:02:00.001-05:00</published><updated>2011-02-17T07:02:08.313-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-17T07:02:08.313-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DD-WRT" /><category scheme="http://www.blogger.com/atom/ns#" term="Hardware" /><category scheme="http://www.blogger.com/atom/ns#" term="Networking" /><title>Initial impressions of the Netgear WNDR3700</title><content type="html">&lt;p&gt;I recently upgraded my home network with a new router.&amp;#160; I have &lt;a href="http://en.wikipedia.org/wiki/Linksys_WRT54G_series"&gt;Linksys WRT54GS&lt;/a&gt; router, running a custom firmware called &lt;a href="http://en.wikipedia.org/wiki/Dd-wrt"&gt;DD-WRT&lt;/a&gt;.&amp;#160; DD-WRT provides a lot of extra functionality that wasn’t available with the stock firmware.&amp;#160; It’s the closest thing to a free lunch that you can get, computer-wise.&lt;/p&gt;  &lt;p&gt;I’ve had the WRT54GS for a couple of years and it was starting to show it’s age.&amp;#160; I needed to reboot it about once a week or so, or I would lose network connections.&amp;#160; It also predated the 802.11n protocol, and my iPad and one of my laptops support N.&amp;#160; I also wanted a router that supported gigabit speed LAN ports.&amp;#160; So I’ve been in the market for a while now.&lt;/p&gt;  &lt;p&gt;Last year, Netgear released a few new N ready routers.&amp;#160; The &lt;a href="http://www.netgear.com/home/products/wirelessrouters/work-and-play/WNR3500L.aspx"&gt;WNR3700L&lt;/a&gt; was designed to be used with custom firmwares.&amp;#160; Netgear even created a website, &lt;a href="http://www.myopenrouter.com/"&gt;MyOpenRouter&lt;/a&gt;, to support the enthusiasts.&amp;#160; It has a fast processor (480mfz), gigabit ports, and supported G &amp;amp; N on the 2.4ghz band.&amp;#160; I came &lt;a href="http://outfitnm.com/Images/this_close_man.jpg"&gt;this close&lt;/a&gt; to buying one.&lt;/p&gt;  &lt;p&gt;Then I read up on the next size up router from Netgear, the &lt;a href="http://www.netgear.com/home/products/wirelessrouters/high-performance/WNDR3700.aspx"&gt;WNDR3700&lt;/a&gt;.&amp;#160; This is a dual band router.&amp;#160; You can configure B/G/N on the 2.4ghz band, and A/N on the 5 ghz band. You can keep the N devices at the less crowded 5ghz, and leave the G devices at 2.4ghz,&amp;#160; It also has a faster (680mhz) processor.&amp;#160; This router was listed as a &lt;a href="http://www.dd-wrt.com/wiki/index.php/Netgear_WNDR3700"&gt;powerful router on the DD-WRT site&lt;/a&gt;.&amp;#160; So I spent the extra money and bought that one instead.&lt;/p&gt;  &lt;p&gt;The first thing I learned was that I bought a WNDR3700v2, the 2nd generation model.&amp;#160; DD-WRT was not supported for this model.&amp;#160; It turns out that Netgear based their firmware on the &lt;a href="http://openwrt.org/"&gt;OpenWRT&lt;/a&gt; project, so out of the box it came with nearly every feature that I wanted.&amp;#160; It had support for updating my &lt;a href="http://www.dyndns.com/"&gt;DynDNS&lt;/a&gt; account, static IP addresses, IPv6, guest networks, a shared USB drive, &lt;a href="http://www.dlna.org/home"&gt;DLNA&lt;/a&gt;, etc.&lt;/p&gt;  &lt;p&gt;It doesn’t have everything that DD-WRT has.&amp;#160; It doesn’t have a &lt;a href="http://en.wikipedia.org/wiki/Virtual_private_network"&gt;VPN server&lt;/a&gt;.&amp;#160; With DD-WRT, you can run &lt;a href="http://en.wikipedia.org/wiki/Point-to-Point_Tunneling_Protocol"&gt;PPTP&lt;/a&gt; and &lt;a href="http://openvpn.net/"&gt;OpenVPN&lt;/a&gt; servers.&amp;#160; I use PPTP for a few reasons.&amp;#160; The main one was to be able to get a secure connection to my home network so that I could open a remote desktop session to my home PC.&amp;#160; I could also use the VPN connection to access sites that would be normally blocked by the network that I was connected to.&amp;#160; The WiFi network at my local car dealer blocks all of the social networking sites.&amp;#160; When I’m waiting for my car, I would open a VPN connection so that I could check Facebook and Youtube.&lt;/p&gt;  &lt;p&gt;Using a VPN also provides a level of security when you are on an unsecured WiFi network.&amp;#160; By encrypting your traffic, your are less likely to have someone capture your data.&amp;#160; The &lt;a href="http://pptpclient.sourceforge.net/protocol-security.phtml"&gt;pptp protocol is not completely secure&lt;/a&gt;, OpenVPN has better security.&amp;#160; Apple, in it’s infinite wisdom, &lt;a href="http://discussions.apple.com/thread.jspa?threadID=1607496&amp;amp;tstart=0"&gt;does not provide OpenVPN support on iOS&lt;/a&gt;.&amp;#160; I could open a PPTP VPN connection from my iPad, but there’s no way to get OpenVPN to work. Well, there is a &lt;a href="http://www.guizmovpn.com/"&gt;3rd party OpenVPN client&lt;/a&gt; for &lt;a href="http://en.wikipedia.org/wiki/IOS_jailbreaking"&gt;jailbroken&lt;/a&gt; devices, but I’m not going down that route.&amp;#160; At any rate, PPTP is still more secure than unencrypted traffic.&lt;/p&gt;  &lt;p&gt;So the WNDR3700 was pretty close to being good enough with the OEM firmware.&amp;#160; Since the WRT54GS was running a PPTP server just fine, I decided to keep it around and use it just as an access point.&amp;#160; That’s part of the joy of DD-WRT, it’s vary easy to customize a router for special needs.&amp;#160; On the DD-WRT site, there are &lt;a href="http://www.dd-wrt.com/wiki/index.php/Wireless_Access_Point"&gt;pretty clear instructions for turning a router into wireless access point&lt;/a&gt;.&amp;#160; This is all I needed to do:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Change the IP address of the old router.&amp;#160; Since the WRT54GS would be wired to the WNDR3700, they couldn’t have the same IP address.&amp;#160; I changed the WRT54GS from 192.168.1.1 to 192.168.1.2.&lt;/li&gt;    &lt;li&gt;Configured the DHCP server on WNDR3700 to use the range 192.168.1.5 to 192.168.1.254 for handing out IP addresses.&amp;#160; This would make sure that nothing else would get the 192.168.1.2 address.&lt;/li&gt;    &lt;li&gt;On the WRT54GS, set the WAN type to disabled and disabled the DHCP and &lt;a href="http://en.wikipedia.org/wiki/Dnsmasq"&gt;DNSmasq&lt;/a&gt; services.&lt;/li&gt;    &lt;li&gt;Set the WAN port on the WRT54GS to be a LAN port.&lt;/li&gt;    &lt;li&gt;Configured the WNDR3700 to forward the PPTP port, 1723, to the IP address now reserved to the WRT54GS.&amp;#160; Any request for a PPTP connection from the outside would now get redirected from the WNDR3700 to the WRT54GS.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;After making those changes, I wired the routers together,&amp;#160; I opened a VPN connection to my office PC and &lt;a href="http://windows.microsoft.com/en-US/windows7/Remote-Desktop-Connection-frequently-asked-questions"&gt;RDP&lt;/a&gt;’ed into it.&amp;#160; From my office PC, I opened a VPN connection to my home network to verify that the PPTP server was accessible,&amp;#160; It worked the first time.&amp;#160; That’s rare for me, but &lt;a href="http://www.kickstarter.com/projects/imaginationstation/detroit-needs-a-statue-of-robocop"&gt;I’ll take that for a dollar&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I’ve been using this router for a week and it has been rock solid.&amp;#160; There are a few quirks, the &lt;a href="http://en.wikipedia.org/wiki/Universal_Plug_and_Play"&gt;UPnP&lt;/a&gt; had some issues with Windows Home Server, but that was easy to work around. The wireless range is much better than what I had with the Linksys.&amp;#160; I probably would have been good with the single band WNR3700L, but I am happy with it’s dual band big brother.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-3163942423049597302?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=uksfLbhY2jg:9LfqQCBNutY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=uksfLbhY2jg:9LfqQCBNutY:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=uksfLbhY2jg:9LfqQCBNutY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=uksfLbhY2jg:9LfqQCBNutY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=uksfLbhY2jg:9LfqQCBNutY:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=uksfLbhY2jg:9LfqQCBNutY:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=uksfLbhY2jg:9LfqQCBNutY:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/uksfLbhY2jg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/3163942423049597302/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2011/02/initial-impressions-of-netgear-wndr3700.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/3163942423049597302?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/3163942423049597302?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/uksfLbhY2jg/initial-impressions-of-netgear-wndr3700.html" title="Initial impressions of the Netgear WNDR3700" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2011/02/initial-impressions-of-netgear-wndr3700.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUBQX4-eip7ImA9Wx9UF0Q.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-883889213705241742</id><published>2011-02-15T12:17:00.001-05:00</published><updated>2011-02-15T12:17:30.052-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-15T12:17:30.052-05:00</app:edited><title>How I patched a Dell workstation with a firmware update from HP</title><content type="html">&lt;p&gt;About 18 months ago, I got a Dell &lt;a href="http://www.dell.com/us/business/p/precision-t5500/pd"&gt;Precision T5500&lt;/a&gt; workstation.&amp;nbsp; A decent PC with a Xeon quad core processor which has bee a pretty decent box for doing development with.&lt;/p&gt; &lt;p&gt;About a month ago, it started acting very flakey.&amp;nbsp; I would be doing my work and the display would go all wonky on me.&amp;nbsp; I would see crawling vertical lines going down the display.&amp;nbsp; After a minute or two, the colors would get very dark and the computer would stop responding.&lt;/p&gt; &lt;p&gt;A reboot would restore the machine.&amp;nbsp; There were no warning signs, nothing in the event logs.&amp;nbsp; One minute it was running, the next it was locked up.&amp;nbsp; This would happen about once a day or so.&amp;nbsp; Not enough to keep me from using the machine, but enough to warrant getting it fixed.&lt;/p&gt; &lt;p&gt;We have Dell Priority support, which we hoped would help resolve this problem.&amp;nbsp; We bought this machine with Vista and it had the free upgrade to Windows 7.&amp;nbsp; We had bough a bunch of these machines, another one was having a strange crashing problem as well.&amp;nbsp; Because I had installed 64 bit Windows 7 on it, Dell said it was not supported.&amp;nbsp; &lt;/p&gt; &lt;p&gt;That annoyed our IT manager.&amp;nbsp; He then engaged Dell support to fight the good fight.&amp;nbsp; He called BS on that one and their response was for him to uninstall the current video driver and install the latest Dell approved driver.&amp;nbsp; While he was doing that, I stated doing my own research.&amp;nbsp; They had a Plan B, but that involved swapping drives without machine and wouldn’t have actually resolved anything.&amp;nbsp; We hoped to avoid Plan B.&lt;/p&gt; &lt;p&gt;This T550 came with an NVIDIA &lt;a href="http://www.nvidia.com/object/product_quadro_nvs_295_us.html"&gt;Quadro NVS 295&lt;/a&gt; video card.&amp;nbsp; It’s a basic workstation card with enough horsepower to drive 2 displays.&amp;nbsp; I had kept the driver updates current with whatever Windows Update suggested for it.&lt;/p&gt; &lt;p&gt;We downloaded the files from Dell, and ripped out the current driver.&amp;nbsp; The Dell drivers refused to install, claiming that there were no supported devices installed.&amp;nbsp; The IT guy had downloaded the recommended driver, which supports a motley crew of NVidia cards.&amp;nbsp; He found a NVS 295 specific driver on the Dell site and started downloading that.&amp;nbsp; Peachy.&amp;nbsp; While he was fighting with my machine, I had found some clues in the NVIDIA forums.&lt;/p&gt; &lt;p&gt;I was not alone.&amp;nbsp; Other Dell owners had reported similar problems with that video card.&amp;nbsp; This &lt;a href="http://forums.nvidia.com/index.php?showtopic=179731"&gt;post&lt;/a&gt; has a screen shot that was similar to what I was seeing.&amp;nbsp; Another &lt;a href="http://forums.nvidia.com/index.php?showtopic=168383"&gt;post&lt;/a&gt; described applying a NVS 295 firmware update from HP’s web site.&amp;nbsp; This was posted by several Dell users as working.&amp;nbsp; Since it's on the Internet, it must be true.&amp;nbsp; The IT guy didn't want to flash the Dell with the HP supplied file, but I convinced him by using the following three arguments.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;It's a video card BIOS firmware, not for the motherboard.  &lt;li&gt;If we brick it, Dell has to replace it as it will no longer be a software problem.  &lt;li&gt;You can't beat the entertainment value of flashing Dell supplied hardware with HP supplied updates and having it work.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;So I downloaded the firmware from a HP page labeled as &lt;a href="http://h20000.www2.hp.com/bizsupport/TechSupport/SoftwareDescription.jsp?lang=en&amp;amp;cc=ca&amp;amp;prodTypeId=12454&amp;amp;prodSeriesId=3718645&amp;amp;swItem=wk-77944-1"&gt;“NVIDIA Quadro NVS 295 Video BIOS (ROM) and Flash Utilities”&lt;/a&gt;,&amp;nbsp; and the latest driver from NVIDIA.&amp;nbsp; The Dell NVS 295 driver download completed first and we ran that.&amp;nbsp; It would not install because it couldn't find the video card.&amp;nbsp; We then ran the HP flash updater, which immediately recognized the missing NVS card and happily flashed the BIOS.&amp;nbsp; After rebooting, we ran the NVidia supplied drivers and they installed without incident.&lt;/p&gt; &lt;p&gt;It’s now been a couple of weeks and my T550 has been running non-stop without any failures.&amp;nbsp; While I don’t understand why HP is only known place in the Googleverse that has a NVIDIA firmware update, I’m just glad that someone released it.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-883889213705241742?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=UFSLX-W8Aks:GDV48ya3bkg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=UFSLX-W8Aks:GDV48ya3bkg:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=UFSLX-W8Aks:GDV48ya3bkg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=UFSLX-W8Aks:GDV48ya3bkg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=UFSLX-W8Aks:GDV48ya3bkg:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=UFSLX-W8Aks:GDV48ya3bkg:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=UFSLX-W8Aks:GDV48ya3bkg:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/UFSLX-W8Aks" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/883889213705241742/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2011/02/how-i-patched-dell-workstation-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/883889213705241742?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/883889213705241742?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/UFSLX-W8Aks/how-i-patched-dell-workstation-with.html" title="How I patched a Dell workstation with a firmware update from HP" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2011/02/how-i-patched-dell-workstation-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ANRH08fSp7ImA9Wx9VGE4.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-3609858367493609947</id><published>2011-02-04T12:16:00.001-05:00</published><updated>2011-02-04T12:16:35.375-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-04T12:16:35.375-05:00</app:edited><title>Reflections on Red Gate and their decision to charge for .NET Reflector</title><content type="html">&lt;p&gt;The &lt;a href="http://news.ycombinator.com/item?id=2170245"&gt;chattering&lt;/a&gt; classes in the .NET world have been buzzing about Red Gate’s decision to start charging for the .NET Reflector utility in March.&amp;nbsp; I’m been amazed by the hostility and venom sent their way.&amp;nbsp; Lots of nasty things being written in a &lt;a title=".NET Reflector 7.0 Feedback forum" href="http://www.red-gate.com/messageboard/viewforum.php?f=141"&gt;forum provided by Red Gate&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Earlier in the week, &lt;a title="An open letter to the .NET community" href="http://www.red-gate.com/products/dotnet-development/reflector/announcement"&gt;Red Gate posted a open letter to the .NET Community that the next version of .NET Reflector would cost $35&lt;/a&gt;.&amp;nbsp; Previous versions had been free (with an enhanced version available for an additional cost).&amp;nbsp; You can’t use the free one indefinitely, there is a time bomb in program that forces you to upgrade every 6 months.&amp;nbsp; If you don’t upgrade, the program deletes itself from your machine.&lt;/p&gt; &lt;p&gt;The time bomb predates Red Gate’s purchase of Reflector, the original author, Lutz Roeder, implemented that to force everyone to use the latest version.&amp;nbsp; It’s annoying, but it kept him from having to support multiple versions out in the field.&lt;/p&gt; &lt;p&gt;When Red Gate bought Reflector from Roeder in 2008, he &lt;a title="The Future of .Net Reflector" href="http://blog.lutzroeder.com/2008/08/future-of-net-reflector.html"&gt;posted the following on his blog&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Red Gate will continue to provide the free community version and is looking for your feedback and ideas for future versions.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;There is nothing in that statement that says that Red Gate has to continue to make new versions available for free.&amp;nbsp; It was never an open source project, and there is no reason to expect Red Gate to make it one.&amp;nbsp; I think they tried to make the business model work, but did not see enough revenue from the paid version to cover the free versions.&amp;nbsp; That is unfortunate, but that’s just how it goes sometimes.&lt;/p&gt; &lt;p&gt;The tone that some people are using on the Red Gate forum was pretty raw.&amp;nbsp; When you see topics like &lt;a href="http://www.red-gate.com/MessageBoard/viewtopic.php?t=12737"&gt;“Red Gate, you have destroyed your reputation”&lt;/a&gt; or “&lt;a title="Your parents should be really ashamed!" href="http://www.red-gate.com/MessageBoard/viewtopic.php?t=12731"&gt;Your parents should be really ashamed!”&lt;/a&gt;.&amp;nbsp; It wasn’t all negative, there are a lot of thoughtful comments, but I was surprised by the dumb and nasty.&amp;nbsp; I don’t think Red Gate was prepared for the response that they received.&amp;nbsp; They probably should have provided more lead time to their announcement.&lt;/p&gt; &lt;p&gt;I think that Red Gate should put out one more release of the free version of Reflector, version 6.&amp;nbsp; This final free release would have the time bomb feature removed.&amp;nbsp; No support at all from Red Gate would be available.&lt;/p&gt; &lt;p&gt;I would also like to see other licensing options.&amp;nbsp; I would like to see a site or company license that would let any number of developers within the company use Reflector.&amp;nbsp; LINQPad is another great .NET development tool and Reflector could use a similar licensing model.&amp;nbsp; There is a free version and a paid version.&amp;nbsp; The paid version has more features and you can license it by user, group of users, or all users within a company.&amp;nbsp; If Red Gate could offer that, I would have a much easier time getting my company to buy it.&lt;/p&gt; &lt;p&gt;It’s a great tool and the price is appropriate.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-3609858367493609947?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=x9p1RYiUKfc:8RXKUyIjm5Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=x9p1RYiUKfc:8RXKUyIjm5Y:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=x9p1RYiUKfc:8RXKUyIjm5Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=x9p1RYiUKfc:8RXKUyIjm5Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=x9p1RYiUKfc:8RXKUyIjm5Y:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=x9p1RYiUKfc:8RXKUyIjm5Y:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=x9p1RYiUKfc:8RXKUyIjm5Y:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/x9p1RYiUKfc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/3609858367493609947/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2011/02/reflections-on-red-gate-and-their.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/3609858367493609947?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/3609858367493609947?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/x9p1RYiUKfc/reflections-on-red-gate-and-their.html" title="Reflections on Red Gate and their decision to charge for .NET Reflector" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2011/02/reflections-on-red-gate-and-their.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08DRHYyeip7ImA9Wx9WGEw.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-956369658583982729</id><published>2011-01-23T16:57:00.001-05:00</published><updated>2011-01-23T16:57:55.892-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-23T16:57:55.892-05:00</app:edited><title>Price Chopper's RoboDeli is great idea, but flawed</title><content type="html">&lt;p align="left"&gt;I just did some Sunday shopping at a local &lt;a href="http://www.pricechopper.com/"&gt;Price Chopper&lt;/a&gt; &lt;a href="http://twitter.com/#!/PriceChopperNY"&gt;supermarket&lt;/a&gt;.&amp;#160; It was pretty busy and there was a long line at the deli counter.&amp;#160; With in the last few months, they implemented a computerized ticket system.&amp;#160; Instead of grabbing a ticket and waiting for a number to be called, you pushed a button on a touch screen and a numbered ticket was printed out for you.&amp;#160; On a large TV screen above the deli, the ticket numbers currently being served and tickets to be served were listed, along with their approximate wait times.&lt;/p&gt;  &lt;p&gt;Knowing the wait time is handy, it gives you a better idea of how long you will be waiting before you be served..&amp;#160; They also have a touch screen set up to allow you to place your order and come back later to get it.&amp;#160; Since the wait time was up to 20 minutes, I decided to give the &amp;quot;RoboDeli&amp;quot; a shot.&lt;/p&gt;  &lt;p&gt;The RoboDeli worked, but it was an exercise in frustration to use.&amp;#160; The touch screen was the main culprit, but the software design had a few flaws too.&amp;#160; The touch screen was just bad.&amp;#160; It was very difficult for it to register a button press and when it did pickup a button press, it would often get the wrong button.&lt;/p&gt;  &lt;p&gt;I just wanted to get some ham.&amp;#160; While I was able to easily select &amp;quot;ham&amp;quot;, I had to scroll through several pages of items to get the one I wanted.&amp;#160; Those buttons were large and while it took a while to get it to read my finger press, it got the right selection.&lt;/p&gt;  &lt;p&gt;Next came the weight and thickness.&amp;#160; Those buttons were smaller and it took much longer to get the right selection to register.&amp;#160; I then added the ham to the order and went to complete the order.&lt;/p&gt;  &lt;p&gt;It asked if I wanted to get a text message on my phone when the order was ready.&amp;#160; That's a brilliant idea, but they really messed up on the implementation.&amp;#160; To enter in the phone number, you were presented with a numeric keypad on the screen, plus skip, completed, and clear buttons.&lt;/p&gt;  &lt;p&gt;The number buttons were small and close together.&amp;#160; I don't know if it's supposed to remind you of a phone, but it only used a small portion of the display.&amp;#160; Every time I pressed the &amp;quot;5&amp;quot; key, it would register as &amp;quot;2&amp;quot;.&amp;#160; The really annoying part was that it had no concept of a backspace button.&amp;#160; The clear button would clear all of the numbers, forcing you to start from the beginning.&lt;/p&gt;  &lt;p&gt;After several failed attempts, my 10 year old daughter took time off from texting all of her friends to take pity on me and enter the number in herself.&amp;#160; She had less luck than I did.&amp;#160; We finally gave up and pressed the skip key to send the order to the deli.&lt;/p&gt;  &lt;p&gt;At that point, it went back to it's home screen.&amp;#160; No order number or any other way of identifying my order.&amp;#160; When they processed my order, it would be placed in a cold case next to the deli.&amp;#160; It would have an order number on it, but you wouldn't know what that order was.&amp;#160; You just have to remember what you ordered and grab the right one.&amp;#160; And also to remember to periodically check back to see if it was ready.&amp;#160; You also had to know where the pickup would be, that was not clearly identified.&lt;/p&gt;  &lt;p&gt;It took about 4 minutes for me to place the order.&amp;#160; That's a long to order a 1/2 lb of ham.&amp;#160; Of that time, 2.5 minutes were occupied with my failed attempt to enter in my phone number. It would take longer for 10 people to enter in their orders in total (without picking them up), than it would for 10 people to wait at the counter and actually get their order.&lt;/p&gt;  &lt;p&gt;What they are trying to do is a great idea, they just dropped the ball on how they implemented it.&amp;#160; Something that is supposed to save you time should not take longer and annoy you in the process.&amp;#160; This is what they need to do to fix it:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Display a large sign over the screen that would list the steps needed to place the order and where to pick up the order.&amp;#160; While you can display that information on the screen, this way it's always available for the user.&lt;/li&gt;    &lt;li&gt;Get a more responsive and accurate touch screen.&amp;#160; This isn't esoteric technology.&amp;#160; Your self serve checkout registers have much better accuracy and response on their touch screens.&amp;#160; You should be at least at that level of accuracy for the RoboDeli.&lt;/li&gt;    &lt;li&gt;Page Up and Page Down types of buttons are keyboard/mouse navigation tools.&amp;#160; With touch screens, you scroll through lists by dragging the list with your finger.&amp;#160; The system feels like it was designed to be used with a mouse, not a finger.&amp;#160; Find the person who designed this system and give him an iPad and show him how touch screen applications really work.&amp;#160; &lt;/li&gt;    &lt;li&gt;Use the entire screen for input.&amp;#160; A larger phone number pad would have been better.&amp;#160; It doesn't cost anything extra to use more of the screen.&lt;/li&gt;    &lt;li&gt;Add a backspace key. Not being able to the delete just a single character is just mind boggling bad.&lt;/li&gt;    &lt;li&gt;Display the order number so the user can remember what order to pick up.&lt;/li&gt;    &lt;li&gt;Have an option to print the order ticket.&amp;#160; With the information of what the customer just ordered, you can suggest complimentary items to go with that order and provide coupons on the ticket itself.&amp;#160; &amp;quot;Buying a lot of cold cuts? Here's a coupon for mustard.&amp;quot;&amp;#160; Every point of interaction with a customer is a chance to sell him something.&amp;#160; The store already has a machine that prints out coupons when you swipe your &lt;a href="http://www.pricechopper.com/Card_mod/Card_Stub.las?S=47FT9R475D70308P71725DF3QrVN6L5s3DABE5|117215|1101231551|||"&gt;AdvantEdge&lt;/a&gt; card, so you already have the ability to do this.&lt;/li&gt;    &lt;li&gt;Have a mag strip reader to be able to read the &lt;a href="http://www.pricechopper.com/Card_mod/Card_Stub.las?S=47FT9R475D70308P71725DF3QrVN6L5s3DABE5|117215|1101231551|||"&gt;AdvantEdge&lt;/a&gt; card (Price Chopper's loyalty card) and be able to print the customer's name on his order.&amp;#160; If you could add a mobile number to the AdvantEdge card account, that would be even easier for text notifications.&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-956369658583982729?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=9UwJGJ9iFO8:gxjSf7FAsto:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=9UwJGJ9iFO8:gxjSf7FAsto:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=9UwJGJ9iFO8:gxjSf7FAsto:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=9UwJGJ9iFO8:gxjSf7FAsto:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=9UwJGJ9iFO8:gxjSf7FAsto:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=9UwJGJ9iFO8:gxjSf7FAsto:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=9UwJGJ9iFO8:gxjSf7FAsto:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/9UwJGJ9iFO8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/956369658583982729/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2011/01/price-chopper-robodeli-is-great-idea.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/956369658583982729?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/956369658583982729?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/9UwJGJ9iFO8/price-chopper-robodeli-is-great-idea.html" title="Price Chopper&amp;#39;s RoboDeli is great idea, but flawed" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2011/01/price-chopper-robodeli-is-great-idea.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IFQH4zfyp7ImA9Wx9XF0w.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-7227212058397414269</id><published>2011-01-10T23:18:00.001-05:00</published><updated>2011-01-10T23:18:31.087-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-10T23:18:31.087-05:00</app:edited><title>A Random Vegas Observation</title><content type="html">&lt;p&gt;I like walking the strip in Vegas at night, it makes for great entertainment.&amp;nbsp; I just love watching everything going on.&amp;nbsp; I’m not into gambling, so I just walk around and take pictures of the bright lights.&amp;nbsp; One of the seedier parts of the Vegas Strip Life are the “Porn Slappers”.&amp;nbsp; If you have never been to Las Vegas, Porn Slappers are people who stand on the sidewalk and hand out “business cards” for “contractors in the adult service industry”.&amp;nbsp; Prostitution is illegal in Clark County, this is one of the ways that they advertise their services.&lt;/p&gt; &lt;p&gt;They are not allowed to come up to you and harass you (that right is reserved for Crossgates &lt;a href="http://www.shopcrossgates.com/content.asp?contentid=1446&amp;amp;contenttype=Shopping_Entertainment&amp;amp;showall=1"&gt;Kiosk employees&lt;/a&gt;), so they need to do something to get you attention.&amp;nbsp; They slap the cards in their hand to get your attention.&amp;nbsp; Thus, the “Porn Slapper” name.&amp;nbsp; The more likely they think you would be interested, the more slaps you hear.&amp;nbsp; Welcome to Las Vegas!&lt;/p&gt; &lt;p&gt;The streets are just littered with cards with pictures of half-naked women, sporting what appears to be non-factory equipment. I’ve been to Las Vegas for work a few times, but it’s not a place I would bring my kids to see.&amp;nbsp; I don’t want to have to explain to an 8 year old what an “escort” is.&lt;/p&gt; &lt;p&gt;While I have never seen anyone take one of the cards, they must be effective.&amp;nbsp; The Porn Slappers are all over the strip.&amp;nbsp; While I tune them out as background noise, I have seen quite a few people take offense to them.&amp;nbsp; They are harmless, but it’s not what you expect to see back home.&lt;/p&gt; &lt;p&gt;I was walking down by Planet Hollywood and I found myself instep with a retired couple from Milwaukee.&amp;nbsp; They were on vacation and this was their first trip to Vegas.&amp;nbsp; They were a little unnerved by the Porn Slappers, so I decided to help them out a bit&amp;nbsp; We chatted a bit and I explained what the Porn Slappers were. I told them that I usually say gibberish to the Porn Slappers, it confuses them and throws them off their game a bit.&lt;/p&gt; &lt;p&gt;So we walked one, and whenever a Porn Slapper came close, I would go into “&lt;a href="http://tvcomedies.about.com/od/funstuff/a/dennycranequotes.htm"&gt;Denny Crane&lt;/a&gt;” mode.&amp;nbsp; I would just say random things like:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;I’m looking for a one-armed man  &lt;li&gt;Are you my mummy?  &lt;li&gt;Denny Crane, Denny Crane  &lt;li&gt;Tippecanoe and Tyler too  &lt;li&gt;Vote for me and shoes for all  &lt;li&gt;Member, FDIC&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Pretty much just random sayings, whatever floated out the archives. And the Porn Slappers would just back away from us.&amp;nbsp; Mr and Mrs Milwaukee were greatly entertained and I had a chuckle or too.&amp;nbsp; Cheap fun on the strip.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-7227212058397414269?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=_JK-6V5iGJQ:bUg_6evohBM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=_JK-6V5iGJQ:bUg_6evohBM:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=_JK-6V5iGJQ:bUg_6evohBM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=_JK-6V5iGJQ:bUg_6evohBM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=_JK-6V5iGJQ:bUg_6evohBM:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=_JK-6V5iGJQ:bUg_6evohBM:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=_JK-6V5iGJQ:bUg_6evohBM:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/_JK-6V5iGJQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/7227212058397414269/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2011/01/random-vegas-observation.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/7227212058397414269?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/7227212058397414269?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/_JK-6V5iGJQ/random-vegas-observation.html" title="A Random Vegas Observation" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2011/01/random-vegas-observation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcCRH49eyp7ImA9Wx9XEkg.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-5217325510874660054</id><published>2011-01-05T14:30:00.002-05:00</published><updated>2011-01-05T14:34:25.063-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-05T14:34:25.063-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="ListView" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>Scrolling a ListView’s EditItemTemplate with some help from jQuery</title><content type="html">I’ve been using ASP.Net’s &lt;a href="http://msdn.microsoft.com/en-us/library/bb398790.aspx" title="The ASP.NET ListView control enables you to bind to data items that are returned from a data source and display them. You can display data in pages. You can display items individually, or you can group them."&gt;ListView&lt;/a&gt; control and I cam across a little quirk while setting up the editing bits.&amp;nbsp; I have an &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.edititemtemplate.aspx"&gt;EditItemTemplate&lt;/a&gt; defined that has some input controls and a couple of nested ListViews.&amp;nbsp; It’s a nice way of defining a hierarchal editing view.&amp;nbsp; If you haven’t used a ListView before, &lt;a href="http://www.4guysfromrolla.com/ScottMitchell.shtml"&gt;Scott Mitchell&lt;/a&gt; have a &lt;a href="http://www.4guysfromrolla.com/articles/122607-1.aspx" title="Using ASP.NET 3.5's ListView and DataPager Controls: Displaying Data with the ListView"&gt;great tutorial&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
My &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.itemtemplate.aspx" title="Use the ItemTemplate property to define a custom user interface (UI) to display the data items. The ItemTemplate template is required by the ListView control. It usually contains controls to display the field values of a record. If you want to let users modify the data, you also usually add buttons to the ItemTemplate template that let the user select a record, switch to edit mode, or delete a record."&gt;ItemTemplate&lt;/a&gt; displays the data for each line of data and has a couple of buttons, one to edit the item, the other to delete it.&amp;nbsp; When you click the edit button, you get a page refresh and ASP.NET renders the EditItemTemplate with the editing controls and the user can edit the item and save the changes.&lt;br /&gt;
The problem was when you needed to scroll down the page to make the EditItemTemplate visible in the browser.&amp;nbsp; If the height of the ListView was greater than the visible height of the browser, the user would have to scroll down the page to get to the first input control.&amp;nbsp; I ended up using a bit of &lt;a href="http://jquery.com/" title="jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript."&gt;jQuery&lt;/a&gt; to scroll the edit area into view for the user.&amp;nbsp; &lt;br /&gt;
This is an edited down version of the EditItemTemplate for a ListView that I’m currently working on:&lt;br /&gt;
&lt;pre class="brush: xml"&gt;&amp;lt;EditItemTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div style="padding: 0 0 10px 0;" class="MyEditItemTemplate"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;b&amp;gt;Calendar Name:&amp;lt;/b&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:TextBox ID="txtCalendarName" runat="server" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Text='&amp;lt;%# Bind("CalendarName") %&amp;gt;'&amp;gt;&amp;lt;/asp:TextBox&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ImageButton ID="imgbUpdateCalendar" runat="server" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToolTip="Update Calendar" AlternateText="Update Calendar" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CommandName="Update" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ImageUrl="~/Images/accept.png" /&amp;gt;&amp;amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ImageButton ID="imgbCancelUpdate" runat="server" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToolTip="Cancel" AlternateText="Cancel" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CausesValidation="false" CommandName="Cancel" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ImageUrl="~/Images/cancel.png" /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;br /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div style="padding: 5px 0 0 40px;"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div style="border: 1px black solid"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ListView ID="ListViewChildCalendars" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; runat="server" DataSourceID="odsChildCalendar"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataKeyNames="RecordID" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InsertItemPosition="FirstItem" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OnItemInserting="ListViewChildCalendars_ItemInserting"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LayoutTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span class="SubListViewHeader"&amp;gt;&amp;lt;strong&amp;gt;Associated Calendars&amp;lt;/strong&amp;gt;&amp;lt;/span&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;blockquote&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:PlaceHolder runat="server" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID="itemPlaceholder"&amp;gt;&amp;lt;/asp:PlaceHolder&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/blockquote&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LayoutTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ItemSeparatorTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;hr /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ItemSeparatorTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ItemTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%# Eval("CalendarName") %&amp;gt;&amp;amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ImageButton ID="imgbDeleteCalendar" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; runat="server" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AlternateText="Remove Calendar from Group" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToolTip="Remove Calendar from Group" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OnClientClick="return DeleteConfirmation('C', this.name);" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CommandName="Delete" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ImageUrl="~/Images/delete.png" /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ItemTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;InsertItemTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;b&amp;gt;Calendar Name: &amp;lt;/b&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:DropDownList ID="ddlChildCalendars" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; runat="server" DataSourceID="odsCalendarList"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataTextField="CalendarName" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataValueField="RecordID"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/asp:DropDownList&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ImageButton ID="imgbAddChildCalendar" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; runat="server" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToolTip="Associate Calendar with Group" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AlternateText="Associate Calendar with Group" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CommandName="Insert" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ImageUrl="~/Images/accept.png" /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/InsertItemTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EmptyDataTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span class="SubListViewHeader"&amp;gt;&amp;lt;strong&amp;gt;Associated Calendars&amp;lt;/strong&amp;gt;&amp;lt;/span&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;blockquote&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This list is empty&amp;lt;/blockquote&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/EmptyDataTemplate&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/asp:ListView&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ImageButton ID="UsedForScrolling" runat="server" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ImageUrl="~/Images/0.gif" CssClass="UsedForScrolling"/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;br /&amp;gt;
&amp;lt;/EditItemTemplate&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
This EditItemTemplate has a nest ListView to associate other items to item currently being edited.&amp;nbsp; It’s basically a pick list populated from a drop down list.&amp;nbsp; Since each selection from the list generated a page refresh, it is important to keep the EditItemTemplate displayed on the page.&lt;br /&gt;
&lt;br /&gt;
All of the controls in the EditeItemTemplate are wrapped inside a &amp;lt;div&amp;gt;, with the CSS class name set to “MyEditItemTemplate”.&amp;nbsp; Defining a CSS class is great for styling, it also makes it very easy to locate controls using jQuery. Also notice the last control in the template, the ImageButton with the ID of “UsedForScrolling”.&amp;nbsp; It uses an image of an &lt;a href="http://lh6.ggpht.com/_natoSxTaPFU/TSTG0xf-wyI/AAAAAAAAAf0/6yndaOnuAXY/s1600-h/0%5B2%5D.gif"&gt;invisible GIF file&lt;/a&gt;.&amp;nbsp; It’s a 1x1 image, with the single pixel set to the transparent color.&amp;nbsp; The browser will render it (briefly), but it wont be visible.&amp;nbsp; You can download the GIF from &lt;a href="http://lh6.ggpht.com/_natoSxTaPFU/TSTG0xf-wyI/AAAAAAAAAf0/6yndaOnuAXY/s1600-h/0%5B2%5D.gif"&gt;invisible GIF file&lt;/a&gt; link.&amp;nbsp; I had obtained it from &lt;a href="http://www.maproom.co.uk/invis0.htm"&gt;a page&lt;/a&gt; by Nick Webb.&lt;br /&gt;
&lt;br /&gt;
You can use the HTML input control instead of an ImageButton, it will not matter too much.&amp;nbsp; You want to avoid using a control that will render on the screen as a visible item, like a text input control or a check box.&amp;nbsp; While the code will hide the control after the page has loaded, there would be a flash as the control is rendered, and then removed from the page,&amp;nbsp; With the invisible GIF, you avoid the brief flash on the page.&lt;br /&gt;
&lt;br /&gt;
This is how we scroll the edit template so that it’s entirely in view:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Check for the existence of the invisible button.&amp;nbsp; It’s only visible when you are editing an item in the ListView. &lt;/li&gt;
&lt;li&gt;Set the focus to that button.&amp;nbsp; While it will render as a transparent image, it can still receive the focus.&amp;nbsp; This will force the browser to scroll the page (if necessary) so that the focused input control is in view. &lt;/li&gt;
&lt;li&gt;Set the focus to the first input control in the EditItemLayout. &lt;/li&gt;
&lt;li&gt;Hide the transparent input button.&amp;nbsp; While you can’t see it, you don’t want the user to be able to select it. &lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
We implement this with some jQuery code that will do all 4 four steps.&amp;nbsp; I put the code in a javascript function that I named “ScrollIntoView()” and called that function from the jQuery &lt;a href="http://docs.jquery.com/How_jQuery_Works#Launching_Code_on_Document_Ready" title="Launching Code on Document Ready"&gt;ready event&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: jscript"&gt;$(function () {
ScrollIntoView();
});

function ScrollIntoView()
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; var TempInputControlForScrolling = $(".UsedForScrolling:input:visible:first");
&amp;nbsp;&amp;nbsp;&amp;nbsp; var FirstEditControl = $(".MyEditItemTemplate input:text:visible:first");

if (TempInputControlForScrolling.length)
{
TempInputControlForScrolling.focus();
FirstEditControl.focus();
TempInputControlForScrolling.hide();
}
else {
$("input:text:visible:first").focus();
}
}&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
The first line in ScrollIntoView() uses a jQuery &lt;a href="http://api.jquery.com/category/selectors/"&gt;Selector&lt;/a&gt; to match the first visible input control with a CSS class of “UsedForScrolling”.&amp;nbsp; The next line matches the first visible text input control that is a child of the control with the CSS class of “MyEditItemTemplate”.&lt;br /&gt;
&lt;br /&gt;
If we found an input control, then the length property of the TempInputControlForScrolling variable will be greater than 0.&amp;nbsp; If no match had been made, the length will be 0.&amp;nbsp; With the match, we set the focus to the invisible GIF input button, then set it to the first text edit control, then finally hide the invisible button.&amp;nbsp; If the .UsedForScrolling selector did not match any controls, which will happen when you are not editing an item in the ListView, then the first text input control on the page will get the focus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-5217325510874660054?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=IZDqd-t8jo0:FXMHHOOKDUk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=IZDqd-t8jo0:FXMHHOOKDUk:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=IZDqd-t8jo0:FXMHHOOKDUk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=IZDqd-t8jo0:FXMHHOOKDUk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=IZDqd-t8jo0:FXMHHOOKDUk:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=IZDqd-t8jo0:FXMHHOOKDUk:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=IZDqd-t8jo0:FXMHHOOKDUk:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/IZDqd-t8jo0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/5217325510874660054/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2011/01/scrolling-listviews-edititemtemplate.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5217325510874660054?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5217325510874660054?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/IZDqd-t8jo0/scrolling-listviews-edititemtemplate.html" title="Scrolling a ListView’s EditItemTemplate with some help from jQuery" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2011/01/scrolling-listviews-edititemtemplate.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAHRHg7eyp7ImA9Wx9QGUk.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-5144997418658762883</id><published>2011-01-02T00:00:00.001-05:00</published><updated>2011-01-02T00:38:55.603-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-02T00:38:55.603-05:00</app:edited><title>Cable TV Competition coming to Bethlehem? (FiOS TV vs Time Warner Cable)</title><content type="html">&lt;p&gt;On January 12th, 2011, the town of Bethlehem (NY) will be holding a &lt;a href="http://www.townofbethlehem.org/pages/agenda/townAgenda.asp"&gt;monthly town meeting&lt;/a&gt;.&amp;#160; One of the topics on the agenda is to have a public hearing to allow the public to voice their opinion on whether or not to allow Verizon to provide FiOS TV.&amp;#160; This would be a competing cable TV service, going up against &lt;a href="http://www.timewarnercable.com/northeast/learn/cable/default.html"&gt;Time Warner Cable&lt;/a&gt; (the current provider).&lt;/p&gt;  &lt;p&gt;This should be interesting for a few reasons.&amp;#160; For the last few years,Verizon has provided &lt;a href="http://www22.verizon.com/Residential/aboutFiOS/Overview.htm"&gt;FiOS Internet&lt;/a&gt; service in parts of Bethlehem.&amp;#160; I’m in one of those parts and have had FiOS since it became available.&amp;#160; Verizon started laying down cable through out the entire town for FiOS, but abandoned that task when the economy tanked in 2008.&amp;#160; I heard a rumor that Time Warner was able to put pressure to block additional FiOS deployment, but I haven’t seen any proof of that.&lt;/p&gt;  &lt;p&gt;To be able to offer TV to the town, Verizon will have to lay down fiber through out the rest of the town.&amp;#160; Or at the very least, cover the same area served by Time Warner Cable.&amp;#160; That’s a significant expense for Verizon and will take some time to rollout.&lt;/p&gt;  &lt;p&gt;This should make Time Warner Cable very nervous.&amp;#160; I know a fair number of people who get the “All The Best” package from Time Warner Cable, with TV, Internet, and telephone service all bundled together,&amp;#160; When Verizon wired up my neighborhood with FiOS, almost no one wanted to switch from Time Warner Cable’s package to some mixture of Time Warner Cable and Verizon.&amp;#160; Verizon did not have FiOS TV, their equivalent to the Time Warner Cable bundle was FiOS&amp;#160; Internet, Verizon phone, and DirectTV satellite TV.&amp;#160; So most people stayed with Time Warner Cable.&amp;#160; The convenience of a single bill trumped the faster broadband speeds offered by FiOS.&lt;/p&gt;  &lt;p&gt;If people have the option for a true all in one plan from Verizon, then they a competitive choice to over Time Warner’s plan.&amp;#160; Especially if Verizon offers a discounted rate for the first year or two.&amp;#160; Many people who signed up for “All The Best” were given a discounted rate for the first year (possibly two).&amp;#160; That rate jumped up quite a bit after the discount period was over.&amp;#160; If Verizon has a cheap enough rate, people will be inclined to switch.&amp;#160; Verizon also calls their package “Triple Play” and their &lt;a href="http://www22.verizon.com/residential/bundles/landing/fios_online_nat.htm"&gt;introductory offer is $89.99 a month&lt;/a&gt;.&amp;#160; That beats Time Warner’s introductory rate of $99 a month.&lt;/p&gt;  &lt;p&gt;I’m customer of both companies.&amp;#160; I have Verizon phone and FiOS Internet, and I have Time Warner Cable TV service.&amp;#160; If FiOS TV becomes available, I’m going to consider switching to it.&amp;#160; I spent some time talking to FiOS TV sales agents and it sounds like they offer strong competition to Time Warner Cable.&lt;/p&gt;  &lt;p&gt;Verizon has a multi-room DVR called the &lt;a href="http://www22.verizon.com/ResidentialHelp/FiOSTV/Receivers/Multi-Room+DVR/QuestionsOne/84882.htm?redirect=true"&gt;Home Media DVR&lt;/a&gt;.&amp;#160; This is an upgrade from their standard HD DVR.&amp;#160; If you have multiple TV sets with cable, one set will have the Home Media DVR and the rest just need to have set top box (STB).&amp;#160; Each STB can watch shows recorded on the DVR.&amp;#160; I was told by the sales agent that multiple recorded shows can be watched at the same time, from different STBs.&amp;#160; I asked a couple of sales agents how many show could be watch simultaneously and they said it depended on the number of set top boxes.&amp;#160; I don’t think that is true, I think the limit is 2 STBs watching from one DVR based on materials published on the Verizon web site.&lt;/p&gt;  &lt;p&gt;The Home Media DVR can record 85 hours of SD and 20 hours of HD content.&amp;#160; If you need more space, you can move shows from the DVR to a PC and back again.&amp;#160; You can also send your own video and music content from a PC down to the DVR,&amp;#160; This uses a feature called the &lt;a href="http://www22.verizon.com/residentialhelp/fiostv/guide/enhanced+tv/questionsone/124941.htm"&gt;Media Manager&lt;/a&gt;.&amp;#160; There have been sneak peeks posted online for the next version of the FiOS TV software that &lt;a href="http://www.engadget.com/2010/08/18/verizon-fios-set-top-boxes-getting-a-new-hd-guide-external-stor/"&gt;looks pretty cool&lt;/a&gt;.&amp;#160; It looks like the next version gets the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Support for an external ESATA hard drive so you can record more shows at once. &lt;/li&gt;    &lt;li&gt;The program guide uses the 16x9 screen on HD TV Sets &lt;/li&gt;    &lt;li&gt;An undelete button (sorry, I can do that now with my TiVo). &lt;/li&gt;    &lt;li&gt;DVD style chaptering on recordings. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This version (IMG 1,9) is not out yet, but since it would take time to rollout FiOS TV in this town, it should be out by the time we could use it.&amp;#160; Some more information can be found &lt;a href="http://forums.verizon.com/t5/Verizon-at-Home/FiOS-TV-IMG-1-9-Release-Notes-and-Opportunity-to-Get-a-Sneak/bc-p/255257"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you use a TiVo with a CableCard to get Time Warner Cable, there are a couple of benefits that you would get by switching to FiOS TV.&amp;#160; First off, no Switched Digital Video (SDV), which means no tuning adapter will be required.&amp;#160; I posted about the annoyances of SDV a &lt;a href="http://anotherlab.rajapet.net/2010/04/twitter-time-warner-cable-gets-it.html"&gt;while back&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The other TiVo benefit is that FiOS TV does not blindly set the CCI flag to the “Copy Once” setting that Time Warner Cable uses.&amp;#160; “Copy Once” means that you can record the show to your TiVo, but you can’t transfer the show from the TiVo to your PC or another TiVo.&amp;#160; Verizon FiOS TV does not have this limitation.&lt;/p&gt;  &lt;p&gt;There might be some drawbacks to switching from Time Warner Cable to FiOS TV.&amp;#160; First off, you’ll need a STB or DVR for any TV that you want to watch cable on.&amp;#160; Time Warner Cable still offers the analog channels.&amp;#160; You can still watch most of the channels on a SD TV just by plugging the coax cable in the back of the TV.&amp;#160; You can’t do that with FiOS, and to be fair, you need a STB for every TV that has the Time Warner Cable digital channels.&lt;/p&gt;  &lt;p&gt;Will we get the local sports with FiOS TV?&amp;#160; With Time Warner Cable, we get the local Syracuse and Siena games as part of the standard cable package.&amp;#160; It’s not clear if we would get that with FiOS TV.&amp;#160; We also get a local Time Warner news channel, &lt;a href="http://capitalregion.ynn.com/"&gt;YNN&lt;/a&gt;.&amp;#160; I could not get a straight answer from the sales agents if FiOS TV offered something similar.&lt;/p&gt;  &lt;p&gt;There is also the question of support.&amp;#160; Time Warner Cable has local offices and branch locations in this area.&amp;#160; If a remote or DVR fails, you can drive to the mall or TWC office and get it replaced.&amp;#160; Will Verizon have locations in this area?&amp;#160; They don’t have any now, but a quick peek at the online store locator does show &lt;a href="http://www22.verizon.com/Residential/Templates/sas/sas_StoreLocator_results.aspx?State=NY&amp;amp;SName=New%20York"&gt;many locations across the state&lt;/a&gt;.&amp;#160; They also have &lt;a href="http://forums.verizon.com/t5/FiOS-TV-Technical-Assistance/bd-p/FiOS_TV"&gt;online forums&lt;/a&gt; for support.&amp;#160; &lt;/p&gt;  &lt;p&gt;Time Warner Cable has great live technical support via Twitter.&amp;#160; Does Verizon match that?&amp;#160; They both offer “live chat” support, but the Time Warner Cable Twitter support is manned by experts and they know more about the system than the live chat people.&lt;/p&gt;  &lt;p&gt;Time Warner Cable does offer a multi-room DVR, but only as part of their &lt;a href="http://www.bloomberg.com/news/2010-11-23/time-warner-promises-no-waiting-for-the-cable-guy-for-189-95-a-month.html"&gt;Signature Home&lt;/a&gt; package.&amp;#160; That is their high end offering, &lt;a href="http://www.cedmagazine.com/Blog-Time-Warner-Cable-TWC-Signature-Home-Powertask-112910.aspx"&gt;$199 a month in NYC&lt;/a&gt;.&amp;#160; That’s more than I want to pay and I don’t want to switch from FiOS Internet back to RoadRunner.&amp;#160; I’m looking forward to hearing more about FiOS TV. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-5144997418658762883?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=GLq-j0Kft4o:34bfUsfLbcs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=GLq-j0Kft4o:34bfUsfLbcs:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=GLq-j0Kft4o:34bfUsfLbcs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=GLq-j0Kft4o:34bfUsfLbcs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=GLq-j0Kft4o:34bfUsfLbcs:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=GLq-j0Kft4o:34bfUsfLbcs:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=GLq-j0Kft4o:34bfUsfLbcs:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/GLq-j0Kft4o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/5144997418658762883/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2011/01/cable-tv-competition-coming-to.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5144997418658762883?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5144997418658762883?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/GLq-j0Kft4o/cable-tv-competition-coming-to.html" title="Cable TV Competition coming to Bethlehem? (FiOS TV vs Time Warner Cable)" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2011/01/cable-tv-competition-coming-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQGRHc4cSp7ImA9Wx9SEUU.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-4286965500526584634</id><published>2010-12-01T01:02:00.001-05:00</published><updated>2010-12-01T01:02:05.939-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-01T01:02:05.939-05:00</app:edited><title>One final migration from Vista to Windows 7</title><content type="html">&lt;p&gt;Over Thanksgiving weekend, I upgraded our last Vista PC to Windows 7. We have a family PC, that we all share.&amp;nbsp; It’s nothing too fancy, a three year old Dell &lt;a href="http://support.dell.com/support/edocs/systems/inspd530/en/OM/HTML/appendix.htm#wp1052310"&gt;Inspiron 530&lt;/a&gt;.&amp;nbsp; It came with Windows Vista Home Edition preinstalled.&amp;nbsp; A Core 2 4300, running at 1.8 Ghz and 2GB of RAM.&amp;nbsp; &lt;/p&gt; &lt;p&gt;We use it mainly for web browsing, word processing, and email.&amp;nbsp; The kids use it for games, mainly web based games.&amp;nbsp; My oldest likes to play “The Sims 3” on it.&amp;nbsp; Something in how “The Sims 3” was installed just killed the performance of the machine, even when the games wasn’t running.&amp;nbsp; There was an app that checks for updates for “The Sims 3” and that just took forever to run.&lt;/p&gt; &lt;p&gt;Over the Thanksgiving break, I decided to clean up the machine and bring back the performance.&amp;nbsp; I wanted to repave the machine with Windows 7.&amp;nbsp; I had a spare Windows 7 Ultimate disk (overkill, but I had it available) and I was not afraid to use it.&amp;nbsp; It wasn’t that Vista was horrible, but Windows 7 is better.&lt;/p&gt; &lt;p&gt;I decided to install on a new hard drive and keep the existing hard drive around, just in case something went seriously wrong.&amp;nbsp; I have &lt;a href="http://www.microsoft.com/windows/products/winfamily/windowshomeserver/default.mspx"&gt;Windows Home Server&lt;/a&gt;, in the shape of an &lt;a href="http://www.shopping.hp.com/product/computer/categories/home_servers/1/accessories/FL705AA%2523ABA"&gt;HP MediaSmart EX495&lt;/a&gt;, so I could restore the machine back to yesterday’s backup.&amp;nbsp; While I could have done that, it’s still easier having access to the old drive in case I needed to get something off of it.&lt;/p&gt; &lt;p&gt;The first step was to inventory the installed hardware and software on the machine.&amp;nbsp; The hardware was pretty easy, it’s basically a stock Dell box.&amp;nbsp; I had added a &lt;a href="http://www.everythingusb.com/microsoft-lifecam-vx-7000-14105.html"&gt;Microsoft webcam&lt;/a&gt; and a Logitech mouse, but the rest was stock Dell.&lt;/p&gt; &lt;p&gt;The software was a little trickier.&amp;nbsp; We have four users on this machine.&amp;nbsp; Myself, my wife Anne, and my daughters: Kathryn and Laura.&amp;nbsp; The ladies all had local email accounts set up with &lt;a href="http://www.mozillamessaging.com/en-US/thunderbird/"&gt;Thunderbird&lt;/a&gt;, I needed to migrate that over.&amp;nbsp; They all have iPod Nanos and I needed to get their iTunes data across.&amp;nbsp; Plus all of their documents. &lt;/p&gt; &lt;p&gt; I couldn’t find the serial number for “The Sims 3”, so I copied it from the registry.&amp;nbsp; With 32 bit editions of Windows, the serial number is the default value stored in the following key:&lt;/p&gt; &lt;p&gt;&lt;font size="1" face="Courier New"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\Sims\The Sims 3\ergc&lt;/font&gt;&lt;/p&gt; &lt;p&gt;For 64 bit Windows, look in:&lt;/p&gt; &lt;p&gt;&lt;font size="1" face="Courier New"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Electronic Arts\Sims\The Sims 3\ergc&lt;/font&gt;&lt;/p&gt; &lt;p&gt;After storing the serial number, I then went into iTunes and deauthorized the computer.&amp;nbsp; We use a single AppleID account for all of our iTunes purchases and we have it on a few PC’s.&amp;nbsp; Apple only allows 5 PC’s to be used with any account.&amp;nbsp; When you reformat or decommision a PC, you want to make sure that it’s no longer authorized to your Apple account.&amp;nbsp; If you forget this step, you can deauthorize all of your PC’s.&amp;nbsp; You would the have to authorize each PC again and Apple only lets you do this once a year.&lt;/p&gt; &lt;p&gt;By installing the OS on a new drive and keeping the old OS on a mounted drive, it would make it easier to bring over files and folders.&amp;nbsp; I had a spare 250 GB Maxtor drive that used to be part of a RAID 5 array in my home development machine.&amp;nbsp; I had three identical drives in the array and I replaced them with “normal” drives after I got the MediaSmart server.&amp;nbsp; Being able to do bare metal restores from the server trumped the protection that I was getting from RAID 5.&lt;/p&gt; &lt;p&gt;So I installed the drive and Vista saw the drive and I did a quick format of the drive.&amp;nbsp; I then rebooted the Dell and switched the boot order of the drives so that it would see the Maxtor drive first.&amp;nbsp; I then booted from the Windows 7 disk.&lt;/p&gt; &lt;p&gt;Now Microsoft has come a long way with OS installs.&amp;nbsp; Windows 7 installs fairly quickly and without bothering you too much.&amp;nbsp; But for some reason, it wouldn’t see the Maxtor drive.&amp;nbsp; It came up fine in the BIOS and Vista had no problem with it.&amp;nbsp; It was just invisible to Windows 7.&amp;nbsp; I spent a few hours playing with cables and boot order and BIOS tinkering to no avail.&lt;/p&gt; &lt;p&gt;It was now Saturday, the day after Black Friday.&amp;nbsp; Probably the best weekend of the year to buy electronic stuff.&amp;nbsp; The local BestBuy had &lt;a href="http://www.wdc.com/en/products/internal/desktop/"&gt;Western Digital Caviar Black&lt;/a&gt; 1 TB drives on sale for the ridiculous price of $59.99.&amp;nbsp; For $60 I could get a faster drive with four times the capacity of the drive that came with the machine.&amp;nbsp; I went down and bought two of them.&amp;nbsp; I would use one in the Family PC and the other would go in my development machine or into the MediaSmart server.&amp;nbsp; &lt;/p&gt; &lt;p&gt;I installed that drive in and Windows 7 saw it without any problems.&amp;nbsp; The installer did it’s thing and 20 minutes later, I was running the 64bit edition of Windows 7.&amp;nbsp; It had installed drivers for all of the onboard hardware and even the web cam..&amp;nbsp; Being a freshly paved Windows install, Windows Update needed to be run.&amp;nbsp; Installing the updates took longer than installing the OS, but that’s normal.&amp;nbsp; I did pick a new name for the PC.&amp;nbsp; I wanted to make sure that this machine appeared as a new machine to the rest of the network.&amp;nbsp; Life is much easier that way.&lt;/p&gt; &lt;p&gt;Now that OS was up and running, it was time to bring over the software.&amp;nbsp; First up, create the users.&amp;nbsp; You need to login as each user at least once to get the the folders all set up.&lt;/p&gt; &lt;p&gt;The first app was email.&amp;nbsp; We use Thunderbird as the desktop client.&amp;nbsp; My wife uses a verizon.net account on this machine and the girls use our personal domain GMail accounts.&amp;nbsp; With the girls, I just had to fire up Thunderbird and add their email accounts.&amp;nbsp; Their GMail accounts are set to use &lt;a href="http://en.wikipedia.org/wiki/Internet_Message_Access_Protocol"&gt;IMAP&lt;/a&gt; with all of their mail stored in the Google Cloud.&amp;nbsp; Their existing email and settings came over automagically.&amp;nbsp; With Anne’s email, the messages were stored locally.&amp;nbsp; So I configured Anne’s email settings and then closed down Thunderbird.&amp;nbsp; I then copied the contents of her Thunderbird profile folder from the old hard drive to the appropriate location on the new drive.&amp;nbsp; The profile folder will have a random name and will be located in the “%APPDATA%\Thunderbird\profiles” folder.&lt;/p&gt; &lt;p&gt;Next up was iTunes. To keep things easy to manage, we try to keep all of our music files in a “C:\mp3” folder.&amp;nbsp; So I copied that folder from the old drive to the new drive.&amp;nbsp; Apple also likes to place files in the “%HOMEPATH%\My Music\iTunes” folder.&amp;nbsp; I installed iTunes and then copied that folder for each account.&amp;nbsp; I then started up iTunes and authorized the PC.&lt;/p&gt; &lt;p&gt;I then copied over the documents for each user, plus some shared folders.&amp;nbsp; I then installed “The Sims 3” and the serial number worked.&amp;nbsp; The installer made an updater app start with Windows,but I ran &lt;a href="http://netsquirrel.com/msconfig/index.html"&gt;MSConfig&lt;/a&gt; and fixed that.&amp;nbsp; To keep the saved games, I had copied over a few folders from ”%HOMEPATH%\Documents\Electronic Arts\The Sims 3” and all was good.&lt;/p&gt; &lt;p&gt;Next, I installed the usual suspects. Microsoft Office, then &lt;a href="http://www.microsoft.com/security_essentials/"&gt;Microsoft Security Essentials&lt;/a&gt;, then the Windows Home Server client.&amp;nbsp; The WHS client allows quick access to the server, plus enables the nightly backups.&amp;nbsp; I switched to Microsoft Security Essentials last year and I have been very pleased with it.&amp;nbsp; I can’t imagine dealing with the bloated offerings from Symantec or Mcafee these days.&amp;nbsp; MSE does the job and doesn’t bog down the machine like the big boys too.&lt;/p&gt; &lt;p&gt;That being said, I consider the PC’s antivirus solution to just be a part of the protection. Even with daily updates, a &lt;a href="http://en.wikipedia.org/wiki/Zero-day_attack"&gt;0-day attack&lt;/a&gt; could still get your machine.&amp;nbsp; With the Windows Home Server, I can easily do a bare metal restore of the OS.&lt;/p&gt; &lt;p&gt;After getting everything back up and running, I added another 2 GB of RAM to the system.&amp;nbsp; It was cheap and with fast user switching, the more memory the better.&amp;nbsp; I still need to install a few utilities here and there, but for the most part the machine is back in service.&amp;nbsp; It’s much snappier.&amp;nbsp; Between removing 3 years of accumulated crap and Windows 7 being faster than Vista, it’s like having a new machine.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-4286965500526584634?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=2QQIF2gNEDA:skmpt9j4FBs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=2QQIF2gNEDA:skmpt9j4FBs:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=2QQIF2gNEDA:skmpt9j4FBs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=2QQIF2gNEDA:skmpt9j4FBs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=2QQIF2gNEDA:skmpt9j4FBs:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=2QQIF2gNEDA:skmpt9j4FBs:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=2QQIF2gNEDA:skmpt9j4FBs:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/2QQIF2gNEDA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/4286965500526584634/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2010/12/one-final-migration-from-vista-to.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/4286965500526584634?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/4286965500526584634?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/2QQIF2gNEDA/one-final-migration-from-vista-to.html" title="One final migration from Vista to Windows 7" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2010/12/one-final-migration-from-vista-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QARn8yeyp7ImA9Wx5UE0o.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-7363940994839054487</id><published>2010-10-17T23:09:00.001-04:00</published><updated>2010-10-17T23:09:07.193-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-17T23:09:07.193-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term="TiVo" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="XAuth" /><category scheme="http://www.blogger.com/atom/ns#" term="TweeVo" /><title>How TweeVo survived the OAuthcalypse</title><content type="html">&lt;p&gt;Last month, I spent a few evenings adding OAuth support to &lt;a href="http://brianpeek.com/blog/default.aspx"&gt;Brian Peek's&lt;/a&gt; TweeVo application.&amp;#160; TweeVo is a little WPF based application that runs in the background and logs what your TiVo has recorded to a specified Twitter account.&amp;#160; I’ve been running it on and off as &lt;a href="http://twitter.com/anothertivo"&gt;@AnotherTiVo&lt;/a&gt;. Brian keeps a Twitter list of known TweeVo accounts &lt;a href="http://twitter.com/peekvo/tweevousers"&gt;as tweevousers&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;It's a good learning tool for showing how to query a web server and how to post to Twitter using the Twitter API, all wrapped up as a WPF application.&amp;#160; What it does is very clever and Brian did a &lt;a href="http://blogs.msdn.com/b/coding4fun/archive/2010/02/19/9966722.aspx"&gt;nice article about it&lt;/a&gt; on the Coding4Fun site.&lt;/p&gt;  &lt;p&gt;The web server is the &lt;a href="http://www.tivocommunity.com/tivo-vb/showthread.php?s=&amp;amp;threadid=215838&amp;amp;perpage=20&amp;amp;pagenumber=1"&gt;built in HTTP server that runs on the TiVo box&lt;/a&gt;.&amp;#160; You can use that web server to get a list of everything that has been recorded by your TiVo.&amp;#160; Brian wrote a nice, clean application that would query the selected TiVo units on your home network.&amp;#160; TweeVo polls each unit and checks the &amp;quot;Now Playing&amp;quot; list to see what shows were recorded since the last check by TweeVo.&amp;#160; It then posts the name of the show, plus a &lt;a href="http://twitter.com/anothertivo"&gt;http://www.zap2it.com/&lt;/a&gt; link to the specified Twitter account.&amp;#160; The Zap2It link will list some information about the show, plus a link to tell your TiVo to record that show.&lt;/p&gt;  &lt;p&gt;The original version of TweeVo posted to Twitter using the username and password for the account.&amp;#160; This was called Basic Authentication or just Basic Auth. The user’s credentials were stored in a config file by TweeVo and they were encrypted so nothing else could read it.&amp;#160; Brian released it a while back and and it was a lot of fun for the people who used it.&amp;#160; Then came the OAuthcalypse.&lt;/p&gt;  &lt;p&gt;Twitter supported two forms of authentication, Basic Auth and &lt;a href="http://oauth.net/core/1.0/"&gt;OAuth&lt;/a&gt;.&amp;#160; Twitter announced in the Spring that support for Basic Auth was being phased out and everyone using the Twitter API needed to implement OAuth.&lt;/p&gt;  &lt;p&gt;With OAuth, the application requesting Twitter access with the application key.&amp;#160; To get the application key, you would request one for your application from Twitter.&amp;#160; If they approves your request, you would get a consumerKey and a consumerSecret.The user would be presented with a web dialog asking if they wanted to allow access to their account to the application and they would be prompted for their user name and password.&amp;#160; &lt;/p&gt;  &lt;p&gt;If they allowed it, Twitter would send back an access token and application would use that token and their own api key to access the Twitter API.&amp;#160; The web dialog would redirect back to the calling web application and life was good for the user.&lt;/p&gt;  &lt;p&gt;That’s an over simplification of the process, but it describes the basic mechanism for allowing an web application to post to your Twitter timeline.&amp;#160; There are a few advantages to using OAuth.&amp;#160; Since the application uses an access token, you could change your password without having to update the application.&amp;#160; Plus you could revoke the access token at any time from your Twitter web page.&lt;/p&gt;  &lt;p&gt;For desktop application, it was a little trickier.&amp;#160; You still needed to present the web dialog from Twitter to request access.&amp;#160; Since you couldn’t get back to desktop application from a web page, the user would be presented with a &lt;a href="http://en.wikipedia.org/wiki/Personal_identification_number"&gt;PIN&lt;/a&gt; from the web dialog.&amp;#160; He would then manually type the PIN into an entry field provided by the desktop application.&amp;#160; The app would then request the access token from Twitter by providing the application key and the PIN.&lt;/p&gt;  &lt;p&gt;While this mechanism keeps the user’s credentials away from the application, it’s annoying to use.&amp;#160; Plus you have now introduced a point of failure where the user types in the PIN.&amp;#160; A more streamlined approach called &lt;a href="http://dev.twitter.com/pages/xauth"&gt;XAuth&lt;/a&gt; was made available by Twitter for desktop applications.&lt;/p&gt;  &lt;p&gt;XAuth works by consolidating a few of the steps.&amp;#160; The user provides the user name and password to the application.&amp;#160; The application then requests the access token by passing the credentials and the application key.&amp;#160; This skips over the access request dialog and sends back the access token.&amp;#160; For the end user, this is a much simpler.&amp;#160; &lt;/p&gt;  &lt;p&gt;The original shutoff date for Basic Auth was June 30th, 2010.&amp;#160; This date became commonly known as the OAuthcalypse.&amp;#160; Due to heavy Twitter usage &lt;a href="http://mashable.com/2010/06/17/oauthcalypse-delayed/"&gt;around World Cup activity&lt;/a&gt;, the Twitter team pushed the OAuthcalypse date to August.&amp;#160; On August 16th, Basic Auth usage would start get rate limited and a final shutoff occurred on August 30th.&lt;/p&gt;  &lt;p&gt;The OAuthcalypse basically prevented TweeVo from posting to Twitter.&amp;#160; Brian was a little busy in September and I offered to help add OAuth/XAuth support to TweeVo.&amp;#160; I did some reading and played around with some .NET implementations of XAuth.&lt;/p&gt;  &lt;p&gt;We implemented XAuth with TweeVo and tested it in late September.&amp;#160; Much of the XAuth code was based on code that been posted in a set of &lt;a href="http://www.voiceoftech.com/swhitley/index.php/2010/03/twitter-xauth-with-net/"&gt;blog posts by Shannon Whitely&lt;/a&gt;.&amp;#160; I made a few changes to Shannon’s code, but the his implementation was sound and it saved me quite a bit of time.&amp;#160; That allowed me to spend more time reworking the TweeVo code to use XAuth and do more testing.&amp;#160; If you were using TweeVo 1.0, now is the time to &lt;a href="http://www.brianpeek.com/blog/archive/2010/02/20/tweevo.aspx"&gt;get version 1.1&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-7363940994839054487?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=1CjTl4ShMeE:evhgd82QQ_g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=1CjTl4ShMeE:evhgd82QQ_g:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=1CjTl4ShMeE:evhgd82QQ_g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=1CjTl4ShMeE:evhgd82QQ_g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=1CjTl4ShMeE:evhgd82QQ_g:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=1CjTl4ShMeE:evhgd82QQ_g:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=1CjTl4ShMeE:evhgd82QQ_g:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/1CjTl4ShMeE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/7363940994839054487/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2010/10/how-tweevo-survived-oauthcalypse.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/7363940994839054487?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/7363940994839054487?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/1CjTl4ShMeE/how-tweevo-survived-oauthcalypse.html" title="How TweeVo survived the OAuthcalypse" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2010/10/how-tweevo-survived-oauthcalypse.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcGQnY4fip7ImA9Wx5WF00.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-4038477554333577290</id><published>2010-09-28T11:34:00.001-04:00</published><updated>2010-09-28T17:07:03.836-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-28T17:07:03.836-04:00</app:edited><title>Care and feeding of your wireless router</title><content type="html">&lt;p&gt;This morning I went to check my email from my iPad and had a unpleasant surprise.&amp;#160; No Internet.&amp;#160; I have the Wi-Fi only version of the iPad and it usually has a nice solid connection to my wireless router.&amp;#160; On the iPad, I fired up the Settings app and sure enough, under “Wi-Fi”, it displayed not connected. I tapped “Wi-Fi” and let it scan for networks.&amp;#160; No sign of mine.&amp;#160; I tried my iPod Touch, same thing.&lt;/p&gt;  &lt;p&gt;That pretty much rules out the iPad as being the problem, time to move up the chain of command.&amp;#160; My router is an ancient (by home router standards) Linksys, the WRT54GS.&amp;#160; It’s your basic work horse router with 802.11b (11 Mbit/s) and &lt;a href="http://en.wikipedia.org/wiki/802.11g"&gt;802.11g&lt;/a&gt; (54 Mbit/s) support.&amp;#160; I run a 3rd party firmware on it called &lt;a title="DD-WRT is a Linux based alternative OpenSource firmware suitable for a great variety of WLAN routers and embedded systems. The main emphasis lies on providing the easiest possible handling while at the same time supporting a great number of functionalities within the framework of the respective hardware platform used." href="http://www.dd-wrt.com/site/index"&gt;DD-WRT&lt;/a&gt;.&amp;#160; DD-WRT greatly enhances the functionality of the router and lets you do &lt;a href="http://en.wikipedia.org/wiki/DD-WRT#Features"&gt;a lot of cool things&lt;/a&gt;.&amp;#160; It’s about 99.9% cool and 0.1% flakey.&amp;#160; The flakey bit means that I need to reboot it every now and then.&amp;#160; I don’t know if it’s a memory leak, or something is getting confused, but a reboot every once in a while clears the cobwebs out.&lt;/p&gt;  &lt;p&gt;From my PC with a wired connection to the router, I was able to access both the Internet and the administrative web pages on the router.&amp;#160; So the router wasn’t completely borked, just the wireless part.&amp;#160; From the admin pages on the router, I could get the router to do a wireless scan.&amp;#160; That’s where the router goes looking to see what other wireless hotspots are nearby.&amp;#160; This is very useful for picking the right &lt;a href="http://en.wikipedia.org/wiki/802.11g#Channels_and_Frequencies"&gt;channel&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;With 802.11b and 802.11g, the router uses a narrow range of frequencies at 2.4ghz.&amp;#160; In the US, this range is divided up into 11 channels.&amp;#160; It’s kind of fuzzy how they divided the channels, they all overlap the next channel on each side.&amp;#160; So you really want to think of it as 3 channels, 1, 6, and 11.&amp;#160; Since channel 1 only bleeds up with channel 2, and channel 11 only bleeds down with 10, you really want to use channel 1 or 11 if you can.&amp;#160; Most routers default to channel 6, in a crowded neighborhood so you should see less traffic on 1 or 11 than on 6.&lt;/p&gt;  &lt;p&gt;So I unplugged the router and waited about 20 seconds.&amp;#160; It came back up and my PC could hit the Internet.&amp;#160; But still no Wi-Fi.&amp;#160; Since a power cycle didn’t fix it, I moved up to the nuclear option: the &lt;a href="http://www.dd-wrt.com/wiki/index.php/Hard_reset_or_30/30/30"&gt;30/30/30 reset&lt;/a&gt;.&amp;#160; The 30/30/30 reset is the best way to clear out all of the router settings to the firmware default values.&amp;#160; When you &lt;a href="http://www.dd-wrt.com/wiki/index.php/Installation"&gt;upgrade the firmware&lt;/a&gt; on the router, you should do the 30/30/30 before you flash the router and one more time again after you have flashed the router to the new firmware.&lt;/p&gt;  &lt;p&gt;There are 3 steps to the 30/30/30 reset:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Press and hold the reset button on the router and wait 30 seconds.&lt;/li&gt;    &lt;li&gt;While keeping the reset button pressed, unplug the power from the router and wait 30 more seconds&lt;/li&gt;    &lt;li&gt;Plug the power back in while keeping the reset button pressed and wait for another 30 seconds.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Before you do the reset, you’ll want to write down any custom settings that you have performed. I use the following features added by DD-WRT:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Configured the &lt;a href="http://www.dyndns.com/"&gt;&lt;font color="#0066cc"&gt;http://www.dyndns.com/&lt;/font&gt;&lt;/a&gt; client.&amp;#160; This assigns the current IP address of the router to domain name provided by DynDNS.&amp;#160; When my ISP changes the IP address assigned to the router, DD-WRT passes the new IP address to DynDNS and they update the record for that domain name.&amp;#160; This makes it easy to use my VPN to connect to my home network.&lt;/li&gt;    &lt;li&gt;Configured the &lt;a href="http://en.wikipedia.org/wiki/Vpn"&gt;VPN&lt;/a&gt; server.&amp;#160; DD-WRT provides both &lt;a title="The Point-to-Point Tunneling Protocol (PPTP) is a method for implementing virtual private networks. PPTP uses a control channel over TCP and a GRE tunnel operating to encapsulate PPP packets." href="http://en.wikipedia.org/wiki/Point-to-Point_Tunneling_Protocol"&gt;PPTP&lt;/a&gt; and &lt;a title="OpenVPN is a free and open source software application that implements virtual private network (VPN) solutions for creating secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities. It uses SSL/TLS security for encryption and is capable of traversing network address translators (NATs) and firewalls. It was written by James Yonan and is published under the GNU General Public License (GPL)" href="http://openvpn.net/index.php/open-source/333-what-is-openvpn.html"&gt;OpenVPN&lt;/a&gt;.&amp;#160; PPTP is simpler the configure and works for me, so that’s what I use. I’ll use the VPN if I’m a location that blocks sites that I want to access from my iPad.&amp;#160; I can also use the VPN if I need to open a Remote Desktop (RDP) connection to my home PC.&lt;/li&gt;    &lt;li&gt;Changed the default login account on the router.&amp;#160; Most routers let you change just the admin password, DD-WRT lets you change the login name as well.&lt;/li&gt;    &lt;li&gt;Set the router to use &lt;a href="http://www.opendns.com/"&gt;OpenDNS&lt;/a&gt;.&amp;#160; This isn’t a DD-WRT feature, most routers will let you set the DNS servers.&amp;#160; I use OpenDNS for their fast &lt;a href="http://en.wikipedia.org/wiki/Domain_Name_System"&gt;DNS&lt;/a&gt; servers and for their content filtering.&lt;/li&gt;    &lt;li&gt;Sell the router to reboot itself once a week.&amp;#160; In a perfect world, your computer would never need to be rebooted. In this world, it doesn’t hurt for the router to get rebooted automatically once a week.&amp;#160; Mine is set to reboot ever Wednesday at 5:30am.&amp;#160; Not much is going on at that hour.&lt;/li&gt;    &lt;li&gt;Enable &lt;a title="Universal Plug and Play (UPnP) is a set of networking protocols for primarily residential networks without expert administrators that permits networked devices, such as personal computers, printers, Internet gateways, Wi-Fi access points, mobile device, to seamlessly discover each others presence on the network and establish functional network services for data sharing, communications, and entertainment" href="http://en.wikipedia.org/wiki/Universal_Plug_and_Play"&gt;UPnP&lt;/a&gt;.&amp;#160; I missed that one at first.&amp;#160; Windows Home Server uses UPnP to punch a secure hole through your firewall to allow remote access to your network through Windows Home Server.&amp;#160; I have a HP Media Smart Server and I will access my home network from work by going through it’s Remote Access.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;After the reset, I set the Wi-Fi settings and after a few seconds, my iPad was back on the Internet.&amp;#160; Since I had already reset the settings, I decided to update the DD-WRT version on my router.&amp;#160; The DD-WRT web site has an interactive &lt;a href="http://www.dd-wrt.com/site/support/router-database"&gt;Router Database&lt;/a&gt;, where you can pick your router and it will tell you which versions of DD-WRT will work with your router.&amp;#160; It’s pretty handy, there are multiple versions of DD-WRT available, and different builds of each versions.&lt;/p&gt;  &lt;p&gt;Unless you have a large pile of routers to play with, you really want to use the suggested version of DD-WRT.&amp;#160; If you install the wrong version or get an unstable development build, you could brick the router.&amp;#160; I grabbed the standard set and installed it without blowing anything up.&amp;#160; Then I put back my custom settings.&lt;/p&gt;  &lt;p&gt;So now I have full Wi-Fi back, but I don’t know why it failed.&amp;#160; It was working the evening before, but stopped sometime last night.&amp;#160; MY WRT45GS is about 4 years old and has been on 24/7 the entire time.&amp;#160; It could be just wearing out.&amp;#160; My iPad supports &lt;a href="http://en.wikipedia.org/wiki/802.11n"&gt;802.11n&lt;/a&gt;, it may be time to upgrade to a newer router.&amp;#160; The Buffalo Technology Nfiniti Wireless-N High Power Router (&lt;a href="http://www.buffalotech.com/products/wireless/nfiniti-wireless-n/nfiniti-wireless-n-high-power-router-access-point-wzr-hp-g300nh/"&gt;WZR-HP-G300NH&lt;/a&gt;) works very well with DD-WRT and the people at &lt;a href="http://www.smallnetbuilder.com/wireless/wireless-reviews/30889-buffalo-nfiniti-wireless-n-high-power-router-a-access-point-reviewed"&gt;SmallNetBuilder like it&lt;/a&gt;.&amp;#160; &lt;a href="http://www.codinghorror.com/blog/2010/09/because-everyone-needs-a-router.html"&gt;Jeff Atwood just picked one up too&lt;/a&gt;, and he’s programmer with the hardware tweak bit set to on.&amp;#160; It would also be nice to have a router that supports gigabit speed WAN connections for the small set of the devices that I own that support gigabit.&amp;#160; &lt;/p&gt;  &lt;p&gt;The Nfiniti is a single band router, everything is broadcast over the 2.4ghz range.&amp;#160; I may look at a dual band router, like the &lt;a href="http://www.myopenrouter.com/category/40/WNR3500L-Open-Source-Router"&gt;Netgear WNR3500L&lt;/a&gt;.&amp;#160; With a dual band router, you can have 802.11g devices on the 2.4ghz band and the 802.11n devices on the 5ghz band.&amp;#160; As far as I can tell, my iPad supports 802.11a/b/g/n on either band. It may be worth it to get the heavy duty Netgear router over the Buffalo one.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Some additional notes&lt;/em&gt;:    &lt;br /&gt;Resetting the router evidently disabled my Windows Home Server’s Remote Access functionality.&amp;#160; I was able to repair that by performing the following steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Launch the Windows Home Console&lt;/li&gt;    &lt;li&gt;Click on “Settings”&lt;/li&gt;    &lt;li&gt;Click on “Remote Access”&lt;/li&gt;    &lt;li&gt;Click on the “Repair…” button.&amp;#160; This launched the “Repairing Remote Access Configuration” wizard. Which told me that UPnP was not enabled on the router. Sure enough, I went into the UPnP page (under NAT / QoS) in dd-qrt and saw that UPnP was not enabled.&amp;#160; I enabled UPnP, rebooted the router, and let the wizard repair the Remote Access settings.&amp;#160; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The fun part was that I did this from my office PC.&amp;#160; I created opened a VPN connection to my router and changed the UPnP settings remotely.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-4038477554333577290?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=8gpyHLxxkaU:v9wLGHC3m40:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=8gpyHLxxkaU:v9wLGHC3m40:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=8gpyHLxxkaU:v9wLGHC3m40:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=8gpyHLxxkaU:v9wLGHC3m40:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=8gpyHLxxkaU:v9wLGHC3m40:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=8gpyHLxxkaU:v9wLGHC3m40:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=8gpyHLxxkaU:v9wLGHC3m40:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/8gpyHLxxkaU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/4038477554333577290/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2010/09/care-and-feeding-of-your-wireless.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/4038477554333577290?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/4038477554333577290?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/8gpyHLxxkaU/care-and-feeding-of-your-wireless.html" title="Care and feeding of your wireless router" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2010/09/care-and-feeding-of-your-wireless.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEESXk_cCp7ImA9Wx5WEE0.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-3449016968846192621</id><published>2010-09-20T13:26:00.001-04:00</published><updated>2010-09-20T13:26:48.748-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-20T13:26:48.748-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MS Office" /><category scheme="http://www.blogger.com/atom/ns#" term="Security" /><category scheme="http://www.blogger.com/atom/ns#" term="Internet Explorer" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7" /><category scheme="http://www.blogger.com/atom/ns#" term="Vista" /><category scheme="http://www.blogger.com/atom/ns#" term="Annoyances" /><title>There was a problem sending the command to the program</title><content type="html">&lt;p&gt;I hate error messages like that. It’s both detailed and vague at the same. What command was being sent and what was the problem? Let me back up a few steps. A family member bought a new PC running Windows 7, for his home office. He works from home and accesses his work email account through Internet Explorer.&amp;#160; His email based on &lt;a href="http://www-947.ibm.com/support/entry/portal/Overview/Software/Lotus/Lotus_Domino_Web_Access"&gt;Domino Web Access&lt;/a&gt;, which I’m assuming is the web bit for Lotus Notes email.&lt;/p&gt;  &lt;p&gt;When ever he was sent a document like an Excel file or Word file as an email attachment, he was unable to open the file.&amp;#160; He would double-click on the icon for the file, and Domino web page would spit out “There was a problem sending the command to the program”.&amp;#160; He has Office 2007 installed and we verified that it was working just fine.&lt;/p&gt;  &lt;p&gt;If he tried to save the file from Domino, he would get prompted for a folder to store the file and he would try to save it is his documents folder. It went through the motions of saving the file.&amp;#160; No error messages, but the file wasn’t there. I repeat, there was no error message. I took a peek at the file system and found the file in an odd location. All the files that he had been trying to launch were in “c:\users\hisname\AppData\Local\Temp\Low\Domino Web Access\80\”. The “Low” part of the folder name tells us that Internet Explorer was redirected by Windows.&lt;/p&gt;  &lt;p&gt;Starting with Vista, IE 7 runs with “low” privileges. The temporary files, cookies, and history folders are now in “low privilege” folders. Access to protected locations (root folder, documents, “my programs”, etc) is redirected by the operating system to the %LocalAppData%\Temp\Low folder. The folder virtualization that Vista/Win7 uses is pretty transparent the application. Unless the application checks for the file after it writes it (or knows about folder virtualization), it will not know that the file is in a different location. That explains why the files were not in the right location, but we still needed to figure out why they couldn’t be launched by the browser.&lt;/p&gt;  &lt;p&gt;After a bit of searching, I figured out the problem. He just needed to add the webmail server site as a “Trusted Site” in the Internet Explorer security options. With Windows 7, he needed to do the following steps in Internet Explorer 8:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;From “Tools” menu, select “Internet Options”.&lt;/li&gt;    &lt;li&gt;On the “Security” tab, click “Trusted site” in the “Select a zone to view or change security settings.” panel.&lt;/li&gt;    &lt;li&gt;Click the “Sites” button.&lt;/li&gt;    &lt;li&gt;Under the “Add this website to the zone:”, enter the URL for the web mail site and click the “Add” button.&lt;/li&gt;    &lt;li&gt;If the URL starts with HTTP instead of HTTPS, make sure that the “Require server verification (https:) for all sites in this zone.” check box is cleared.&lt;/li&gt;    &lt;li&gt;Press the “Close” button.&lt;/li&gt;    &lt;li&gt;Press the “OK” button.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;That will tell Internet Explorer that it’s safe to launch binary applications from the web mail application. It’s sounds annoying, but it’s just Microsoft trying to keep rogue web sites from running nasty programs.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-3449016968846192621?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=qomqShc2orQ:4Ia5xQBBL-0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=qomqShc2orQ:4Ia5xQBBL-0:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=qomqShc2orQ:4Ia5xQBBL-0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=qomqShc2orQ:4Ia5xQBBL-0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=qomqShc2orQ:4Ia5xQBBL-0:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=qomqShc2orQ:4Ia5xQBBL-0:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=qomqShc2orQ:4Ia5xQBBL-0:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/qomqShc2orQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/3449016968846192621/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2010/09/there-was-problem-sending-command-to.html#comment-form" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/3449016968846192621?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/3449016968846192621?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/qomqShc2orQ/there-was-problem-sending-command-to.html" title="There was a problem sending the command to the program" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>9</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2010/09/there-was-problem-sending-command-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEERH46eyp7ImA9Wx5XF04.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-5678387279622400465</id><published>2010-09-17T10:18:00.001-04:00</published><updated>2010-09-17T10:43:25.013-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-17T10:43:25.013-04:00</app:edited><title>All about “F# and You”</title><content type="html">&lt;p&gt;Last night at our monthly Tech Valley .NET User Group (&lt;a href="http://tvug.net/"&gt;TVUG&lt;/a&gt;) meeting, we had &lt;a href="http://richardminerich.com/"&gt;Rick Minerich&lt;/a&gt; come in and do a presentation on &lt;a href="http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/"&gt;F#&lt;/a&gt;.&amp;nbsp; It was a &lt;a href="http://tvug.net/blogs/tvug_news_and_events/archive/2010/09/10/september-meeting-f.aspx"&gt;very good presentation&lt;/a&gt;.&amp;nbsp; Rick was enthusiastic and knows F# cold.&amp;nbsp; One of the cool things that he showed in his presentation were examples in both F# and &lt;a href="http://msdn.microsoft.com/en-us/vcsharp/default.aspx"&gt;C#&lt;/a&gt;.&amp;nbsp; It looked like you could replace every 5-10 lines of C# code with F# code.&lt;/p&gt; &lt;p&gt;F# isn’t for everyone, but if you are doing serious number crunching and want to process data in parallel, then you seriously want to look at using F#.&amp;nbsp; It’s a full fledged member of Visual Studio 2010, it’s not just something bolted on to the architecture.&lt;/p&gt; &lt;p&gt;With F#, asynchronous programming is much simpler.&amp;nbsp; This useful for performing operations that require asynchronous I/O.&amp;nbsp; A common example would be collecting data from multiple, non-related web pages.&amp;nbsp; With F#’s asynchronous workflows, you define a set of operations to be performed in parallel.&amp;nbsp; The &lt;a href="http://msdn.microsoft.com/en-us/library/dd233250.aspx"&gt;following example from MSDN&lt;/a&gt; shows one way that you can implement this.&lt;/p&gt;&lt;pre class="brush: csharp"&gt;open System.Net&lt;br /&gt;open Microsoft.FSharp.Control.WebExtensions&lt;br /&gt;&lt;br /&gt;let urlList = [ "Microsoft.com", "http://www.microsoft.com/"&lt;br /&gt;                "MSDN", "http://msdn.microsoft.com/"&lt;br /&gt;                "Bing", "http://www.bing.com"&lt;br /&gt;              ]&lt;br /&gt;&lt;br /&gt;let fetchAsync(name, url:string) =&lt;br /&gt;    async { &lt;br /&gt;        try&lt;br /&gt;            let uri = new System.Uri(url)&lt;br /&gt;            let webClient = new WebClient()&lt;br /&gt;            let! html = webClient.AsyncDownloadString(uri)&lt;br /&gt;            printfn "Read %d characters for %s" html.Length name&lt;br /&gt;        with&lt;br /&gt;            | ex -&amp;gt; printfn "%s" (ex.Message);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;let runAll() =&lt;br /&gt;    urlList&lt;br /&gt;    |&amp;gt; Seq.map fetchAsync&lt;br /&gt;    |&amp;gt; Async.Parallel &lt;br /&gt;    |&amp;gt; Async.RunSynchronously&lt;br /&gt;    |&amp;gt; ignore&lt;br /&gt;&lt;br /&gt;runAll()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;This code will process each URL in urlList in parallel, and will wait until each sequence has been processed before continuing.&amp;nbsp; The wait state management and thread housekeeping are handled by F#, the programmer doesn’t have to worry about that at all.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;If you want to know more about F#, Rick is a great source.&amp;nbsp; In addition to his web site, you can find him on Twitter as &lt;a href="http://twitter.com/rickasaurus"&gt;@Rickasaurus&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-5678387279622400465?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=89dm2LnQJ60:iqCU5IU45Lw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=89dm2LnQJ60:iqCU5IU45Lw:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=89dm2LnQJ60:iqCU5IU45Lw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=89dm2LnQJ60:iqCU5IU45Lw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=89dm2LnQJ60:iqCU5IU45Lw:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=89dm2LnQJ60:iqCU5IU45Lw:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=89dm2LnQJ60:iqCU5IU45Lw:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/89dm2LnQJ60" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/5678387279622400465/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2010/09/all-about-f-and-you.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5678387279622400465?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5678387279622400465?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/89dm2LnQJ60/all-about-f-and-you.html" title="All about “F# and You”" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2010/09/all-about-f-and-you.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QASHw8eip7ImA9Wx5QEUU.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-2129607568192061992</id><published>2010-08-30T13:24:00.002-04:00</published><updated>2010-08-30T13:29:09.272-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-30T13:29:09.272-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Security" /><category scheme="http://www.blogger.com/atom/ns#" term="Internet Explorer" /><category scheme="http://www.blogger.com/atom/ns#" term="IE" /><category scheme="http://www.blogger.com/atom/ns#" term="Annoyances" /><title>Resolving "Navigation to the webpage was canceled" with Compiled HTML Help files (.chm)</title><content type="html">I'm working with a &lt;a href="http://en.wikipedia.org/wiki/Software_development_kit"&gt;SDK&lt;/a&gt; from a vendor that we have partnered with.&amp;nbsp; They provide the SDK as a download that I grabbed over FTP with Internet Explorer.&amp;nbsp; The SDK has a .NET assembly to use, some sample code, and documentation in a &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Compiled_HTML_Help" title="Microsoft Compiled HTML Help"&gt;.chm help file&lt;/a&gt;.&amp;nbsp; It's all neatly bundled in a .zip files, nothing too esoteric.&lt;br /&gt;
&lt;br /&gt;
Since Windows directly supports .zip files, I used Windows Explorer (Windows 7) to copy the files from the .zip file to new folder.&amp;nbsp; I then launched the help to examine some new functions the vendor had added for me.&amp;nbsp; The help file loaded up, but I couldn’t access anything.&amp;nbsp; It looked like this:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/_natoSxTaPFU/THvpYYZIJhI/AAAAAAAAAec/DMj3y0e8jd0/s1600-h/BlockedChm%5B4%5D.png"&gt;&lt;img alt="BlockedChm" border="0" height="248" src="http://lh6.ggpht.com/_natoSxTaPFU/THvpYtnYuYI/AAAAAAAAAeg/bKnuq0z8uSc/BlockedChm_thumb%5B2%5D.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="BlockedChm" width="404" /&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
At first I thought the file was corrupt, but then I realized what was going on.&amp;nbsp; With Windows Explorer, I selected the .chm file and right-clicked on it and selected “Properties”. &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/_natoSxTaPFU/THvpZJexxtI/AAAAAAAAAek/Nj8ilgufLmg/s1600-h/BlockedProperties%5B7%5D.png"&gt;&lt;img alt="BlockedProperties" border="0" height="519" src="http://lh5.ggpht.com/_natoSxTaPFU/THvpZUJsW3I/AAAAAAAAAeo/A-_WtLyXFGU/BlockedProperties_thumb%5B5%5D.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="BlockedProperties" width="381" /&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
If you look at the section that is highlighted in green, you’ll see the text ”This file came from another computer and might be blocked to help protect this computer.”.&amp;nbsp; With Windows XP SP2 and later operating systems, the file’s zone information is being stored with the file as stream.&amp;nbsp; A stream is a separate resource stored with the file, just not exactly in the file.&amp;nbsp; Separate resource streams is a feature of the NTFS file system.&amp;nbsp; Since the .zip file had been downloaded with Internet Explorer, the .chm file was treated as if it had been downloaded directly.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
This is actually a good thing.&amp;nbsp; By default Internet Explorer will not let you run content from your local disk without your expressed acceptance.&amp;nbsp; Since the Internet Explorer rendering engine is used to render the pages of the .chm file, it’s going to block pages that came from the Internet Zone. &lt;br /&gt;
&lt;br /&gt;
You have a couple of ways of fixing this.&amp;nbsp; One way would to disable the blocking of local content.&amp;nbsp; I don’t think that’s a safe way to operate so I’m not going to describe how to do that.&amp;nbsp; In the file Properties dialog, there is an “Unblock” button.&amp;nbsp; Click that button and you can remove the Zone block.&lt;br /&gt;
&lt;br /&gt;
Another way would be to use a command line tool and remove the Zone Identifier resource stream.&amp;nbsp; SInce NTFS file streams pretty much invisible to the casual eye, you can grab a free tool to trip that data out for you.&amp;nbsp; Mark Russinovich’s &lt;a href="http://technet.microsoft.com/en-us/sysinternals/default.aspx"&gt;Sysinternals&lt;/a&gt; collection of utilities includes a nice little gen called &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx"&gt;streams&lt;/a&gt;.&amp;nbsp; It’s a handy little utility.&amp;nbsp; It will list what streams are associated with a file or folder and you delete them.&amp;nbsp; Recursively and with wild cards too.&amp;nbsp; One of the thinks I like about Systinternal command line tools is that you can run them without a parameter to get a brief description of what it does and how to use it:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

usage: \utils\SysInternals\streams.exe [-s] [-d] &lt;file directory="" or=""&gt;
-s     Recurse subdirectories
-d     Delete streams&lt;/file&gt;&lt;/pre&gt;&lt;br /&gt;
When I ran streams on my .chm file, I saw the following:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;streams.exe SomeSdk.chm

Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

C:\dev\SomeSdk.chm:
:Zone.Identifier:$DATA       26&lt;/pre&gt;&lt;br /&gt;
You can also get a listing of the resource streams if you use the “/R” parameter with the DIR command. To see the contents of the stream, you can open it with notepad with syntax like this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;notepad MySdk.chm:Zone.Identifier&lt;/pre&gt;&lt;br /&gt;
That would display something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;[ZoneTransfer]
ZoneId=3&lt;/pre&gt;&lt;br /&gt;
Any value of &lt;a href="http://blogs.msdn.com/b/powershell/archive/2007/03/07/how-does-the-remotesigned-execution-policy-work.aspx"&gt;3 or higher&lt;/a&gt; would be considered a remote file.&amp;nbsp; So I ran it one more time, just with the –d parameter and got this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;streams.exe -d SomeSdk.chm

Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

C:\dev\SomeSdk.chm:
Deleted :Zone.Identifier:$DATA&lt;/pre&gt;&lt;br /&gt;
Once I did that, my help file was unblocked and ready to be used.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-2129607568192061992?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=RTmC9jQzhAM:Kwj_t_ofkPM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=RTmC9jQzhAM:Kwj_t_ofkPM:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=RTmC9jQzhAM:Kwj_t_ofkPM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=RTmC9jQzhAM:Kwj_t_ofkPM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=RTmC9jQzhAM:Kwj_t_ofkPM:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=RTmC9jQzhAM:Kwj_t_ofkPM:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=RTmC9jQzhAM:Kwj_t_ofkPM:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/RTmC9jQzhAM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/2129607568192061992/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2010/08/resolving-to-webpage-was-canceled-with.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/2129607568192061992?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/2129607568192061992?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/RTmC9jQzhAM/resolving-to-webpage-was-canceled-with.html" title="Resolving &amp;quot;Navigation to the webpage was canceled&amp;quot; with Compiled HTML Help files (.chm)" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_natoSxTaPFU/THvpYtnYuYI/AAAAAAAAAeg/bKnuq0z8uSc/s72-c/BlockedChm_thumb%5B2%5D.png?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2010/08/resolving-to-webpage-was-canceled-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08HSHc9cSp7ImA9Wx5QEUo.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-5640480703186961012</id><published>2010-08-30T09:43:00.001-04:00</published><updated>2010-08-30T09:43:59.969-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-30T09:43:59.969-04:00</app:edited><title>A Disaster Recovery Plan is useless if you don’t verify that it works.</title><content type="html">&lt;p&gt;I was just reading a Computerworld article about how &lt;a title="American Eagle Outfitters learns a painful service provider lesson - Computerworld" href="http://www.computerworld.com/s/article/9182159/American_Eagle_Outfitters_learns_a_painful_service_provider_lesson"&gt;American Eagles Outfitters just went through an eight day web outage&lt;/a&gt; (originally covered by &lt;a href="http://www.storefrontbacktalk.com/securityfraud/oracle-backup-failure-major-factor-in-american-eagle-8-day-crash/"&gt;StorefrontBacktalk&lt;/a&gt;).&amp;nbsp; It started when some hardware failed, then the backup hardware failed, then the software designed to restore the data to the replacement hardware failed, and finally their disaster recovery site wasn’t ready.&amp;nbsp; They were doing the right things: backups, backups of backups, and an alternate site in case their main site is dead in the water.&amp;nbsp; It just didn’t work when it was needed.&amp;nbsp; They were &lt;a href="http://storefrontbacktalk.com/e-commerce/down-for-8-days-american-eagles-site-disaster"&gt;flat out down for 4 days, and then only had minimal functionality for another four days&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Being down or not fully functional for 8 days is a huge amount of time if you are an online retailer, but it would be catastrophic for just about any company to their network down or seriously hobbled for over a week.&amp;nbsp; How effective would your company be today if you had were isolated computers, without any Internet access.&amp;nbsp; On the plus side, that means no Farmville, which would actually be a productivity gain.&amp;nbsp; But life without email, that’s another story.&amp;nbsp; For most companies, email is a basic tool of business and you can’t get by without it.&lt;/p&gt; &lt;p&gt;You need to have a disaster recovery (DR) plan.&amp;nbsp; You have to plan on the basis that a meteor has taken out your building one night, and all your business tools are gone.&amp;nbsp; You need to backup the key assets of your network.&amp;nbsp; If it’s on a computer and you need it, then it should be backed up.&lt;/p&gt; &lt;p&gt;Those backups need to be off site.&amp;nbsp; If your office complex is under 8 feet of water, those backup tapes are going to under 8 feet of water too.&amp;nbsp; Your IT staff needs to be taking those backups offsite.&amp;nbsp; It could as simple as taking the backups to a safe deposit box, or a live backup of your system to alternate location.&lt;/p&gt; &lt;p&gt;You also need a disaster recovery site.&amp;nbsp; You need backup network equipment that you can bring online with your current data.&amp;nbsp; It could be a dedicated hosting facility or a rack of servers at another location if your company has more than one office.&amp;nbsp; The important thing is that it’s periodically tested.&amp;nbsp; A DR site is no good if it doesn’t work.&amp;nbsp; That is what was the biggest failure for American Eagles Outfitters, their final point of protection wasn’t ready and had never been tested.&lt;/p&gt; &lt;p&gt;You also need to plan for the human resources.&amp;nbsp; If a disaster strikes your office, you need to have a plan to contact all of the employees and arrange for alternate office facilities.&amp;nbsp; if your DR site is up and running, it wont do you any good if none of your employees can access it.&lt;/p&gt; &lt;p&gt;Being prepared with a DR plan is not a one time task or expense.&amp;nbsp; IT departments need to have the support and resources to keep the plan updated.&amp;nbsp; And they need to be able to test it on a period basis.&amp;nbsp; A plan that works today with X amount of data, could be utterly useless next year when you have Y amount of data.&amp;nbsp; You need to be able validate that your backups worked and that they can be restored in a reasonable amount of time.&lt;/p&gt; &lt;p&gt;That’s the hard sell, with companies looking to keep their costs down, it’s hard to keep items like this in the IT budget.&amp;nbsp; I look at what happened to American Eagles Outfitters as a cautionary tale of what happens if you skimp on an IT budget.&amp;nbsp; &lt;/p&gt; &lt;p&gt;The money quote for &lt;a href="http://www.storefrontbacktalk.com/securityfraud/oracle-backup-failure-major-factor-in-american-eagle-8-day-crash/"&gt;why the DR site was not fully functional&lt;/a&gt;:&lt;br&gt;&lt;br&gt; &lt;blockquote&gt;“I know they were supposed to have completed it with Oracle Data Guard, but apparently it must have fallen off the priority list in the past few months and it was not there when needed.”&lt;br&gt; &lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Penny wise, pound foolish.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-5640480703186961012?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=fyjpUwymsw4:zNWyj18944U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=fyjpUwymsw4:zNWyj18944U:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=fyjpUwymsw4:zNWyj18944U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=fyjpUwymsw4:zNWyj18944U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=fyjpUwymsw4:zNWyj18944U:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=fyjpUwymsw4:zNWyj18944U:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=fyjpUwymsw4:zNWyj18944U:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/fyjpUwymsw4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/5640480703186961012/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2010/08/disaster-recovery-plan-is-useless-if.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5640480703186961012?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5640480703186961012?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/fyjpUwymsw4/disaster-recovery-plan-is-useless-if.html" title="A Disaster Recovery Plan is useless if you don’t verify that it works." /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2010/08/disaster-recovery-plan-is-useless-if.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUDSHw6fCp7ImA9Wx5RGUk.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-434950899410235972</id><published>2010-08-27T16:51:00.001-04:00</published><updated>2010-08-27T16:51:19.214-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-27T16:51:19.214-04:00</app:edited><title>DynDNS is making making changes to their free Dynamic DNS accounts</title><content type="html">&lt;p&gt;I use the free version of the dynamic DNS names provided by &lt;a title="DynDNS.com - Free Domain Name, Managed DNS, Email Services" href="http://www.dyndns.com/"&gt;DynDNS&lt;/a&gt;.&amp;nbsp; It gives me an easy way to connect to my home VPN.&amp;nbsp; They provide a domain name, usually for a home network.&amp;nbsp; Since most ISP’s will change the IP addresses handed out to home users, you need to periodically update the IP address associated with your domain name.&lt;/p&gt; &lt;p&gt;Many home routers have the ability to automatically update your DynDNS account when it detects an IP change.&amp;nbsp; I have a custom firmware called &lt;a href="http://www.dd-wrt.com/site/index"&gt;DD-WRT&lt;/a&gt; on my Linksys router, DD-WRT has the ability to update DynDNS (and other providers).&amp;nbsp; if your router doesn’t have that capability, you can always find a small app or script to run on a PC and update the DynDNS account automatically for you.&lt;/p&gt; &lt;p&gt;It looks like DynDNS made some changes to their Dynamic DNS accounts.&amp;nbsp; Previously, you could have up to five free accounts, from a long list of 88 domain names.&amp;nbsp; From now on for new accounts, you get to have two free names, from a list of 18 domains.&amp;nbsp; If you had more than two names on the free account, you get to keep them for as long as you keep them active.&amp;nbsp; if you fail to keep them updated (every 30 days), they will be dropped until you reach the free number. If you have the paid version, DynDNS Pro, then you are not affected by the change.&amp;nbsp; &lt;/p&gt; &lt;p&gt;It’s a small price to pay for the free service.&amp;nbsp; I’ve been using it for over 5 years and have never had a problem with it. Over the years, I had managed to collect 6 domain names.&amp;nbsp; Most of them were used for testing, I had completely forgotten that I had them.&amp;nbsp; I just pruned the list down to two, but I’m really only using one.&amp;nbsp; With the VPN, I can securely log into my home network while I’m on the road and have full access to my network.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-434950899410235972?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=r3979tgengU:m2P9J3pm2Ek:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=r3979tgengU:m2P9J3pm2Ek:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=r3979tgengU:m2P9J3pm2Ek:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=r3979tgengU:m2P9J3pm2Ek:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=r3979tgengU:m2P9J3pm2Ek:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=r3979tgengU:m2P9J3pm2Ek:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=r3979tgengU:m2P9J3pm2Ek:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/r3979tgengU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/434950899410235972/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2010/08/dyndns-is-making-making-changes-to.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/434950899410235972?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/434950899410235972?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/r3979tgengU/dyndns-is-making-making-changes-to.html" title="DynDNS is making making changes to their free Dynamic DNS accounts" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2010/08/dyndns-is-making-making-changes-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUACR3w7fSp7ImA9Wx5RGU8.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-2657878124720393520</id><published>2010-08-27T12:49:00.001-04:00</published><updated>2010-08-27T12:49:26.205-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-27T12:49:26.205-04:00</app:edited><title>A change at TVUG</title><content type="html">&lt;p&gt;For the last couple of years, Griff Townsend has been the President of the &lt;a href="http://www.tvug.net/"&gt;Tech Valley .NET Users Group (TVUG)&lt;/a&gt;, here in Albany NY.&amp;nbsp; Griff has put in many hours with &lt;a href="http://www.tvug.net/blogs/tvug_news_and_events/archive/2010/05/07/may-meeting-5-15-2010-launch-and-learn.aspx"&gt;TVUG activities&lt;/a&gt; and has &lt;a href="http://www.tvug.net/blogs/tvug_news_and_events/archive/2008/09/03/september-2008-meeting.aspx"&gt;done&lt;/a&gt; &lt;a href="http://www.tvug.net/blogs/tvug_news_and_events/archive/2009/11/24/building-business-objects-with-ef-and-visual-studio.aspx"&gt;many&lt;/a&gt; &lt;a href="http://www.tvug.net/blogs/tvug_news_and_events/archive/2008/12/08/december-meeting.aspx"&gt;presentations&lt;/a&gt; for us.&amp;nbsp; Unfortunately for &lt;a href="http://www.techvalley.org/"&gt;us&lt;/a&gt;, Griff is moving to bigger and better things in another state.&amp;nbsp; Griff will be missed here and we wish him well as he continues his career in a warmer climate.&lt;/p&gt; &lt;p&gt;As Vice-President of TVUG, I will be stepping up to the position of President and continue in Griff’s footsteps.&amp;nbsp; Griff will be moving before the next TVUG meeting in September, I’ll be at the next one.&amp;nbsp; We will be having elections of the executive board officer positions at the end of year, during the December meeting.&amp;nbsp; Our bylaws are posted &lt;a title="TVUG Constitution - Tech Valley .NET Users Group" href="http://www.tvug.net/blogs/tvug_news_and_events/archive/2009/04/16/tvug-constitution.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_natoSxTaPFU/THfsjrBjYvI/AAAAAAAAAeU/IBZJLScckeY/s1600-h/Griff%5B4%5D.jpg"&gt;&lt;img title="Griff" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="84" alt="Griff" src="http://lh6.ggpht.com/_natoSxTaPFU/THfsk09v_fI/AAAAAAAAAeY/upA9rDEBqVk/Griff_thumb%5B2%5D.jpg?imgmax=800" width="64" align="left" border="0"&gt;&lt;/a&gt;Griff is an experienced architect and teacher with a few Microsoft certifications under his belt. While he’s leaving this area code, you can still keep up with him.&amp;nbsp; Griff has a blog, “Bloggin from my Noggin”, at &lt;a href="http://grifftownsend.blogspot.com/"&gt;&lt;font color="#0000ff"&gt;http://grifftownsend.blogspot.com/&lt;/font&gt;&lt;/a&gt;.&amp;nbsp; You can also follow him on Twitter at &lt;a href="http://www.twitter.com/vidiotz"&gt;@vidiotz&lt;/a&gt;.&amp;nbsp; And Griff’s LinkedIn profile is &lt;a href="http://www.linkedin.com/in/griffithtownsend"&gt;Griffith Townsend&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-2657878124720393520?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=RFV9yOqLSuE:l_Cu0oC4uF4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=RFV9yOqLSuE:l_Cu0oC4uF4:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=RFV9yOqLSuE:l_Cu0oC4uF4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=RFV9yOqLSuE:l_Cu0oC4uF4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=RFV9yOqLSuE:l_Cu0oC4uF4:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=RFV9yOqLSuE:l_Cu0oC4uF4:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=RFV9yOqLSuE:l_Cu0oC4uF4:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/RFV9yOqLSuE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/2657878124720393520/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2010/08/change-at-tvug.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/2657878124720393520?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/2657878124720393520?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/RFV9yOqLSuE/change-at-tvug.html" title="A change at TVUG" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_natoSxTaPFU/THfsk09v_fI/AAAAAAAAAeY/upA9rDEBqVk/s72-c/Griff_thumb%5B2%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2010/08/change-at-tvug.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcHQ3k7eCp7ImA9Wx5RFUU.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-7378974264841479500</id><published>2010-08-23T14:10:00.000-04:00</published><updated>2010-08-23T14:10:32.700-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-23T14:10:32.700-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Security" /><category scheme="http://www.blogger.com/atom/ns#" term="WinPatrol" /><category scheme="http://www.blogger.com/atom/ns#" term="Annoyances" /><title>You should have WinPatrol on your system</title><content type="html">You really should have &lt;a href="http://www.winpatrol.com/"&gt;WinPatrol&lt;/a&gt; installed on your system.&amp;nbsp; It’s a service type of application that monitors changes to your system.&amp;nbsp; For example, if an app tries to register a web browser toolbar, WinPatrol will warn you and give you a chance to block it.&amp;nbsp; There’s a free version and a paid version.&amp;nbsp; The free version is very good, but you’ll want the paid version.&amp;nbsp; It’s &lt;a href="http://winpatrol.stores.yahoo.net/winplusmemre.html"&gt;very affordable&lt;/a&gt; and will keep your machine from being bogged down with &lt;a href="http://www.urbandictionary.com/define.php?term=crapware"&gt;crapware&lt;/a&gt; and suspicious processes.&amp;nbsp; WinPatrol is written and supported by &lt;a href="http://billpstudios.blogspot.com/"&gt;Bill Pytlovany&lt;/a&gt;, a well known Windows security professional.&lt;br /&gt;
&lt;br /&gt;
I just installed the &lt;a href="http://www.myheritage.com/"&gt;MyHeritage&lt;/a&gt; &lt;a href="http://www.myheritage.com/family-tree-builder"&gt;Family Tree Builder&lt;/a&gt; desktop application on my main development box.&amp;nbsp; I’ve been using FTB for a few years on our shared family PC.&amp;nbsp; It’s a nice genealogy application that I have used to to publish my mother’s family tree online.&amp;nbsp; The technology is very cool and I will get back to describing it in more depth.&lt;br /&gt;
&lt;br /&gt;
When I installed the FTB app, the installer asked if I wanted to change the default search provider to one provided by MyHeritage and to install a MyHeritage toolbar into Internet Explorer.&amp;nbsp; I declined both options.&amp;nbsp; I have IE set to use &lt;a href="http://www.bing.com/"&gt;Bing&lt;/a&gt; as the default search provider and I didn’t want to change it.&amp;nbsp; I also did not want to install any toolbars into IE.&lt;br /&gt;
&lt;br /&gt;
I avoid IE toolbars like they are &lt;a href="http://www.facebook.com/note.php?note_id=292056523469"&gt;the plague&lt;/a&gt;.&amp;nbsp; They eat up screen real estate, slow down the browsing experience, are the &lt;a href="http://arstechnica.com/microsoft/news/2010/04/add-ons-responsible-for-70-percent-of-ie8-crashesadd-ons-responsible-for-70-percent-of-ie8-crashes.ars" title="ars technica: Add-ons responsible for 70 percent of IE8 crashes"&gt;root cause of 70% of the browser crashes&lt;/a&gt;, and cause cancer in lab rats.&amp;nbsp; So I declined that option and installed FTB.&amp;nbsp; And the installer ignored my choices and tried to change the search provider and install their toolbar anyways. I don’t know if that was sloppy coding and testing on their part or it was intentional.&amp;nbsp; Either way, that wasn’t what I wanted.&lt;br /&gt;
&lt;br /&gt;
How did I know this?&amp;nbsp; Because WinPatrol was doing it’s job and warned me about each change.&amp;nbsp; I saw a dialog that looked remarkably like this:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh4.ggpht.com/_natoSxTaPFU/THK4lYVkJNI/AAAAAAAAAeM/J0NPo-PAmQA/s1600-h/WinPatrol1%5B3%5D.png"&gt;&lt;img alt="WinPatrol1" border="0" height="305" src="http://lh4.ggpht.com/_natoSxTaPFU/THK4lpbDBJI/AAAAAAAAAeQ/GNHFAU_3scY/WinPatrol1_thumb%5B1%5D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="WinPatrol1" width="644" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Scotty (the mascot and public face of WinPatrol) caught the attempt of the installer to register a new toolbar.&amp;nbsp; The “New Program Alert” dialog will display enough information about the pending change to your system that you can usually make a quick and informed decision on whether or not to block it.&amp;nbsp; If you see something you don’t recognize, clicking the “PLUS &lt;u&gt;I&lt;/u&gt;nfo…” dialog will take you to a WinPatrol web page that will display more information about the object being installed.&lt;br /&gt;
&lt;br /&gt;
Without WinPatrol, I would not have caught either change until the next time I started Internet Explorer.&amp;nbsp; With the MyHeritage stuff, it wasn’t malicious code, but it was code that I didn’t want to run.&amp;nbsp; And thanks to WinPatrol, it wasn’t going to run. I was able to prevent changes being made to IE, and that’s worth the price of admission.&lt;br /&gt;
&lt;br /&gt;
Monitoring changes to IE is not the only thing in WinPatrol’s arsenal.&amp;nbsp; It gives you an easy way to see what apps are set to start when the computer boots up and the means to block them.&amp;nbsp; If you computer seems to be running slower and slower each day, the odds are you picked up some process that run in the background.&amp;nbsp; Most of them are pretty harmless, but when you start adding them up, they will show down your PC.&amp;nbsp; WinPatrol has an online database and can identify most of them and tell you if you should keep them running or block them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-7378974264841479500?l=anotherlab.rajapet.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=D2cnnweKCnw:yT9jl4cBq0Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=D2cnnweKCnw:yT9jl4cBq0Y:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=D2cnnweKCnw:yT9jl4cBq0Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=D2cnnweKCnw:yT9jl4cBq0Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=D2cnnweKCnw:yT9jl4cBq0Y:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=D2cnnweKCnw:yT9jl4cBq0Y:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=D2cnnweKCnw:yT9jl4cBq0Y:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/D2cnnweKCnw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/7378974264841479500/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2010/08/you-should-have-winpatrol-on-your.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/7378974264841479500?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/7378974264841479500?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/D2cnnweKCnw/you-should-have-winpatrol-on-your.html" title="You should have WinPatrol on your system" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp1.blogger.com/_natoSxTaPFU/R847xr53Q1I/AAAAAAAAADk/b2Yc20nEwOA/S220/ChrisBeach.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_natoSxTaPFU/THK4lpbDBJI/AAAAAAAAAeQ/GNHFAU_3scY/s72-c/WinPatrol1_thumb%5B1%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2010/08/you-should-have-winpatrol-on-your.html</feedburner:origLink></entry></feed>

