<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PatCavit.com &#187; CSS</title>
	<atom:link href="http://patcavit.com/category/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://patcavit.com</link>
	<description>I &#60;3 Programming</description>
	<lastBuildDate>Mon, 16 May 2011 16:11:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>YUI 3 Quick Tip: Conditionally load dataURI&#8217;d CSS or MHTML</title>
		<link>http://patcavit.com/2010/11/12/yui-3-quick-tip-conditionally-load-dataurid-css-or-mhtml/</link>
		<comments>http://patcavit.com/2010/11/12/yui-3-quick-tip-conditionally-load-dataurid-css-or-mhtml/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 22:35:14 +0000</pubDate>
		<dc:creator>Pat Cavit</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://patcavit.com/?p=322</guid>
		<description><![CDATA[If you&#8217;re already using the YUI 3 Loader to load some of your CSS like I do for some sites this can come in really handy. You could also do this via conditional comments, but you can&#8217;t control when the load happens in that case. The trick is to define the trigger for the MHTML [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re already using the <a href="http://developer.yahoo.com/yui/3/yui/#loader" target="_blank">YUI 3 Loader</a> to load some of your CSS like I do for <a title="GW2 Hall of Monuments" href="http://hom.guildwars2.com/" target="_blank">some sites</a> this can come in really handy. You could also do this via conditional comments, but you can&#8217;t control when the load happens in that case.</p>
<p>The trick is to define the trigger for the MHTML module to trigger off of the regular module, &amp; also make sure that the MHTML module will supersede the regular one. Then, it&#8217;s a simple matter of setting up either the simple UA check or a test function that returns <em>true</em>/false.</p>
<p><script src="https://gist.github.com/674804.js"> </script></p>
<p>Note the <em>when</em> config setting&#8217;s value of &#8220;instead&#8221; that specifies that this module should replace &#8220;icons-css&#8221;. That only happens if the test function returns true, indicating hte module should be loaded. Since IE 8+ supports dataURIs, we return true only if running IE 7 or lower which causes the &#8220;icons-css&#8221; module to be replaced by &#8220;icons-css-mhtml&#8221;.</p>
<p>It&#8217;s a neat trick, huge thanks to Adam Moore of the YUI team for teaching me about it on the forums! Also thanks to <a href="http://www.nczonline.net/">Nicholas Zakas</a> for creating <a href="https://github.com/nzakas/cssembed/wiki" target="_blank">CSSEmbed</a> (also <a href="http://www.nczonline.net/blog/2009/11/03/automatic-data-uri-embedding-in-css-files/" target="_blank">here</a>), the tool that makes generating DataURI &amp; MHTML versions of a stylesheet ridiculously easy. <a href="http://www.phpied.com/" target="_blank">Stoyan Stefanov</a> gets a mention here too because of his <a href="http://www.phpied.com/the-proper-mhtml-syntax/" target="_blank">awesome</a> <a href="http://www.phpied.com/mhtml-when-you-need-data-uris-in-ie7-and-under/">DataURI/MHTML</a> <a href="http://www.phpied.com/data-uris-mhtml-ie7-win7-vista-blues/">research</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://patcavit.com/2010/11/12/yui-3-quick-tip-conditionally-load-dataurid-css-or-mhtml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI 3 Loader &amp; Aggregated Files</title>
		<link>http://patcavit.com/2010/06/01/yui-3-loader-aggregated-files/</link>
		<comments>http://patcavit.com/2010/06/01/yui-3-loader-aggregated-files/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 19:15:07 +0000</pubDate>
		<dc:creator>Pat Cavit</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Yahoo!]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://patcavit.com/?p=269</guid>
		<description><![CDATA[With the launch of the ArenaNet Blog I&#8217;ve been working a lot with YUI3 since it is the JS framework that powers all the interactivity on the site. The other great thing it does is provide a Loader that can pull in JS files on-demand as defined by a configuration object you pass to it. [...]]]></description>
			<content:encoded><![CDATA[<p>With the launch of the <a title="ArenaNet Blog" href="http://www.arena.net/blog/">ArenaNet Blog</a> I&#8217;ve been working a lot with <a href="http://developer.yahoo.com/yui/3/">YUI3</a> since it is the JS framework that powers all the interactivity on the site. The other great thing it does is provide a Loader that can pull in JS files on-demand as defined by a configuration object you pass to it. Loader has the capability to roll up multiple requests into a single file using a CDN but the functionality to do the same without using a CDN appears to be broken. Adam Moore from the YUI team &amp; I have been discussing the issue on <a href="http://yuilibrary.com/projects/yui3/ticket/2528823">YUI&#8217;s bug tracker</a> without a resolution yet.</p>
<p>Since I need to keep moving on this stuff I&#8217;ve had to devise my own solution to the issue I&#8217;m experiencing. For background, we use Apache Ant to create a &#8220;Deploy&#8221; version of the WordPress theme on the blog. This process runs through CSS/JS &amp; renames files, <a href="http://yuilibrary.com/projects/yuicompressor/">compresses them</a>, updates references, does <a href="http://github.com/nzakas/cssembed">DataURI stuff</a>, etc. It&#8217;s pretty nice and allows for easily deploying a very optimized site without making development a nightmare. As part of that I&#8217;ve had it roll up two JS files that are always requested together into one file to avoid making an extra HTTP request. Unfortunately when I tried a simple replace of the previous filenames with the new aggregate file&#8217;s name YUI 3&#8242;s Loader was loading the file twice.</p>
<p>So until I can get a working version of what Adam has suggested here&#8217;s how I&#8217;ve set up the build system to allow for replacing individual modules in development mode with a single aggregate file for deploying.</p>
<pre lang="javascript">//DEV CONFIG
YUI_config = {
    //yes this is a little gross but sadly it's necessary to make loader work how we want w/ ant
    /* dev */ ignore : [ "sidebar-rollup" ], //dev */
    /* live ignore : [ "chiclet", "slider-plugin" ], //live */
    groups : {
        anet : {
            combine : false,
            base : "/blog/wp-content/themes/arenanet/js/lib/",
            modules : {
                "chiclet" : {
                    path : "chiclet.js",
                    skinnable: false,
                    requires : [ "base", "widget", "anim-base", "anim-easing", "sidebar-rollup" ]
                },

                "slider-plugin" : {
                    path : "slider.js",
                    requires : ["plugin", "node", "anim-base", "anim-easing", "sidebar-rollup" ]
                },

                "gallery-lightbox" : {
                    path : "lightbox.js",
                    requires : ["base", "node", "anim-base", "selector-css3"]
                },

                "scroller-plugin" : {
                    path : "scroll.js",
                    requires : ["plugin", "node", "selector-css3", "event-delegate", "anim-base", "anim-scroll", "anim-easing"]
                },

                "social-counts" : {
                    path : "social.js",
                    requires : [ "gallery-yql", "node" ]
                },

                "sidebar-rollup" : {
                    path : "sidebar.js"
                }
            }
        }
    }
};</pre>
<p>which is modified by the Ant build script to</p>
<pre lang="javascript">//DEPLOY MODE
YUI_config = {
    //yes this is a little gross but sadly it's necessary to make loader work how we want w/ ant
    /* dev  ignore : [ "sidebar-rollup" ], //dev */
    /* live */ ignore : [ "chiclet", "slider-plugin" ], //live */
    groups : {
        anet : {
            //omitted for brevity, see above code block because this doesn't change between them
            }
        }
    }
};</pre>
<p>The comments get stripped out during compression so it doesn&#8217;t look quite so gnarly when sent to end-users. It&#8217;s also pretty easy to do as an Ant task, all it takes is this</p>
<pre lang="xml"><!-- update references to old js files to new concatted file -->
<replace file="${js.dir}/loader.js" token="/* dev */" value="/* dev " summary="yes" />
<replace file="${js.dir}/loader.js" token="/* live " value="/* live */" summary="yes" />
</pre>
<p>to do the switch. Later in my custom loader script those two modules are used with</p>
<pre lang="javascript">YUI().use("node", "event-base", "imageloader", "selector-css3", "chiclet", "slider-plugin", function(Y) {
    // Code goes here...
});
</pre>
<p>which will always make sure that both the &#8220;Chiclet&#8221; and &#8220;Slider-Plugin&#8221; modules are available. In dev mode it will request chiclet.js &amp; slider.js versus just asking for sidebar.js when deployed.</p>
<p>Does anybody have a better way of doing this? I think Adam&#8217;s version is nicer looking in the config but I&#8217;m not sure how it will work if a) the rollup file doesn&#8217;t exist or b) you don&#8217;t want to use the rollup except in production. I guess you could always just do something similar to what I&#8217;m doing now to configure it. That all assumes that the issues with it not actually loading the module get figured out, because if the modules aren&#8217;t added to the Y instance what&#8217;s the point?</p>
]]></content:encoded>
			<wfw:commentRss>http://patcavit.com/2010/06/01/yui-3-loader-aggregated-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arena.net</title>
		<link>http://patcavit.com/2009/09/18/arena-net/</link>
		<comments>http://patcavit.com/2009/09/18/arena-net/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 15:36:22 +0000</pubDate>
		<dc:creator>Pat Cavit</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://patcavit.com/?p=234</guid>
		<description><![CDATA[While I don&#8217;t work on the team responsible for the Arena.net site I help out all over the company wherever I can. When it was decided that the old site needed to be updated I got the call. After some discussions around what exactly the site should encompass it came down to wanting to have [...]]]></description>
			<content:encoded><![CDATA[<p>While I don&#8217;t work on the team responsible for the <a href="http://arena.net">Arena.net</a> site I help out all over the company wherever I can. When it was decided that the old site needed to be updated I got the call. After some discussions around what exactly the site should encompass it came down to wanting to have the site be an aggregator of updates by arena.net on various different services.</p>
<p>Here&#8217;s the rundown:</p>
<ul>
<li><a href="http://twitter.com/arenanet/">Twitter</a></li>
<li><a href="http://www.guildwars.com/events/newsarchive/default.php">GuildWars.com News</a></li>
<li><a href="http://www.flickr.com/photos/arenanet/">Flickr</a></li>
<li><a href="http://us.ncsoft.com/en/jobs/arenanet.html">NCSoft Jobs page</a></li>
<li><a href="http://us.ncsoft.com/en/news/press-releases/index.html">Press Releases</a></li>
</ul>
<p>I certainly wasn&#8217;t looking forward to building parsers for the multiple different feed types that entails, but <a href="http://developer.yahoo.com/yql">YQL</a> came along and saved the day again. I only had to do simple things manually like make sure that Twitter links &amp; @username replies were properly wrappped in &lt;a&gt; tags. To keep from bashing on YQL every time the page is loaded it stores the transformed results of the updates for an hour in a local APC cache. This provided the best of both worlds and made caching super-easy.</p>
<p>The site itself was built using <a href="http://developer.yahoo.com/yui/grids/">YUI grids</a>, <a href="http://developer.yahoo.com/yui/3/">YUI 3b1</a>, and <a href="http://www.dillerdesign.com/experiment/DD_belatedPNG/">DD_belatedPNG</a> to solve transparent PNG issues in IE6. It&#8217;s also using my favorite new PHP framework, <a href="http://github.com/bastos/nicedog/">Nice Dog</a>. It&#8217;s a nano framework (about 100 lines) that is more of a VC than MVC. For a site like Arena.net it&#8217;s perfect as there&#8217;s no need for models. I could&#8217;ve plugged in an ORM to make it the full stack but when getting all your data is as simple as</p>
<p><code>apc_fetch($key);</code></p>
<p>the need to build a &#8220;proper&#8221; MVC site kinda isn&#8217;t there any longer.</p>
]]></content:encoded>
			<wfw:commentRss>http://patcavit.com/2009/09/18/arena-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PatCavit.com</title>
		<link>http://patcavit.com/2009/05/25/patcavitcom/</link>
		<comments>http://patcavit.com/2009/05/25/patcavitcom/#comments</comments>
		<pubDate>Tue, 26 May 2009 06:24:52 +0000</pubDate>
		<dc:creator>Pat Cavit</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Yahoo!]]></category>
		<category><![CDATA[YQL]]></category>

		<guid isPermaLink="false">http://patcavit.com/?p=228</guid>
		<description><![CDATA[Sunday morning I had a few too many skittles after waking up and decided I wanted to build an actual landing page on patcavit.com So then I started on it, I had grand plans. There were even icons that I was going to grab from&#8230; somewhere. That part of it was rather poorly planned. After [...]]]></description>
			<content:encoded><![CDATA[<p>Sunday morning I had a few too many skittles after waking up and decided I wanted to build an actual landing page on patcavit.com</p>
<p>So then I started on it, I had grand plans. There were even icons that I was going to grab from&#8230; somewhere. That part of it was rather poorly planned. After doing the basic layout I spent about an hour trying to find the right icons. Eventually I threw up my hands and just dropped the whole idea.</p>
<p>Here&#8217;s what I&#8217;d planned for it to look like:<br />
<a href="http://tivac.com/upload/images/prEbycA_052520091392.jpg"><img src="http://tivac.com/upload/images/thumbs/th_prEbycA_052520091392.jpg" alt="052520091392.jpg" /></a></p>
<p>Notice my awesome hand-drawn icons&#8230; <img src='http://patcavit.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Today I was feeling more up for a challenge though. I did some reading and decided to use <a href="http://developer.yahoo.com/yql/">YQL</a> thanks to Chris Heilmann&#8217;s <a href="http://www.wait-till-i.com/2009/04/15/screencast-building-an-online-profile-of-distributed-data-with-yql/">screencast</a> illustrating how he used it to pull multiple sources of data together. After deciding to just ditch the icons I picked a few colors for the top-level sections instead, and here&#8217;s what I came up with.</p>
<p><a href="http://tivac.com/upload/images/pyoUhpE_patcavitcom.png"><img src="http://tivac.com/upload/images/thumbs/th_pyoUhpE_patcavitcom.png" alt="patcavit.com.png" /></a></p>
<p>I like it well enough. Still wish I could&#8217;ve found icons I was happy with.</p>
]]></content:encoded>
			<wfw:commentRss>http://patcavit.com/2009/05/25/patcavitcom/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tweaking the Image Uploader</title>
		<link>http://patcavit.com/2008/07/23/tweaking-the-image-uploader/</link>
		<comments>http://patcavit.com/2008/07/23/tweaking-the-image-uploader/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 03:04:57 +0000</pubDate>
		<dc:creator>Pat Cavit</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Demos]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tivac.com Projects]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://patcavit.com/?p=192</guid>
		<description><![CDATA[For fun I went trolling through the images people have uploaded via the YUI Uploader implementation I wrote a while ago. When it took my browser a solid 30 seconds to even be remotely responsive and start rendering images it struck me that perhaps it was time to paginate the images instead of just dumping [...]]]></description>
			<content:encoded><![CDATA[<p>For fun I went trolling through the images people have uploaded via the <a title="YUI Upload Implementation" href="http://patcavit.com/2008/03/01/yui-uploader-implementation/">YUI Uploader implementation</a> I wrote a while ago. When it took my browser a solid 30 seconds to even be remotely responsive and start rendering images it struck me that perhaps it was time to paginate the images instead of just dumping them all out onto one page.</p>
<p>So I added pagination. It&#8217;s currently super simple which makes for easy explanation. The PHP still collects and sorts every single image in the directory by date. I don&#8217;t think there&#8217;s any other way to do that. Afterwards it checks to see if the &#8220;o&#8221; query param was set and is an integer (thanks for adding <a title="Filter Input PHP Man Page" href="http://www.php.net/manual/en/function.filter-input.php">filter_input</a> to PHP5, PHP devs!). Once there&#8217;s an offset to start from, it slices the array at that point and takes the next 50 images.</p>
<p>After that there&#8217;s just some simple logic around drawing the pagination numbers and figuring out which one is the current page. The numbers are centered and boxed using a variation on Hedger&#8217;s inline-block work (<a href="http://www.hedgerwow.com/360/dhtml/css-inline-block-layout.php">Item List Grid : Practice with display:inline block across browsers</a>) that I worked on for the next VYC release. It solves the problem with a minimum amount of code in a really semantic way that just makes my web developer brain as happy as can be. Granted the CSS is not what I would call &#8220;pretty&#8221; but it works everywhere and is not impossible to understand, so I&#8217;m not too bothered by it.</p>
<p>So here&#8217;s how it turned out. Be forewarned that I don&#8217;t control what is uploaded here, and as such there might be <strong>NSFW</strong> content on this page!</p>
<p><a title="Uploaded Images" href="http://tivac.com/upload/images/">http://tivac.com/upload/images/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://patcavit.com/2008/07/23/tweaking-the-image-uploader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xbox Live Friends Sidebar Gadget 1.1</title>
		<link>http://patcavit.com/2008/04/19/xbox-live-friends-sidebar-gadget-11/</link>
		<comments>http://patcavit.com/2008/04/19/xbox-live-friends-sidebar-gadget-11/#comments</comments>
		<pubDate>Sun, 20 Apr 2008 00:11:22 +0000</pubDate>
		<dc:creator>Pat Cavit</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[xbox]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://patcavit.com/?p=189</guid>
		<description><![CDATA[I said I was working on it this morning, and I wasn&#8217;t even lying!  I&#8217;ve just updated the Xbox Live Friends Gadget to version 1.1 which brings with it almost everything I promised in the previous post! New Stuff! I&#8217;ve created an actual landing page for the gadget, http://patcavit.com/xbox-live-gadget/. There&#8217;s also a page helping people [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://patcavit.com/dev/gadgets/Xbox Live Friends.gadget"><img style="border-right: 0px; border-top: 0px; margin: 0px 0px 50px; border-left: 0px; border-bottom: 0px" src="http://patcavit.com/wp-content/uploads/2008/04/download-it.png" border="0" alt="Download the gadget" width="256" height="256" /></a></p>
<p>I said I was working on it this morning, and I wasn&#8217;t even lying!  I&#8217;ve just updated the Xbox Live Friends Gadget to version 1.1 which brings with it almost everything I promised in the <a href="http://patcavit.com/2008/04/19/closing-in-on-xbox-gadget-11/">previous post</a>!</p>
<h3>New Stuff!</h3>
<p>I&#8217;ve created an actual landing page for the gadget, <a title="http://patcavit.com/xbox-live-gadget/" href="http://patcavit.com/xbox-live-gadget/">http://patcavit.com/xbox-live-gadget/</a>. There&#8217;s also a page helping people copy gadgets from their old install to a new one, <a title="http://patcavit.com/xbox-live-gadget/how-to-update/" href="http://patcavit.com/xbox-live-gadget/how-to-update/">http://patcavit.com/xbox-live-gadget/how-to-update/</a>. Both of these pages need a lot of work but it&#8217;s a start. Had to learn a lot of wordpress knowledge I had long forgotten to be able to do that stuff!</p>
<p>So here&#8217;s what did end up making the cut for 1.1</p>
<ul>
<li>The backend web service caches results now, makes updating faster (but the data is no less fresh!)</li>
<li>Expanding in height was retarded, the guidelines were correct. To solve the problem of more than 5 online contacts without expanding there’s now pagination!</li>
<li>Undocked state exists now, might even be marginally useful.</li>
<li>Flyout has a link to open up xbox.com to send user a message over XBL</li>
<li>Error Handling for bad data from the WS</li>
<li>New background images, no longer quite so boring!</li>
<li>List updates are animated with a subtle fade effect. Probably needs more tweaking, but I think it makes a big difference.</li>
<li>Checks to make sure you have the latest version of the gadget and will nag you if not</li>
<li>(Online) Instructions for updating the gadget to save you from having to retype your friends list</li>
<li>(Online) Actual web page for the gadget to provide some useful info</li>
</ul>
<p>Unfortunately showing offline contacts didn&#8217;t make it. That task is quite a bit bigger than I originally though, but may still be coming down the pipe in a future update. There&#8217;s already a list of things I&#8217;m going to be working on next, so here&#8217;s a peek</p>
<ul>
<li>Show total count of online friends somewhere</li>
<li>Flyout wonkiness</li>
<li>Make flyout more useful (it&#8217;s getting there slowly!)</li>
<li>List update fades interfere with the hover effect. This will be amusing to fix, I just know it.</li>
</ul>
<p>So there&#8217;s still plenty for me to do and that was just after having one other person look at this. I&#8217;d love to get some feedback so I could keep working on this. After really getting into it I&#8217;m having a blast working with gadgets.</p>
<p>And now, <strong>pictures</strong>!</p>
<div id="scid:887EC618-8FBE-DEAD-BEEF-2339AF2EC721:1bf9e9b0-ab09-4378-a48b-d374f0fbf405" class="wlWriterSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"><a title="Upgrade notification" rel="thumbnail" href="http://patcavit.com/wp-content/uploads/2008/04/upgrade-available-8x6.png"><img src="http://patcavit.com/wp-content/uploads/2008/04/upgrade-available.png" border="0" alt="" /></a></div>
<div id="scid:887EC618-8FBE-DEAD-BEEF-2339AF2EC721:bab44337-d0f3-4612-889b-39f9f2cbb8da" class="wlWriterSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"><a title="Basic error handling" rel="thumbnail" href="http://patcavit.com/wp-content/uploads/2008/04/ws-error-8x6.png"><img src="http://patcavit.com/wp-content/uploads/2008/04/ws-error.png" border="0" alt="" /></a></div>
<div id="scid:887EC618-8FBE-DEAD-BEEF-2339AF2EC721:32f75cf1-1037-456c-8fcb-3944057d625e" class="wlWriterSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"><a title="Send a message via flyout" rel="thumbnail" href="http://patcavit.com/wp-content/uploads/2008/04/new-flyout-8x6.png"><img src="http://patcavit.com/wp-content/uploads/2008/04/new-flyout.png" border="0" alt="" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://patcavit.com/2008/04/19/xbox-live-friends-sidebar-gadget-11/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Closing in on Xbox Gadget 1.1</title>
		<link>http://patcavit.com/2008/04/19/closing-in-on-xbox-gadget-11/</link>
		<comments>http://patcavit.com/2008/04/19/closing-in-on-xbox-gadget-11/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 10:44:02 +0000</pubDate>
		<dc:creator>Pat Cavit</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[xbox]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://patcavit.com/2008/04/19/closing-in-on-xbox-gadget-11/</guid>
		<description><![CDATA[I&#8217;ve been working on this off and on ever since releasing 1.0, I definitely feel like this is deserving of a whole tenth of a full version bump.&#160; Quick list of things that have changed so far off the top of my head. The backend web service caches results now, makes updating faster (but the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on this off and on ever since releasing 1.0, I definitely feel like this is deserving of a whole tenth of a full version bump.&nbsp; Quick list of things that have changed so far off the top of my head.</p>
<ol>
<li>The backend web service caches results now, makes updating faster (but the data is no less fresh!)</li>
<li>Expanding in height was retarded, the guidelines were correct. To solve the problem of more than 5 online contacts without expanding there&#8217;s now pagination!</li>
<li>Undocked state exists now, might even be marginally useful.</li>
<li>Flyout has a link to open up xbox.com to send user a message over XBL</li>
<li>Error Handling for bad data from the WS</li>
<li>New background images, no longer quite so boring!</li>
<li>List updates are animated with a subtle fade effect. Probably needs more tweaking, but I think it makes a big difference.</li>
</ol>
<p>There&#8217;s still a few things left I want to do before making 1.1 official like update nagging and possibly adding a toggle to the settings page to show all your contacts and just filter it so that the only ones are a different color and show up first. Not sure about that one yet, but it&#8217;s a possibility.</p>
<p>Look, it&#8217;s a SCREENSHOT of the new stuff! Ok so mostly I wanted to play with a Windows Live Writer &#8220;Polariod Image&#8221; plugin, but it&#8217;s still a perfectly reasonable picture. I don&#8217;t feel bad for a second about posting it, so there!</p>
<p>
<div class="wlWriterSmartContent" id="scid:887EC618-8FBE-DEAD-BEEF-2339AF2EC721:dd547c69-2938-4795-b923-adac6156575e" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"><a href="http://patcavit.com/wp-content/uploads/2008/04/friends-gadget-11-undocked-8x6.png" title="New Undocked Mode" rel="thumbnail"><img border="0" src="http://patcavit.com/wp-content/uploads/2008/04/friends-gadget-11-undocked3.png" /></a></div>
</p>
<p>One last thing, I&#8217;ve given the gadget a &#8220;proper&#8221; home page at <a title="http://patcavit.com/xbox-live-gadget/" href="http://patcavit.com/xbox-live-gadget/">http://patcavit.com/xbox-live-gadget/</a> thanks to WordPress&#8217;s support for pages and custom templates.&nbsp; It took some hunting to figure out how to make a static page include a list of posts from a certain category, but <a title="http://www.transycan.net/blogtest/2007/09/10/static-frontpage-combined-with-dynamic-content/" href="http://www.transycan.net/blogtest/2007/09/10/static-frontpage-combined-with-dynamic-content/">http://www.transycan.net/blogtest/2007/09/10/static-frontpage-combined-with-dynamic-content/</a> was incredibly helpful in answering the questions I had.</p>
<p>Oh that reminds me I have to update the homepage in the gadget metadata&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://patcavit.com/2008/04/19/closing-in-on-xbox-gadget-11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xbox Live Friends Sidebar Gadget</title>
		<link>http://patcavit.com/2008/04/14/xbox-live-friends-sidebar-gadget/</link>
		<comments>http://patcavit.com/2008/04/14/xbox-live-friends-sidebar-gadget/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 22:39:10 +0000</pubDate>
		<dc:creator>Pat Cavit</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[xbox]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://patcavit.com/?p=172</guid>
		<description><![CDATA[What&#8217;s the problem? Knowing when my friends are online on Xbox Live has been a problem I&#8217;ve struggled with for years. When Microsoft announced the Xbox Community Developers program I thought I had found the answer. Then the recipients of the 50 API keys they gave out promptly made a bunch of websites I couldn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<h3>What&#8217;s the problem?</h3>
<p>Knowing when my friends are online on Xbox Live has been a problem I&#8217;ve struggled with for years. When Microsoft announced the Xbox Community Developers program I thought I had found the answer. Then the recipients of the 50 API keys they gave out promptly made a bunch of websites I couldn&#8217;t care less about&#8230;</p>
<p>Except for <a href="http://360voice.com">360voice.com</a> (&lt;3 their RSS feeds, I&#8217;m right <a href="http://www.360voice.com/tag/Tivac">here</a>). I really like the daily summaries that pop up into <a href="http://bloglines.com">Bloglines</a>, it&#8217;s cool knowing what games I should get so we can play more.</p>
<p>But even 360voice doesn&#8217;t handle the status info I was interested in. There&#8217;s no good way to have a list of my friends updating in the background so I can tell with a glance who is online and whether or not I should join them.  Plus there&#8217;s the hassle of actually getting someone else to sign up for it, so far I think all of 3 or so friends of mine are on there.</p>
<p>The other issue is one that isn&#8217;t anyone&#8217;s fault, per se. I don&#8217;t want to have to open a webpage to know who is online. The Xbox.com friends page is certainly easy to read, and it sticks all your friends at the top so you can scan it quickly. It still suffers from the fact that I have to actively go to it if I want to see who is online. I could hook up one of the Firefox extensions that checks a page for updates, but that still isn&#8217;t what I&#8217;m looking for.</p>
<h3>That sounds like it should work&#8230;</h3>
<p>So how do I get an unobtrusive, automatically updating list of my friends to sit on my desktop so I know at a glance who is online? Well I&#8217;m rocking Vista and dual-monitors, so I fired up the Sidebar and added the <a href="http://adamkinney.com/studios/xboxfriendswatch/"></a><a href="http://patcavit.com/wp-content/uploads/2008/04/xbox-friends-watch.png"><img style="border-right: 0px; border-top: 0px; margin: 10px 10px 0px 0px; border-left: 0px; border-bottom: 0px" src="http://patcavit.com/wp-content/uploads/2008/04/xbox-friends-watch-thumb.png" border="0" alt="Xbox Friends Watch" width="160" height="238" align="left" /></a>Xbox Friends Watch gadget. It&#8217;s doubly neat because it not only does what I want but it uses Silverlight so there&#8217;s lots of fancy animations and the like.</p>
<p>I was pretty happy with this solution for a while, but it&#8217;s still not quite right. Despite me having more than 5 friends on Xbox Live, I can&#8217;t get updates for them. The gadget will happily add them and even appears to render them on its list, but it doesn&#8217;t support scrolling of any sort. You can kinda mouseover the very bottom and see the highlight travel to the other people on your list, but you&#8217;ll never know if they are online or not. Adding gamertags to it wasn&#8217;t the easiest thing in the world either, as the settings dialog expects tags to be commas-separated , which I always found to be pretty clunky.</p>
<p>Like I mentioned, the hard limit of 5 gamertags wasn&#8217;t a huge issue for me and I was happily using the Xbox Friends Watch gadget for several months.  Eventually though I was having to swap people in and out of the list on a pretty regular basis, depending on which group of friend<a href="http://patcavit.com/wp-content/uploads/2008/04/xbox-friends-watch-config.png"><img style="border-right: 0px; border-top: 0px; margin: 15px 0px 5px 15px; border-left: 0px; border-bottom: 0px" src="http://patcavit.com/wp-content/uploads/2008/04/xbox-friends-watch-config-thumb.png" border="0" alt="Xbox Friends Watch Config" width="182" height="244" align="right" /></a>s I was going to try and play with next. It didn&#8217;t make sense to me that I would have to do that, so I went looking to see if there were any other options out there.</p>
<h3>Not quite, next!</h3>
<p>The closest I found was Duncan MacKenzie&#8217;s <a href="http://www.duncanmackenzie.net/blog/connect-your-xbox-360-gamertag-to-twitter/default.aspx">Xbox to Twitter</a> application. It&#8217;s very cool, and something I contemplated running for a while before deciding that I spammed Twitter (and Facebook, thanks to the Twitter App) and people probably wouldn&#8217;t care that much. Besides, I&#8217;m not looking for ways to broadcast to other people that I&#8217;m online, I want a way to keep tabs on my friends and know when they&#8217;re online.</p>
<p>So Xbox to Twitter wasn&#8217;t what I needed, but it did get me the hook I needed to be able to solve my problem. As part of his twitter app Duncan also put up a Webservice API you can hit to get Xbox status info for a gamertag. Even better, he put up a REST version of it that you can hit using plain old HTTP. It&#8217;s super simple, check this out:</p>
<p><a title="http://duncanmackenzie.net/services/GetXboxInfo.aspx?GamerTag=Tivac" href="http://duncanmackenzie.net/services/GetXboxInfo.aspx?GamerTag=Tivac">http://duncanmackenzie.net/services/GetXboxInfo.aspx?GamerTag=Tivac</a></p>
<div class="csharpcode">
<pre class="alt"><span class="kwrd">&lt;?</span><span class="html">xml</span> <span class="attr">version</span><span class="kwrd">="1.0"</span>?<span class="kwrd">&gt;</span></pre>
<pre><span class="kwrd">&lt;</span><span class="html">XboxInfo</span> <span class="attr">xmlns:xsi</span><span class="kwrd">=<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a></span></pre>
<pre><span class="attr">xmlns:xsd</span><span class="kwrd">="http://www.w3.org/2001/XMLSchema"</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">  <span class="kwrd">&lt;</span><span class="html">AccountStatus</span><span class="kwrd">&gt;</span>Gold<span class="kwrd">&lt;/</span><span class="html">AccountStatus</span><span class="kwrd">&gt;</span></pre>
<pre>  <span class="kwrd">&lt;</span><span class="html">PresenceInfo</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">    <span class="kwrd">&lt;</span><span class="html">Valid</span><span class="kwrd">&gt;</span>true<span class="kwrd">&lt;/</span><span class="html">Valid</span><span class="kwrd">&gt;</span></pre>
<pre>    <span class="kwrd">&lt;</span><span class="html">Info</span><span class="kwrd">&gt;</span>Last seen 58 minutes ago<span class="kwrd">&lt;/</span><span class="html">Info</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">    <span class="kwrd">&lt;</span><span class="html">Info2</span> <span class="kwrd">/&gt;</span></pre>
<pre>    <span class="kwrd">&lt;</span><span class="html">LastSeen</span><span class="kwrd">&gt;</span>2008-04-14T15:42:05-05:00<span class="kwrd">&lt;/</span><span class="html">LastSeen</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">    <span class="kwrd">&lt;</span><span class="html">Online</span><span class="kwrd">&gt;</span>false<span class="kwrd">&lt;/</span><span class="html">Online</span><span class="kwrd">&gt;</span></pre>
<pre>    <span class="kwrd">&lt;</span><span class="html">StatusText</span><span class="kwrd">&gt;</span>Offline<span class="kwrd">&lt;/</span><span class="html">StatusText</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">    <span class="kwrd">&lt;</span><span class="html">Title</span><span class="kwrd">&gt;</span>www.xbox.com<span class="kwrd">&lt;/</span><span class="html">Title</span><span class="kwrd">&gt;</span></pre>
<pre>  <span class="kwrd">&lt;/</span><span class="html">PresenceInfo</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">  <span class="kwrd">&lt;</span><span class="html">State</span><span class="kwrd">&gt;</span>Valid<span class="kwrd">&lt;/</span><span class="html">State</span><span class="kwrd">&gt;</span></pre>
<pre>  <span class="kwrd">&lt;</span><span class="html">Gamertag</span><span class="kwrd">&gt;</span>tivac<span class="kwrd">&lt;/</span><span class="html">Gamertag</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">  <span class="kwrd">&lt;</span><span class="html">ProfileUrl</span><span class="kwrd">&gt;</span>http://live.xbox.com/member/tivac<span class="kwrd">&lt;/</span><span class="html">ProfileUrl</span><span class="kwrd">&gt;</span></pre>
<pre>  <span class="kwrd">&lt;</span><span class="html">TileUrl</span><span class="kwrd">&gt;</span>http://tiles.xbox.com/ti...8M6cr.jpg<span class="kwrd">&lt;/</span><span class="html">TileUrl</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">  <span class="kwrd">&lt;</span><span class="html">Country</span><span class="kwrd">&gt;</span>United States<span class="kwrd">&lt;/</span><span class="html">Country</span><span class="kwrd">&gt;</span></pre>
<pre>  <span class="kwrd">&lt;</span><span class="html">Reputation</span><span class="kwrd">&gt;</span>99.98135<span class="kwrd">&lt;/</span><span class="html">Reputation</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">  <span class="kwrd">&lt;</span><span class="html">ReputationImageUrl</span><span class="kwrd">&gt;</span>http://live.xbox.com/xweb/...gif<span class="kwrd">&lt;/</span><span class="html">ReputationImageUrl</span><span class="kwrd">&gt;</span></pre>
<pre>  <span class="kwrd">&lt;</span><span class="html">GamerScore</span><span class="kwrd">&gt;</span>12860<span class="kwrd">&lt;/</span><span class="html">GamerScore</span><span class="kwrd">&gt;</span></pre>
<pre>  <span class="kwrd">&lt;</span><span class="html">Zone</span><span class="kwrd">&gt;</span>Recreation<span class="kwrd">&lt;/</span><span class="html">Zone</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">  <span class="kwrd">&lt;</span><span class="html">RecentGames</span><span class="kwrd">&gt;</span></pre>
<pre>    <span class="kwrd">&lt;</span><span class="html">XboxUserGameInfo</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">      <span class="kwrd">&lt;</span><span class="html">Game</span><span class="kwrd">&gt;</span></pre>
<pre>        <span class="kwrd">&lt;</span><span class="html">Name</span><span class="kwrd">&gt;</span>Halo 3<span class="kwrd">&lt;/</span><span class="html">Name</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">        <span class="kwrd">&lt;</span><span class="html">TotalAchievements</span><span class="kwrd">&gt;</span>49<span class="kwrd">&lt;/</span><span class="html">TotalAchievements</span><span class="kwrd">&gt;</span></pre>
<pre>        <span class="kwrd">&lt;</span><span class="html">TotalGamerScore</span><span class="kwrd">&gt;</span>1000<span class="kwrd">&lt;/</span><span class="html">TotalGamerScore</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">        <span class="kwrd">&lt;</span><span class="html">Image32Url</span><span class="kwrd">&gt;</span>http://tiles.xbox.com/tiles/oo/P5/0...<span class="kwrd">&lt;/</span><span class="html">Image32Url</span><span class="kwrd">&gt;</span></pre>
<pre>        <span class="kwrd">&lt;</span><span class="html">Image64Url</span><span class="kwrd">&gt;</span>http://tiles.xbox.com/tiles/zS/3N/1W....jpg<span class="kwrd">&lt;/</span><span class="html">Image64Url</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">      <span class="kwrd">&lt;/</span><span class="html">Game</span><span class="kwrd">&gt;</span></pre>
<pre>      <span class="kwrd">&lt;</span><span class="html">LastPlayed</span><span class="kwrd">&gt;</span>2008-04-10T00:25:48-05:00<span class="kwrd">&lt;/</span><span class="html">LastPlayed</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">      <span class="kwrd">&lt;</span><span class="html">Achievements</span><span class="kwrd">&gt;</span>25<span class="kwrd">&lt;/</span><span class="html">Achievements</span><span class="kwrd">&gt;</span></pre>
<pre>      <span class="kwrd">&lt;</span><span class="html">GamerScore</span><span class="kwrd">&gt;</span>770<span class="kwrd">&lt;/</span><span class="html">GamerScore</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">      <span class="kwrd">&lt;</span><span class="html">DetailsURL</span><span class="kwrd">&gt;</span>http://live.xbox.com/en-...o=tivac<span class="kwrd">&lt;/</span><span class="html">DetailsURL</span><span class="kwrd">&gt;</span></pre>
<pre>    <span class="kwrd">&lt;/</span><span class="html">XboxUserGameInfo</span><span class="kwrd">&gt;</span></pre>
<pre class="alt">    ...</pre>
<pre>  <span class="kwrd">&lt;/</span><span class="html">RecentGames</span><span class="kwrd">&gt;</span></pre>
<pre class="alt"><span class="kwrd">&lt;/</span><span class="html">XboxInfo</span><span class="kwrd">&gt;</span></pre>
</div>
<p>A little hard to parse in this format, I know. Hitting that URL in your browser will make it easier to understand though. I also shortened all the URLs and removed a the previous 9 games I had played because honestly, it&#8217;s not <strong>that</strong> interesting and it makes the XML way longer.</p>
<p>This is it though, the data that I needed to solve the problem of &#8220;I want to know what friends are on Xbox Live&#8221; (at least for me!). All I needed to do was to figure out how to use that info. Reaching back into the depths of my memory I recalled my previous attempt at building sidebar gadgets (<a title="http://patcavit.com/2007/05/04/vista-gadget-headaches/" href="http://patcavit.com/2007/05/04/vista-gadget-headaches/">http://patcavit.com/2007/05/04/vista-gadget-headaches/</a>) and how I in fact had tried to build this very gadget once before. Except it failed horribly because I couldn&#8217;t automate a Windows Live login. Well wonder of wonders, with this API I don&#8217;t have to!</p>
<h3>Finally, some progress!</h3>
<p>So after a few days of hacking in JavaScript and PHP I&#8217;ve got a sidebar gadget that takes a list of Xbox gamertags and will update to let you know when any of them are online. It even uses the cool <a href="http://blogs.msdn.com/sidebar/archive/2006/09/21/765604.aspx">Gadget Persistent Storage</a> library to store your list of gamertags when you remove and re-add the gadget. A lot of this is powered by a small subset of <a href="http://developer.yahoo.com/yui">YUI</a> because programming JS without it is too painful. Specifically I&#8217;m using <a href="http://developer.yahoo.com/yui/reset/">Reset</a>, <a href="http://developer.yahoo.com/yui/dom/">DOM</a>, <a href="http://developer.yahoo.com/yui/event/">Event</a>, <a href="http://developer.yahoo.com/yui/json/">JSON</a> &amp; <a href="http://developer.yahoo.com/yui/connection/">Connection</a>.</p>
<p>There are of course some caveats to this, but there always are.</p>
<p>Getting a list of gamertags isn&#8217;t automated. I&#8217;m not even sure the people who have direct access to the Xbox Community Developers Program ever got this capability. I doubt it. It means that for now you&#8217;ll still need to input a bunch of gamertags by hand. Fortunately this list is newline separated, so it&#8217;s very quick to add a bunch of them. I&#8217;ve got some stub code in there to parse it from a copy/paste of your <a href="http://live.xbox.com/en-US/profile/Friends.aspx?WT.svl=nav">Xbox.com friends management page</a>, but it isn&#8217;t ready for anyone to actually use yet.</p>
<ol>
<li>It violates Microsoft&#8217;s <a href="http://msdn2.microsoft.com/en-us/library/aa974179.aspx">Gadget UI Guidelines</a>, in that gadgets shouldn&#8217;t change size on anything other than a click. Mine does automatically depending on the number of people online. It could even conceivably become taller than your monitor. Microsoft is definitely right about this and I think it sucks, but I didn&#8217;t figure out a clean way of paginating the data that could stand. This is something I&#8217;m going to work on in the future, but for now it&#8217;s crappy.</li>
<li>There&#8217;s no undocked state. More accurately, it&#8217;s the exact same docked to the sidebar and undocked. Ideally it would expand a bit to shower bigger icons, larger text, and gamerscore (at a minimum) when you undocked the gadget. That&#8217;s on the list of things I&#8217;d like to do someday, but since I never use the gadget undocked is pretty low priority.</li>
<li>There&#8217;s still some weird behaviors. Here&#8217;s the ones I know about.
<ol>
<li>Sometimes the requests to the server for user info just take forever and return empty.</li>
<li>Opening a new flyout when there&#8217;s already one open causes the flyout to lose focus until you click on it. This appears to be a Sidebar/Gadgets limitation so it&#8217;s unlikely to be fixed.</li>
</ol>
</li>
</ol>
<p>Still, it works like I need it to which is really the only important thing! I&#8217;d love to have some other people use it and give me feedback though. I&#8217;m always down for hearing about bugs as well, though no promises that they will be something easily fixable.</p>
<p>It&#8217;s not the prettiest thing in the world, I&#8217;ve modelled it after <a href="http://live.xbox.com/en-US/profile/Friends.aspx?WT.svl=nav">xbox.com</a> and the flyout details are powered by the <a href="http://www.xbox.com/en-US/MyXbox/embedgamercard.htm">Embeddable Gamercards</a> offered on xbox.com.  Here&#8217;s an example of the what those look like</p>
<p>Put your gamertag here too.</p>
<p>It&#8217;s lazy but it gets the data I want in there without a lot of hassle on my part. In the future I would like to have a nicer flyout more akin to what Xbox Friends Watch has. Unfortunately, that&#8217;ll be a a good chunk of work to get the interactions right so that&#8217;s a challenge I&#8217;m putting off for another day. I don&#8217;t even really use the flyouts in my day to day gadget usage, but it&#8217;s nice to be able to interact and get a bit more information.</p>
<p>As usual I&#8217;ve written way too much and not posted enough links to just get the damn thing, so here you go!</p>
<p><strong><a href="http://patcavit.com/dev/gadgets/Xbox Live Friends.gadget">Xbox Live Friends Gadget 1.0</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://patcavit.com/2008/04/14/xbox-live-friends-sidebar-gadget/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Sites I read that are worth checking out</title>
		<link>http://patcavit.com/2008/02/13/sites-i-read-that-are-worth-checking-out/</link>
		<comments>http://patcavit.com/2008/02/13/sites-i-read-that-are-worth-checking-out/#comments</comments>
		<pubDate>Thu, 14 Feb 2008 04:51:05 +0000</pubDate>
		<dc:creator>Pat Cavit</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[text editors]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://patcavit.com/2008/02/13/sites-i-read-that-are-worth-checking-out/</guid>
		<description><![CDATA[This is gonna be a long one, so watch out. I&#8217;ve been collecting feeds of people who I consider to have really worthwhile things to say about my chosen career (web development, for the people who don&#8217;t know that about me already). I&#8217;ve got quite a list, and since I&#8217;m of the opinion that sharing [...]]]></description>
			<content:encoded><![CDATA[<p>This is gonna be a long one, so watch out.  I&#8217;ve been collecting feeds of people who I consider to have really worthwhile things to say about my chosen career (web development, for the people who don&#8217;t know that about me already).  I&#8217;ve got quite a list, and since I&#8217;m of the opinion that sharing is caring I will be providing a huge list of links to sites that I think are awesome and deserve your attention.</p>
<p>I make no claims that this list is authoritative, in fact I&#8217;d love feedback pointing out really smart people I missed.  I read a lot of feeds but none are more dear to me than the ones contained with my &#8220;development&#8221; folder.  Adding new items to it is a joy each and every time.</p>
<ul>
<li>
<h2>Usability/Design</h2>
<ul>
<li>
<h4>                     <a href="http://www.456bereastreet.com/">456 Berea Street, full text</a> <a href="http://www.456bereastreet.com/feed.xml"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Roger Johansson does a great job of covering usability issues on the web.</li>
<li>
<h4>                     <a href="http://www.90percentofeverything.com">90 Percent of Everything: Usability Blog</a> <a href="http://www.90percentofeverything.com/feed/"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Harry Brignull and Andy Baker cover usability design both on the web and in client apps.</li>
<li>
<h4>                     <a href="http://miksovsky.blogs.com/flowstate/">flow|state</a> <a href="http://miksovsky.blogs.com/flowstate/index.rdf"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Usability fascinates me, and this is one of the best usability blogs I&#8217;ve ever seen.  Updates are infrequent, but always incredibly insightful.</li>
<li>
<h4>                     <a href="http://looksgoodworkswell.blogspot.com/">Looks Good Works Well</a> <a href="http://feeds.feedburner.com/LooksGoodWorksWell"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Bill Scott left Yahoo! for Netflix but we won&#8217;t hold it against him.  His UI design comments are fantastic.</li>
<li>
<h4>                     <a href="http://theresaneil.wordpress.com">Theresaneil&#8217;s Weblog</a> <a href="http://theresaneil.wordpress.com/feed/"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Another really fantastic UI blog.  I wish there were a lot more done this well.</li>
</ul>
</li>
<li>
<h2>Web Development</h2>
<ul>
<li>
<h4>                     <a href="http://www.alistapart.com/">A List Apart</a> <a href="http://www.alistapart.com/rss.xml"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Great writers and a ton of content makes this a great resource.  Doesn&#8217;t update that often, but always great content.</li>
<li>
<h4>                     <a href="http://bitesizestandards.com/">Bite Size Standards</a> <a href="http://feeds.feedburner.com/bitesizestandards"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Tiny little nuggets of web knowledge, updates infrequently but with useful info.</li>
<li>
<h4>                     <a href="http://ajaxian.com">Ajaxian</a> <a href="http://www.ajaxian.com/atom.xml"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Ajaxian&#8217;s great about updating with the newest and greatest javascript libraries and techniques.</li>
<li>
<h4>                     <a href="http://www.bartelme.at/journal/">Bartelme Design – Journal</a> <a href="http://feeds.feedburner.com/bartelme/journal"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Small Design firm based out of Austria that posts nice wallpapers and some decent articles every now and then.</li>
<li>
<h4>                     <a href="http://www.artypapers.com/csshelppile/">CSS Help Pile</a> <a href="http://www.artypapers.com/csshelppile/rss.php"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Monster collection of CSS tips and tricks, always a nice reference to have around.</li>
<li>
<h4>                     <a href="http://www.evotech.net/blog">CSS, JavaScript and XHTML Explained</a> <a href="http://www.evotech.net/blog/feed/atom/"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Browser quirks, CSS techniques, all sorts of stuff.  Updated rarely.</li>
<li>
<h4>                     <a href="http://www.webstandards.org/action/dstf">DOM Scripting Task Force</a> <a href="http://www.webstandards.org/action/dstf/?feed=rss2"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Unofficial group dedicated to promoting good Javascript, I can get behind that goal.</li>
<li>
<h4>                     <a href="http://blog.360.yahoo.com/blog-TBPekxc1dLNy5DOloPfzVvFIVOWMB0li">Douglas Crockford&#8217;s The Department of Style</a> <a href="http://blog.360.yahoo.com/rss-TBPekxc1dLNy5DOloPfzVvFIVOWMB0li"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Crockford discovered JSON and writes great articles about Javascript best practices.  Also see <a href="http://javascript.crockford.com/">javascript.crockford.com</a> and <a href="http://jslint.com">JSLint.com</a>.</li>
<li>
<h4>                     <a href="http://www.dustindiaz.com">Dustin Diaz</a> <a href="http://feeds.feedburner.com/WSwI"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>A Googler (we won&#8217;t hold it against him) yet he still loves YUI (yay!).  Produces a lot of really interesting code snippets.</li>
<li>
<h4>                     <a href="http://www.fiftyfoureleven.com/weblog">Fiftyfoureleven.com</a> <a href="http://www.fiftyfoureleven.com/sandbox/weblog/rss/summary.xml"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Mike Papageorge runs this general web developer resource/weblog.  Good stuff though getting a little stale.</li>
<li>
<h4>                     <a href="http://www.getfirebug.com/blog">Firebug &#8211; Web Development Evolved</a> <a href="http://www.getfirebug.com/blog/?feed=rss2"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Firebug development blog, updates almost never but good to have a subscription to in case it does.</li>
<li>
<h4>                     <a href="http://foohack.com">Foo Hack</a> <a href="http://foohack.com/feed/"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Isaac Schlueter is a fellow Yahoo! and writes some fantastic pieces about web development.</li>
<li>
<h4>                     <a href="http://garrettdimon.com">Garrett Dimon</a> <a href="http://feeds.feedburner.com/garrettdimoncom"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Garrett Dimon&#8217;s weblog is wonderfully minimal, yet still provides really great insights into the development process.</li>
<li>
<h4>                     <a href="http://blog.360.yahoo.com/blog-ktYYK_s5fqJ2Hu1ryv2QSL0-?cq=1">HedgerWow`s Blog</a> <a href="http://blog.360.yahoo.com/rss-ktYYK_s5fqJ2Hu1ryv2QSL0-?cq=1"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>I worked with Hedger last summer, he&#8217;s a true mad scientist in the world of web developers.  Seriously, I have no idea how he comes up with most of this but it&#8217;s insane and amazing.</li>
<li>
<h4>                     <a href="http://ifelse.co.uk">If..Else Log</a> <a href="http://ifelse.co.uk/feed/main/"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Only occasionally development related, but still a good read.</li>
<li>
<h4>                     <a href="http://www.joehewitt.com/">JoeHewitt.com</a> <a href="http://www.joehewitt.com/index.xml"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Joe created Firebug, so you know he&#8217;s pretty damn smart.  Too bad his site appears to be unloved these days. Staying subscribed just in case!</li>
<li>
<h4>                     <a href="http://ejohn.org">John Resig</a> <a href="http://feeds.feedburner.com/JohnResig"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Author of JQuery and an all-around Javascript genius, I love reading about John&#8217;s continuing adventures.</li>
<li>
<h4>                     <a href="http://www.johnniemanzari.com/">Johnnie Manzari</a> <a href="http://www.johnniemanzari.com/index.rdf"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Interesting observations about the web, definitely worth checking out.</li>
<li>
<h4>                     <a href="http://www.julienlecomte.net/blog">Julien Lecomte&#8217;s Blog</a> <a href="http://www.julienlecomte.net/blog/feed/"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Julien&#8217;s the author of the YUI compressor and consistenly posts things you should be reading.</li>
<li>
<h4>                     <a href="http://mattsnider.com">Matt Snider JavaScript Resource</a> <a href="http://mattsnider.com/feed/atom/"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Matt Snider does a great job of breaking down JS and investigating all the 8 bajillion frameworks floating around these days.</li>
<li>
<h4>                     <a href="http://nate.koechley.com/blog">Nate Koechley&#8217;s Blog</a> <a href="http://feeds.feedburner.com/NateKoechleysBlog"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>One of the main YUI guys, Nate&#8217;s super smart and consistently posts interesting stuff. Not always web dev related, but always worth checking out.</li>
<li>
<h4>                     <a href="http://particletree.com/">Particletree RSS Digest</a> <a href="http://particletree.com/rss/"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Great articles, wish they&#8217;d start updating again a bit more regularly.</li>
<li>
<h4>                     <a href="http://www.petefreitag.com/">Pete Freitag&#8217;s Homepage</a> <a href="http://www.petefreitag.com/rss/"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Pete&#8217;s a Cold Fusion guy but still posts things that apply to web dev in general.</li>
<li>
<h4>                     <a href="http://ryan.wordpress.com">Ryan on WordPress</a> <a href="http://ryan.wordpress.com/feed/"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>I like WordPress an awful lot, so keeping tabs on its development is a good idea.</li>
<li>
<h4>                     <a href="http://www.schillmania.com/">Schillmania: DHTML and other client-side experiments</a> <a href="http://www.schillmania.com/content/schillmania_rss.xml"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Scott Schiller is a web dev genius. I have no idea how he&#8217;s so good at what he does, I wish I did.  He&#8217;s at Flickr now, before that he worked on the really impressive new Y! Photos that was canned.</li>
<li>
<h4>                     <a href="http://simonwillison.net/">Simon Willison&#8217;s Weblog Entries</a> <a href="http://feeds.simonwillison.net/swn-entries"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Django co-creator, Simon also writes a lot about OpenID.</li>
<li>
<h4>                     <a href="http://www.sitepoint.com/">SitePoint.com</a> <a href="http://feeds.pheedo.com/sitepoint_recent"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Lots of good articles to be found here.</li>
<li>
<h4>                     <a href="http://snook.ca/jonathan/">snook.ca</a> <a href="http://www.snook.ca/jonathan/index.rdf"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Lots of PHP talk, it&#8217;s good stuff.</li>
<li>
<h4>                     <a href="http://www.solutionwatch.com">Solution Watch</a> <a href="http://feeds.feedburner.com/SolutionWatch"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Features new websites that do things well.  Good for keeping up with the current state of web dev.</li>
<li>
<h4>                     <a href="http://www.thinkvitamin.com/">Vitamin Master Feed</a> <a href="http://feeds.feedburner.com/vitaminmasterfeed"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Vitamin is kind of like A List Apart, another big group of contributors writing amazing articles.</li>
<li>
<h4>                     <a href="http://wordpress.org/development">WordPress Development Blog</a> <a href="http://wordpress.org/development/feed/"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Keeping tabs on WP development, even if I don&#8217;t have my hands into the guts as much as I used to.</li>
</ul>
</li>
<li>
<h2>General Development</h2>
<ul>
<li>
<h4>                     <a href="http://www.codinghorror.com/blog/">Coding Horror</a> <a href="http://feeds.feedburner.com/codinghorror/"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Jeff Atwood&#8217;s posts are always well thought out and engaging, I love his blog.</li>
<li>
<h4>                     <a href="http://www.joelonsoftware.com">Joel on Software</a> <a href="http://www.joelonsoftware.com/rss.xml"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Joel Spolsky writes about software development from a very pratical place, having done quite a lot of it himself.</li>
<li>
<h4>                     <a href="http://www.pnotepad.org/">Programmer&#8217;s Notepad</a> <a href="http://www.pnotepad.org/feed/"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Programmer&#8217;s Notepad rocks my world.  I use it every day and love it to pieces.  Keeping up with releases via a feed is tops.</li>
<li>
<h4>                     <a href="http://toys.lerdorf.com/">Rasmus&#8217; Toys Page</a> <a href="http://toys.lerdorf.com/feeds/index.rss2"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Rasmus is really, really smart.  Not surprising, given that he wrote a bunch of PHP (the language itself, not just PHP code).  He&#8217;s another Yahoo! as well.</li>
<li>
<h4>                     <a href="http://the-stickman.com">StickBlog</a> <a href="http://the-stickman.com/feed/"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Lots of good development tips to be found, as well as general programming talk.</li>
<li>
<h4>                     <a href="http://untidy.net/blog">untidy blog » PN</a> <a href="http://untidy.net/blog/category/pn/feed"><img src="http://www.feedicons.com/images/feed-icon-14x14.png" alt="rss icon" /></a></h4>
<p>Programmer&#8217;s Notepad author&#8217;s personal blog.  The feed is just for the PN category, because that&#8217;s the programming related stuff!</li>
</ul>
</li>
</ul>
<p>And just in case you made it to the end of that huge list, here&#8217;s a link to everything I read on a not-at-all daily basis.  It&#8217;s a little ridiculous.  <a href="http://www.bloglines.com/public/tivac">My Feeds</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://patcavit.com/2008/02/13/sites-i-read-that-are-worth-checking-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Work Work Work</title>
		<link>http://patcavit.com/2008/01/18/work-work-work/</link>
		<comments>http://patcavit.com/2008/01/18/work-work-work/#comments</comments>
		<pubDate>Sat, 19 Jan 2008 01:18:28 +0000</pubDate>
		<dc:creator>Pat Cavit</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://patcavit.com/2008/01/18/work-work-work/</guid>
		<description><![CDATA[I am insanely busy with work stuff, but we&#8217;re in the home stretch and that&#8217;s really exciting. I will share more about what I&#8217;ve been doing soon!]]></description>
			<content:encoded><![CDATA[<p>I am insanely busy with work stuff, but we&#8217;re in the home stretch and that&#8217;s really exciting.  I will share more about what I&#8217;ve been doing soon!</p>
<p><!-- ckey="497061A9" --></p>
]]></content:encoded>
			<wfw:commentRss>http://patcavit.com/2008/01/18/work-work-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

