<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:rawvoice="http://www.rawvoice.com/rawvoiceRssModule/"
>

<channel>
	<title>Wickedly Smart</title>
	<atom:link href="http://wickedlysmart.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://wickedlysmart.com</link>
	<description>Software Mastery, the Fun Way</description>
	<lastBuildDate>Tue, 21 May 2013 10:00:57 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
<!-- podcast_generator="Blubrry PowerPress/4.0.5" -->
	<itunes:summary>WickedlySmart is an educational technology company devoted to helping others achieve software mastery through brain-friendly learning.</itunes:summary>
	<itunes:author>Wickedly Smart</itunes:author>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://wickedlysmart.com/wp-content/plugins/powerpress/itunes_default.jpg" />
	<copyright>Copyright 2010-2012 WickedlySmart, LLC </copyright>
	<itunes:subtitle>Software Mastery, the Fun Way</itunes:subtitle>
	<itunes:keywords>programming, head first, software, javascript, design patterns, html, css, web, software, java</itunes:keywords>
	<image>
		<title>Wickedly Smart</title>
		<url>http://wickedlysmart.com/wp-content/plugins/powerpress/itunes_default.jpg</url>
		<link>http://wickedlysmart.com</link>
	</image>
	<itunes:category text="Technology">
		<itunes:category text="Software How-To" />
	</itunes:category>
		<rawvoice:location>Bainbridge Island, Washington, USA</rawvoice:location>
		<rawvoice:frequency>Weekly</rawvoice:frequency>
		<item>
		<title>Head First Programming JavaScript Teasers #5</title>
		<link>http://wickedlysmart.com/head-first-programming-javascript-teasers-5/</link>
		<comments>http://wickedlysmart.com/head-first-programming-javascript-teasers-5/#comments</comments>
		<pubDate>Tue, 21 May 2013 10:00:57 +0000</pubDate>
		<dc:creator>beth</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[behavior]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[dynamic typing]]></category>
		<category><![CDATA[dynamically typed]]></category>
		<category><![CDATA[head first]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[primitives]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[programming language]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[types]]></category>
		<category><![CDATA[variables]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://wickedlysmart.com/?p=2567</guid>
		<description><![CDATA[When you begin programming in JavaScript, you&#8217;ll need to use variables. A variable is just a bit of storage to hold a value. Just about every line of code you write will use a variable of one kind or another, so it&#8217;s a good idea to get familiar with the kinds of things you can [...]]]></description>
				<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/66114603" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></p>
<p>When you begin programming in JavaScript, you&#8217;ll need to use variables. A variable is just a bit of storage to hold a value. Just about every line of code you write will use a variable of one kind or another, so it&#8217;s a good idea to get familiar with the kinds of things you can put in variables, and how you can use them. Now, if you&#8217;re coming from another programming language, like Java, you might be surprised to see how loose JavaScript is about variables and their types; JavaScript doesn&#8217;t care if your variable starts out with a string value, and ends up being a number; JavaScript&#8217;s dynamically typed.  </p>
<p>In this installment of Head First JavaScript Programming Teasers, you&#8217;ll learn about the basics of variables, how JavaScript is dynamically typed, and why it&#8217;s a good idea to stick with one type for your variables.</p>
]]></content:encoded>
			<wfw:commentRss>http://wickedlysmart.com/head-first-programming-javascript-teasers-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://wickedlysmart.com/wp-content/uploads/2013/05/05-TypesAndVars.m4v" length="4354384" type="video/x-m4v" />
			<itunes:keywords>behavior,CSS,dynamic typing,dynamically typed,head first,html,javascript,primitives,programming,programming language,scripting,types</itunes:keywords>
	<itunes:subtitle>When you begin programming in JavaScript, you&#039;ll need to use variables. A variable is just a bit of storage to hold a value. Just about every line of code you write will use a variable of one kind or another,</itunes:subtitle>
		<itunes:summary>When you begin programming in JavaScript, you&#039;ll need to use variables. A variable is just a bit of storage to hold a value. Just about every line of code you write will use a variable of one kind or another, so it&#039;s a good idea to get familiar with the kinds of things you can put in variables, and how you can use them. Now, if you&#039;re coming from another programming language, like Java, you might be surprised to see how loose JavaScript is about variables and their types; JavaScript doesn&#039;t care if your variable starts out with a string value, and ends up being a number; JavaScript&#039;s dynamically typed.  

In this installment of Head First JavaScript Programming Teasers, you&#039;ll learn about the basics of variables, how JavaScript is dynamically typed, and why it&#039;s a good idea to stick with one type for your variables.</itunes:summary>
		<itunes:author>Wickedly Smart</itunes:author>
		<itunes:explicit>no</itunes:explicit>
		<itunes:duration>7:07</itunes:duration>
	</item>
		<item>
		<title>Head First JavaScript Programming Teasers #4</title>
		<link>http://wickedlysmart.com/head-first-javascript-programming-teaser-4/</link>
		<comments>http://wickedlysmart.com/head-first-javascript-programming-teaser-4/#comments</comments>
		<pubDate>Fri, 10 May 2013 23:58:31 +0000</pubDate>
		<dc:creator>beth</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[behavior]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[head first]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[programming language]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://wickedlysmart.com/?p=2546</guid>
		<description><![CDATA[If you know HTML and CSS, you're ready to begin learning JavaScript. But you might be surprised, because JavaScript looks quite different from both HTML and CSS...]]></description>
				<content:encoded><![CDATA[<p>If you know HTML and CSS, you&#8217;re ready to begin learning JavaScript. But you might be surprised, because JavaScript looks quite different from both HTML and CSS. In part four of Head First JavaScript Programming Teasers, Eric shows you how JavaScript is different from HTML and CSS, and why. He also steps you through a simple example of JavaScript code, so you can get a taste of how it works.</p>
<p><iframe src="http://player.vimeo.com/video/65937210" height="281" width="500" allowfullscreen="" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://wickedlysmart.com/head-first-javascript-programming-teaser-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://wickedlysmart.com/wp-content/uploads/2013/05/04-JS-Lang-Intro4_cell-Cellular.m4v" length="7318213" type="video/x-m4v" />
			<itunes:keywords>behavior,CSS,head first,html,javascript,programming,programming language,scripting,web</itunes:keywords>
	<itunes:subtitle>If you know HTML and CSS, you&#039;re ready to begin learning JavaScript. But you might be surprised, because JavaScript looks quite different from both HTML and CSS...</itunes:subtitle>
		<itunes:summary>If you know HTML and CSS, you&#039;re ready to begin learning JavaScript. But you might be surprised, because JavaScript looks quite different from both HTML and CSS...</itunes:summary>
		<itunes:author>Wickedly Smart</itunes:author>
		<itunes:explicit>no</itunes:explicit>
		<itunes:duration>8:48</itunes:duration>
	</item>
		<item>
		<title>Get Access to Head First JavaScript Programming Now</title>
		<link>http://wickedlysmart.com/head-first-javascript-programming/</link>
		<comments>http://wickedlysmart.com/head-first-javascript-programming/#comments</comments>
		<pubDate>Sat, 30 Mar 2013 15:09:53 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://wickedlysmart.com/?p=1875</guid>
		<description><![CDATA[ If you haven’t already, <a href="http://wickedlysmart.com/jssignup/">sign up for our WickedlySmart Insider program</a> to get early access to the book today, including special video content, and access to the Insider forum for questions, answers, and feedback.
]]></description>
				<content:encoded><![CDATA[<p>Yes, Head First JavaScript Programming is our new title and we&#8217;re actively working on it.  If you haven’t already, <a href="http://wickedlysmart.com/jssignup/">sign up for our WickedlySmart Insider program</a> to get early access to the book today, including special video content, and access to the Insider forum for questions, answers, and feedback.</p>
<p><img src="http://wickedlysmart.com/wp-content/uploads/2012/10/coverlady250w.png" style="float:right"></p>
]]></content:encoded>
			<wfw:commentRss>http://wickedlysmart.com/head-first-javascript-programming/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Head First JavaScript Programming Teasers #3</title>
		<link>http://wickedlysmart.com/head-first-javascript-programming-teasers-part-3/</link>
		<comments>http://wickedlysmart.com/head-first-javascript-programming-teasers-part-3/#comments</comments>
		<pubDate>Thu, 28 Mar 2013 04:11:12 +0000</pubDate>
		<dc:creator>beth</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://wickedlysmart.com/?p=2511</guid>
		<description><![CDATA[JavaScript is a bit different from other programming languages. How?]]></description>
				<content:encoded><![CDATA[<p style="clear: both;">
<h1>What makes JavaScript different?</h1>
<p>JavaScript is a bit different from other programming languages. How? In part three of Head First JavaScript Programming Teasers, Elisabeth steps you through what makes JavaScript unique, and why it&#8217;s a great first programming language.  All you need to get started is a text editor and a browser! </p>
<p><iframe src="http://player.vimeo.com/video/62840855" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></p>
<p>Remember, you&#8217;ll find these videos right here on WickedlySmart.com. <a href="http://wickedlysmart.com/join-the-community/">Give us your email</a> and we&#8217;ll let you know each week when a new video is out. You&#8217;ll also find the videos cross posted on <a href="http://oreilly.com">oreilly.com</a>.</p>
<p>Need to get caught up? Watch parts <a href="http://wickedlysmart.com/a-teaser-from-head-first-javascript-programming/">one</a> and <a href="http://wickedlysmart.com/head-first-javascript-programming-teasers-part-2/">two</a> of Head First JavaScript Programming Teasers.</p>
]]></content:encoded>
			<wfw:commentRss>http://wickedlysmart.com/head-first-javascript-programming-teasers-part-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://wickedlysmart.com/wp-content/uploads/2013/03/JavaScriptInBrowserFinal-Cellular.m4v" length="5242880" type="video/x-m4v" />
		<itunes:subtitle>JavaScript is a bit different from other programming languages. How?</itunes:subtitle>
		<itunes:summary>JavaScript is a bit different from other programming languages. How?</itunes:summary>
		<itunes:author>Wickedly Smart</itunes:author>
		<itunes:explicit>no</itunes:explicit>
	</item>
		<item>
		<title>Head First JavaScript Programming</title>
		<link>http://wickedlysmart.com/head-first-javascript-programming-2/</link>
		<comments>http://wickedlysmart.com/head-first-javascript-programming-2/#comments</comments>
		<pubDate>Wed, 27 Mar 2013 22:10:44 +0000</pubDate>
		<dc:creator>beth</dc:creator>
				<category><![CDATA[Books]]></category>

		<guid isPermaLink="false">http://wickedlysmart.com/?p=1772</guid>
		<description><![CDATA[Head First JavaScript Programming is underway! To be published in late summer, 2013, Head First JavaScript Programming is a whole new take on teaching programming with JavaScript.]]></description>
				<content:encoded><![CDATA[<p><a href="http://wickedlysmart.com/wp-content/uploads/2012/10/HFJS_300.png"><img class="alignleft size-full wp-image-1771" title="Head First JavaScript 300" src="http://wickedlysmart.com/wp-content/uploads/2012/10/HFJS_300.png" alt="Head First JavaScript" width="300" height="364" /></a></p>
<p><br style="clear:both">Head First JavaScript Programming is underway! To be published in late summer, 2013, Head First JavaScript Programming is a whole new take on teaching programming with JavaScript. If you&#8217;ve read <a href="http://www.amazon.com/exec/obidos/ASIN/0596159900/elisabethfree-20">Head First HTML and CSS</a>, and you&#8217;re ready to take on programming for the first time, or you&#8217;ve had a little experience with hacking together a few scripts, but really need to learn the language right, or you want to tackle <a href="http://www.amazon.com/exec/obidos/ASIN/1449390544/elisabethfree-20">Head First HTML5 Programming</a> but need a little more help wrapping your head around JavaScript first, Head First JavaScript Programming is for you. </p>
<p>For those who want to join us in the Head First JavaScript Programming community as we write the book, and get a chance to contribute feedback and ask questions as we go, you can <a href="http://wickedlysmart.com/jssignup/">join here</a>. You&#8217;ll be updated with sample content from the book, as well as videos explaining key JavaScript concepts so you can learn as we write. We&#8217;ve created a <a href="http://wickedlysmart.com/hfjs/">book page for Head First JavaScript Programming</a>, where you&#8217;ll find code and links for the book.</p>
<p>So join us! And get ready to program.</p>
]]></content:encoded>
			<wfw:commentRss>http://wickedlysmart.com/head-first-javascript-programming-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Your Questions Here</title>
		<link>http://wickedlysmart.com/your-questions-here/</link>
		<comments>http://wickedlysmart.com/your-questions-here/#comments</comments>
		<pubDate>Wed, 27 Mar 2013 18:04:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wickedlysmart.com/?p=2500</guid>
		<description><![CDATA[Greetings, we&#8217;re trying a new system for taking reader questions. Please leave use the tab on the right hand side of this page to record a reader question.]]></description>
				<content:encoded><![CDATA[<p>Greetings, we&#8217;re trying a new system for taking reader questions.  Please leave use the tab on the right hand side of this page to record a reader question.</p>
<p><!-- Begin SpeakPipe code --><br />
<script type="text/javascript">
(function(d){
var app = d.createElement('script'); app.type = 'text/javascript'; app.async = true;
var pt = ('https:' == document.location.protocol ? 'https://' : 'http://');
app.src = pt + 'www.speakpipe.com/loader/rc8l4endgrrqkpyoeywx80vy9imle6n4.js'; 
var s = d.getElementsByTagName('script')[0]; s.parentNode.insertBefore(app, s);
})(document);
</script><br />
<!-- End SpeakPipe code --></p>
]]></content:encoded>
			<wfw:commentRss>http://wickedlysmart.com/your-questions-here/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Design Patterns Bootcamp</title>
		<link>http://wickedlysmart.com/design-patterns-bootcamp3/</link>
		<comments>http://wickedlysmart.com/design-patterns-bootcamp3/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 20:33:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[elisabeth robson]]></category>
		<category><![CDATA[eric freeman]]></category>
		<category><![CDATA[head first]]></category>
		<category><![CDATA[object]]></category>
		<category><![CDATA[oo]]></category>
		<category><![CDATA[oriented]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://wickedlysmart.com/?p=2087</guid>
		<description><![CDATA[Eric and Elisabeth have agreed to run a multi-day bootcamp to teach design patterns in their unique style.  They plan on piloting this workshop with a small group and are looking for feedback in the creation of the workshop. ]]></description>
				<content:encoded><![CDATA[<h3><img style="float: left; padding-bottom: 10px; padding-right: 20px;" alt="" src="http://wickedlysmart.com/wp-content/uploads/2013/03/boots.jpg" width="150" /></h3>
<p>Head First Design Patterns has been an outright bestseller for nearly a decade, and is on the bookshelves of an unbelievable number of software developers. Winner of the Jolt award and endorsed by Erich Gamma, it&#8217;s the most accessible and complete book on the market for core design patterns. Of course, many people just love it because of its irreverent and humorous, yet technically sound, style. While this material has only been available to date in the Head First book, Eric and Elisabeth have agreed to run a multi-day bootcamp to teach design patterns in their unique style. They plan on piloting this workshop with a small group and are looking for feedback in the creation of the workshop.</p>
<p>&nbsp;</p>
<p>Give us your name and email below and we&#8217;ll put you on the priority list for acceptance into the first workshop (spots will be limited for this first workshop). <em>Note: our survey on this topic has ended.</em></p>
<p>&nbsp;</p>
<p><!-- AWeber Web Form Generator 3.0 --></p>
<style type="text/css"><!--
#af-form-1100179483 .af-body .af-textWrap{width:70%;display:block;float:right;}
#af-form-1100179483 .af-body input.text, #af-form-1100179483 .af-body textarea{background-color:#FFFFFF;border-color:#CCCCCC;border-width:2px;border-style:inset;color:#000000;text-decoration:none;font-style:normal;font-weight:normal;font-size:inherit;font-family:inherit;}
#af-form-1100179483 .af-body input.text:focus, #af-form-1100179483 .af-body textarea:focus{background-color:inherit;border-color:#CCCCCC;border-width:2px;border-style:inset;}
#af-form-1100179483 .af-body label.previewLabel{display:block;float:left;width:25%;text-align:left;color:#000000;text-decoration:none;font-style:normal;font-weight:normal;font-size:inherit;font-family:inherit;}
#af-form-1100179483 .af-body{padding-bottom:15px;background-repeat:no-repeat;background-position:inherit;background-image:none;color:#000000;font-size:12px;font-family:, serif;}
#af-form-1100179483 .af-quirksMode{padding-right:15px;padding-left:15px;}
#af-form-1100179483 .af-standards .af-element{padding-right:15px;padding-left:15px;}
#af-form-1100179483 .buttonContainer input.submit{color:#000000;text-decoration:none;font-style:normal;font-weight:normal;font-size:inherit;font-family:inherit;}
#af-form-1100179483 .buttonContainer input.submit{width:auto;}
#af-form-1100179483 .buttonContainer{text-align:center;}
#af-form-1100179483 button,#af-form-1100179483 input,#af-form-1100179483 submit,#af-form-1100179483 textarea,#af-form-1100179483 select,#af-form-1100179483 label,#af-form-1100179483 optgroup,#af-form-1100179483 option{float:none;position:static;margin:0;}
#af-form-1100179483 div{margin:0;}
#af-form-1100179483 form,#af-form-1100179483 textarea,.af-form-wrapper,.af-form-close-button,#af-form-1100179483 img{float:none;color:inherit;position:static;background-color:none;border:none;margin:0;padding:0;}
#af-form-1100179483 input,#af-form-1100179483 button,#af-form-1100179483 textarea,#af-form-1100179483 select{font-size:100%;}
#af-form-1100179483 select,#af-form-1100179483 label,#af-form-1100179483 optgroup,#af-form-1100179483 option{padding:0;}
#af-form-1100179483,#af-form-1100179483 .quirksMode{width:278px;}
#af-form-1100179483.af-quirksMode{overflow-x:hidden;}
#af-form-1100179483{background-color:transparent;border-color:inherit;border-width:none;border-style:none;}
#af-form-1100179483{display:block;}
#af-form-1100179483{overflow:hidden;}
.af-body .af-textWrap{text-align:left;}
.af-body input.image{border:none!important;}
.af-body input.submit,.af-body input.image,.af-form .af-element input.button{float:none!important;}
.af-body input.text{width:100%;float:none;padding:2px!important;}
.af-body.af-standards input.submit{padding:4px 12px;}
.af-clear{clear:both;}
.af-element label{text-align:left;display:block;float:left;}
.af-element{padding:5px 0;}
.af-form-wrapper{text-indent:0;}
.af-form{text-align:left;margin:auto;}
.af-quirksMode .af-element{padding-left:0!important;padding-right:0!important;}
.lbl-right .af-element label{text-align:right;}
body {
}
--></style>
<form class="af-form-wrapper" action="http://www.aweber.com/scripts/addlead.pl" method="post">
<div style="display: none;"><input type="hidden" name="meta_web_form_id" value="1100179483" /><br />
<input type="hidden" name="meta_split_id" value="" /><br />
<input type="hidden" name="listname" value="dpbootcamplist" /><br />
<input id="redirect_efd435c09edbeabc9ad2101279d36273" type="hidden" name="redirect" value="http://www.aweber.com/thankyou-coi.htm?m=text" /><input type="hidden" name="meta_adtracking" value="Wait_List" /><br />
<input type="hidden" name="meta_message" value="1" /><br />
<input type="hidden" name="meta_required" value="name,email" /><input type="hidden" name="meta_tooltip" value="" /></div>
<div class="af-form" id="af-form-1100179483">
<div class="af-body af-standards" id="af-body-1100179483">
<div class="af-element"><label class="previewLabel" for="awf_field-46854433">Name: </label></p>
<div class="af-textWrap"><input class="text" id="awf_field-46854433" tabindex="500" type="text" name="name" value="" /></div>
<div class="af-clear"></div>
</div>
<div class="af-element"><label class="previewLabel" for="awf_field-46854434">Email: </label></p>
<div class="af-textWrap"><input class="text" id="awf_field-46854434" tabindex="501" type="text" name="email" value="" /></div>
<div class="af-clear"></div>
</div>
<div class="af-element buttonContainer"><input class="submit" tabindex="502" type="submit" name="submit" value="Submit" /></p>
<div class="af-clear"></div>
</div>
</div>
</div>
<div style="display: none;"><img alt="" src="http://forms.aweber.com/form/displays.htm?id=jIwMDIzsnCwczA==" /></div>
</form>
<p><script type="mce-text/javascript">// <![CDATA[
(function() {        var IE = /*@cc_on!@*/false;        if (!IE) { return; }        if (document.compatMode &#038;&#038; document.compatMode == 'BackCompat') {            if (document.getElementById("af-form-1100179483")) {                document.getElementById("af-form-1100179483").className = 'af-form af-quirksMode';            }            if (document.getElementById("af-body-1100179483")) {                document.getElementById("af-body-1100179483").className = "af-body inline af-quirksMode";            }            if (document.getElementById("af-header-1100179483")) {                document.getElementById("af-header-1100179483").className = "af-header af-quirksMode";            }            if (document.getElementById("af-footer-1100179483")) {                document.getElementById("af-footer-1100179483").className = "af-footer af-quirksMode";            }        }    })();
// ]]&gt;</script></p>
<p><!-- /AWeber Web Form Generator 3.0 --></p>
<p><span style="font-family: sans-serif; font-size: 12px; line-height: 20px; white-space: pre-wrap; background-color: #ffffff;"> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://wickedlysmart.com/design-patterns-bootcamp3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Head First JavaScript Programming Teasers #2</title>
		<link>http://wickedlysmart.com/head-first-javascript-programming-teasers-part-2/</link>
		<comments>http://wickedlysmart.com/head-first-javascript-programming-teasers-part-2/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 19:16:19 +0000</pubDate>
		<dc:creator>beth</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[element]]></category>
		<category><![CDATA[head first]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[teaser]]></category>

		<guid isPermaLink="false">http://wickedlysmart.com/?p=2057</guid>
		<description><![CDATA[Everyone knows you put your &#60;script&#62; element at the top of your HTML page, right?  Not so fast. ]]></description>
				<content:encoded><![CDATA[<p style="clear: both;">
<h1>Getting JavaScript in your pages, the right way</h1>
<p>Everyone knows you put your &lt;script&gt; element at the top of your HTML page, right?  Not so fast. In part two of Head First JavaScript Programming Teasers, Eric explains the nuts and bolts of the &lt;script&gt; element, and how not to embarrass yourself using it.  Eric will tell you exactly how the browser deals with the &lt;script&gt; element, and what it means for your pages.</p>
<p><iframe src="http://player.vimeo.com/video/60675504" height="281" width="500" allowfullscreen="" frameborder="0"></iframe></p>
<p>Remember, you&#8217;ll find these videos right here on WickedlySmart.com. <a href="http://wickedlysmart.com/join-the-community/">Give us your email</a> and we&#8217;ll let you know each week when a new video is out. You&#8217;ll also find the videos cross posted on <a href="http://oreilly.com">oreilly.com</a>.</p>
<p>And, if you missed part one of Head First JavaScript Programming Teasers, you can <a href="http://wickedlysmart.com/a-teaser-from-head-first-javascript-programming/">watch it here!</a></p>
<h2>Don&#8217;t forget about WickedlySmart Insiders</h2>
<p>If you haven&#8217;t already, <a href="http://wickedlysmart.com/jssignup/">sign up for our WickedlySmart Insider program</a> to get early access to the book, special video content, and access to a forum for questions, answers, and feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://wickedlysmart.com/head-first-javascript-programming-teasers-part-2/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
<enclosure url="http://wickedlysmart.com/wp-content/uploads/2013/03/02-SCRIPTfix_ForWeb.mp4" length="5242880" type="video/mp4" />
			<itunes:keywords>element,head first,html,html5,javascript,optimization,programming,script,teaser</itunes:keywords>
	<itunes:subtitle>Everyone knows you put your &lt;script&gt; element at the top of your HTML page, right?  Not so fast.</itunes:subtitle>
		<itunes:summary>Everyone knows you put your &lt;script&gt; element at the top of your HTML page, right?  Not so fast.</itunes:summary>
		<itunes:author>Wickedly Smart</itunes:author>
		<itunes:explicit>no</itunes:explicit>
	</item>
		<item>
		<title>A Teaser from Head First JavaScript Programming</title>
		<link>http://wickedlysmart.com/a-teaser-from-head-first-javascript-programming/</link>
		<comments>http://wickedlysmart.com/a-teaser-from-head-first-javascript-programming/#comments</comments>
		<pubDate>Wed, 06 Mar 2013 04:05:07 +0000</pubDate>
		<dc:creator>beth</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[behavior]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[head first]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[programming language]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://wickedlysmart.com/?p=1988</guid>
		<description><![CDATA[You already know that we've taken on writing a totally new Head First book&#8212;Head First JavaScript Programming&#8212;but don't just sit back and wait for it to arrive on the shelves.]]></description>
				<content:encoded><![CDATA[<p style="clear: both;"><iframe src="http://player.vimeo.com/video/60510772" height="281" width="500" allowfullscreen="" frameborder="0"></iframe></p>
<p>Exciting news: we&#8217;ve partnered with O&#8217;Reilly in two ways to bring you Head First JavaScript Programming, our new, in-progress title.</p>
<h2>Head First JavaScript Programming Teasers</h2>
<p>First, we&#8217;re creating a video series that we&#8217;ll roll out with one video a week over the next 3 months to bring you sneak peaks of what we&#8217;re doing with Head First JavaScript Programming. We&#8217;ll get you started with JavaScript, and let you in on a few JavaScript secrets, too. We&#8217;ll visit the backroads of JavaScript programming to bring you the story behind the story: those tidbits that only experts know. If you&#8217;re new to JavaScript, or you&#8217;re looking to freshen up your knowledge, this is for you. </p>
<p>We&#8217;ll be posting the videos right here on WickedlySmart.com. <a href="http://wickedlysmart.com/join-the-community/">Give us your email</a> and we&#8217;ll let you know each week when a new video is out. You&#8217;ll also find the videos cross posted on <a href="http://oreilly.com">oreilly.com</a>.</p>
<h2>WickedlySmart Insiders</h2>
<p>Second, we&#8217;ve announced our <a href="http://wickedlysmart.com/jssignup/">WickedlySmart Insider program</a>. This program gets you early access to the book, along with special video content and a forum devoted to questions, answers, and feedback about the book. Participate enough, and you&#8217;ll end up in the book! </p>
<h2>Head First JavaScript Programming Teasers Episodes</h2>
<ul>
<li><a href="http://wickedlysmart.com/head-first-javascript-programming-teasers-part-2/">Part 2: Getting JavaScript in your pages, the right way</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://wickedlysmart.com/a-teaser-from-head-first-javascript-programming/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
<enclosure url="http://wickedlysmart.com/wp-content/uploads/2013/03/01-Introduction-ORA-Final-Fix_ForWeb.mp4" length="24457534" type="video/mp4" />
			<itunes:keywords>behavior,CSS,head first,html,javascript,programming,programming language,scripting,web</itunes:keywords>
	<itunes:subtitle>Exciting news: we&#039;ve partnered with O&#039;Reilly in two ways to bring you Head First JavaScript Programming, our new, in-progress title.</itunes:subtitle>
		<itunes:summary>You already know that we&#039;ve taken on writing a totally new Head First book—Head First JavaScript Programming—but don&#039;t just sit back and wait for it to arrive on the shelves.</itunes:summary>
		<itunes:author>Wickedly Smart</itunes:author>
		<itunes:explicit>no</itunes:explicit>
		<itunes:duration>6:19</itunes:duration>
	</item>
		<item>
		<title>Twitter API: Using OAuth to access Twitter</title>
		<link>http://wickedlysmart.com/twitternews-oauth/</link>
		<comments>http://wickedlysmart.com/twitternews-oauth/#comments</comments>
		<pubDate>Sat, 09 Feb 2013 01:41:57 +0000</pubDate>
		<dc:creator>beth</dc:creator>
				<category><![CDATA[Beginner's Mind]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://wickedlysmart.com/?p=1969</guid>
		<description><![CDATA[Twitter has changed their REST API to require authentication for every request. This means that we can no longer use simple JSONP requests from our web pages to access Twitter data. In this post, I describe how to write a PHP server script to make an authenticated Twitter request using the tmhOAuth library, and create a simple web application to use that server script to access Twitter data.  And if you've read <a href="http://www.amazon.com/exec/obidos/ASIN/1449390544/elisabethfree-20">Head First HTML5 Programming</a>, you'll want to read this, so you can update your Chapter 7 code!]]></description>
				<content:encoded><![CDATA[<p>In a <a href="http://wickedlysmart.com/twitternews/">previous post</a>, I mentioned that Twitter is changing their <a href="https://dev.twitter.com/docs/api/1.1">API</a> so that all requests to the API will now require authentication. Unfortunately, what this means is that you can no longer use JSONP to request timeline and search data from Twitter (which we showed you how to do in Chapter 7 of <a href="http://www.amazon.com/exec/obidos/ASIN/1449390544/elisabethfree-20">Head First HTML5 Programming</a>). Instead, you will need to use a <em>proxy</em>: a piece of software that sits between the JavaScript code in your web page, and the Twitter API, and creates an authenticated request to Twitter so you can get the data you want.</p>
<p>For beginners, this probably sounds fairly daunting! But it&#8217;s actually not as bad as it sounds, because there are a number of <a href="https://dev.twitter.com/docs/twitter-libraries">free libraries</a> you can use to build your proxy. I&#8217;ve taken a look at a few of these, and found one, <a href="https://github.com/themattharris/tmhOAuth">tmhOAuth</a>, that is easy to use, and is built with PHP, which you may have on your computer already.  </p>
<p>Let&#8217;s build a small web application that you can use to search for a word on Twitter and get the tweets back in JSON format. Here are the steps we&#8217;re going to follow to create this app:</p>
<ol>
<li>Get a web server and PHP running on your computer</li>
<li>Create a Twitter application on Twitter that you can use to connect</li>
<li>Download and install the tmhOAuth PHP Library</li>
<li>Write a PHP proxy application to connect to Twitter</li>
<li>Create an HTML page with JavaScript code to connect to the proxy, retrieve the tweets, and display them in the web page</li>
</ol>
<h2>Get a web server and PHP running</h2>
<p>To get started, you&#8217;ll need to make sure you&#8217;re running a web server on your computer (we describe how to do this on page 231 of <a href="http://www.amazon.com/exec/obidos/ASIN/1449390544/elisabethfree-20">Head First HTML5 Programming</a>) and also that it&#8217;s running PHP. The easiest way to verify if you&#8217;re running PHP is to create a small file, <code>index.php</code> containing the following code:</p>
<pre>
&lt;?php phpinfo(); ?&gt;
</pre>
<p>Save this in a directory where your web server can see it (for instance, if you&#8217;re on a mac, that will be somewhere in your <code>~/Sites/</code> directory), and then go to the path to load the file. So, if you save <code>index.php</code> in <code>~/Sites/Twitter/</code> you&#8217;ll go to <code>http://localhost/~YOURUSERNAME/Twitter/index.php</code> to test. If you see output that looks like this at the top of the page:</p>
<p><a href="http://wickedlysmart.com/twitternews-oauth/php/" rel="attachment wp-att-1970"><img src="http://wickedlysmart.com/wp-content/uploads/2013/02/php.tiff" alt="php" class="alignleft size-thumbnail wp-image-1970" /></a></p>
<p>then you&#8217;ve got PHP running! Note that the version of PHP you are running might be different but as long as it&#8217;s 5 or greater you&#8217;re fine. If you&#8217;re on a Mac, chances are you are already running a web server with PHP and you won&#8217;t have to do anything. If you&#8217;re on Windows, you might have to install PHP and get it running; check out <a href="http://php.net/manual/en/install.windows.php">these instructions</a> for more information on how to do that (note that you&#8217;ll need to make sure you have a web server running first, probably Apache or IIS). If you&#8217;re running Windows 7, check out <a href="http://simonguest.com/2009/03/09/using-windows-7-to-host-php-applications-in-5-easy-steps/">this article</a> which describes how to get PHP up and running in 5 steps.</p>
<p>Once you get PHP running, you&#8217;ll need to download <a href="https://github.com/themattharris/tmhOAuth">tmhOAuth</a> (click the ZIP button on the github project page). Save the zip in a folder where your web server can see it and where you&#8217;ll be creating this web application (again, if you&#8217;re on a Mac, this will probably be somewhere in the <code>~/Sites/</code> folder). Unzip the folder (if it isn&#8217;t done automatically for you), and you should have a folder named <code>tmhOAuth-master</code>. </p>
<h2>Create a Twitter application</h2>
<p>The next step is to create a Twitter application on Twitter. Go to <code>http://dev.twitter.com</code> and login with your Twitter account. Once you&#8217;ve logged in, go to your user account (your user name in the top right corner) and click on &#8220;My Applications&#8221;. You can create a new application by clicking on &#8220;Create a new application&#8221;. Give it a name (which will need to be unique among all Twitter applications, so you might want to use your initials in the name), a description, and a website. This website can be a temporary placeholder for now; it doesn&#8217;t have to really exist. If you have a web site up and running, you can go ahead and create a folder there to use as the temporary URL. If you&#8217;re planning on running this app on your web site at some point, you can use the eventual URL you&#8217;ll use for the app.</p>
<p>That&#8217;s all you need! Agree to the rules, and click &#8220;Create your Twitter application&#8221;. (At some point, it&#8217;s a good idea to read through all the rules and make sure you really agree, of course).</p>
<p>Once you&#8217;ve created an application, you&#8217;ll need to get your consumer and user secret tokens for the application. <strong>Do NOT share these with anyone!</strong> These are private and need to be protected (if someone else gets a hold of them, they can use them to hack your Twitter account, and violate the Twitter rules, which might get you kicked off Twitter, so keep them safe!!).</p>
<p>To get these, click on the &#8220;Details&#8221; tab of your application and look for these items: Consumer key, Consumer secret, Access token, Access token secret. Create a new file in the same directory where you saved the tmhOAuth folder, and add:</p>
<pre>
&lt;?php
$consumer_key = 'YOUR CONSUMER KEY';
$consumer_secret = 'YOUR CONSUMER SECRET';
$user_token = 'YOUR ACCESS TOKEN';
$user_secret = 'YOUR ACCESS TOKEN SECRET';
?&gt;
</pre>
<p>Replace the text, &#8220;YOUR CONSUMER KEY&#8221; etc. with the data you get for these keys from your Twitter application and save the file as <code>app_tokens.php</code>.</p>
<h2>The PHP</h2>
<p>Now let&#8217;s create the proxy!  This is a PHP program that will take requests from your JavaScript code, create an authenticated request to send to Twitter, process the results, and pass them back to your JavaScript.  Here&#8217;s the PHP:</p>
<pre>
&lt;?php
require 'app_tokens.php';
require 'tmhOAuth-master/tmhOAuth.php';
$query = htmlspecialchars($_GET['query']);
if (empty($query)) {
    $query = "html5";
}
$connection = new tmhOAuth(array(
    'consumer_key' => $consumer_key,
    'consumer_secret' => $consumer_secret,
    'user_token' => $user_token,
    'user_secret' => $user_secret
));
// Get the timeline with the Twitter API
$http_code = $connection->request('GET',
    $connection->url('1.1/search/tweets'),
    array('q' => $query, 'count' => 10, 'lang' => 'en'));
// Request was successful
if ($http_code == 200) {
    // Extract the tweets from the API response
    $response = json_decode($connection->response['response'],true);
    $tweet_data = $response['statuses'];

    // Accumulate tweets from results
    $tweet_stream = '[';
    foreach ($tweet_data as $tweet) {
        // Add this tweet's text to the results
        $tweet_stream .= ' { "tweet": ' . json_encode($tweet['text']) . ' },';
    }
    $tweet_stream = substr($tweet_stream, 0, -1);
    $tweet_stream .= ']';
    // Send the tweets back to the Ajax request
    print $tweet_stream;
}
// Handle errors from API request
else {
    if ($http_code == 429) {
        print 'Error: Twitter API rate limit reached';
    }
    else {
        print 'Error: Twitter was not able to process that request';
    }
} 
?&gt;
</pre>
<p>Save the file as <code>search.php</code>. Notice that I&#8217;m linking to the tmhOAuth library by requiring <code>tmhOAuth-master/tmhOAuth.php</code> which means the <code>tmhOAuth-master</code> folder must be at the same level as <code>search.php</code>. I&#8217;m also linking to <code>app_tokens.php</code>, so again, this file should be at the same level as <code>search.php</code>.</p>
<p>So, what this code does is to create a request for Twitter using the secret keys you added to <code>app_tokens.php</code>, and then makes the request to the Twitter REST API (version 1.1). We&#8217;re using the <a href="https://dev.twitter.com/docs/api/1.1/get/search/tweets">search API</a>, but there are <a href="https://dev.twitter.com/docs/api/1.1">many other types of requests</a> you can make too, like to get a user&#8217;s timeline or the Twitter home timeline, and many more.</p>
<p>We&#8217;re accepting a &#8220;query&#8221; parameter in the URL (and you&#8217;ll see how we can pass that to the PHP script from our JavaScript shortly), which acts as the search query. This also gets sent as part of the request to Twitter, so the tweets you get back will match that search query.  We&#8217;re requesting 10 tweets, but you can request more if you want (although there is a limit, so don&#8217;t request too many).</p>
<p>If the request is successful, then the status returned from the request will be 200 (that means everything is okay), so we can extract the tweets from the response. Twitter sends copious information about all the tweets (you can see an <a href="https://dev.twitter.com/docs/api/1.1/get/search/tweets">example response here</a>), so for this example we&#8217;re just pulling out the tweet text and ignoring the rest of the data. We&#8217;re putting all the tweets into a JSON array, and &#8220;printing&#8221; this array which sends the data back to your JavaScript code.</p>
<p>You can test this PHP script from the command line: bring up a terminal window, and navigate to the directory where your <code>search.php</code> script is located, and type:</p>
<pre>
php search.php
</pre>
<p>If it&#8217;s working correctly, you&#8217;ll see the results of a search for &#8220;html5&#8243; displayed in the terminal window. If you&#8217;ve made an error in the code you&#8217;ll see the error message and hopefully you can fix it.</p>
<h2>The JavaScript</h2>
<p>Finally! It&#8217;s time to write your JavaScript code and make a web page. We&#8217;ll keep the web page super simple:</p>
<pre>
&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Twitter&lt;/title&gt;
&lt;meta charset="utf-8"&gt;
&lt;script&gt;
// Your JavaScript code will go here
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form&gt;
    Query: &lt;input type="text" id="query"&gt;
    &lt;input type="button" id="submit" value="Get Tweets"&gt;
&lt;/form&gt;
&lt;div id="error"&gt;&lt;/div&gt;
&lt;ul&gt;&lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Save this HTML as <code>search.html</code> in the same directory and at the same level as <code>search.php</code>. This web page simply has a form input where you can input the search term you want to use, and an empty &#8220;error&#8221; &lt;div&gt; in case we get an error (so we can display an error message), and an empty list where we&#8217;ll add the tweets if everything goes well.</p>
<p>Now, let&#8217;s add the JavaScript:</p>
<pre>
window.onload = function() {
    // set up the click handler for the form button
    var button = document.getElementById("submit");
    button.onclick = getTweets;
}

// when you click "Get Tweets" we call this function
function getTweets() {
    // set up a new XHR request
    var xhr = new XMLHttpRequest();
    // we're calling search.php and passing in a query string
    var url = "search.php?query=";
    var query = document.getElementById("query").value;
    if (!query) {
        query = "html5";
    }
    // we encode the query to handle any special characters properly
    url += encodeURIComponent(query);

    // this is the function that is called when the XHR request
    // to our search.php script is handled, and a response sent back
    xhr.onload = function() {
        // if everything went okay, then send the response data
        // to the displayTweets() function
        if (xhr.status == 200) {
            displayTweets(xhr.responseText);
        } else {
            var errorDiv = document.getElementById("error");
            errorDiv.innerHTML = "Error getting tweets: " + xhr.status;
        }
    };
    // make the request!
    xhr.open("GET", url);
    xhr.send(null);
}

function displayTweets(tweets) {
    // tweets is a big long string, so we need to parse it 
    // into JSON first
    tweets = JSON.parse(tweets);
    var ul = document.querySelector("ul");
    // clear existing tweets from list
    while (ul.hasChildNodes()) {
        ul.removeChild(ul.lastChild);
    }
    // add new tweets
    for (var i = 0; i < tweets.length; i++) {
        var li = document.createElement("li");
        li.innerHTML = tweets[i].tweet;
        ul.appendChild(li);
    }
}
</pre>
<p>Make sure you add this JavaScript into the &lt;script&gt; element at the top of the <code>search.html</code> HTML file you just created. </p>
<p>When you enter a search term into the form and click the "Get Tweets" button, the <code>getTweets()</code> function is called. This function sets up the URL for the XHR request, and also sets up the XHR object with a callback function. We're getting the search query from the form, and adding it to the URL for the XHR request. We send the request and if all goes okay, we call the <code>displayTweets()</code> function, passing in the response text from the XHR request. </p>
<p>In <code>displayTweets()</code> we first call the <code>JSON.parse()</code> method to parse the <code>tweets</code> string (this string is stringified JSON data), so we have to parse it to get the object from the JSON). Then we can loop through all the tweets in the array, and get each tweet from the array. If you want to see what the tweets data looks like, just add the line:</p>
<pre>
console.log(tweets);
</pre>
<p>below where we call <code>JSON.parse()</code>.</p>
<p>And for each tweet, we simply create a new &lt;li&gt; element, add the tweet text as its content, and append it to the &lt;ul&gt; element in the page. </p>
<p>Here's what you should see (with different tweets of course):</p>
<p><a href="http://wickedlysmart.com/wp-content/uploads/2013/02/TwitterOAuth.jpg"><img src="http://wickedlysmart.com/wp-content/uploads/2013/02/TwitterOAuth.jpg" alt="Twitter application" width="600" class="aligncenter size-full wp-image-1976" style="box-shadow: 3px 3px 5px #afafaf;" /></a></p>
<p>That's it! Clearly, this is much more complex than our original code to use JSONP to request tweets directly from Twitter via JavaScript, but with the new API in effect, there's just no way around it. If you want to use this script to update the example in Chapter 7, you add the JavaScript code to make the request to <code>search.php</code> to <code>tweetshirt.js</code>, change the call to <code>displayTweets()</code> to <code>updateTweets()</code> and modify the <code>updateTweets()</code> function so you parse the JSON in <code>tweets</code> before processing it. You'll also need to remove the JSONP script at the bottom of <code>index.html</code> (since that request no longer works).</p>
<h2>For more information</h2>
<p>If you haven't already, check out Chapter 6 of <a href="http://www.amazon.com/exec/obidos/ASIN/1449390544/elisabethfree-20">Head First HTML5 Programming</a> which explains in detail how XHR works. In that chapter we talk about the security requirement that your JavaScript must make a request to a server script that's running on the <em>same server</em>. As you've seen, in this example, that's exactly what we're doing! Your PHP script is the server script, and you're making a request to it from your JavaScript. It's the PHP script that makes the request to Twitter, and this PHP script doesn't have the same security requirement as your JavaScript does, so the request works. </p>
<p>I based the code for this example on the <a href="http://140dev.com/member/">sample code</a> by Adam Green (with a few modifications). Adam also has two <em>free</em> eBooks available that describe how to use tmhOAuth, and shows additional examples of how to use the API, and how to write jQuery code to use the PHP scripts.</p>
]]></content:encoded>
			<wfw:commentRss>http://wickedlysmart.com/twitternews-oauth/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
