<?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>Navarr&#039;s Tech Side &#187; coding</title>
	<atom:link href="http://tech.navarr.me/tag/coding/feed" rel="self" type="application/rss+xml" />
	<link>http://tech.navarr.me</link>
	<description>The Technical Side of my Life</description>
	<lastBuildDate>Tue, 07 Feb 2012 22:32:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<cloud domain='tech.navarr.me' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>Magical Typesetting in PHP</title>
		<link>http://tech.navarr.me/2010/06/magical-typesetting-in-php.html</link>
		<comments>http://tech.navarr.me/2010/06/magical-typesetting-in-php.html#comments</comments>
		<pubDate>Mon, 28 Jun 2010 10:32:39 +0000</pubDate>
		<dc:creator>Navarr</dc:creator>
				<category><![CDATA[class::GenericVariable]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[typesetting]]></category>

		<guid isPermaLink="false">http://tech.gtaero.net/2010/06/magical-typesetting-in-php.html</guid>
		<description><![CDATA[So, well working for Route 50 I came up with a fantastic idea for “typesetting” that well exceeded the norm.  Something we constantly have issues with is what type of string was sent to MySQL originally (some of us have different conventional ideas about where escaping HTML should be located.) as well as outputting that [...]]]></description>
			<content:encoded><![CDATA[<p>So, well working for <a href="http://route50.net/" target="_blank">Route 50</a> I came up with a fantastic idea for “typesetting” that well exceeded the norm.  Something we constantly have issues with is what type of string was sent to MySQL originally (some of us have different conventional ideas about where escaping HTML should be located.) as well as outputting that string in its correct format.</p>
<p>Me, with my fantastic idea, came up with a couple variables classes that I put in a file named <a href="http://gist.github.com/451216">class_typesetting.php</a>.  The version on gist.github is slightly modified from the original version on the server.</p>
<p>It creates three classes, GenericVariable, String, and Number.  So far we haven’t used GenericVariable, but since the introduction of the classes I’ve taken it upon myself to introduce them to any new code I write.  When we create Core v5 (which will Objectify everything) strings taken from SQL will automatically be re-stored as String class variables.</p>
<p>First, lets examine some useful functionality.</p>
<pre><div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://tech.navarr.me/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://tech.navarr.me/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://tech.navarr.me/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://tech.navarr.me/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$title</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> String<span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span>“title”<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// &lt;strong&gt;Hello 'World'&lt;/strong&gt;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span>
HTML Output: <span style="color: #000000; font-weight: bold;">&lt;?=</span> <span style="color: #000088;">$title</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">html</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> (&amp;lt;strong&amp;gt;Hello 'World'&amp;lt;/strong&amp;gt;)
Text Output: <span style="color: #000000; font-weight: bold;">&lt;?=</span> <span style="color: #000088;">$title</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">text</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> (Hello 'World')
SQL Output: <span style="color: #000000; font-weight: bold;">&lt;?=</span> <span style="color: #000088;">$title</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sql</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> (&lt;strong&gt;Hello \'World\'&lt;/strong&gt;)
HTML Attribute Output: <span style="color: #000000; font-weight: bold;">&lt;?=</span> <span style="color: #000088;">$title</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">html_attr</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>(&amp;lt;strong&amp;gt;Hello &amp;#039;World&amp;#039;&amp;lt;/strong&amp;gt;)</pre></div></div></pre>
<p>This allows for quick and easy access to the variables without having to worry about escaping them.</p>
<p>I recommend you hit the download link (class_typesetting.php) and play around with it.  Tell me about anything that’s not working correctly and if possible implement it in your future code.  (This means I’m putting this code in the “Public Domain”).</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.navarr.me/2010/06/magical-typesetting-in-php.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TwCLI</title>
		<link>http://tech.navarr.me/2010/03/twcli.html</link>
		<comments>http://tech.navarr.me/2010/03/twcli.html#comments</comments>
		<pubDate>Mon, 01 Mar 2010 10:48:09 +0000</pubDate>
		<dc:creator>Navarr</dc:creator>
				<category><![CDATA[TwCLI]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://tech.gtaero.net/2010/03/twcli.html</guid>
		<description><![CDATA[So, you think you’ve had a lot of fun with twitter on the web and all those twitter clients you’ve played around with?&#160; What if I told you that you haven’t seen anything yet?&#160; What if I told you that you could use Twitter in a TRUE Command Line Interface with specific commands for interacting [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twcli.koneko-chan.net/"><img style="display: inline; margin-left: 0px; margin-right: 0px" align="right" src="http://twcli.koneko-chan.net/img/logo.png" /></a>So, you think you’ve had a lot of fun with twitter on the web and all those twitter clients you’ve played around with?&#160; What if I told you that you haven’t seen anything yet?&#160; What if I told you that you could use Twitter in a TRUE Command Line Interface with specific commands for interacting with twitter.</p>
<p>Welcome to one of my latest and greatest creations, <a href="http://twcli.koneko-chan.net/"><abbr title="Twitter Command Line Interface">TwCLI</abbr></a>.</p>
<p>TwCLI supports almost everything twitter has to offer, and will soon be expanding to support even more!&#160; <a href="http://tech.gtaero.net/wp-content/uploads/2010/03/image3.png" rel="lightbox[392]"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="TwCLI (Click to Enlarge)" alt="TwCLI (Click to Enlarge)" src="http://tech.gtaero.net/wp-content/uploads/2010/03/image_thumb3.png" width="500" height="404" /></a> TwCLI includes a long list of commands, help information for each command, a theme-able interface (Specify a Pre-Determined theme, import from your twitter profile, or even specify an external CSS file!), Geo-Location, Retweets, and even Contributor Support!</p>
<p>Go ahead, <a href="http://twcli.koneko-chan.net/">give it a try</a> and tell me what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.navarr.me/2010/03/twcli.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Retrieve a Zipcode Using JavaScript</title>
		<link>http://tech.navarr.me/2010/02/how-to-retrieve-a-zipcode-using-javascript.html</link>
		<comments>http://tech.navarr.me/2010/02/how-to-retrieve-a-zipcode-using-javascript.html#comments</comments>
		<pubDate>Thu, 25 Feb 2010 16:59:51 +0000</pubDate>
		<dc:creator>Navarr</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[geocoding]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[reverse geocoding]]></category>

		<guid isPermaLink="false">http://tech.gtaero.net/?p=375</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<pre><div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://tech.navarr.me/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://tech.navarr.me/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://tech.navarr.me/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://tech.navarr.me/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Retrieve user’s Zipcode</span>
<span style="color: #006600; font-style: italic;">// Demo at http://sandbox.gtaero.net/zipcode.html</span>
<span style="color: #003366; font-weight: bold;">function</span> retrieve_zip<span style="color: #009900;">&#40;</span>callback<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>google<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> google <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span>err<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> google <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">// Stupid Exceptions</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>navigator.<span style="color: #660066;">geolocation</span><span style="color: #009900;">&#41;</span> <span style="color: #006600; font-style: italic;">// FireFox/HTML5 GeoLocation</span>
	<span style="color: #009900;">&#123;</span>
		navigator.<span style="color: #660066;">geolocation</span>.<span style="color: #660066;">getCurrentPosition</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>position<span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			zip_from_latlng<span style="color: #009900;">&#40;</span>position.<span style="color: #660066;">coords</span>.<span style="color: #660066;">latitude</span><span style="color: #339933;">,</span>position.<span style="color: #660066;">coords</span>.<span style="color: #660066;">longitude</span><span style="color: #339933;">,</span>callback<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>google <span style="color: #339933;">&amp;&amp;</span> google.<span style="color: #660066;">gears</span><span style="color: #009900;">&#41;</span> <span style="color: #006600; font-style: italic;">// Google Gears GeoLocation</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> geloc <span style="color: #339933;">=</span> google.<span style="color: #660066;">gears</span>.<span style="color: #660066;">factory</span>.<span style="color: #660066;">create</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'beta.geolocation'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		geloc.<span style="color: #660066;">getPermission</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		geloc.<span style="color: #660066;">getCurrentPosition</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>position<span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			zip_from_latlng<span style="color: #009900;">&#40;</span>position.<span style="color: #660066;">latitude</span><span style="color: #339933;">,</span>position.<span style="color: #660066;">longitude</span><span style="color: #339933;">,</span>callback<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>err<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #003366; font-weight: bold;">function</span> zip_from_latlng<span style="color: #009900;">&#40;</span>latitude<span style="color: #339933;">,</span>longitude<span style="color: #339933;">,</span>callback<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">// Setup the Script using Geonames.org's WebService</span>
		<span style="color: #003366; font-weight: bold;">var</span> script <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;script&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		script.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;http://ws.geonames.org/findNearbyPostalCodesJSON?lat=&quot;</span> <span style="color: #339933;">+</span> latitude <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;&amp;lng=&quot;</span> <span style="color: #339933;">+</span> longitude <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;&amp;callback=&quot;</span> <span style="color: #339933;">+</span> callback<span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">// Run the Script</span>
		document.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;head&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>script<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #003366; font-weight: bold;">function</span> example_callback<span style="color: #009900;">&#40;</span>json<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">// Now we have the data!  If you want to just assume it's the 'closest' zipcode, we have that below:</span>
	zip <span style="color: #339933;">=</span> json.<span style="color: #660066;">postalCodes</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">postalCode</span><span style="color: #339933;">;</span>
	country <span style="color: #339933;">=</span> json.<span style="color: #660066;">postalCodes</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">countryCode</span><span style="color: #339933;">;</span>
	state <span style="color: #339933;">=</span> json.<span style="color: #660066;">postalCodes</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">adminName1</span><span style="color: #339933;">;</span>
	county <span style="color: #339933;">=</span> json.<span style="color: #660066;">postalCodes</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">adminName2</span><span style="color: #339933;">;</span>
	place <span style="color: #339933;">=</span> json.<span style="color: #660066;">postalCodes</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">placeName</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>zip<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
retrieve_zip<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;example_callback&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Alert the User's Zipcode</span></pre></div></div></pre>
]]></content:encoded>
			<wfw:commentRss>http://tech.navarr.me/2010/02/how-to-retrieve-a-zipcode-using-javascript.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>simpleTAPI is Broken</title>
		<link>http://tech.navarr.me/2010/02/simpletapi-is-broken.html</link>
		<comments>http://tech.navarr.me/2010/02/simpletapi-is-broken.html#comments</comments>
		<pubDate>Sat, 20 Feb 2010 23:34:08 +0000</pubDate>
		<dc:creator>Navarr</dc:creator>
				<category><![CDATA[simpleTAPI]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://tech.gtaero.net/2010/02/simpletapi-is-broken.html</guid>
		<description><![CDATA[Apparently I’ve completely broken simpleTAPI somewhere between Build 27 and Build 30.&#160; I thought I had fixed it with Build 29, but it seems that I was mistaken. In lieu of this, I am putting simpleTAPI on a temporary hiatus.&#160; I will be re-constructing it from scratch (though, probably looking back and using a good [...]]]></description>
			<content:encoded><![CDATA[<p>Apparently I’ve completely broken simpleTAPI somewhere between Build 27 and Build 30.&#160; I thought I had fixed it with Build 29, but it seems that I was mistaken.</p>
<p>In lieu of this, I am putting simpleTAPI on a temporary hiatus.&#160; I will be re-constructing it from scratch (though, probably looking back and using a good bit of the original code).&#160; The next version should have several configurable options, and will hopefully interact with the Twitter API much better than the previous versions.</p>
<p>Build 30 was supposed to return results as an array([“TAPI”] =&gt; data, [“result”] =&gt; data).&#160; But all I’m getting from it at the moment is “Unable to Authenticate User.”</p>
<p>Those wanting to use simpleTAPI should use <a href="http://github.com/navarr/simpleTAPI/commit/cc1567ce27c270a4314ba030f14d20684b128bf0">Build 27</a>, though you will have to deal with some minor quirks in the way results are returned.&#160; (the TAPI array is simply appended to the results array, making things slightly complicated if you don’t unset($result[“TAPI”]);</p>
<p>What will be simpleTAPI 0.4 should have better error handling, better return data, and better built-in caching.&#160; I’m also hoping to build in support for xAuth and Delegated OAuth, if at all possible.&#160; (Though probably not since simpleTAPI is built upon another OAuth library).</p>
<p>So, I’m asking for any and all feature requests.&#160; Is there something about simpleTAPI you don’t like or want to be improved?&#160; Please, post in the comments below!</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.navarr.me/2010/02/simpletapi-is-broken.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hunting Down the Bugs &#8211; TwCLI on Chrome for Linux Beta</title>
		<link>http://tech.navarr.me/2009/12/hunting-down-the-bugs-twcli-on-chrome-for-linux-beta.html</link>
		<comments>http://tech.navarr.me/2009/12/hunting-down-the-bugs-twcli-on-chrome-for-linux-beta.html#comments</comments>
		<pubDate>Tue, 15 Dec 2009 18:51:17 +0000</pubDate>
		<dc:creator>Navarr</dc:creator>
				<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[Hunting Down the Bugs]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[TwCLI]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://tech.gtaero.net/2009/12/hunting-down-the-bugs-twcli-on-chrome-for-linux-beta.html</guid>
		<description><![CDATA[This is the first post of a new series, looking at some of the odder bugs encountered while developing for the expanding Web, no matter how basic a bug it may be. Thanks to twitter user @paperfairy, a bug was discovered on my Command Line Twitter Client, TwCLI. For some reason, when submitting a command [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is the first post of a new series, looking at some of the odder bugs encountered while developing for the expanding Web, no matter how basic a bug it may be.</em></p>
<p>Thanks to twitter user @<a href="http://twitter.com/paperfairy" rel="nofollow">paperfairy</a>, a bug was discovered on my Command Line Twitter Client, <a title="Twitter Command Line Interface" href="http://twcli.koneko-chan.net/" rel="me">TwCLI</a>.</p>
<p>For some reason, when submitting a command in Chrome for Linux, the page would simply refresh, and the command would never be sent.&#160; At first, I had no possible way to track down this bug.&#160; I didn’t have a linux box (with a GUI, anyway) so I simply told him that it was unfortunate, but it’d have to stay a bug.&#160; Until a <a href="http://lifehacker.com/5426007/most-popular-free-windows-downloads-of-2009" rel="nofollow">recent post on lifehacker</a> brought my attention to <a href="http://lifehacker.com/5195999/portable-ubuntu-runs-ubuntu-inside-windows">Portable Ubuntu</a>. I immediately installed it, opened up the Chrome website in Firiefox, installed Chrome Beta, and headed over to TwCLI to see what was amiss.</p>
<p>Of course, it was a single line in a detection script to send Geo-Data to Twitter (as long as the user approved it, of course):</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span>(google.gears) {</pre>
<p><!--CRLF--></div>
</div>
<p>This single line was throwing an exception I hadn’t encountered in other browsers – Google wasn’t defined.&#160; Oddly, I thought it would handle that properly, since google wasn’t defined, it would just skip over it, but instead it threw an error and halted all further javascript code.</p>
<p>The fix was simpler than tracking down the bug, I simply had to add this to the start of the javascript code:</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">try</span>{ <span style="color: #0000ff">if</span>(!google) { google = 0; } } <span style="color: #0000ff">catch</span>(err) { google = 0; }</pre>
<p><!--CRLF--></div>
</div>
<p>And voila, I had both a check for google, and a catch if it decided to throw errors while checking for it.</p>
<p>Whether this is a Chrome bug or not, I don’t know – I simply don’t know enough about JavaScript in order to say so either way.&#160; But, are undefined variables supposed to throw errors, or are they simply supposed to return false?</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.navarr.me/2009/12/hunting-down-the-bugs-twcli-on-chrome-for-linux-beta.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript &amp; CSS3 Lightbox</title>
		<link>http://tech.navarr.me/2009/12/javascrpit-css3-lightbox.html</link>
		<comments>http://tech.navarr.me/2009/12/javascrpit-css3-lightbox.html#comments</comments>
		<pubDate>Sat, 12 Dec 2009 00:33:33 +0000</pubDate>
		<dc:creator>Navarr</dc:creator>
				<category><![CDATA[CSS3 Lightbox]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[lightbox]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://tech.gtaero.net/2009/12/javascrpit-css3-lightbox.html</guid>
		<description><![CDATA[Usage: Call createLightbox(); to create the actual lightbox element (does not display anything). Call fillLightbox(string content) to fill the lightbox with RAW HTMLor Call appendLightbox(element childElement) to append a DOM Node directly into the lightbox. Call setLightboxSize(int width, int height, null, string unit) to set the width and height of the lightbox.  Unit will default [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><script src="http://gist.github.com/254614.js?file=css3_lightbox.js"></script></p>
<p><strong>Usage</strong>:</p>
<ul>
<li>Call <strong>createLightbox();</strong> to create the actual lightbox element (does not display anything).</li>
<li>Call <strong>fillLightbox(</strong><em>string </em>content<strong>)</strong> to fill the lightbox with RAW HTML<em>or</em>
<p>Call <strong>appendLightbox(</strong><em>element</em> childElement<strong>)</strong> to append a DOM Node directly into the lightbox.</li>
<li>Call <strong>setLightboxSize(</strong><em>int</em> width, <em>int</em> height, <em>null</em>, <em>string</em> unit) to set the width and height of the lightbox.  Unit will default to pixels “px” if not specified.</li>
<li>Call <strong>showLightbox()</strong> to actually display the lightbox to the user.</li>
<li>Call <em>boolean</em> <strong>lightboxVisible()</strong> to determine if the lightbox is still visible or not.</li>
<li>Call <strong>hideLightbox()</strong> to remove the lightbox from view.</li>
<li>Call <strong>cleanLightbox()</strong> to delete all content inside the lightbox container.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tech.navarr.me/2009/12/javascrpit-css3-lightbox.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Voice OMS Code on Github</title>
		<link>http://tech.navarr.me/2009/11/google-voice-oms-code-on-github.html</link>
		<comments>http://tech.navarr.me/2009/11/google-voice-oms-code-on-github.html#comments</comments>
		<pubDate>Mon, 30 Nov 2009 00:52:34 +0000</pubDate>
		<dc:creator>Navarr</dc:creator>
				<category><![CDATA[子猫ちゃん GV OMS]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Google Voice]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[OMS]]></category>
		<category><![CDATA[Outlook]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://tech.gtaero.net/2009/11/google-voice-oms-code-on-github.html</guid>
		<description><![CDATA[I pushed the 子猫ちゃん Google Voice OMS service’s code to github, so you can now download it – albeit, to make it work it’ll take a lot of hacking and a lot more editing. Either way, I’ve gotten no donations and no offers for free SSL hosting, so it looks like this project just will [...]]]></description>
			<content:encoded><![CDATA[<p>I pushed the 子猫ちゃん Google Voice OMS service’s code to github, so you can now download it – albeit, to make it work it’ll take a lot of hacking and a lot more editing.</p>
<p>Either way, I’ve gotten no donations and no offers for free SSL hosting, so it looks like this project just will not be seeing the light of day.&#160; It’s a shame, I worked a long time to make it work, and it’s obviously something a lot of business professionals would be able to find a use for.</p>
<p>Oh well, you can find the project <a href="http://github.com/navarr/Google-Voice-OMS">on github</a>.</p>
<p>Remember to abide by the Usage License!</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.navarr.me/2009/11/google-voice-oms-code-on-github.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>simpleTAPI v0.2.1 &#8211; Build 16 (Twitter API Library)</title>
		<link>http://tech.navarr.me/2009/11/simpletapi-v0-2-1-build-16-twitter-api-library.html</link>
		<comments>http://tech.navarr.me/2009/11/simpletapi-v0-2-1-build-16-twitter-api-library.html#comments</comments>
		<pubDate>Sun, 22 Nov 2009 21:58:16 +0000</pubDate>
		<dc:creator>Navarr</dc:creator>
				<category><![CDATA[simpleTAPI]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://tech.gtaero.net/2009/11/simpletapi-v0-2-1-build-16-twitter-api-library.html</guid>
		<description><![CDATA[I’ve renamed the Twitter API Library to “simpleTAPI.”&#160; Yes, I’m not very good at names when it comes to this sort of thing.&#160; We’ve jumped forward two builds since my last post here. Build 15 The addition of a quick variable, bool Twitter::geo_enabled. Returns TRUE if the user has turned on geo functionality, FALSE if [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve renamed the Twitter API Library to “simpleTAPI.”&#160; Yes, I’m not very good at names when it comes to this sort of thing.&#160; We’ve jumped forward two builds since my last post here.</p>
<p><strong>Build 15</strong></p>
<ul>
<li>The addition of a quick variable, <em>bool</em> Twitter::geo_enabled.      <br />Returns TRUE if the user has turned on geo functionality, FALSE if not.</li>
</ul>
<p><strong>Version 0.2.1</strong></p>
<ul>
<li>Re-Organized classes.&#160; Separated TwitterOAuth and OAuth into separate files, and moved them along with Twitter into a “twitter” folder.&#160; All classes can be loaded simply by including <strong>Twitter.lib.php</strong>.</li>
</ul>
<p><strong>Build 16</strong></p>
<ul>
<li>Fixed a minor inconsistency in TWML where different functions returned different links to a twitter user’s profile.</li>
<li>Fixed a bug where specifying screennameonly=TRUE for TWML::name resulted in an empty hyperlink.</li>
</ul>
<p><strong>Examples</strong></p>
<ul>
<li>Started work on Example files to teach how to use simpleTAPI.&#160; Currently, the only one included is a basic Update script.&#160; This file includes logging in, updating a status, and returning the same status as well as some basic TWML examples.</li>
</ul>
<p>So, enjoy!&#160; I will continue to improve this library.&#160; Please remember to post all issues and feature requests either on this blog or the <a href="http://github.com/navarr/simpleTAPI">github page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.navarr.me/2009/11/simpletapi-v0-2-1-build-16-twitter-api-library.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter API Library Build 13 (Breaking Change)</title>
		<link>http://tech.navarr.me/2009/11/twitter-api-library-build-13-breaking-change.html</link>
		<comments>http://tech.navarr.me/2009/11/twitter-api-library-build-13-breaking-change.html#comments</comments>
		<pubDate>Thu, 19 Nov 2009 23:21:52 +0000</pubDate>
		<dc:creator>Navarr</dc:creator>
				<category><![CDATA[simpleTAPI]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://tech.gtaero.net/2009/11/twitter-api-library-build-13-breaking-change.html</guid>
		<description><![CDATA[I pushed Build 13 today.&#160; This build adds the recent addition of descriptions to a user’s list. This change breaks: TwitterAPI::lists_create and TwitterAPI::lists_update The new profiles for these commands are as follows: TwitterAPI::lists_create( str $name [, str $description = NULL [, bool $privacy = TWITTER_PRIVACY_PUBLIC ] ] ) TwitterAPI::lists_update( str $name [, str $new_name = [...]]]></description>
			<content:encoded><![CDATA[<p>I pushed <a href="http://github.com/navarr/PHP-Twitter-API-Library/commit/f27608a709ac04676df68a3689845c72eb4755cf">Build 13</a> today.&#160; This build adds the recent addition of descriptions to a user’s list.</p>
<p>This change breaks:</p>
<ul>
<li>TwitterAPI::<strong>lists_create</strong> <em>and</em></li>
<li>TwitterAPI::<strong>lists_update</strong></li>
</ul>
<p>The new profiles for these commands are as follows:</p>
<blockquote><p>TwitterAPI::<strong>lists_create</strong>( <em>str</em> $name [, <em>str</em> $description = NULL [, <em>bool</em> $privacy = TWITTER_PRIVACY_PUBLIC ] ] )</p>
<p>TwitterAPI::<strong>lists_update</strong>( <em>str</em> $name [, <em>str</em> $new_name = NULL [, <em>str</em> $description = NULL [, <em>bool</em> $privacy = NULL ] ] ] )</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://tech.navarr.me/2009/11/twitter-api-library-build-13-breaking-change.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter API Library Build 12</title>
		<link>http://tech.navarr.me/2009/11/twitter-api-library-build-12.html</link>
		<comments>http://tech.navarr.me/2009/11/twitter-api-library-build-12.html#comments</comments>
		<pubDate>Wed, 18 Nov 2009 00:03:34 +0000</pubDate>
		<dc:creator>Navarr</dc:creator>
				<category><![CDATA[simpleTAPI]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://tech.gtaero.net/2009/11/twitter-api-library-build-12.html</guid>
		<description><![CDATA[If you’ve been watching this blog, you’ll notice I skipped Build 11 – It was small, and was trumped by its quick replacement – Build 12.&#160; Builds 11 and 12 fixed five previous known issues, while build 12 fixed a non-issue with build 11.&#160; Fixes listed below: The following now work with all users: Twitter::get_sn_from_id() [...]]]></description>
			<content:encoded><![CDATA[<p>If you’ve been watching this blog, you’ll notice I skipped Build 11 – It was small, and was trumped by its quick replacement – Build 12.&#160; Builds 11 and 12 fixed five previous known issues, while build 12 fixed a non-issue with build 11.&#160; Fixes listed below:</p>
<ul>
<li>The following now work with all users:
<ul>
<li>Twitter::get_sn_from_id() </li>
<li>Twitter::get_name_from_id() </li>
<li>Twitter::get_id_from_sn() </li>
<li>TWML::name() </li>
<li>TWML::profile_pic() </li>
</ul>
</li>
<li>Addition of User Cache commands for use by TWML and the get_x_from_y() commands. </li>
</ul>
<p>As always, the most recent build is available at <a href="http://github.com/navarr/PHP-Twitter-API-Library">github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.navarr.me/2009/11/twitter-api-library-build-12.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

