<?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>Visualrinse &#124; Design and Development by Chad Udell &#187; School</title>
	<atom:link href="http://visualrinse.com/category/school/feed/" rel="self" type="application/rss+xml" />
	<link>http://visualrinse.com</link>
	<description>Design, Development, Technology and My Life.</description>
	<lastBuildDate>Thu, 22 Sep 2011 23:21:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Teaching Web Design: The Redline Document</title>
		<link>http://visualrinse.com/2011/05/15/teaching-web-design-the-redline-document/</link>
		<comments>http://visualrinse.com/2011/05/15/teaching-web-design-the-redline-document/#comments</comments>
		<pubDate>Sun, 15 May 2011 16:17:03 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[School]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://visualrinse.com/?p=1227</guid>
		<description><![CDATA[I&#8217;ve been teaching web design for the last 8 years at Bradley University. In the course, I focus on web standards and the design process with my students. I&#8217;d like to share an idea I had some time ago and have been using for the last several semesters with some pretty good success. This concept [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been teaching web design for the last 8 years at <a href="http://slane.bradley.edu">Bradley University</a>. In the course, I focus on web standards and the design process with my students. I&#8217;d like to share an idea I had some time ago and have been using for the last several semesters with some pretty good success. This concept is called, &#8220;The Redline Document&#8221;. I&#8217;ll explain it in just a moment, but first a little background.</p>
<p>In producing a website design, there are replicable steps you should take in order to ensure success, this is a &#8220;Process&#8221;, if you will. This process should be sharable, transferrable to others on your team and easy to implement. Eventually, the steps should become like second nature to you and your team members. Hopefully, at some point, anyone on your team will be able to step in and take over at virtually any step in the process. It&#8217;s crucial for any company that produces creative and technical solutions to adhere to a process in order to build a business and elevate beyond the status of simply being a &#8220;job shop&#8221; or &#8220;making ends meet&#8221;. At the Iona Group, we use such a process called &#8220;The 4D Process&#8221;. You can learn more about it <a href="http://www.ionagroup.com/process/">here</a>.</p>
<p>I teach an abbreviated form of the process we use at The Iona Group to my students in my course at Bradley. This simplified process is easy to grasp after a couple quick projects and works great for students, as it allows for a lot of input over the course of the effort. This works for academic settings where the instructor or peers need to offer critique at key project milestones, but it also transfers well to the professional world where you may distributing the workload and looking for stakeholder approvals. In client work, I strongly believe it is best to engage the clients early and often in decisions that affect the project. Each successive step in the process should be a minor reveal, not a massive &#8220;AHA!&#8221;, IMHO.</p>
<p>Some example design phase deliverables in a web design project would be as follows (I&#8217;m skipping past the strategy and definition dleiverables in this post, maybe we&#8217;ll cover those some other time):</p>
<ul>
<li>Sketch</li>
<li>Wireframe</li>
<li>Moodboard</li>
<li>Mockup</li>
</ul>
<p>Those would be documents you could share with your client and get feedback, critique, suggestions, and other stakeholder input. There is one deliverable missing from that list that I have coined &#8220;<strong>The Redline</strong>&#8220;. The Redline is not a document shared with the client, but rather a document used internally to ensure the designer, developers, copywriters and SEO experts are all on the same page when it comes to hierarchy, standards implementation and the details of templating the website. This document also serves a valuable purpose to junior level team members in how to structure their efforts. It&#8217;s basically a webpage equivalent to an engineer&#8217;s CAD drawing of an engine or other mechanical part. In our class we create the Redline document after the mockup phase, but it&#8217;s easy to see that there could be a lot of value in creating a Redline as part of the wireframing process. This document works well in a web design class setting to help teach students about page structure, semantics and design hierarchy.</p>
<p>This document also reinforces an oft quoted Zeldman-ism:</p>
<blockquote><p><a href="http://twitter.com/#!/zeldman/statuses/804159148">Content precedes design. Design in the absence of content is not design, it&#8217;s decoration.</a></p></blockquote>
<p style="text-align: left;">I have produced these documents in the past using a printout and a fine-point red Sharpie marker, but the example here was made using <a href="http://www.omnigroup.com/">Omnigraffle Pro</a>. So, let&#8217;s see an example of &#8220;The Redline&#8221; (click the image for a larger view):<a href="http://visualrinse.com/wp-content/uploads/2011/05/wireframe_dissection.jpg" target="_blank"><img class="size-medium wp-image-1235 aligncenter" style="display: block; clear: both;" title="Redline Example" src="http://visualrinse.com/wp-content/uploads/2011/05/wireframe_dissection.jpg" alt="" width="514" height="403" /></a></p>
<p>Essentially every element on the page is bounded by a red box, and in each box, the HTML tag that will be used in the creation of the page&#8217;s structure is clearly listed. Yes, I realize this should be elementary for an advanced web designer; and yes, once you become adequately skilled you may not need this document. However, for a junior level developer, or for a distributed team that relies heavily on standards based SEO and proper marked up pages, this document has a high amount of value. What benefits does it bring to such a team? Consider these:</p>
<ul>
<li><strong>Prevents HTML &#8220;Writer&#8217;s Block&#8221;</strong> &#8211; There is no question that junior web designers struggle at where to start once they open a text editor. How will the nav bar be structured? How about that sidebar? What constitutes an H2, an H3, etc?</li>
<li><strong>Puts Proper Emphasis On Page Structure</strong> &#8211; One of the very best ways to SEO optimize is to start out with good bones. By looking at how your content is placed in the page you can make sure that tag weight won&#8217;t interfere with proper indexing or page accessibility. Sure, it&#8217;s great to have a website with a pretty face, but without good bones, you&#8217;re never going to have a design that truly performs. The Redline forces you to think critically about how your page content and structure live together.</li>
<li><strong>Separates Design Strategy from Design Production</strong> &#8211; Let&#8217;s face it. Thinking is expensive. You may only have a couple of high end designers capable of producing scalable, SEO friendly standards based designs. You probably have a much larger base of coders capable of writing HTML with some guidance. This allows the team to divide and conquer, with individuals adding value where they can really shine.</li>
<li><strong>Eliminates Divitis Before It Begins</strong> &#8211; Unfocused HTML writing results in poorly formed markup. No question about it. Writing without a plan is a recipe for disaster. This document is that plan.</li>
<li><strong>Documents the Design for Historical Purposes/Recordkeeping</strong> &#8211; As a website ages, the pages get edited, content maintenance systems get patched, templates are tweaked, etc. a website can get rickety. The redline document allows a team member to perform a development/design soft reset down the road. If you want to rollback the site later to the SEO optimized version that everyone agreed on, unless you have pristine document history or version control systems in place you may have difficulty reinstating the original template. The redline will at least allow you to recreate it with minimal fuss.</li>
<li><strong>Reduces Coding Time</strong> &#8211; No question about it, it&#8217;s easier to &#8220;restructure your page&#8221; semantically via diagrams than it is to rewrite HTML time and time again. Just like wireframes help short-circuit the &#8220;Photoshop Mockup Death Spiral&#8221;, this document helps accelerate the development phase.</li>
<li><strong>Establishes and Document Naming Convention for Classes and Elements Ahead of Time</strong> &#8211; When adding the ids and classes to the document, you are in essence documenting the framework for the CSS and the JavaScript to be integrated with the designs. This really will make sure a distributed team is all on the same page (pun intended).</li>
<li><strong>Empowers the Design Team To Help Developers Adhere to Standards</strong> &#8211; I&#8217;m not naming names, but I have come into a number of situations where backend developers have been entrusted to write the markup for the web designs they have been provided. These developers mean well, and can write great SQL and business logic, but page templating isn&#8217;t there thing. As anyone knows, a poorly structured DOM is going to produce invalid HTML pages. Invalid HTML documents are NOT going to be cross browser compatible.</li>
</ul>
<p>So, there you go. I hope this info helps you either learn web design for the first time, or maybe even enhance the process you are using at work to help maximize productivity and increase your overall web design quality. Are you using a similar document in your process? I&#8217;d like to hear about how you are implementing planning documents like this to jumpstart your designs.</p>
]]></content:encoded>
			<wfw:commentRss>http://visualrinse.com/2011/05/15/teaching-web-design-the-redline-document/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Rock Show&#8230; You came to see a Rock Show.</title>
		<link>http://visualrinse.com/2011/01/21/rock-show-you-came-to-see-a-rock-show/</link>
		<comments>http://visualrinse.com/2011/01/21/rock-show-you-came-to-see-a-rock-show/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 15:24:19 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://visualrinse.com/?p=1192</guid>
		<description><![CDATA[Don&#8217;t miss this tonight. Wowzers. For a lot more info on this event&#8230; check out the official page. I&#8217;m so proud to be faculty at a University providing great activities to students. Especially when these activities are novel, engaging and produced by our students in the INteractive Media department where I teach! Sweet!]]></description>
			<content:encoded><![CDATA[<p>Don&#8217;t miss this tonight. Wowzers.<br />
<iframe title="YouTube video player" class="youtube-player" type="text/html" width="524" height="325" src="http://www.youtube.com/embed/Ck6vtUdPfuU?rel=0" frameborder="0" allowFullScreen></iframe></p>
<p>For a lot more info on this event&#8230; check out the <a href="http://slane.bradley.edu/slane-college/bradley-late-night-rock-show">official page</a>.</p>
<p>I&#8217;m so proud to be faculty at a University providing great activities to students. Especially when these activities are novel, engaging and produced by our students in the INteractive Media department where I teach! Sweet!</p>
]]></content:encoded>
			<wfw:commentRss>http://visualrinse.com/2011/01/21/rock-show-you-came-to-see-a-rock-show/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A Baby So Ugly, Even A Mother Couldn&#8217;t Love It: Web Standards. AKA: Just Keep Swimming</title>
		<link>http://visualrinse.com/2009/07/07/a-baby-so-ugly-even-a-mother-couldnt-love-it-web-standards/</link>
		<comments>http://visualrinse.com/2009/07/07/a-baby-so-ugly-even-a-mother-couldnt-love-it-web-standards/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 03:37:58 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[School]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://visualrinse.com/?p=680</guid>
		<description><![CDATA[I may be one of the most conflicted web designers on the planet. Seriously. I write Flash/Flex code about as often as I work in HTML/CSS. I love &#8216;em both. I hate &#8216;em both. Each tool has their own pluses and minuses. I speak often about my love for Flash here, so let&#8217;s change gears [...]]]></description>
			<content:encoded><![CDATA[<p>I may be one of the most conflicted web designers on the planet. Seriously. I write Flash/Flex code about as often as I work in HTML/CSS. I love &#8216;em both. I hate &#8216;em both. Each tool has their own pluses and minuses. I speak often about my love for Flash here, so let&#8217;s change gears for a second. Let&#8217;s get provocative even&#8230; It&#8217;s got to be said. What the fuck is the deal with these standards writers, working groups and developers these days?</p>
<p>Why do I ask this&#8230; Well, you all have Flash/Silverlight on the ropes, but you are giving them a free pass. How so? With the release of HTML 5&#8242;s video tag, canvas, yummy semantic tags and other advanced markup goodies&#8230; pretty much any major site, (eg, Facebook, YouTube, Google Video, Vimeo, etc), could just about up and walk away from Flash with the next major revision of Internet Explorer (hopefully 9 will come around). You see, Safari 4, Firefox 3.5 are out and they like to party. They&#8217;re out playing video all night long and swinging from the rafters. The biggest draw on the web today, video, is by and large delivered via Flash. Now, I wouldn&#8217;t be so brash as to say that Flash&#8217;s days are numbered by any stretch by this developing situation. There are a lot of things that Flash can do that simply can&#8217;t be replicated, even with JQuery (my fave JS framework), Processing.js or the new Scripty 2. However, these new browsers really take care of a ton of things that Flash is needed for right now like video playback and basic RIA implementations.</p>
<p>I don&#8217;t mean to be disrespectful to the standards group, W3C, etc, but with the competing standard, arguably, an anti-standard, Flash, on the ropes, why are you not focusing and assisting the devs in the trenches, the browser and tool developers and the web designers in the cube farms at MS, Adobe, etc? It seems as though there is a fracturing, rather than a coalescing of resources and forces in the standards arena. Don&#8217;t believe me? <a href="http://www.alistapart.com/articles/semanticsinhtml5/">Check this out</a>. And <a href="http://www.alistapart.com/articles/previewofhtml5">this</a>. And then for a laugh, <a href="http://ishtml5readyyet.com/">this</a>. It&#8217;s a bit liek the wild west again. I&#8217;m getting flashbacks to 1999-2000, when tables and spacer.gifs were clutched in the dying grips of every SimpleText coder and every GifBuilder jockey.</p>
<p>Sound audacious? I know, right.  But look at the evidence. Twitter is abuzz with the recent additions to HTML5, with new hot samples being posted in playgrounds daily, what it means for Flash devs and on and on (simply run a search there and see). Beyond that, a number of high profile standards focused designers are on the warpath right now, speaking out and writing with a virulence not seen since the height of the browser wars (yes, I&#8217;m that old). For example, Zeldman has had a series of fantastic posts lately laying it out on the line talking about <a href="http://www.zeldman.com/2009/07/02/xhtml-wtf/">the demise of the XHTML standards group</a>, <a href="http://www.zeldman.com/2009/07/07/in-defense-of-web-developers/">defending the use of standards in the face of adversity</a> and Eric Meyer has recently started giving a talk on &#8220;how Javascript will save us all&#8221;, in which he recommends using Javscript (favoring no specific framework, really) to do things that CSS3 and HTML5 do quite well. There are a number of other examples out there just like this. ‚Äì Full disclosure, I use both Meyer&#8217;s and Zeldman&#8217;s books in my classes.</p>
<p>Talk about cutting off your nose and all of that rot. I love standards just as much as anyone, but when the big boys are changing their tunes about what constitutes good standards implementation (separate content &#8211; HTML from presentation &#8211; CSS and behavior &#8211; JS) in order to remain within the toolset and bowing down to the same boards they fought against a decade ago to get CSS2 adopted, I start to get a bit squeamish. You see, I have to teach this stuff to students. Teaching standards based design was before a lot like teaching a foreign language. A language a bit like Japanese in that it had rules that are reasonable cut and dry and work well with each other because agreement on how they work was decided upon and then used! Now, it&#8217;s like a mish-mash of bad drunken Engrish. Too many exceptions, IMHO. It&#8217;s like &#8220;i before e&#8221;, but with end tags and doctypes. *Blech*</p>
<p>Am I abandoning web standards? Nope. Though, I&#8217;ll probably be a little more likely to make an exception to the rule in what constitutes a good use case for it vs a plug-in, though. After all, we have until 2022, right? Thoughts? What are you doing to keep your standards based design skills sharp? My advice, just keep swimming.<img src="http://visualrinse.com/wp-content/uploads/2009/07/105.jpg" alt="105" title="105" width="485" height="260" class="alignnone size-full wp-image-683" /></p>
]]></content:encoded>
			<wfw:commentRss>http://visualrinse.com/2009/07/07/a-baby-so-ugly-even-a-mother-couldnt-love-it-web-standards/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Using CSS Zen Garden as a Teaching Tool For New Web Designers</title>
		<link>http://visualrinse.com/2009/02/15/using-css-zen-garden-as-a-teaching-tool-for-new-web-designers/</link>
		<comments>http://visualrinse.com/2009/02/15/using-css-zen-garden-as-a-teaching-tool-for-new-web-designers/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 03:16:32 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[School]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://visualrinse.com/?p=549</guid>
		<description><![CDATA[I teach a web design course at Bradley University. &#8220;Designing for the World Wide Web&#8221; is the course title. The focus of the course is standards based web design using CSS and XHTML, coupled with a little bit of behavior layer DOM scripting using JavaScript. We use JS to place media files and validate some [...]]]></description>
			<content:encoded><![CDATA[<p>I teach a web design course at Bradley University. &#8220;Designing for the World Wide Web&#8221; is the course title. The focus of the course is standards based web design using CSS and XHTML, coupled with a little bit of behavior layer DOM scripting using JavaScript. We use JS to place media files and validate some forms, etc. After the first couple classes and some demos on how to create a standards compliant XHTML document, we move on to teaching CSS. That&#8217;s where this post comes in. One of the best places on the web to see the power of CSS is of course <a href="http://csszengarden.com" target="_blank">CSSZenGarden.com</a>, and I like to use that site as a good intro to CSS design and using web design tools like Firebug, and the WebDeveloper toolbar. The assignment is fairly straight-forward.</p>
<ol>
<li>Visit the site, save the HTML file to your computer.</li>
<li>Make a CSS file and save it in the same directory as your HTML file.</li>
<li>You are allowed to make only one edit to the HTML file, changing the import statement to load in your newly created CSS file.</li>
<li>Choose a non Flash based web site design you would like to emulate and open it up in your web browser. (It works best if the site is a site designed with standards, using CSS for layout instead of tables, etc.) The idea is that you are attempting to recreate a site&#8217;s style, not one specific page. Therefore, it may be best to open up several pages of the site to see how images, lists, menus, headers, paragraphs etc are handled in various types of layouts and situations.</li>
<li>Use Firebug&#8217;s inspection tools or the WebDeveloper&#8217;s Toolbar inspection set to discern what sorts of CSS properties are being modified. Make note of these.</li>
<li>Apply the required CSS attributes to our local copy of CSS Zen Garden one by one.</li>
<li>Work the page&#8217;s typography first, then padding and element margins, borders and backgrounds next, finalizing on placing the elements on page using floats, positioning, etc. You may need to create, make or replicate images in order to fully realize your design.</li>
<li>Finish your work and upload it!</li>
</ol>
<p>This is a relatively simple project and works well on so many levels. It gets you up to speed on what attributes CSS can modify on elements in an HTML page. It allows you as a designer to focus only on the style and not writing page structure or HTML markup. It serves a great introduction to advanced CSS concepts like contextual/descendant selectors in order to introduce variety in the designs and style the various lists in different fashions. It works as a job training aid because, often as a junior webdesigner on a project you may be required to follow the lead established by another designer on a project. It forces you to be creative with your CSS because you don&#8217;t have any flexibility to change the markup. It teaches you how to analyze a page&#8217;s design in a very methodical, detail oriented fashion. It requires that you be flexible and able to interpret rules that may use relative measurements that no longer apply to your more scaled back implementation. I like that the students are working towards a design goal in mind, rather then having to concept it themselves, allowing them to focus on the implementation. It&#8217;s easy to quantify how closely a design mimics the look of something else.</p>
<p>I am consistently amazed with the quality of work done by the students on this project. Sure there are stumbling blocks along the way, but overall it&#8217;s a resounding success and a great way to get student thinking about rules based design for the web.</p>
<p>Some things I don&#8217;t focus on in this assignment:</p>
<ol>
<li>IE compatibility, since we can&#8217;t create conditional stylesheets in the markup it would be difficult to expect aesthetic parity in Internet Explorer.</li>
<li>Doing things the &#8220;exactly right&#8221; way. If a student needs to use large negative margins or non standard positioning techniques to achieve the look and feel of the other site, I&#8217;m fine with that.</li>
<li>Perfect image quality. It would be a lot to ask to have the new students attempt graphic design techniques used on some of these sites.</li>
</ol>
<p>So, here are a couple sample pages I have created. <a href="http://visualrinse.com/365/zen/" target="_blank">This one</a> is done in the style of my blog. <a href="http://visualrinse.com/365/adobe_zen/" target="_blank">This one</a> looks like an Adobe.com page. Each one looks pretty darn close to the inspiration site and didn&#8217;t require and editing of the markup.</p>
<p style="text-align: center;"><a href="http://visualrinse.com/wp-content/uploads/2009/02/picture-11.png"><img class="size-medium wp-image-552 aligncenter" title="picture-11_scaled" src="http://visualrinse.com/wp-content/uploads/2009/02/picture-11_scaled.jpg" alt="" /></a></p>
<p>How about you? Have you ever created a CSSZen Garden page? If you are teaching CSS to students, how do you get them started? I&#8217;m always interested in hearing</p>
]]></content:encoded>
			<wfw:commentRss>http://visualrinse.com/2009/02/15/using-css-zen-garden-as-a-teaching-tool-for-new-web-designers/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Been Crazy Busy&#8230; A Few Updates</title>
		<link>http://visualrinse.com/2008/10/22/been-crazy-busy-a-few-updates/</link>
		<comments>http://visualrinse.com/2008/10/22/been-crazy-busy-a-few-updates/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 16:55:26 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[School]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://visualrinse.com/?p=424</guid>
		<description><![CDATA[Sorry for not posting more recently&#8230; I&#8217;ve been buried! I spent the last few days in Colorado, it was beautiful! I was the best man in a wedding there (in Estes Park), you can see some photos from the trip here. CO is a nice place with fantastic scenery and super tasty microbrews. Highly recommended. [...]]]></description>
			<content:encoded><![CDATA[<p>Sorry for not posting more recently&#8230; I&#8217;ve been buried!</p>
<p>I spent the last few days in Colorado, it was beautiful! I was the best man in a wedding there (in Estes Park), you can see some photos from the trip <a href="http://flickr.com/photos/janebondi/sets/72157608206968900/" target="_blank">here</a>. CO is a nice place with fantastic scenery and super tasty microbrews. Highly recommended.</p>
<p>While I was there, I got to meet <a href="http://scalenine.com" target="_blank">Juan Sanchez</a>, designer at <a href="http://www.effectiveui.com/" target="_blank">Effective UI</a>, and one of the main contributors to <a href="http://degrafa.com" target="_blank">DeGrafa</a>. He mentioned that Scalenine&#8217;s skin contest had completed. <a href="http://scalenine.com/blog" target="_blank">What a great pile of entries</a>! I can&#8217;t wait to see the library grow and serve as the premier resource for Flex Designers on the web. How cool. Even cooler, was the fact that my Coworker, Heather Ford, was one of the winners with her <a href="http://scalenine.com/themes/discotype/DiscoType.html" target="_blank">DiscoType Theme</a>! Awesome.</p>
<p>Beyond that, my students are begnining to build some mashups and make some progress learning Flex&#8230; Some recent ones they&#8217;ve made&#8230; <a href="http://shaungreiner.com/GeekValhalla/" target="_blank">GeekVahalla </a>(a tech focused RSS Reader), <a href="http://shaungreiner.com/TweetTally/" target="_blank">TweetTally</a> (a Twitter Tag cloud search). <a href="http://www.majawi.net/droppedpasses/main.html" target="_blank">Dropped Passes</a> (a sports focused RSS Reader). I hope to continue to post more as they pile up.</p>
<p>Finally, at The Iona Group, we are hard at work on our eLearning development platform, Doctum. We&#8217;re gearing up to launch and start talking to people/demoing it at <a href="http://www.elearningguild.com/content.cfm?selection=doc.918" target="_blank">DevLearn08</a>. If you&#8217;d like to be made aware when we launch, head on over to <a href="http://www.doctumlearning.com" target="_blank">DoctumLearning.com</a> to get on our list of contacts. We have a full site launching soon with features, videos etc explanining what makes it different, but for now it&#8217;s kind of in a hush hush mode. Needless to say lots of work is going on and the system is shaping up to be pretty amazing, if I do say so myself.</p>
]]></content:encoded>
			<wfw:commentRss>http://visualrinse.com/2008/10/22/been-crazy-busy-a-few-updates/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How To: Build a Simple RSS Reader with JQuery</title>
		<link>http://visualrinse.com/2008/09/24/how-to-build-a-simple-rss-reader-with-jquery/</link>
		<comments>http://visualrinse.com/2008/09/24/how-to-build-a-simple-rss-reader-with-jquery/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 03:15:31 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Mashups]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://visualrinse.com/?p=417</guid>
		<description><![CDATA[This one&#8217;s from my Mashups class. The first project, was to build an RSS Reader. I&#8217;ve already posted a quick tutorial on how to build an RSS reader with Adobe Flex. Here&#8217;s a simple one that uses JQuery to get the feeds and then loop through them to output them to the browser window. Piece [...]]]></description>
			<content:encoded><![CDATA[<p>This one&#8217;s from <a href="http://visualrinse.com/2008/06/19/announcing-a-new-class-for-the-fall-semester-mm491-mashups-and-rias/">my Mashups class</a>. The first project, was to build an RSS Reader. I&#8217;ve already posted <a href="http://visualrinse.com/2008/09/14/how-to-make-a-simple-rss-reader-with-adobe-flex/">a quick tutorial on how to build an RSS reader with Adobe Flex</a>. Here&#8217;s a simple one that uses JQuery to get the feeds and then loop through them to output them to the browser window. Piece of cake for many of you, yes, but if you have never used anything but the DOM and plain ol&#8217; JavaScript, you may be scared by the whole AJAX fad on teh intarwebs these days. JQuery makes it super easy to look like a Javascript rockstar. I teach a lot of students that haven&#8217;t ever touched a library of code like JQuery before, so tutorials like this are pretty valuable to some readers..<br />
<span id="more-417"></span><br />
First, create an XHTML file.</p>

<div class="wp_syntax"><div class="code"><pre class="xml"><span style="color: #00bbdd;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</span>
<span style="color: #00bbdd;">        &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;html</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/1999/xhtml&quot;</span> <span style="color: #000066;">xml:lang</span>=<span style="color: #ff0000;">&quot;en&quot;</span> <span style="color: #000066;">lang</span>=<span style="color: #ff0000;">&quot;en&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;head<span style="font-weight: bold; color: black;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;meta</span> <span style="color: #000066;">http-equiv</span>=<span style="color: #ff0000;">&quot;content-type&quot;</span> <span style="color: #000066;">content</span>=<span style="color: #ff0000;">&quot;text/html; charset=utf-8&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;title<span style="font-weight: bold; color: black;">&gt;</span></span></span>Untitled<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/title<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/head<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;body<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/body<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/html<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre></div></div>

<p>Then, download my favorite JavaScript API, JQuery.</p>
<p>Link the JS file in by adding this tag in the head:</p>

<div class="wp_syntax"><div class="code"><pre class="xml"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;script</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;jquery-1.2.6.min.js&quot;</span> <span style="color: #000066;">charset</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/script<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre></div></div>

<p>Once we have JQuery linked in, it&#8217;s time to write some HTML&#8230; I created a couple &lt;div&gt; elements to act as wrappers/containers for the page&#8217;s content. I used an &lt;img&gt; to put a nice graphic header in the page, then added some semantic XHTML elements, an &lt;h1&gt; for the text header, a &lt;form&gt; tag to hold a &lt;select&gt; menu populated with a few of my favorite Flash blogs as the &lt;option&gt; elements setting their URLs as the value attributes for those, and of course a &lt;label&gt; to let everyone know they should &#8220;Select a Feed&#8221; via that menu. After the tags are closed, I put one more div after the form to contain the feed results after they are retrieved. I add id attributes liberally throughout the tags, as I may need to style them or use them in my JQuery reader soon, *hint* *hint*. </p>
<p>If you&#8217;re following along, your code probably looks something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="xml"><span style="color: #00bbdd;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</span>
<span style="color: #00bbdd;">        &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;html</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/1999/xhtml&quot;</span> <span style="color: #000066;">xml:lang</span>=<span style="color: #ff0000;">&quot;en&quot;</span> <span style="color: #000066;">lang</span>=<span style="color: #ff0000;">&quot;en&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;head<span style="font-weight: bold; color: black;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;meta</span> <span style="color: #000066;">http-equiv</span>=<span style="color: #ff0000;">&quot;content-type&quot;</span> <span style="color: #000066;">content</span>=<span style="color: #ff0000;">&quot;text/html; charset=utf-8&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;title<span style="font-weight: bold; color: black;">&gt;</span></span></span>RSS Reader<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/title<span style="font-weight: bold; color: black;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;script</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;jquery-1.2.6.min.js&quot;</span> <span style="color: #000066;">charset</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/script<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/head<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;body<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;div</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;container&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;a</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;visualrinse.com&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;img</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;http://visualrinse.com/wp-content/themes/smooth-dirt-10/header_08v2.jpg&quot;</span> <span style="color: #000066;">alt</span>=<span style="color: #ff0000;">&quot;Visualrinse&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Visualrinse.com&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/a<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;div</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;ui&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;h1<span style="font-weight: bold; color: black;">&gt;</span></span></span>Flash Feed Reader<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/h1<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;form</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;selectParser&quot;</span> <span style="color: #000066;">action</span>=<span style="color: #ff0000;">&quot;&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;label<span style="font-weight: bold; color: black;">&gt;</span></span></span>Select a feed:<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/label<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;select</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;diffFeeds&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;option</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>Select<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/option<span style="font-weight: bold; color: black;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;option</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;http://feeds.feedburner.com/aralbalkan&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>Aral Balkan<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/option<span style="font-weight: bold; color: black;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;option</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;http://www.bit-101.com/blog/?feed=rss2&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>Bit-101<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/option<span style="font-weight: bold; color: black;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;option</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;http://feeds.feedburner.com/peterelst/&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>Peter Elst<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/option<span style="font-weight: bold; color: black;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;option</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;http://www.gskinner.com/blog/index.xml&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>Grant Skinner<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/option<span style="font-weight: bold; color: black;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;option</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;http://blog.andre-michelle.com/feed/&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>Andre Michelle<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/option<span style="font-weight: bold; color: black;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;option</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;http://feeds.feedburner.com/flashmagazine/rss2&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>Flash Magazine<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/option<span style="font-weight: bold; color: black;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;option</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;http://casario.blogs.com/mmworld/rss.xml&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>Marco Casario<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/option<span style="font-weight: bold; color: black;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;option</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;http://www.sephiroth.it/weblog/index.xml&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>Sephiroth<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/option<span style="font-weight: bold; color: black;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;option</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;http://www.quasimondo.com/index.xml&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>Quasimondo<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/option<span style="font-weight: bold; color: black;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;option</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;http://feeds.feedburner.com/sebleedelisle&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>Seb Lee-Delisle<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/option<span style="font-weight: bold; color: black;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;option</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;http://osflash.org/feed.php&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>OS Flash<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/option<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/select<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/form<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/div<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;div</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;feedContent&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
	<span style="color: #ddbb00;">&amp;nbsp;</span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/div<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/div<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/body<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/html<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre></div></div>

<p>Cool&#8230; So, time to add the interactivity. We&#8217;re going to add a script tag to the head area and begin writing a Javascript function. I called mine &#8220;get_rss_feeds()&#8221;. The basic idea behind the function is to use the JQuery api&#8217;s &#8220;get()&#8221; function to grab the URL of the selected item from feedList (the name of our select menu, remember?), then run through each item in the RSS feed, putting those tasty XML elements from the feed like title, pubdate and description into HTML and popping them on the page. Between runs, we&#8217;ll need a way to clear out the div containing the content, so each time a new feed loads, the old content is removed.</p>
<p>So to do this, let&#8217;s put the following code in the Javascript block:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript"><span style="color: #003366; font-weight: bold;">function</span> get_rss_feed<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #009900; font-style: italic;">//clear the content in the div for the next feed.</span>
	$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;#feedContent&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">empty</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #009900; font-style: italic;">//use the JQuery get to grab the URL from the selected item, put the results in to an argument for parsing in the inline function called when the feed retrieval is complete</span>
	$.<span style="color: #006600;">get</span><span style="color: #66cc66;">&#40;</span>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#diffFeeds'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">val</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>d<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
&nbsp;
		<span style="color: #009900; font-style: italic;">//find each 'item' in the file and parse it</span>
		$<span style="color: #66cc66;">&#40;</span>d<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">find</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'item'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">each</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
&nbsp;
			<span style="color: #009900; font-style: italic;">//name the current found item this for this particular loop run</span>
			<span style="color: #003366; font-weight: bold;">var</span> $item = $<span style="color: #66cc66;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #009900; font-style: italic;">// grab the post title</span>
			<span style="color: #003366; font-weight: bold;">var</span> title = $item.<span style="color: #006600;">find</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'title'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">text</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #009900; font-style: italic;">// grab the post's URL</span>
			<span style="color: #003366; font-weight: bold;">var</span> link = $item.<span style="color: #006600;">find</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'link'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">text</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #009900; font-style: italic;">// next, the description</span>
			<span style="color: #003366; font-weight: bold;">var</span> description = $item.<span style="color: #006600;">find</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'description'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">text</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #009900; font-style: italic;">//don't forget the pubdate</span>
			<span style="color: #003366; font-weight: bold;">var</span> pubDate = $item.<span style="color: #006600;">find</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'pubDate'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">text</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #009900; font-style: italic;">// now create a var 'html' to store the markup we're using to output the feed to the browser window</span>
			<span style="color: #003366; font-weight: bold;">var</span> html = <span style="color: #3366CC;">&quot;&lt;div class=<span style="color: #000099; font-weight: bold;">\&quot;</span>entry<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&lt;h2 class=<span style="color: #000099; font-weight: bold;">\&quot;</span>postTitle<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&quot;</span> + title + <span style="color: #3366CC;">&quot;&lt;<span style="color: #000099; font-weight: bold;">\/</span>h2&gt;&quot;</span>;
			html += <span style="color: #3366CC;">&quot;&lt;em class=<span style="color: #000099; font-weight: bold;">\&quot;</span>date<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&quot;</span> + pubDate + <span style="color: #3366CC;">&quot;&lt;/em&gt;&quot;</span>;
			html += <span style="color: #3366CC;">&quot;&lt;p class=<span style="color: #000099; font-weight: bold;">\&quot;</span>description<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&quot;</span> + description + <span style="color: #3366CC;">&quot;&lt;/p&gt;&quot;</span>;
			html += <span style="color: #3366CC;">&quot;&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> + link + <span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span> target=<span style="color: #000099; font-weight: bold;">\&quot;</span>_blank<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;Read More &gt;&gt;&lt;<span style="color: #000099; font-weight: bold;">\/</span>a&gt;&lt;<span style="color: #000099; font-weight: bold;">\/</span>div&gt;&quot;</span>;
&nbsp;
			<span style="color: #009900; font-style: italic;">//put that feed content on the screen!</span>
			$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#feedContent'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">append</span><span style="color: #66cc66;">&#40;</span>$<span style="color: #66cc66;">&#40;</span>html<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;  
		<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #66cc66;">&#125;</span>;</pre></div></div>

<p>Now, besure to add the get_rss_feed function call to the feedList&#8217;s onchange event and you are good to go. With a catch, of course. This will only work when accessed locally via the &#8220;file://&#8221; protocol. IN order to use this online, you&#8217;ll need to circumvent the browser security sandbox and use a middleware proxy to grab the XML and make it local. Here&#8217;s the PHP:</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
	<span style="color: #808080; font-style: italic;">// PHP Proxy</span>
	<span style="color: #808080; font-style: italic;">// Loads a XML from any location. Used with Flash/Flex apps to bypass security restrictions</span>
	<span style="color: #808080; font-style: italic;">// Author: Paulo Fierro</span>
	<span style="color: #808080; font-style: italic;">// January 29, 2006</span>
	<span style="color: #808080; font-style: italic;">// usage: proxy.php?url=http://mysite.com/myxml.xml</span>
&nbsp;
	<span style="color: #0000ff;">$session</span> = curl_init<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_GET</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'url'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>; 	               <span style="color: #808080; font-style: italic;">// Open the Curl session</span>
	curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$session</span>, CURLOPT_HEADER, <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>; 	       <span style="color: #808080; font-style: italic;">// Don't return HTTP headers</span>
	curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$session</span>, CURLOPT_RETURNTRANSFER, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;   <span style="color: #808080; font-style: italic;">// Do return the contents of the call</span>
	<span style="color: #0000ff;">$xml</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$session</span><span style="color: #66cc66;">&#41;</span>; 	                       <span style="color: #808080; font-style: italic;">// Make the call</span>
	<span style="color: #000066;">header</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Content-Type: text/xml&quot;</span><span style="color: #66cc66;">&#41;</span>; 	               <span style="color: #808080; font-style: italic;">// Set the content type appropriately</span>
	<span style="color: #000066;">echo</span> <span style="color: #0000ff;">$xml</span>; 	      <span style="color: #808080; font-style: italic;">// Spit out the xml</span>
	curl_close<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$session</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// And close the session</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Slick, eh? To use it, simply prepend the proxy&#8217;s URL used in the $.get call, like this:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">$.<span style="color: #006600;">get</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'proxy.php?url='</span>+$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#diffFeeds'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">val</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>d<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></pre></div></div>

<p>So, there you go. Add some CSS in there and it&#8217;s all stylish. You can the feed reader in effect <a href="http://visualrinse.com/bradley/mm491/reader.html" target="_blank">here</a>.</p>
<p>Hope you enjoyed this.</p>
]]></content:encoded>
			<wfw:commentRss>http://visualrinse.com/2008/09/24/how-to-build-a-simple-rss-reader-with-jquery/feed/</wfw:commentRss>
		<slash:comments>37</slash:comments>
		</item>
		<item>
		<title>How To: Make a Simple RSS Reader with Adobe Flex</title>
		<link>http://visualrinse.com/2008/09/14/how-to-make-a-simple-rss-reader-with-adobe-flex/</link>
		<comments>http://visualrinse.com/2008/09/14/how-to-make-a-simple-rss-reader-with-adobe-flex/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 03:11:18 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Mashups]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://visualrinse.com/?p=410</guid>
		<description><![CDATA[A little over a year ago, I converted my then dormant domain, Mediadinosaur.com, into a gossip focused news aggregator (previously, it was a media/celeb focused community and blog). It now captures feeds from a number of high profile celebrity rags (Egostastic, TMZ, E!, WWTD, etc) and lets you get your fan fix in one centralized [...]]]></description>
			<content:encoded><![CDATA[<p>A little over a year ago, I converted my then dormant domain, <a href="http://mediadinosaur.com" target="_blank">Mediadinosaur.com</a>, into a gossip focused news aggregator (previously, it was a media/celeb focused community and blog). It now captures feeds from a number of high profile celebrity rags (<a href="http://egotastic.com" target="_blank">Egostastic</a>, <a href="http://www.tmz.com/" target="_blank">TMZ</a>, E!, <a href="http://wwtd.com" target="_blank">WWTD</a>, etc) and lets you get your fan fix in one centralized place. I built it in Flex to highlight the ease of use of the Framework and the power that the HTTPService and E4X gives you in getting and parsing XML. I&#8217;m using the site as an exercise for my Mashups and RIAs class as an introduction to developing with Flex and a easing into the concept of reading and using XML feeds and services for students that may have never used either of them. So let&#8217;s take a look at how this all comes together.<span id="more-410"></span></p>
<p>Here is the site today:</p>
<p><img class="alignnone size-full wp-image-411" title="md_home" src="http://visualrinse.com/wp-content/uploads/2008/09/md_home.jpg" alt="" width="500" height="270" /></p>
<p>In this post, we&#8217;ll look at the site and find out what makes it tick. Here&#8217;s a quick overview: The interface is simple, it consists of only a ComboBox, a DataGrid, a TextArea, a couple Labels/Text components and a LinkButton. All of these Controls are placed in an assortment of Layout controls to assist with the overall look and feel. I then create a HTTPService and a couple quick AS3 functions to populate the ComboBox and handle feed results. The initial feedlist comes from a list of RSS feeds in a custom written XML file (which I&#8217;ll share in this post, as well), this could also come from an online service like a custom Yahoo pipe or an OPML file if you really wanted to get fancy.</p>
<p>After the basic app is functioning, I import one of Scalenine&#8217;s beautiful and easy to use skins, and voil?†. A feed reader for local filesystem use is ready. This could be run as a SWF or compiled as an AIR app for desktop use. However, if you want to put it online, you&#8217;ll need to use a middleware script to serve as a crossdomain proxy loader (this example is going to use PHP). This is needed to get around Flash player&#8217;s security sandbox which prevents you from loading XML files from other domains that lack a crossdomain.xml file.</p>
<p>Let&#8217;s examine the basic MXML markup before adding any AS3 or style calls:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot; backgroundGradientColors=&quot;[#0099CC, #2383ac]&quot;&gt;
	&lt;mx:HTTPService id=&quot;feedList&quot; url=&quot;data/feedURLs.xml&quot; /&gt;
	&lt;mx:HTTPService id=&quot;mdFeed&quot; showBusyCursor=&quot;true&quot; useProxy=&quot;false&quot; /&gt;
	&lt;mx:VBox width=&quot;100%&quot; height=&quot;100%&quot;&gt;
		&lt;mx:HBox width=&quot;90%&quot; height=&quot;40&quot;&gt;
			&lt;mx:Label text=&quot;Choose a Site:&quot;/&gt;
			&lt;mx:ComboBox id=&quot;siteCombo&quot; labelField=&quot;name&quot; /&gt;
		&lt;/mx:HBox&gt;
		&lt;mx:Text width=&quot;90%&quot; color=&quot;#000000&quot;
		       text=&quot;Drag the divider up and down to resize the panel.&quot;/&gt;
		&lt;mx:VDividedBox height=&quot;100%&quot; width=&quot;100%&quot;&gt;
			&lt;mx:DataGrid id=&quot;mdGrid&quot; labelField=&quot;Choose a Site&quot; height=&quot;60%&quot; width=&quot;100%&quot;&gt;
			&lt;mx:columns&gt;
				&lt;mx:DataGridColumn headerText=&quot;The Dirt&quot; dataField=&quot;title&quot; /&gt;
				&lt;mx:DataGridColumn headerText=&quot;The Date&quot; width=&quot;100&quot; dataField=&quot;pubDate&quot;/&gt;
			&lt;/mx:columns&gt;
			&lt;/mx:DataGrid&gt;
			&lt;mx:TextArea right=&quot;10&quot; top=&quot;234&quot; bottom=&quot;50&quot; left=&quot;10&quot; width=&quot;100%&quot; height=&quot;30%&quot;/&gt;
		&lt;/mx:VDividedBox&gt;
		&lt;mx:LinkButton label=&quot;Read the Full Post&quot; bottom=&quot;10&quot; left=&quot;10&quot; width=&quot;150&quot;/&gt;
	&lt;/mx:VBox&gt;
&lt;/mx:Application&gt;</pre></td></tr></table></div>

<p>So, in the markup above, we create the visual components mentioned in the paragraph that preceded the source code, and add two HTTPServices, one for the list of all the feeds we are aggregating, and the other for the actual RSS feed data that we will retrieve once the user chooses a feed they want to review. </p>
<p>Here is a glance of the interface in Flex&#8217;s IDE:</p>
<p><img class="alignnone size-full wp-image-412" title="md_ide" src="http://visualrinse.com/wp-content/uploads/2008/09/md_ide.jpg" alt="" width="500" height="284" /></p>
<p>In order to add the interactivity, we&#8217;ll need to supply a list of feeds for the reader to parse, right? Here is the list of sites and the URLs for their RSS feeds in XML:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="xml"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;sites<span style="font-weight: bold; color: black;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;site</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;egotastic.com&quot;</span>	<span style="color: #000066;">data</span>=<span style="color: #ff0000;">&quot;http://egotastic.com/feeds/index.xml&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;site</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;wwtdd.com&quot;</span>	<span style="color: #000066;">data</span>=<span style="color: #ff0000;">&quot;http://www.wwtdd.com/?mode=atom&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;site</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;defamer&quot;</span>	<span style="color: #000066;">data</span>=<span style="color: #ff0000;">&quot;http://www.defamer.com/excerpts.xml&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;site</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;superficial&quot;</span>	<span style="color: #000066;">data</span>=<span style="color: #ff0000;">&quot;http://www.thesuperficial.com/index.xml&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;site</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;idontlikeyouinthatway&quot;</span>	<span style="color: #000066;">data</span>=<span style="color: #ff0000;">&quot;http://feeds.feedburner.com/Idontlikeyouinthatwaycom&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;site</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;people.com&quot;</span>	<span style="color: #000066;">data</span>=<span style="color: #ff0000;">&quot;http://www.people.com/people/web/rss&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;site</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;eonline.com&quot;</span>	<span style="color: #000066;">data</span>=<span style="color: #ff0000;">&quot;http://www.eonline.com/everywhere/rss/index.jsp&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;site</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;tmz.com&quot;</span>	<span style="color: #000066;">data</span>=<span style="color: #ff0000;">&quot;http://www.tmz.com/rss.xml&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;site</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;usweekly.com&quot;</span> <span style="color: #000066;">data</span>=<span style="color: #ff0000;">&quot;http://64.90.166.18/atom/feed&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;site</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;CelebSlam&quot;</span> <span style="color: #000066;">data</span>=<span style="color: #ff0000;">&quot;http://www.celebslam.com/feed/&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;site</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;I Can Haz&quot;</span> <span style="color: #000066;">data</span>=<span style="color: #ff0000;">&quot;http://feeds.feedburner.com/ICanHasCheezburger?format=xml&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/sites<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Now that we have the XML ready, we need to add the MXML to get the feed to the application tag (creationComplete=feedList.send());):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>2
</pre></td><td class="code"><pre>&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot; creationComplete=&quot;feedList.send()&quot; backgroundGradientColors=&quot;[#0099CC, #2383ac]&quot;&gt;</pre></td></tr></table></div>

<p>Once we have the feedList retreived, we need to do something with it, right? Well, let&#8217;s add it to the comboBox, &#8220;siteCombo&#8221;. Here&#8217;s the AS to do it:</p>

<div class="wp_syntax"><div class="code"><pre>[Bindable]
private var sites:ArrayCollection = new ArrayCollection();
&nbsp;
private function siteListHandler(event:ResultEvent):void{
	sites = event.result.sites.site;
	var siteObj:Object = new Object();
	siteObj.name = &quot;Select&quot;
	siteObj.url = &quot;&quot;;
	sites.addItemAt(siteObj,0);
	siteCombo.selectedIndex = 0;
	//trace(event.result);
 }</pre></div></div>

<p>In that snippet, we created an arrayCollection to store the result. We then add the initial null &#8220;Select&#8221; option to the comboBox. We also need to add the databinding to the &#8220;sites&#8221; comboBox, so that it can be populated with the list of sites. Let&#8217;s do that now:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>8
</pre></td><td class="code"><pre>&lt;mx:ComboBox id=&quot;siteCombo&quot; dataProvider=&quot;{sites}&quot; labelField=&quot;name&quot; /&gt;</pre></td></tr></table></div>

<p>With the sites ComboBox binded (bound?) to the feedList, we need to add the function to handle the change event, so when the user selects a feed, the RSS feed is loaded. Here it is:</p>

<div class="wp_syntax"><div class="code"><pre>public function chooseSiteFeed(url:String, name:String):void{
myURL = url;
mdFeed.send();
}</pre></div></div>

<p>Now that the mdFeed is triggered, what do we do? Well, it would be a good idea to bind the mdFeed results to the datagrid, right? Then we can see all the posts in the feed:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>13
</pre></td><td class="code"><pre>&lt;mx:DataGrid id=&quot;mdGrid&quot; labelField=&quot;Choose a Site&quot; dataProvider=&quot;{mdFeed.lastResult.rss.channel.item}&quot; height=&quot;60%&quot; width=&quot;100%&quot;&gt;</pre></td></tr></table></div>

<p>Now that the datagrid is getting fed with the tasty RSS results, we need to let the user read the description and then click a link to see the full post, right?</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>19
20
21
22
</pre></td><td class="code"><pre>&lt;mx:TextArea right=&quot;10&quot; top=&quot;234&quot; bottom=&quot;50&quot; left=&quot;10&quot; width=&quot;100%&quot; height=&quot;30%&quot;/&gt;
		&lt;/mx:VDividedBox&gt;
		&lt;mx:LinkButton label=&quot;Read the Full Post&quot; bottom=&quot;10&quot; left=&quot;10&quot; width=&quot;150&quot;/&gt;
	&lt;/mx:VBox&gt;</pre></td></tr></table></div>

<p>That should work&#8230; If not, don&#8217;t worry, I&#8217;m supplying the full MXML source. But first, let&#8217;s make sure we can use this little RSS reader on your site. In order to do this, we need to leverage some serverside scripting in order to load the RSS feed via a proxy script. This will let your SWF file make a call to the script, then script handles the external URL call, returning the result as a local XML file for your flash file. Here is what the PHP looks like:</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
	<span style="color: #808080; font-style: italic;">// PHP Proxy</span>
	<span style="color: #808080; font-style: italic;">// Loads a XML from any location. Used with Flash/Flex apps to bypass security restrictions</span>
	<span style="color: #808080; font-style: italic;">// Author: Paulo Fierro</span>
	<span style="color: #808080; font-style: italic;">// January 29, 2006</span>
	<span style="color: #808080; font-style: italic;">// usage: proxy.php?url=http://mysite.com/myxml.xml</span>
&nbsp;
	<span style="color: #0000ff;">$session</span> = curl_init<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_GET</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'url'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>; 	               <span style="color: #808080; font-style: italic;">// Open the Curl session</span>
	curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$session</span>, CURLOPT_HEADER, <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>; 	       <span style="color: #808080; font-style: italic;">// Don't return HTTP headers</span>
	curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$session</span>, CURLOPT_RETURNTRANSFER, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;   <span style="color: #808080; font-style: italic;">// Do return the contents of the call</span>
	<span style="color: #0000ff;">$xml</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$session</span><span style="color: #66cc66;">&#41;</span>; 	                       <span style="color: #808080; font-style: italic;">// Make the call</span>
	<span style="color: #000066;">header</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Content-Type: text/xml&quot;</span><span style="color: #66cc66;">&#41;</span>; 	               <span style="color: #808080; font-style: italic;">// Set the content type appropriately</span>
	<span style="color: #000066;">echo</span> <span style="color: #0000ff;">$xml</span>; 	      <span style="color: #808080; font-style: italic;">// Spit out the xml</span>
	curl_close<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$session</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// And close the session</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>So, make yourself a proxyURL.php file with that content in it and save it. If you go back and modifiy the mdFeed function to use the proxy script, everything should be in order&#8230; Here, in totality, is the app:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
</pre></td><td class="code"><pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot; creationComplete=&quot;feedList.send()&quot; backgroundGradientColors=&quot;[#0099CC, #2383ac]&quot;&gt;
	&lt;mx:Script&gt;
		import mx.collections.ArrayCollection;
		import mx.rpc.events.ResultEvent;
		import mx.effects.Resize;
&nbsp;
		[Bindable]
		private var sites:ArrayCollection = new ArrayCollection();
		[Bindable]
		public var myURL:String; 
&nbsp;
		private function siteListHandler(event:ResultEvent):void{
			sites = event.result.sites.site;
			var siteObj:Object = new Object();
			siteObj.name = &quot;Select&quot;
			siteObj.url = &quot;&quot;;
			sites.addItemAt(siteObj,0);
			siteCombo.selectedIndex = 0;
		 	//trace(event.result);
		 }
&nbsp;
		 public function chooseSiteFeed(url:String, name:String):void{
		 	myURL = &quot;proxyURL.php?url=&quot; + url;
       		mdFeed.send();
		 }
&nbsp;
	&lt;/mx:Script&gt;
	&lt;mx:Style source=&quot;css/OSX.css&quot; /&gt;
	&lt;mx:HTTPService id=&quot;feedList&quot; url=&quot;data/feedURLs.xml&quot; result=&quot;siteListHandler(event)&quot;/&gt;
	&lt;mx:HTTPService id=&quot;mdFeed&quot; url=&quot;{myURL}&quot; showBusyCursor=&quot;true&quot; useProxy=&quot;false&quot; /&gt;
	&lt;mx:VBox width=&quot;100%&quot; height=&quot;100%&quot;&gt;
		&lt;mx:HBox width=&quot;90%&quot; height=&quot;40&quot;&gt;
			&lt;mx:Label text=&quot;Choose a Site:&quot;/&gt;
			&lt;mx:ComboBox id=&quot;siteCombo&quot; dataProvider=&quot;{sites}&quot; labelField=&quot;name&quot; change=&quot;chooseSiteFeed(ComboBox(event.target).selectedItem.data, ComboBox(event.target).selectedItem.name)&quot; /&gt;
		&lt;/mx:HBox&gt;
		&lt;mx:Text width=&quot;90%&quot; color=&quot;#000000&quot;
		       text=&quot;Drag the divider up and down to resize the panel.&quot;/&gt;
		&lt;mx:VDividedBox height=&quot;100%&quot; width=&quot;100%&quot;&gt;
			&lt;mx:DataGrid id=&quot;mdGrid&quot; labelField=&quot;Choose a Site&quot; dataProvider=&quot;{mdFeed.lastResult.rss.channel.item}&quot; height=&quot;60%&quot; width=&quot;100%&quot;&gt;
			&lt;mx:columns&gt;
				&lt;mx:DataGridColumn headerText=&quot;The Dirt&quot; dataField=&quot;title&quot; /&gt;
				&lt;mx:DataGridColumn headerText=&quot;The Date&quot; width=&quot;100&quot; dataField=&quot;pubDate&quot;/&gt;
			&lt;/mx:columns&gt;
			&lt;/mx:DataGrid&gt;
			&lt;mx:TextArea htmlText=&quot;{mdGrid.selectedItem.description}&quot; right=&quot;10&quot; top=&quot;234&quot; bottom=&quot;50&quot; left=&quot;10&quot; width=&quot;100%&quot; height=&quot;30%&quot;/&gt;
		&lt;/mx:VDividedBox&gt;
		&lt;mx:LinkButton label=&quot;Read the Full Post&quot; click=&quot;navigateToURL(new URLRequest(mdGrid.selectedItem.link));&quot; bottom=&quot;10&quot; left=&quot;10&quot; width=&quot;150&quot;/&gt;
	&lt;/mx:VBox&gt;
&lt;/mx:Application&gt;</pre></td></tr></table></div>

<p>IN the code I also loaded the OSX skin from <a href="http://scalenine.com">Scalenine</a>. So there you have it. Pretty easy, really, though I understand I may not have explained it all as well as possible. It&#8217;s just easier when you are actually going through things in front of a lab or class. If you have questions on how it all works, feel free to drop me a line. You can download the source, <a href="/files/MD.zip">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://visualrinse.com/2008/09/14/how-to-make-a-simple-rss-reader-with-adobe-flex/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>New Semester Begins&#8230; Time to Get To Work.</title>
		<link>http://visualrinse.com/2008/08/27/new-semester-begins-time-to-get-to-work/</link>
		<comments>http://visualrinse.com/2008/08/27/new-semester-begins-time-to-get-to-work/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 01:47:09 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://visualrinse.com/?p=401</guid>
		<description><![CDATA[Bradley is back in session. I have two classes I&#8217;m teaching this semester, so it&#8217;s going to be a busy one. MM365 ‚Äì Designing with Web Standards, this is one I have taught for 3 years now. It&#8217;s focused around CSS, XHTML and some simple JS, with an emphasis on using best practives and writing [...]]]></description>
			<content:encoded><![CDATA[<p>Bradley is back in session. I have two classes I&#8217;m teaching this semester, so it&#8217;s going to be a busy one. MM365 ‚Äì Designing with Web Standards, this is one I have taught for 3 years now. It&#8217;s focused around CSS, XHTML and some simple JS, with an emphasis on using best practives and writing markup that validates. It&#8217;s a great class and one that serves the students pretty well. After that on Tuesdays, I am very happy to teach my MM491 ‚Äì Mashups and RIAs class&#8230; This is going to be great. I have a group of students I will be helping to learn Flex, AJAX and using Webservices to make web mashups&#8230; what gets better than that?</p>
<p>While I prepare for that (I have to build a few presentations, stat!), why don&#8217;t you take some time and  watch this video that was taken at 360Flex&#8217;s keynote&#8230; It has some hot Thermo action in it at about 45:00. Hot stuff, indeed.</p>
<p><embed src="http://services.brightcove.com/services/viewer/federated_f8/1596744118" bgcolor="#FFFFFF" flashVars="videoId=1741161343&#038;playerId=1596744118&#038;viewerSecureGatewayURL=https://console.brightcove.com/services/amfgateway&#038;servicesURL=http://services.brightcove.com/services&#038;cdnURL=http://admin.brightcove.com&#038;domain=embed&#038;autoStart=false&#038;" base="http://admin.brightcove.com" name="flashObj" width="486" height="412" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://visualrinse.com/2008/08/27/new-semester-begins-time-to-get-to-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Deep and Meaningful API, One to Definitely Try Out: GovTrack.Us</title>
		<link>http://visualrinse.com/2008/07/06/a-deep-and-meaningful-api-one-to-definitely-try-out-govtrackus/</link>
		<comments>http://visualrinse.com/2008/07/06/a-deep-and-meaningful-api-one-to-definitely-try-out-govtrackus/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 02:08:06 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Kuler]]></category>
		<category><![CDATA[Mashups]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://visualrinse.com/?p=377</guid>
		<description><![CDATA[About a week ago, I sent out a tweet asking for ideas on new APIs that might be worth checking out. You see, I am teaching a mashup course this fall and I need some new source material. I&#8217;ve played with Kuler, ColourLovers, Delicious, Yahoo Pipes, Technorati and a couple others (mostly unpublished and just [...]]]></description>
			<content:encoded><![CDATA[<p>About a week ago, I <a href="http://twitter.com/visualrinse/statuses/846576817" target="_blank">sent out a tweet</a> asking for ideas on new APIs that might be worth checking out. You see, <a href="http://visualrinse.com/2008/06/19/announcing-a-new-class-for-the-fall-semester-mm491-mashups-and-rias/" target="_blank">I am teaching a mashup course this fall</a> and I need some new source material. I&#8217;ve played with <a href="http://visualrinse.com/coolerkreator" target="_blank">Kuler</a>, <a href="http://visualrinse.com/dekafLovers" target="_blank">ColourLovers</a>, <a href="http://pipelicious.visualrinse.com" target="_blank">Delicious, Yahoo Pipes, Technorati</a> and a couple others (mostly unpublished and just experimental), but I just feel like I was missing something. I needed to check some other things out. Of course the new AS3 APIs for Google maps are out, so those are absolutely on my list, but I wanted some more &#8220;content rich&#8221; APIs. I spent some time on programmableweb.com (a great source for mashups and APIs) but only found a couple that struck my fancy enough to think about spending what is virtually my nonexistant free time on building a toy.</p>
<p><a href="http://rachelsodyssey.blogspot.com/" target="_blank">Rachael Rubin</a> (<a href="http://twitter.com/wildhoney" target="_blank">wildhoney</a> on twitter) was kind enough to point me to the newly revised <a href="http://www.last.fm/api" target="_blank">Last.FM API</a> and I think I will definitely use it at some point, but without a a proper link to the streaming music in their library, building a non playing audio based mashup seems a little less fun that it should be. It seems as though they intentionally make accessing the streams a little difficult to discourage bandwidth abuse.</p>
<p>All that changed today when I came across <a href="http://www.govtrack.us/" target="_blank">Govtrack.us</a> on programmableweb. Wow. What a useful API. Fun? Not really&#8230; it&#8217;s an interface to the mountains of data generated by our Congressional representatives day to day business. Deep stuff. With the ever growing need for governmental transparency in this somewhat crazy time, it&#8217;s a fantastic resource to have. Generate clean XML based on what your reps are voting on, meeting about and talking over. Combine this with Google maps or perhaps any number of other rich data sources and you have some amazing potential to bring visibility to a very opaque world. Providing a new or easier to use interface to the insurmountable volumes of legislation might uncover some realizations that may have gone unnoticed otherwise.</p>
<p>I&#8217;m definitely going to give this one a spin. Shall we find something out from all of this? It remains to be seen, I guess. I have a few ideas on things I might like to track&#8230; how about you?</p>
]]></content:encoded>
			<wfw:commentRss>http://visualrinse.com/2008/07/06/a-deep-and-meaningful-api-one-to-definitely-try-out-govtrackus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing a New Class For The Fall Semester: MM491 Mashups and RIAs</title>
		<link>http://visualrinse.com/2008/06/19/announcing-a-new-class-for-the-fall-semester-mm491-mashups-and-rias/</link>
		<comments>http://visualrinse.com/2008/06/19/announcing-a-new-class-for-the-fall-semester-mm491-mashups-and-rias/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 02:24:35 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[RIA]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://visualrinse.com/?p=366</guid>
		<description><![CDATA[I will be entering my fifth year of teaching at Bradley this fall. In that time I have taught several classes on multimedia authoring, using tools like Director and Flash to produce microsites, games and simple applications. I have also taught a senior level capstone class where Rich Internet Applications were designed and prototyped, then [...]]]></description>
			<content:encoded><![CDATA[<p>I will be entering my fifth year of teaching at Bradley this fall. In that time I have taught several classes on multimedia authoring, using tools like Director and Flash to produce microsites, games and simple applications. I have also taught a senior level capstone class where Rich Internet Applications were designed and prototyped, then composited with devices in original video shot by my students in a &#8220;Starfire&#8221;-like what-if video depicting ubiquitous wireless connectivity. You can see that one <a href="http://youtube.com/watch?v=tY95dGS_aMU" target="_blank">here</a>. Additionally, I have taught course on server side development using PHP/MySQL and a intro to web design class that focuses on web standards and covers XHTML/CSS and JS. Well, I have another one to add to that. Read on to find out more about it.<span id="more-366"></span></p>
<p>Introducing: <strong>MM491 Mashups and RIAs</strong></p>
<p>In this class, students will use HTML/CSS, PHP, AJAX and Adobe Flash/Adobe Flex/Actionscript3/Adobe AIR to access and digest webservices and APIs made public by third parties to create and publish mashups, web applications that combine data from more than one source into a single integrated tool, on the web and desktop. Additionally, rapid application development tools will be used to create client side rich applications that connect to existing services or web sites to provide application functionality to the user.</p>
<p>Students are required to have completed Multimedia 213, Multimedia 215 and Multimedia 365 prior to enrolling in this course. Students are recommend to have completed or be cross enrolled in Multimedia 313, and Multimedia 465 before trying this advanced field of web design and development. While user interface design patterns and strategies will be explored, with students getting a chance to exercise their CSS skills and user interface skinning ideas, a good portion of the time in this class will be spent editing code and connecting XML and other data formats to the components to complete their masterpieces.</p>
<p>Students will be expected to download and install the freely available Adobe FlexBuilder and the Adobe Air SDK to their development computers prior to class commencing. Students are recommended to read and complete the tutorials on Adobe Flex at Adobe.com&#8217;s Develop center over the summer. Students will be required to register for a free account at programmableweb.com for posting their mashups to the web.</p>
<p>All in all I&#8217;m very excited about this on&#8230; it should be great!</p>
]]></content:encoded>
			<wfw:commentRss>http://visualrinse.com/2008/06/19/announcing-a-new-class-for-the-fall-semester-mm491-mashups-and-rias/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

