<feed xmlns="http://www.w3.org/2005/Atom"><id>http://duncanmackenzie.net/blog/tags/Coding4Fun/atom/default.aspx</id><title>Content tagged with [coding4fun] on 

DuncanMackenzie.net</title><description> notSet</description><link rel="self" href="http://duncanmackenzie.net/blog/tags/Coding4Fun/atom/default.aspx" /><link rel="alternate" href="/blog/tags/coding4fun/default.aspx" /><updated>Thu, 28 Aug 2008 13:18:57 GMT</updated><generator>Oxite</generator><subtitle> notSet</subtitle><entry><title>New Xbox Friends Gadget released and a Silverlight Gamercard Generator</title><content>&lt;p&gt;Adam Kinney, Silverlight dude and my colleague at work, &lt;a href="http://adamkinney.com/blog/322/default.aspx" target="_blank"&gt;has released an updated version of his Xbox Friends Watch gadget and a new standalone gamercard gadget for your website that uses Silverlight 2.0&lt;/a&gt;.&lt;/p&gt;   &lt;object data="data:application/x-silverlight," type="application/x-silverlight-2-b1" width="204" height="160"&gt; &lt;param name="source" value="http://adamkinney.com/xbf/XboxGamerCard.xap" /&gt; &lt;param name="background" value="#00000000" /&gt; &lt;param name="Windowless" value="True" /&gt; &lt;param name="enableHtmlAccess" value="True" /&gt; &lt;param name="initParams" value="gamertag=festive%20turkey" /&gt; &lt;a href="http://go.microsoft.com/fwlink/?LinkID=108182" style="text-decoration: none;"&gt; &lt;img src="http://adamkinney.com/xbf/gci.jpg" alt="Get Microsoft Silverlight" style="border-style: none" /&gt; &lt;/a&gt; &lt;/object&gt;</content><id>http://duncanmackenzie.net/blog/new-xbox-friends-gadget-released-and-a-silverlight-gamercard-generator/default.aspx</id><link href="http://duncanmackenzie.net/blog/new-xbox-friends-gadget-released-and-a-silverlight-gamercard-generator/default.aspx" /><updated>Thu, 03 Apr 2008 18:05:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Coding4Fun" /><category term="Gadgets" /><category term="Gaming" /><category term="Silverlight" /><category term="Vista" /><category term="Web Development" /><category term="Xbox 360" /></entry><entry><title>The code for my blog site is now available on codeplex.com</title><content>&lt;p&gt;For anyone who is interested in using the code behind this site for their own blog, or who just finds reading code to be a fun pastime, you can go to &lt;a title="http://www.codeplex.com/oxite" href="http://www.codeplex.com/oxite"&gt;http://www.codeplex.com/oxite&lt;/a&gt; to check it out. Of course, there are other blog engines up there, including &lt;a href="http://dotnetblogengine.net/Default.aspx" target="_blank"&gt;blog engine .NET&lt;/a&gt; (which appears to be very highly supported and recommended by many folks), if you are in the market for some free blogging code.&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/the-code-for-my-blog-site-is-now-available-on-codeplexcom/default.aspx</id><link href="http://duncanmackenzie.net/blog/the-code-for-my-blog-site-is-now-available-on-codeplexcom/default.aspx" /><updated>Wed, 24 Oct 2007 05:56:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term=".NET" /><category term="Blogging" /><category term="Coding4Fun" /><category term="EvNetDev" /><category term="Visual C#" /><category term="Web Development" /></entry><entry><title>Put up a REST API for Xbox Gamertag Data</title><content>&lt;p&gt;&lt;a href="http://www.duncanmackenzie.net/blog/connect-your-xbox-360-gamertag-to-twitter/" target="_blank"&gt;My twitter app&lt;/a&gt; uses a web service hosted on my site to get all the necessary Xbox Live info.... way more than the twitter app actually uses. This is a SOAP API, located here:&lt;/p&gt; &lt;p&gt;&lt;a href="http://duncanmackenzie.net/services/XboxInfo.asmx"&gt;http://duncanmackenzie.net/services/XboxInfo.asmx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;I know that some people prefer a more RESTful API though, so I also have another 'page' that you can call with a straight GET request and just pass the gamertag in as a query string parameter: &lt;p&gt;&lt;a href="http://duncanmackenzie.net/services/GetXboxInfo.aspx?GamerTag=Festive+Turkey"&gt;http://duncanmackenzie.net/services/GetXboxInfo.aspx?GamerTag=Festive+Turkey&lt;/a&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;Enjoy! </content><id>http://duncanmackenzie.net/blog/put-up-a-rest-api-for-xbox-gamertag-data/default.aspx</id><link href="http://duncanmackenzie.net/blog/put-up-a-rest-api-for-xbox-gamertag-data/default.aspx" /><updated>Sun, 27 May 2007 07:37:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term=".NET" /><category term="Coding4Fun" /><category term="Gaming" /><category term="Twitter" /><category term="XBox" /><category term="Xbox 360" /><category term="XML" /></entry><entry><title>Connect your Xbox 360 Gamertag to Twitter</title><content>&lt;p&gt;&lt;strong&gt;UPDATE: I've &lt;a href="http://www.duncanmackenzie.net/blog/using-the-xbox-to-twitter-app-please-update-your-client/"&gt;updated this application&lt;/a&gt; since the original version, addressing most of the 'known issues' listed below&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;hey folks, the first version of my xbox to twitter app is done (at least done enough to share!) ... &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=0856eacb-4362-4b0d-8edd-aab15c5e04f5&amp;amp;displaylang=en" target="_blank"&gt;Install the .NET Framework 2.0 (if you don't have it)&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.duncanmackenzie.net/XboxToTwitter/Install/XboxTwitterInstaller.msi" target="_blank"&gt;Install the app&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Run it (from the "Duncan Mackenzie" folder in your Start Menu)&lt;/li&gt; &lt;li&gt;Right click the little 'twitter' icon on your notification area, pick Settings ... enter in your&lt;/li&gt; &lt;ul&gt; &lt;li&gt;Twitter Email Address&lt;/li&gt; &lt;li&gt;Twitter Screen Name&lt;/li&gt; &lt;li&gt;Twitter Password&lt;/li&gt; &lt;li&gt;Gamertag&lt;/li&gt; &lt;li&gt;check "Updates Enabled"&lt;/li&gt; &lt;li&gt;Click OK to save these settings... &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Now fire up your Xbox 360 and &lt;a href="http://twitter.com/Duncanma/statuses/60427042" target="_blank"&gt;updates&lt;/a&gt; will be sent to Twitter every few minutes (if you are online and your status has changed)&lt;/li&gt; &lt;li&gt;Come back here to post any feedback/problems!&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Known Issues:&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;'status has changed' is a bit too sensitive now... if you are playing Crackdown and you go from running to driving then your status on Xbox Live actually changes (from "Running around" to "Driving around") and the app will post an update ... I'm planning to add an option to 'only post when the game changes, not the status'&lt;/li&gt; &lt;li&gt;Time delay, Xbox.com's data and my app are all using various forms of caching... so if you put in a game it may be 10-15 minutes before the app notices and posts an update ... also if you put one in, then stop playing a minute later... you may never see an update&lt;/li&gt; &lt;li&gt;The app checks status every 5 minutes, I can make that configurable in the future (but probably limited to no more often than 5 minutes... I'll let you make it less often though)&lt;/li&gt; &lt;li&gt;Format of the update: Currently it is "playing &amp;lt;game title&amp;gt; (&amp;lt;additional info&amp;gt;)" ... and if you are into config files and user specific isolated storage you can change that... I'll make it part of the settings in a future release.&lt;/li&gt; &lt;li&gt;You have to leave it running on a logged in machine to work... yep... I have a web based version but I thought people might be worried about giving me their userid/password for twitter so for now I thought I'd start with this local version.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Security concerns? Yes, you have to enter in your Twitter credentials. Those are stored in plain text on the hard drive... but it is on your hard drive only ... I never send your Twitter Credentials up to my site, although I do send them as credentials to Twitter when I call the Twitter APIs. Worried I might be sending to my site? Run a HTTP Trace if you'd like (&lt;a href="http://www.fiddlertool.com/" target="_blank"&gt;Fiddler&lt;/a&gt;), you'll see calls to the Twitter API and calls to a web service on my site to get your gamertag info... nothing else.&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/connect-your-xbox-360-gamertag-to-twitter/default.aspx</id><link href="http://duncanmackenzie.net/blog/connect-your-xbox-360-gamertag-to-twitter/default.aspx" /><updated>Fri, 11 May 2007 17:58:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Blogging" /><category term="Coding4Fun" /><category term="Gaming" /><category term="Twitter" /><category term="XBox" /><category term="Xbox 360" /></entry><entry><title>Code Monkey by Jonathon Coulton</title><content>&lt;p&gt;Ok, if you are a programmer... or even if you just can relate enough that you think Office Space is one of the best movies in the world (doesn't everyone?) then I need you to do this:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Go to &lt;a href="http://www.jonathancoulton.com/songs" target="_blank"&gt;http://www.jonathancoulton.com/songs&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Scroll down to "Thing a Week III"&lt;/li&gt; &lt;li&gt;Click on the play button next to Code Monkey&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Enjoy!&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.jonathancoulton.com/" target="_blank"&gt;Jonathan&lt;/a&gt; works on the &lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=154114341" target="_blank"&gt;Popular Science podcast&lt;/a&gt;, does music for John Hodgman's &lt;a href="http://www.littlegraybooks.com/" target="_blank"&gt;Little Gray Books&lt;/a&gt;, and used to be a programmer (although I don't think you ever stop being a programmer, you just decide to do something else with most of your time)&lt;/p&gt; &lt;p&gt;Oh, and since I went there today... here is another selection from Jonathan's site: &lt;a href="http://www.jonathancoulton.com/mp3/Ikea.mp3" target="_blank"&gt;Ikea.mp3&lt;/a&gt;&lt;/p&gt; &lt;p&gt;And thanks to my great-grand-boss &lt;a href="http://blogs.msdn.com/scellini/" target="_blank"&gt;Steve&lt;/a&gt;&amp;nbsp;(link is to his blog... last entry back in September of 2005...&amp;nbsp;just so&amp;nbsp;you&amp;nbsp;know&amp;nbsp;&lt;strong&gt;before&lt;/strong&gt; you&amp;nbsp;click on it and get all disappointed)&amp;nbsp;for sending me this song tonight!&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/code-monkey-by-jonathon-coulton/default.aspx</id><link href="http://duncanmackenzie.net/blog/code-monkey-by-jonathon-coulton/default.aspx" /><updated>Sun, 22 Oct 2006 07:26:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Coding4Fun" /><category term="Digital Music and Media" /></entry><entry><title>WPF/Avalon seems so easy, it might be time for me to try it out :)</title><content>&lt;p&gt;I was browsing on &lt;a href="http://www.xamlog.com"&gt;www.xamlog.com&lt;/a&gt; and I found this tutorial on "&lt;a href="http://www.xamlog.com/2006/07/30/reflection-using-visual-brush-and-opacity-mask/" target="_blank"&gt;Reflection using Visual Brush and Opacity Mask&lt;/a&gt;", which shows you how to produce this effect:&lt;/p&gt; &lt;p&gt;&lt;img height="208" src="http://www.xamlog.com/wp-content/uploads/2006/07/reflection_08.jpg" width="240" /&gt; &lt;/p&gt; &lt;p&gt;with very little code/markup.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hmm... now that I finally have Vista up and running, it might be worth giving it a try.&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/WPF-Avalon-seems-so-easy-it-might-be-time-for-me-to-try-it-out/default.aspx</id><link href="http://duncanmackenzie.net/blog/WPF-Avalon-seems-so-easy-it-might-be-time-for-me-to-try-it-out/default.aspx" /><updated>Wed, 06 Sep 2006 20:13:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term=".NET" /><category term="Coding4Fun" /><category term="XML" /></entry><entry><title>Windows Live Writer</title><content>&lt;p&gt;on10.net has &lt;a href="http://on10.net/Blogs/TheShow/4891/"&gt;a good interview up about the new blogging tool from the Windows Live team&lt;/a&gt;. What's cool about this app? For a developer, there is tons to be excited about, including a very easy to use &lt;a href="http://download.microsoft.com/download/f/9/a/f9a19f2d-cec4-4a25-9b0b-eb9655ea7561/Windows%20Live%20Writer%20SDK%20(Beta).msi" target="_blank"&gt;SDK&lt;/a&gt; (wrote some plug-in code last night, super easy) and it ships with&amp;nbsp;a bunch of .NET assemblies that I'm about to go spelunking through...&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/Windows-Live-Writer/default.aspx</id><link href="http://duncanmackenzie.net/blog/Windows-Live-Writer/default.aspx" /><updated>Wed, 16 Aug 2006 15:30:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="10" /><category term="Blogging" /><category term="Coding4Fun" /><category term="Syndication" /></entry><entry><title>Learn a bit about how on10.net was made</title><content>&lt;p&gt;
				&lt;a href="http://channel9.msdn.com/showpost.aspx?postid=171265" target="_blank"&gt;Interview with the dev team&lt;/a&gt; (including me) is up on Channel 9&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/Learn-a-bit-about-how-on10net-was-made/default.aspx</id><link href="http://duncanmackenzie.net/blog/Learn-a-bit-about-how-on10net-was-made/default.aspx" /><updated>Mon, 13 Mar 2006 17:11:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term=".NET" /><category term="10" /><category term="Blogging" /><category term="Coding4Fun" /><category term="Personal Musings" /><category term="Syndication" /><category term="Web Development" /><category term="XML" /></entry><entry><title>We are live...</title><content>&lt;p&gt;the site is live that is... well, so are we... anyway... the real code for &lt;a href="http://on10.net" target="_blank"&gt;http://on10.net&lt;/a&gt; is up and running! We know about a few issues, but in general it is ready to rock, so feel free to shoot on over and grab your userid before all the good ones are gone :)&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/We-are-live/default.aspx</id><link href="http://duncanmackenzie.net/blog/We-are-live/default.aspx" /><updated>Sun, 12 Mar 2006 18:05:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="10" /><category term="Coding4Fun" /><category term="Personal Musings" /><category term="Web Development" /></entry><entry><title>People who "View Source" are my kind of people...</title><content>&lt;p&gt;It didn't take too long, people found &lt;a href="http://www.adamkinney.com" target="_blank"&gt;Adam's&lt;/a&gt; little puzzle (&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=169842" target="_blank"&gt;Channel 9&lt;/a&gt;)&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/People-who-View-Source-are-my-kind-of-people/default.aspx</id><link href="http://duncanmackenzie.net/blog/People-who-View-Source-are-my-kind-of-people/default.aspx" /><updated>Thu, 09 Mar 2006 21:11:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="10" /><category term="Coding4Fun" /></entry><entry><title>A couple more team members post details about our new project...</title><content>&lt;p&gt;Adam Kinney, another member of our three-person dev team, &lt;a href="http://www.adamkinney.com/note.aspx?id=112" target="_blank"&gt;posts our favorite comments&lt;/a&gt; about &lt;a href="http://on10.net" target="_blank"&gt;the preview site &lt;/a&gt;so far. Scoble, who really is on the same team as me... despite the fact that I've hardly ever seen him :)... also &lt;a href="http://scobleizer.wordpress.com/2006/03/07/what-my-coworkers-have-been-doing/#respond" target="_blank"&gt;discusses what we have been up to&lt;/a&gt;.&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/A-couple-more-team-members-post-details-about-our-new-project/default.aspx</id><link href="http://duncanmackenzie.net/blog/A-couple-more-team-members-post-details-about-our-new-project/default.aspx" /><updated>Wed, 08 Mar 2006 06:03:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="10" /><category term="Coding4Fun" /><category term="Personal Musings" /></entry><entry><title>My boss blogs a few hints about our upcoming release...</title><content>&lt;p&gt;We've put up &lt;a href="http://www.on10.net" target="_blank"&gt;some fun short videos&lt;/a&gt;, but the real site is coming next week... which will be nice, I'll get to start talking about work on my blog again :)&lt;/p&gt; &lt;p&gt;More in Jeff's post, &lt;a href="http://www.jeffsandquist.com/MakingAListCheckingIt10Times.aspx" target="_blank"&gt;here&lt;/a&gt;...&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/My-boss-blogs-a-few-hints-about-our-upcoming-release/default.aspx</id><link href="http://duncanmackenzie.net/blog/My-boss-blogs-a-few-hints-about-our-upcoming-release/default.aspx" /><updated>Tue, 07 Mar 2006 19:36:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="10" /><category term="Coding4Fun" /><category term="Personal Musings" /></entry><entry><title>Wow, BillG interviewed by Channel 9</title><content>&lt;p&gt;Wow, I'm new to the team and I guess I've missed some of the C9 content over the past few years.... and, as the video description says &amp;quot;the second time we've had Bill on C9&amp;quot; so maybe this isn't as unusual as I think.... but this still really surprised me. I didn't expect to see an inteview with &lt;b&gt;the man himself&lt;/b&gt; on there. Bill Gates sat down with Charles Torre and chatted about Mix06, Office and more... &lt;a href="http://channel9.msdn.com/showpost.aspx?postid=163166" target="_blank"&gt;check it out here&lt;/a&gt;.&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/Wow-BillG-interviewed-by-Channel-9/default.aspx</id><link href="http://duncanmackenzie.net/blog/Wow-BillG-interviewed-by-Channel-9/default.aspx" /><updated>Wed, 15 Feb 2006 15:17:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Coding4Fun" /><category term="Personal Musings" /></entry><entry><title>IE 7 Beta 2 Preview available for download</title><content>&lt;p&gt;Go to &lt;a href="http://www.microsoft.com/windows/ie/" target="_blank"&gt;http://www.microsoft.com/windows/ie/&lt;/a&gt; to download it now, and check out &lt;a href="http://channel9.msdn.com/showpost.aspx?postid=159460" target="_blank"&gt;the new IE7 video up on Channel 9!&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/IE-7-Beta-2-Preview-available-for-download/default.aspx</id><link href="http://duncanmackenzie.net/blog/IE-7-Beta-2-Preview-available-for-download/default.aspx" /><updated>Tue, 31 Jan 2006 16:26:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Coding4Fun" /></entry><entry><title>Term Extraction</title><content>&lt;p&gt;I was playing around with Yahoo's term extraction service, as a possible path to tagging (this is the same service used behind &lt;a href="http://www.tagcloud.com"&gt;TagCloud.com&lt;/a&gt;, for example), and I created this C# class libary with a sample app written in Windows Forms.&lt;/p&gt; &lt;p&gt;&lt;img alt="Term Extraction Sample" src="http://www.duncanmackenzie.net/images/termextraction.png" border="0" /&gt;&lt;/p&gt; &lt;p&gt;Code is available for download here: &lt;a title="link to sample download" href="http://www.duncanmackenzie.net/samples/TermExtraction.zip"&gt;Term Extraction (ZIP)&lt;/a&gt;.&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/Term-Extraction/default.aspx</id><link href="http://duncanmackenzie.net/blog/Term-Extraction/default.aspx" /><updated>Tue, 10 Jan 2006 13:51:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Blogging" /><category term="Coding4Fun" /><category term="Syndication" /><category term="Visual C#" /></entry><entry><title>Interested in building your own Gadgets for Live.com?</title><content>Ok, so I must admit that the whole &lt;a href="http://www.live.com" target="_blank"&gt;Live.com/Start.com&lt;/a&gt; thing looks so much like a "&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnoxpta/html/odc_digdash.asp" target="_blank"&gt;Digital Dashboard&lt;/a&gt;" (anyone else get into that fad when it was cool?) that I feel like I'm back working on building my own components into the Outlook Today page.... but cynicism aside, it is still a cool idea and the very open system for creating and adding &lt;a href="http://www.microsoftgadgets.com" target="_blank"&gt;your own gadgets&lt;/a&gt; rocks. If you are wondering how to get started, then check out &lt;a href="http://www.adamkinney.com/note.aspx?id=86" target="_blank"&gt;Adam Kinney's article&lt;/a&gt; to learn exactly what you need to do.</content><id>http://duncanmackenzie.net/blog/Interested-in-building-your-own-Gadgets-for-Livecom/default.aspx</id><link href="http://duncanmackenzie.net/blog/Interested-in-building-your-own-Gadgets-for-Livecom/default.aspx" /><updated>Thu, 05 Jan 2006 05:46:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Coding4Fun" /><category term="Web Development" /></entry><entry><title>More on that RSS editor...</title><content>&lt;p&gt;In the end, MSDN didn't end up needing &lt;a href="http://blogs.duncanmackenzie.net/duncanma/archive/2005/11/01/3184.aspx" target="_blank"&gt;the RSS editor I wrote&lt;/a&gt;, so I've stripped out the features and content specific to their needs and started turning it into a more generic RSS creation tool. If you'd like to see it, as it is, you can run it from &lt;a href="http://www.duncanmackenzie.net/FeedWriter/default.aspx" target="_blank"&gt;a ClickOnce install point here on my site&lt;/a&gt;. There are more features coming, and I'm revamping the style and behavior of the category system.... but you can try it out against copies of your own feeds or click File | New Feed to make new ones. Check out the Validate option on the menu, it will send whatever feed you have open to a web service enabled version of the &lt;a href="http://www.feedvalidator.org"&gt;feedvalidator.org &lt;/a&gt;system (coded up by &lt;a href="http://www.acmebinary.com/blogs/kent/default.aspx"&gt;Kent Sharkey&lt;/a&gt;), allowing you to check the validatity of your RSS &lt;b&gt;without&lt;/b&gt; having to publish the file anywhere.&lt;/p&gt; &lt;p&gt;Note: If you have Beta 2 of the .NET Framework installed, the Click Once application will not install or run correctly. In this case, you need to run the VS remove tool (available from &lt;a href="http://msdn.microsoft.com/vstudio/support/uninstall/default.aspx" target="_blank"&gt;here&lt;/a&gt;)&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/More-on-that-RSS-editor/default.aspx</id><link href="http://duncanmackenzie.net/blog/More-on-that-RSS-editor/default.aspx" /><updated>Thu, 08 Dec 2005 05:28:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Blogging" /><category term="Coding4Fun" /><category term="Syndication" /><category term="Visual C#" /><category term="XML" /></entry><entry><title>Added Atom support to the FlairMaker... my version at least</title><content>&lt;p&gt;Nick, from "&lt;a href="http://thecodingmonkey.blogspot.com" target="_blank"&gt;The Coding Monkey&lt;/a&gt;" mentioned that he would like to see Atom support in the &lt;a href="http://blogs.duncanmackenzie.net/duncanma/archive/2005/10/15/3101.aspx" target="_blank"&gt;FlairMaker&lt;/a&gt;, so ... having no real reason not to, and having an extra 15 minutes after the kids went to sleep before I started cleaning up the house, I added it...&lt;/p&gt; &lt;p&gt;&lt;a href="http://thecodingmonkey.blogspot.com"&gt;&lt;img src="http://eris1109.si-xios.info/FlairMaker.ashx?atom=http://thecodingmonkey.blogspot.com/atom.xml" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Of course, I've just added this to my forked version of &lt;a href="http://www.acmebinary.com/blogs/kent/archive/2005/10/07/273.aspx" target="_blank"&gt;Kent's original code&lt;/a&gt;... so any feature I add that he likes will need to manually added into his version... bad software development practice, but hey we're just playing around here so you should be expecting too much.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Update: &lt;/strong&gt;I also modified the code to pull the blog's title from the feed (Atom or RSS) and stick it at the bottom. Not that useful of a feature for the Coding 4 Fun version, since it is always pointing at the same feed... but useful for mine if people want to use it for their own feeds&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/Added-Atom-support-to-the-FlairMaker-my-version-at-least/default.aspx</id><link href="http://duncanmackenzie.net/blog/Added-Atom-support-to-the-FlairMaker-my-version-at-least/default.aspx" /><updated>Sun, 23 Oct 2005 05:19:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term=".NET" /><category term="Blogging" /><category term="Coding4Fun" /><category term="Syndication" /><category term="Visual Basic" /><category term="Visual C#" /><category term="XML" /></entry><entry><title>Following in Kent's footsteps, like usual :)</title><content>&lt;p&gt;
				&lt;a href="http://www.acmebinary.com/blogs/kent/archive/2005/10/07/273.aspx" target="_blank"&gt;Kent's flair&lt;/a&gt; was cool... so I made my own, using his code of course, but targetting whatever feed you want... check out the source of this image and I'm sure you can figure out how to change the feed it is pointing to...&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.duncanmackenzie.net/duncanma"&gt;&lt;img src="http://eris1109.si-xios.info/FlairMaker.ashx?rss=http://blogs.duncanmackenzie.net/duncanma/Rss.aspx" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/Following-in-Kents-footsteps-like-usual-/default.aspx</id><link href="http://duncanmackenzie.net/blog/Following-in-Kents-footsteps-like-usual-/default.aspx" /><updated>Sat, 15 Oct 2005 16:44:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Coding4Fun" /><category term="Visual Basic" /><category term="Visual C#" /></entry><entry><title>Are you wearing enough flair?</title><content>&lt;p&gt;I've added &lt;a href="http://www.acmebinary.com/blogs/kent/archive/2005/10/07/273.aspx" target="_blank"&gt;Kent's flair&lt;/a&gt; to my site, just so I can be one of the cool kids in the class... &lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/coding4fun/"&gt;&lt;img alt="Coding4Fun" src="http://msdn.microsoft.com/coding4fun/flairmaker.ashx?style=2" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/Are-you-wearing-enough-flair/default.aspx</id><link href="http://duncanmackenzie.net/blog/Are-you-wearing-enough-flair/default.aspx" /><updated>Wed, 12 Oct 2005 03:26:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Coding4Fun" /><category term="Visual Basic" /></entry><entry><title>Little "Memory" game up on the MSDN Magazine site...</title><content>&lt;p&gt;Check it out &lt;a href="http://msdn.microsoft.com/msdnmag/issues/05/10/advancedbasics/default.aspx" target="_blank"&gt;here...&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="MatchMaker" src="http://msdn.microsoft.com/msdnmag/issues/05/10/advancedbasics/fig01.gif" border="0" /&gt;&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/Little-Memory-game-up-on-the-MSDN-Magazine-site/default.aspx</id><link href="http://duncanmackenzie.net/blog/Little-Memory-game-up-on-the-MSDN-Magazine-site/default.aspx" /><updated>Sun, 02 Oct 2005 01:08:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term=".NET" /><category term="Coding4Fun" /><category term="Personal Musings" /><category term="Visual Basic" /></entry><entry><title>New MSN Developer Center is live...</title><content>&lt;p&gt;
				&lt;img src="http://msdn.microsoft.com/msn/art/right_bnr_msn.jpg" align="right" /&gt;I've played around with coding against the Messenger APIs before, but it seems that MSN has really gone all out now and released a bunch of information for coding against their search, messenger, mapping services, and more... check it out on MSDN as of today!&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/msn/" target="_blank"&gt;http://msdn.microsoft.com/msn/&lt;/a&gt;&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/New-MSN-Developer-Center-is-live/default.aspx</id><link href="http://duncanmackenzie.net/blog/New-MSN-Developer-Center-is-live/default.aspx" /><updated>Fri, 16 Sep 2005 01:48:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term=".NET" /><category term="Coding4Fun" /><category term="Visual Basic" /><category term="Visual C#" /></entry><entry><title>A public site for collecting your exception info... like Dr. Watson via SOAP...</title><content>&lt;p&gt;This is an interesting idea ... &lt;a href="http://www.exceptioncollection.com/" target="_blank"&gt;http://www.exceptioncollection.com/&lt;/a&gt;, something that I've &lt;a href="http://blogs.duncanmackenzie.net/duncanma/archive/2005/03/08/1212.aspx" target="_blank"&gt;pondered before.&lt;/a&gt;..&lt;/p&gt; &lt;p&gt;I'd have to know more about it, in terms of the privacy and security of their data collection... before I could recommend it without any pause, but I would certainly take a look if you are building a widely distributed application (outside of a single company/enterprise), and I would probably try to integrate with the Exception handling/logging block from PAG.&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/A-public-site-for-collecting-your-exception-info-like-Dr-Watson-via-SOAP/default.aspx</id><link href="http://duncanmackenzie.net/blog/A-public-site-for-collecting-your-exception-info-like-Dr-Watson-via-SOAP/default.aspx" /><updated>Thu, 15 Sep 2005 18:06:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term=".NET" /><category term="Coding4Fun" /><category term="Visual Basic" /><category term="Visual C#" /></entry><entry><title>The Spouse Acceptance Factor</title><content>&lt;p&gt;I'm not sure who invented this term, SAF, but it comes up often around folks who are into &lt;i&gt;new&lt;/i&gt; technology for the home... "sure you might want to install a media center pc, but have you taken into account the spouse acceptance factor?" or the more common, "having to restart the cable modem sure reduces the SAF". With everything new seems to come a few annoyances, so the question is whether or not the benefits outweigh the issues... and not in &lt;b&gt;your&lt;/b&gt; opinion, but in the opinion of the rest of the people in your house. This is an ongoing issue for me, because I have a habit of picking up new gadgets for the home.&lt;/p&gt; &lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt; &lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; So, it seems that &lt;em&gt;SAF&lt;/em&gt; is just the politically correct form of &lt;em&gt;WAF&lt;/em&gt;, which has been around for quite some time... at least the 70's according to this site: &lt;a href="http://www.wordspy.com/words/wifeacceptancefactor.asp"&gt;http://www.wordspy.com/words/wifeacceptancefactor.asp&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;First, I went out and picked up Tivo, back when we first moved down to the US (Tivo is not available in most of Canada)... which was accepted into the household with very few bumps. It took a little while to get used to it, my wife was asking me to schedule recordings for awhile, and it had some problems changing channels on the digital cable boxes (using IR blasters, which I am not a big fan of). Eventually we got to a point where I don't think we would ever want to go back to life without a Tivo-like solution.&lt;/p&gt; &lt;p&gt;Next, I brought in &lt;a href="http://www.duncanmackenzie.net/musicxp" target="_blank"&gt;my own home-grown media center like box&lt;/a&gt; to play all our music. Generally well accepted, but with remote control issues (a tendency to take one button press to mean 3 or 4, therefore playing music you were just trying to browse through, scrolling way farther than intended, etc..). I was never really able to fix the remote issues, but I never spent any time trying (too much work to do for my real job to be debugging my hobby project for more than a few minutes), and the system became something that only I would use.&lt;/p&gt; &lt;p&gt;Eventually I replaced that music pc with a 'real' Media Center system running the first version of Windows Media Center, and tried to get people to use it instead of Tivo as well as for music/photos... well, it worked most of the time, but we had it stowed away in a cabinet and it would occasionally (way too often for our tastes) require the user to hit a keyboard or mouse button to get past some message box or dialog... which resulted in my wife just shutting it off and using the Tivo again. Along came the most recent version of Media Center (2005) and the SAF was greatly increased... no more dialogs require the keyboard ever appeared and it seemed easier to use for many reasons. Combined with a media center extender, which brings the whole system closer to the feel of a consumer appliance, and everything seems hunky dory... kinda... &lt;/p&gt; &lt;p&gt;For some reason, every once in awhile I get an error while watching a show... &lt;b&gt;"Content Expired"&lt;/b&gt; and the screen is replaced with a big message about needed to re-acquire the content (this isn't some HBO content protection thing ... this happens on normal ABC/NBC type shows recorded the night before). Pressing stop, then play, fixes the problem, but every single time it happens I get to hear "Tivo never did this, you know" (partially just to bug me, I'm sure) ... and it happens a few times a week. Oh... and sometimes the media center extender just suddenly dies and says that it experienced 'a problem' ... and needs to be reset. There are a few other issues, making it seem unreliable... which means it is currently toeing the line between being loved and being thrown out... not sure what the resolution is going to be on that one.&lt;/p&gt; &lt;p&gt;The final piece of 'new tech' in my house is the Vonage voip phone system which works very well, except when the Internet is down. This isn't Vonage's problem but it is a dependency and for some reason my Comcast internet seems to die for at least a few hours every week... generally right when I'm at work and my wife finally has some time to call all the various doctors and friends to set up appointments, playdates, etc... sure, it comes back in a few hours, but by then my wife has tried the phone ten times, reset and power-cycled the cable modem, etc... and whenever that happens I get the request "can we please go back to regular phone service and Tivo? I don't need fancy features, but I need this stuff to work.... and work all the time!".&lt;/p&gt; &lt;p&gt;Yesterday the phone service stopped working for an hour, when my wife was trying to call the doctor about a problem that my son is having... and then today the media center extender &lt;a href="http://www.duncanmackenzie.net/images/VOICEATT.WAV" target="_blank"&gt;stopped working&lt;/a&gt; (I think because I had VPN'd into microsoft the night before on the media center pc, and then disconnected... but I still think that is what ended up confusing the extender) ... leading my wife to compare all the new technology in our home to "being left alone with a pet that behaves itself when you are home, but then gets violent after you leave".&lt;/p&gt; &lt;p&gt;As a technology junkie, this is a difficult situation for me... so now I'm considering my options... should I go back to 'regular' phone service (cell phones don't work at my house, by the way... they start to die around a block from my place)? Should I get digital cable and a DVR from the cable company perhaps? Should I consider DirectTV and their DVR? Should I take advantage of the switch to get some form of HD service... only if I can get a HD DVR solution, of course...&lt;/p&gt; &lt;p&gt;hassle, hassle, hassle... and there are always so many choices (DirectTV vs. Cable for example) and you are generally giving something up with every choice... &lt;/p&gt; &lt;p&gt;Of course, this is all unimportant in the big scheme of things, but I often find it is these unimportant details that end up taking a large amount of your time ... whether you are talking about that little bug in your code that causes drag and drop to not work in 1% of the cases or the decision of what type of TV signal provider to go with...&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/The-Spouse-Acceptance-Factor/default.aspx</id><link href="http://duncanmackenzie.net/blog/The-Spouse-Acceptance-Factor/default.aspx" /><updated>Tue, 07 Jun 2005 14:28:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Coding4Fun" /><category term="Digital Music and Media" /><category term="Family" /><category term="Personal Musings" /></entry><entry><title>Doing interesting things with XSL</title><content>&lt;p&gt;I've been messing around with using XSL to display RSS on MSDN, as a simpler alternative to a custom ASP.NET control, and while it works perfectly in the core case (display all the items in a feed in a format), there are two additional requirements that were very easy to handle in a .NET class, but trickier (for me) in XSL.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Display the top &lt;i&gt;n&lt;/i&gt; items &lt;li&gt;Out of the full list, display &lt;i&gt;n&lt;/i&gt; randomly picked items &lt;/li&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;For the first, it was pretty easy... &amp;lt;xsl:if test="position &amp;lt; 6"&amp;gt; could be used to only output the top 5 items, for example... For the second though, I was stumped for a bit... then I came up with an idea. I would write a script function that would pick &lt;i&gt;n&lt;/i&gt; items out of the total count, put those choices into an array, then use another function that tests the current position against that list of choices... sound good? Well, I'm still working on implementing this one... I have it working, but I'm not 100% sure of my solution.&lt;/p&gt; &lt;p&gt;If you are interested, you can see the code running &lt;a href="http://www.duncanmackenzie.net/xsltest.aspx" target="_blank"&gt;here&lt;/a&gt;, and pull down the xsl from &lt;a href="http://www.duncanmackenzie.net/rsspretty.xsl" target="_blank"&gt;here&lt;/a&gt;, and the backing rss file from &lt;a href="http://www.duncanmackenzie.net/msdnall.xml" target="_blank"&gt;here&lt;/a&gt;. &lt;a href="http://www.duncanmackenzie.net/xsltest.aspx.txt" target="_blank"&gt;Code for the page&lt;/a&gt; ... &lt;a href="http://www.duncanmackenzie.net/xmlView.ascx.txt" target="_blank"&gt;Code for the control it references&lt;/a&gt;... &lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/Doing-interesting-things-with-XSL/default.aspx</id><link href="http://duncanmackenzie.net/blog/Doing-interesting-things-with-XSL/default.aspx" /><updated>Fri, 06 May 2005 14:12:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term=".NET" /><category term="Coding4Fun" /><category term="MSDN Development" /><category term="Visual Basic" /><category term="Visual C#" /></entry><entry><title>Added a VB 2005 version of that Divider Label control...</title><content>&lt;p&gt;Ok, so &lt;a href="http://blogs.duncanmackenzie.net/duncanma/archive/2005/04/14/1306.aspx" target="_blank"&gt;the VB.NET 2003 version&lt;/a&gt; worked fine upgraded to 2005, with only one warning, but with the recent release of &lt;a href="http://msdn.microsoft.com/vbasic/default.aspx?pull=/library/en-us/dnvs05/html/vbnet2005_preview.asp" target="_blank"&gt;Beta 2&lt;/a&gt;, I thought I should jump on the bandwagon like everyone else :)&lt;/p&gt; &lt;p&gt;New .zip download linked from &lt;a href="http://www.duncanmackenzie.net/Samples/#divider" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/Added-a-VB-2005-version-of-that-Divider-Label-control/default.aspx</id><link href="http://duncanmackenzie.net/blog/Added-a-VB-2005-version-of-that-Divider-Label-control/default.aspx" /><updated>Fri, 22 Apr 2005 16:07:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Coding4Fun" /><category term="Visual Basic" /></entry><entry><title>Coding4Fun, the site....</title><content>&lt;p&gt;If you've been reading my blog for awhile, you probably know about &lt;a href="http://msdn.microsoft.com/vbasic/using/columns/code4fun/" target="_blank"&gt;my column "Coding4Fun"&lt;/a&gt;, well now there is an entire site on MSDN going by that name... to be clear, this is not a site all about my column :) ... it is a site dedicated to the same concept though, hobbyist coding.&lt;/p&gt; &lt;p&gt;Check it out at: &lt;a href="http://msdn.microsoft.com/coding4fun" target="_blank"&gt;http://msdn.microsoft.com/coding4fun&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; way more details on the site available &lt;a href="http://blogs.msdn.com/danielfe/archive/2005/04/17/409116.aspx"&gt;at Dan's blog...&lt;/a&gt;&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/Coding4Fun-the-site/default.aspx</id><link href="http://duncanmackenzie.net/blog/Coding4Fun-the-site/default.aspx" /><updated>Mon, 18 Apr 2005 00:31:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term=".NET" /><category term="Coding4Fun" /><category term="Digital Music and Media" /><category term="Personal Musings" /><category term="Visual Basic" /><category term="Visual C#" /></entry><entry><title>Quick Windows Forms Control... a Label with a 3D Line...</title><content>&lt;p&gt;I was mocking up a UI yesterday, and I wanted to produce an interface that looked like Front Page's "New from Template" dialog...&lt;/p&gt; &lt;p&gt;&lt;img title="Front Page Template Dialog" src="http://www.duncanmackenzie.net/images/FrontPageTemplates.png" border="0" /&gt;&lt;/p&gt; &lt;p&gt;But I couldn't easily replicate those little dividers (for Options, Description, Preview), so I created a "DividerLabel" with about 10 minutes of VB.NET code (2003)... &lt;/p&gt; &lt;p&gt;&lt;img title="Divider Label Sample" src="http://www.duncanmackenzie.net/images/DividerLabelSample.png" border="0" /&gt;&lt;/p&gt; &lt;p&gt;And, if you are so inclined, you can set the text to nothing and you have a line!&lt;/p&gt; &lt;p&gt;&lt;img title="Hey Look, a Line!" src="http://www.duncanmackenzie.net/images/HeyLookYouCanMakeALine.png" border="0" /&gt;&lt;/p&gt; &lt;p&gt; &lt;p&gt;&lt;strong&gt;The Code&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Imports&lt;/font&gt; System.Drawing &lt;font color="blue" family="Microsoft Sans Serif"&gt;Imports&lt;/font&gt; System.Windows.Forms &lt;font color="blue" family="Microsoft Sans Serif"&gt;Public&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Class&lt;/font&gt; DividerLabel &lt;font color="blue" family="Microsoft Sans Serif"&gt;Inherits&lt;/font&gt; System.Windows.Forms.Label &lt;font color="blue" family="Microsoft Sans Serif"&gt;Dim&lt;/font&gt; m_spacing &lt;font color="blue" family="Microsoft Sans Serif"&gt;As&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Integer&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Dim&lt;/font&gt; m_borderStyle &lt;font color="blue" family="Microsoft Sans Serif"&gt;As&lt;/font&gt; Border3DStyle = Border3DStyle.Etched &amp;lt;System.ComponentModel.Category(&lt;font color="red" family="Microsoft Sans Serif"&gt;"Appearance"&lt;/font&gt;)&amp;gt; _ &lt;font color="blue" family="Microsoft Sans Serif"&gt;Public&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Property&lt;/font&gt; LineStyle() &lt;font color="blue" family="Microsoft Sans Serif"&gt;As&lt;/font&gt; Border3DStyle &lt;font color="blue" family="Microsoft Sans Serif"&gt;Get&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Return&lt;/font&gt; m_borderStyle &lt;font color="blue" family="Microsoft Sans Serif"&gt;End&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Get&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Set&lt;/font&gt;(&lt;font color="blue" family="Microsoft Sans Serif"&gt;ByVal&lt;/font&gt; Value &lt;font color="blue" family="Microsoft Sans Serif"&gt;As&lt;/font&gt; Border3DStyle) &lt;font color="blue" family="Microsoft Sans Serif"&gt;If&lt;/font&gt; Value &amp;lt;&amp;gt; m_borderStyle &lt;font color="blue" family="Microsoft Sans Serif"&gt;Then&lt;/font&gt; m_borderStyle = Value &lt;font color="blue" family="Microsoft Sans Serif"&gt;Me&lt;/font&gt;.Invalidate() &lt;font color="blue" family="Microsoft Sans Serif"&gt;End&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;If&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;End&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Set&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;End&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Property&lt;/font&gt; &amp;lt;System.ComponentModel.Category(&lt;font color="red" family="Microsoft Sans Serif"&gt;"Appearance"&lt;/font&gt;)&amp;gt; _ &lt;font color="blue" family="Microsoft Sans Serif"&gt;Public&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Property&lt;/font&gt; Spacing() &lt;font color="blue" family="Microsoft Sans Serif"&gt;As&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Integer&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Get&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Return&lt;/font&gt; m_spacing &lt;font color="blue" family="Microsoft Sans Serif"&gt;End&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Get&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Set&lt;/font&gt;(&lt;font color="blue" family="Microsoft Sans Serif"&gt;ByVal&lt;/font&gt; Value &lt;font color="blue" family="Microsoft Sans Serif"&gt;As&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Integer&lt;/font&gt;) &lt;font color="blue" family="Microsoft Sans Serif"&gt;If&lt;/font&gt; Value &amp;lt;&amp;gt; m_spacing &lt;font color="blue" family="Microsoft Sans Serif"&gt;Then&lt;/font&gt; m_spacing = Value &lt;font color="blue" family="Microsoft Sans Serif"&gt;Me&lt;/font&gt;.Invalidate() &lt;font color="blue" family="Microsoft Sans Serif"&gt;End&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;If&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;End&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Set&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;End&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Property&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Protected&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Overrides&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Sub&lt;/font&gt; OnPaint(&lt;font color="blue" family="Microsoft Sans Serif"&gt;ByVal&lt;/font&gt; e &lt;font color="blue" family="Microsoft Sans Serif"&gt;As&lt;/font&gt; PaintEventArgs) &lt;font color="blue" family="Microsoft Sans Serif"&gt;Dim&lt;/font&gt; g &lt;font color="blue" family="Microsoft Sans Serif"&gt;As&lt;/font&gt; Graphics = e.Graphics &lt;font color="blue" family="Microsoft Sans Serif"&gt;Dim&lt;/font&gt; f &lt;font color="blue" family="Microsoft Sans Serif"&gt;As&lt;/font&gt; Font = &lt;font color="blue" family="Microsoft Sans Serif"&gt;Me&lt;/font&gt;.Font &lt;font color="blue" family="Microsoft Sans Serif"&gt;Dim&lt;/font&gt; b &lt;font color="blue" family="Microsoft Sans Serif"&gt;As&lt;/font&gt; Brush = &lt;font color="blue" family="Microsoft Sans Serif"&gt;New&lt;/font&gt; SolidBrush(&lt;font color="blue" family="Microsoft Sans Serif"&gt;Me&lt;/font&gt;.ForeColor) &lt;font color="blue" family="Microsoft Sans Serif"&gt;Dim&lt;/font&gt; sf &lt;font color="blue" family="Microsoft Sans Serif"&gt;As&lt;/font&gt; StringFormat = StringFormat.GenericTypographic &lt;font color="blue" family="Microsoft Sans Serif"&gt;Dim&lt;/font&gt; labelBounds &lt;font color="blue" family="Microsoft Sans Serif"&gt;As&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;New&lt;/font&gt; RectangleF(0, 0, &lt;font color="blue" family="Microsoft Sans Serif"&gt;Me&lt;/font&gt;.Width, &lt;font color="blue" family="Microsoft Sans Serif"&gt;Me&lt;/font&gt;.Height) &lt;font color="blue" family="Microsoft Sans Serif"&gt;Dim&lt;/font&gt; textSize &lt;font color="blue" family="Microsoft Sans Serif"&gt;As&lt;/font&gt; SizeF = g.MeasureString(&lt;font color="blue" family="Microsoft Sans Serif"&gt;Me&lt;/font&gt;.Text, f, &lt;font color="blue" family="Microsoft Sans Serif"&gt;Me&lt;/font&gt;.Width) g.DrawString(&lt;font color="blue" family="Microsoft Sans Serif"&gt;Me&lt;/font&gt;.Text, f, b, 0, 0, sf) &lt;font color="blue" family="Microsoft Sans Serif"&gt;If&lt;/font&gt; textSize.Width + Spacing &amp;lt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Me&lt;/font&gt;.Width &lt;font color="blue" family="Microsoft Sans Serif"&gt;Then&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Dim&lt;/font&gt; startingPoint &lt;font color="blue" family="Microsoft Sans Serif"&gt;As&lt;/font&gt; Point startingPoint.X = textSize.Width + Spacing startingPoint.Y = textSize.Height \ 2 ControlPaint.DrawBorder3D(g, startingPoint.X, _ startingPoint.Y, _ &lt;font color="blue" family="Microsoft Sans Serif"&gt;Me&lt;/font&gt;.Width - startingPoint.X, _ 5, m_borderStyle, Border3DSide.Top) &lt;font color="blue" family="Microsoft Sans Serif"&gt;End&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;If&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;End&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Sub&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Public&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Sub&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;New&lt;/font&gt;() &lt;font color="blue" family="Microsoft Sans Serif"&gt;Me&lt;/font&gt;.SetStyle(ControlStyles.DoubleBuffer, &lt;font color="blue" family="Microsoft Sans Serif"&gt;True&lt;/font&gt;) &lt;font color="blue" family="Microsoft Sans Serif"&gt;Me&lt;/font&gt;.SetStyle(ControlStyles.AllPaintingInWmPaint, &lt;font color="blue" family="Microsoft Sans Serif"&gt;True&lt;/font&gt;) &lt;font color="blue" family="Microsoft Sans Serif"&gt;Me&lt;/font&gt;.SetStyle(ControlStyles.ResizeRedraw, &lt;font color="blue" family="Microsoft Sans Serif"&gt;True&lt;/font&gt;) &lt;font color="blue" family="Microsoft Sans Serif"&gt;End&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Sub&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;End&lt;/font&gt; &lt;font color="blue" family="Microsoft Sans Serif"&gt;Class&lt;/font&gt; &lt;/pre&gt;&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/Quick-Windows-Forms-Control-a-Label-with-a-3D-Line/default.aspx</id><link href="http://duncanmackenzie.net/blog/Quick-Windows-Forms-Control-a-Label-with-a-3D-Line/default.aspx" /><updated>Thu, 14 Apr 2005 14:00:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Coding4Fun" /><category term="Visual Basic" /></entry><entry><title>This is a first for me, some of my code has shipped with an official Microsoft product...</title><content>&lt;p&gt;That may not seem like a big deal to most MIcrosoft developers, since most of them write code for that exact purpose, but I have spent most of my time in Redmond writing sample code and even with my switch to development I'm focused on writing internal systems that are not likely to ever be exposed outside of our own users. Recently, the Tablet PC folks released the "&lt;a href="http://www.microsoft.com/windowsxp/downloads/tabletpc/experiencepack/default.mspx"&gt;Experience Pack for Windows XP Tablet PC Edition 2005&lt;/a&gt;", which includes the Media Transfer application/power toy.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/windowsxp/using/tabletpc/experiencepack/mediatransfer.mspx"&gt;Getting started with Media Transfer&lt;/a&gt;&lt;br /&gt;&lt;emphasis&gt;Easily copy photos, music, and videos from your desktop PC to your Tablet PC, even over your wireless network.&lt;/emphasis&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Well, behind the scences, that application uses &lt;a href="http://www.duncanmackenzie.net/pull.aspx?pageToPull=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncodefun/html/code4fun02282003.asp"&gt;my BITS code&lt;/a&gt; to handle its file transfers. This Visual Basic .NET library is really &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwxp/html/WinXP_BITS.asp?frame=true"&gt;a wrapper around the BITS APIs&lt;/a&gt;, but it is a pretty major abstraction (adding OO concepts and .NET niceties like collections to what is really a flat Win32 style API) that makes it a lot easier to work with the BITS features.&lt;/p&gt; &lt;p&gt;I've seen a demo of the application itself, and the rest of that experience pack, and it looks amazing... but I wouldn't ask me for any more info about it, because I don't have a Tablet PC, so I can't even run it! &lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/This-is-a-first-for-me-some-of-my-code-has-shipped-with-an-official-Microsoft-product/default.aspx</id><link href="http://duncanmackenzie.net/blog/This-is-a-first-for-me-some-of-my-code-has-shipped-with-an-official-Microsoft-product/default.aspx" /><updated>Fri, 08 Apr 2005 15:29:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Coding4Fun" /><category term="Digital Music and Media" /><category term="Visual Basic" /></entry><entry><title>Cory Smith release new VB.NET game... Checkers Solitaire...</title><content>&lt;table&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://addressof.com/blog/archive/2005/04/07/1677.aspx" target="_blank"&gt;&lt;img alt="Checkers Solitaire" src="http://www.addressof.com/articles/checkerssolitaire_v0.1.jpg" border="0" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;td&gt; &lt;p&gt;There is even an accompanying &lt;a href="http://addressof.com/blog/articles/checkerssolitaire.aspx" target="_blank"&gt;article&lt;/a&gt;. Oh, and a challenge: &lt;/p&gt; &lt;blockquote&gt;The first person that can send me a history file that shows the gameplay getting to 1 piece left (with the default 8x8x2 game), I'll happily annouce it to the world (at least the readers of this site). Do you have what it takes? If you think you do; let the challenge begin. Even if you can get it down to less than 4, I'll be happy to mention your name as well.&lt;/blockquote&gt; &lt;p&gt;Good luck!&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</content><id>http://duncanmackenzie.net/blog/Cory-Smith-release-new-VBNET-game-Checkers-Solitaire/default.aspx</id><link href="http://duncanmackenzie.net/blog/Cory-Smith-release-new-VBNET-game-Checkers-Solitaire/default.aspx" /><updated>Fri, 08 Apr 2005 06:22:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Coding4Fun" /><category term="Visual Basic" /></entry><entry><title>Pulling from MSDN... the code...</title><content>&lt;p&gt;(see &lt;a href="http://blogs.duncanmackenzie.net/duncanma/archive/2005/03/19/1243.aspx"&gt;this post&lt;/a&gt; for an introduction to this topic...)&lt;/p&gt; &lt;p&gt;I've wrapped my code up into a user control that you place anywhere on your page... it handles the load of data and then you can access its properties to output the html headers and body of the pulled content. I've just been using Output Caching on the host page, but if you decided to cache the body/headers that would certainly work as well...&lt;/p&gt; &lt;p&gt;Here is an example of using the control on a bare bones page...&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;&amp;lt;%@ Page Language=&lt;font color="red" family="Microsoft Sans Serif"&gt;"VB"&lt;/font&gt; Debug=&lt;font color="red" family="Microsoft Sans Serif"&gt;"true"&lt;/font&gt; %&amp;gt;&lt;br /&gt;&amp;lt;%@ OutputCache Duration=&lt;font color="red" family="Microsoft Sans Serif"&gt;"360"&lt;/font&gt; VaryByParam=&lt;font color="red" family="Microsoft Sans Serif"&gt;"*"&lt;/font&gt; %&amp;gt;&lt;br /&gt;&amp;lt;%@ Register TagPrefix=&lt;font color="red" family="Microsoft Sans Serif"&gt;"dm"&lt;/font&gt; TagName=&lt;font color="red" family="Microsoft Sans Serif"&gt;"Pull"&lt;/font&gt; Src=&lt;font color="red" family="Microsoft Sans Serif"&gt;"Pull.ascx"&lt;/font&gt; %&amp;gt;&lt;br /&gt;&amp;lt;dm:Pull id=pagePull runat=&lt;font color="red" family="Microsoft Sans Serif"&gt;"server"&lt;/font&gt; &lt;br /&gt; QueryParam=&lt;font color="red" family="Microsoft Sans Serif"&gt;"pullURL"&lt;/font&gt; &lt;br /&gt; DefaultURL=&lt;font color="red" family="Microsoft Sans Serif"&gt;"http://msdn.microsoft.com"&lt;/font&gt;/&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt; &amp;lt;head&amp;gt;&lt;br /&gt; &amp;lt;%=pagePull.PageHeaders%&amp;gt;&lt;br /&gt; &amp;lt;/head&amp;gt;&lt;br /&gt; &amp;lt;body&amp;gt;&lt;br /&gt; &amp;lt;%=pagePull.PageBody%&amp;gt;&lt;br /&gt; &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt; &lt;br /&gt;&lt;/pre&gt; &lt;p&gt;This simple page and the ascx are bundled up into a .zip file available &lt;a href="http://www.duncanmackenzie.net/Samples/#pull" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;</content><id>http://duncanmackenzie.net/blog/Pulling-from-MSDN-the-code/default.aspx</id><link href="http://duncanmackenzie.net/blog/Pulling-from-MSDN-the-code/default.aspx" /><updated>Tue, 22 Mar 2005 05:26:00 GMT</updated><author><name>Duncan Mackenzie</name></author><category term="Coding4Fun" /><category term="Personal Musings" /><category term="Visual Basic" /><category term="Visual C#" /></entry></feed>