<?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>The Tech Junkies</title>
	<atom:link href="http://ttjcrew.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://ttjcrew.com</link>
	<description>Documentation of hacks, howtos, and destruction.</description>
	<lastBuildDate>Tue, 15 Jun 2010 04:01:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>The Tech Junkies Episode #6</title>
		<link>http://ttjcrew.com/?p=109</link>
		<comments>http://ttjcrew.com/?p=109#comments</comments>
		<pubDate>Tue, 25 May 2010 23:03:45 +0000</pubDate>
		<dc:creator>The Tech Junkies</dc:creator>
				<category><![CDATA[Vidcast Episodes]]></category>

		<guid isPermaLink="false">http://ttjcrew.com/?p=109</guid>
		<description><![CDATA[In this episode of The Tech Junkies, Ben and Eric show how to hack an Asus WL-520gu wireless router into a music playback device. By loading the OpenWRT firmware onto the router and adding a USB sound card, it is possible to convert this cheap/powerful router into a streaming box to be placed anywhere your [...]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=12003768&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=12003768&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>In this episode of The Tech Junkies, Ben and Eric show how to hack an Asus WL-520gu wireless router into a music playback device. By loading the OpenWRT firmware onto the router and adding a USB sound card, it is possible to convert this cheap/powerful router into a streaming box to be placed anywhere your WiFi is in range. Now you can build your own shoutcast/icecast receiver for cheap and get music wirelessly to any room in your home.</p>
<p>[<a href="content/The_Tech_Junkies_Episode_06.mov">QuickTime (H.264) Download</a>]-[<a href="content/The_Tech_Junkies_Episode_06.avi">XviD (AVI) Download</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://ttjcrew.com/?feed=rss2&amp;p=109</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Tech Junkies Episode #5</title>
		<link>http://ttjcrew.com/?p=100</link>
		<comments>http://ttjcrew.com/?p=100#comments</comments>
		<pubDate>Mon, 20 Jul 2009 18:48:56 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[Vidcast Episodes]]></category>

		<guid isPermaLink="false">http://ttjcrew.com/?p=100</guid>
		<description><![CDATA[In episode #5 of The Tech Junkies, Ben and Eric modify a $15 R/C car from Radio Shack into an autonomous, GPS navigated car. At the end of the episode the car must navigate down multiple roads using only the microcontroller and GPS module. [QuickTime (H.264) Download]-[XviD (AVI) Download]]]></description>
			<content:encoded><![CDATA[<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5682492&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=5682492&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object></p>
<p>In episode #5 of The Tech Junkies, Ben and Eric modify a $15 R/C car from Radio Shack into an autonomous, GPS navigated car. At the end of the episode the car must navigate down multiple roads using only the microcontroller and GPS module.</p>
<p>[<a href="content/The_Tech_Junkies_Episode_05.mov">QuickTime (H.264) Download</a>]-[<a href="content/The_Tech_Junkies_Episode_05.avi">XviD (AVI) Download</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://ttjcrew.com/?feed=rss2&amp;p=100</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mini GPS Autonomous Car for Under $100</title>
		<link>http://ttjcrew.com/?p=91</link>
		<comments>http://ttjcrew.com/?p=91#comments</comments>
		<pubDate>Mon, 20 Jul 2009 13:59:09 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://ttjcrew.com/?p=91</guid>
		<description><![CDATA[First off, if you haven&#8217;t watched episode #5 of The Tech Junkies, I&#8217;d have to insist you do that now: Okay, so let&#8217;s get onto the details. As seen in the video, we hacked apart a $15 Radioshack R/C car for the purpose of outfitting it with a GPS chip. We ripped out the motor [...]]]></description>
			<content:encoded><![CDATA[<p>First off, if you haven&#8217;t watched episode #5 of The Tech Junkies, I&#8217;d have to insist you do that now:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=5682492&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=5682492&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Okay, so let&#8217;s get onto the details. As seen in the video, we hacked apart a $15 Radioshack R/C car for the purpose of outfitting it with a GPS chip. We ripped out the motor that was being used for steering and replaced it with a low-cost $10 servo. We also cut out the existing electronics so that only the wires coming from the battery and running to the drive motor we&#8217;re left. From here we took a breadboard and connected up our H-Bridge drive chip.</p>
<p><span id="more-91"></span></p>
<div id="attachment_89" class="wp-caption alignnone" style="width: 510px"><img class="size-large wp-image-89" title="GPS Car H-Bridge" src="http://ttjcrew.com/wp-content/uploads/2009/07/breadboard-500x375.jpg" alt="GPS Car H-Bridge" width="500" height="375" /><p class="wp-caption-text">GPS Car H-Bridge</p></div>
<p>The H-Bridge chip is given the job of providing current to the motor (whether it be forward or reverse) which takes its inputs from a microcontroller. As you can see, for this project we ended up using a standard Arduino board. Here&#8217;s a color coded schematic of the whole project:</p>
<div id="attachment_93" class="wp-caption alignnone" style="width: 1010px"><img class="size-full wp-image-93" title="GPS Car Schematic" src="http://ttjcrew.com/wp-content/uploads/2009/07/schem_gpscar.jpg" alt="GPS Car Schematic" width="1000" height="1000" /><p class="wp-caption-text">GPS Car Schematic</p></div>
<p>Once everything is all connected up, all that&#8217;s left is to re-assemble the car and write some code to it. The first thing you&#8217;re going to need, are the coordinates you want your car to drive. If you haven&#8217;t watched the video yet, now would be a great time! The piece of Javascript you&#8217;re going to need while using Google maps is as follows:</p>
<p><em>javascript:void(prompt(&#8220;&#8221;, gApplication.getMap().getCenter()));</em></p>
<p><em> </em></p>
<p><em> </em></p>
<p>Paste that into your address bar, hit enter, and then you should get a message box with the coordinates in degree decimal format. This is what our program running on the car will use.</p>
<div id="attachment_90" class="wp-caption alignnone" style="width: 510px"><img class="size-large wp-image-90" title="Google Maps" src="http://ttjcrew.com/wp-content/uploads/2009/07/googlemaps-500x373.jpg" alt="Google Maps" width="500" height="373" /><p class="wp-caption-text">Google Maps</p></div>
<p>Speaking of the program running on the car, you can grab our full source code right here: <a href="wp-content/uploads/2009/07/GPSCar.zip">GPS Car &#8211; Arduino Sketch</a>. You&#8217;re also going to need the Arduino NMEA library for this to compile, which you can <a href="http://www.maartenlamers.com/nmea/">grab from here</a>.</p>
<p>The code should be documented for the most part. The only code you should need to change will be right under the line &#8220;/* BEGIN EDITABLE CONSTANTS SECTION */&#8221;. Everything is pretty much self explanatory&#8230;just make sure you have all your connections in the same place as we did.</p>
<p><strong>NOTE: You cannot write the program to the Arduino with the GPS pin connected to the RX pin. If the GPS chip is outputting data, it will interfere with the uploading of the program. Just make sure to reconnect the pin after your program is flashed to the chip!</strong></p>
<p>Well, there you go! Now you should have everything to get you started with building your very own sub $100 GPS navigated vehicle. Enjoy and make sure to contact us or leave a comment if you make something cool based off these concepts.</p>
<div id="attachment_88" class="wp-caption alignnone" style="width: 510px"><img class="size-large wp-image-88" title="GPS Car" src="http://ttjcrew.com/wp-content/uploads/2009/07/car-500x374.jpg" alt="GPS Car" width="500" height="374" /><p class="wp-caption-text">GPS Car</p></div>
]]></content:encoded>
			<wfw:commentRss>http://ttjcrew.com/?feed=rss2&amp;p=91</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Beginning OpenGL on OS X</title>
		<link>http://ttjcrew.com/?p=75</link>
		<comments>http://ttjcrew.com/?p=75#comments</comments>
		<pubDate>Sat, 27 Jun 2009 22:29:44 +0000</pubDate>
		<dc:creator>Andrew Schreiber</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Graphics]]></category>

		<guid isPermaLink="false">http://ttjcrew.com/?p=75</guid>
		<description><![CDATA[First I have to start with a quick explanation for people who don&#8217;t know what OpenGL is. OpenGL is NOT a language. In fact, OpenGL is merely a specification which is implemented in various languages. I have always used C++ and the GLUT library, it simplifies some things. Anyway, more info can be found with [...]]]></description>
			<content:encoded><![CDATA[<p>First I have to start with a quick explanation for people who don&#8217;t know what OpenGL is. OpenGL is NOT a language. In fact, OpenGL is merely a specification which is implemented in various languages. I have always used C++ and the GLUT library, it simplifies some things. Anyway, more info can be found with a quick google search if you are interested.</p>
<p>Today I am going to focus primarily on getting started using OpenGL on OS X instead of doing fancy things. A couple months ago I took a course on Computer Graphics at my university. The problem was that this professor was pretty much Windows only. Needless to say I was in trouble, I didn&#8217;t know C++ and had never worked with it. Here is what I learned about setting up a usable environment</p>
<p><span id="more-75"></span></p>
<p>Required software:<br />
Mac OS X (This tutorial was written using 10.5.7 but the overall concepts should work in modern versions of OS X)<br />
XCode 3.1</p>
<p>Required Skills:<br />
None, it would probably help to know C++ but if you are just learning the language don&#8217;t worry. I don&#8217;t assume you know anything about C++, frankly I didn&#8217;t when I was first learning how to do this.</p>
<p>First thing is first, start up XCode and create a new Project (File-&gt;New Project)</p>
<div id="attachment_76" class="wp-caption aligncenter" style="width: 360px"><a href="http://ttjcrew.com/wp-content/uploads/2009/06/New-Project.png"><img class="size-medium wp-image-76 " src="http://ttjcrew.com/wp-content/uploads/2009/06/New-Project-350x281.png" alt="Creating a new Project using OpenGL" width="350" height="281" /></a><p class="wp-caption-text">Creating a new Project using OpenGL</p></div>
<p>You want to select Mac OS X and then Command Line Utility. Don&#8217;t worry if your XCode window doesn&#8217;t look precisely like that. I named my project Intro_To_OpenGL and saved it somewhere I can find it later.</p>
<div id="attachment_79" class="wp-caption aligncenter" style="width: 510px"><a href="http://ttjcrew.com/wp-content/uploads/2009/06/Starting-Your-Project.png"><img class="size-large wp-image-79" src="http://ttjcrew.com/wp-content/uploads/2009/06/Starting-Your-Project-500x352.png" alt="Starting Your Project" width="500" height="352" /></a><p class="wp-caption-text">Starting Your Project</p></div>
<p>The next step is to bring in the correct frameworks, you will need GLUT and OpenGL. To do this you can right click (Control Click if you do not have  a 2 button mouse) on the Intro_To_OpenGL in the Groups and Files browser and select Add-&gt;Existing Frameworks. Then select OpenGL.framework and GLUT.framework which are located in /System/Library/Frameworks. You can Command select the two frameworks or you can add them separately. Either way they need to be added to your Project.</p>
<div id="attachment_83" class="wp-caption aligncenter" style="width: 510px"><a href="http://ttjcrew.com/wp-content/uploads/2009/06/Adding-the-frameworks.png"><img class="size-large wp-image-83" src="http://ttjcrew.com/wp-content/uploads/2009/06/Adding-the-frameworks-500x355.png" alt="After adding the frameworks. " width="500" height="355" /></a><p class="wp-caption-text">After adding the frameworks. </p></div>
<p>After you have added the frameworks you can now start writing some code. You will see in the above I selected main.cpp. This is the main file of a C++ program. This simple program will just use this one file. Normally this is a pretty bad way of doing things but this program won&#8217;t be very long so we can get away with it.</p>
<p>The Code</p>
<blockquote>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;">//A couple includes</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #643820;">#include </span><span style="color: #c41a16;">&lt;iostream&gt;</span>//This is just for basic io, you really DON&#8217;T need it</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #643820;">#include </span><span style="color: #c41a16;">&lt;GLUT/GLUT.h&gt;</span>//GLUT Library, will make you life easier</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #c41a16;"><span style="color: #643820;">#include </span>&lt;OpenGL/OpenGL.h&gt;<span style="color: #007400;">//OpenGL Library</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;">//Let us create a function to initialize everything</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco;"><span style="color: #aa0d91;">void</span> myInit(<span style="color: #aa0d91;">void</span>){</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">glClearColor</span><span style="color: #000000;">(</span><span style="color: #1c00cf;">1.0</span><span style="color: #000000;">,</span><span style="color: #1c00cf;">1.0</span><span style="color: #000000;">,</span><span style="color: #1c00cf;">1.0</span><span style="color: #000000;">,</span><span style="color: #1c00cf;">1.0</span><span style="color: #000000;">);</span>//This determines the background color, in this case White</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">glMatrixMode</span><span style="color: #000000;">(</span><span style="color: #643820;">GL_PROJECTION</span><span style="color: #000000;">);</span>//Determines which matrix to apply operations to. Don&#8217;t worry about this for now just assume it has to be there</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">glLoadIdentity</span><span style="color: #000000;">();</span>//Loads the Identity matrix</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">gluOrtho2D</span><span style="color: #000000;">(</span><span style="color: #1c00cf;">0</span><span style="color: #000000;">, </span><span style="color: #1c00cf;">640</span><span style="color: #000000;">, </span><span style="color: #1c00cf;">0</span><span style="color: #000000;">, </span><span style="color: #1c00cf;">480</span><span style="color: #000000;">);</span>//Set the size and projection of the buffer</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco;">}</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;">//Now, lets tell it to display some stuff</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco;"><span style="color: #aa0d91;">void</span> myDisplay(<span style="color: #aa0d91;">void</span>){</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #643820;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">glClear</span><span style="color: #000000;">(</span>GL_COLOR_BUFFER_BIT<span style="color: #000000;">);</span><span style="color: #007400;">//Clear the buffer</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">glColor3d</span><span style="color: #000000;">(</span><span style="color: #1c00cf;">1</span><span style="color: #000000;">,</span><span style="color: #1c00cf;">0</span><span style="color: #000000;">,</span><span style="color: #1c00cf;">0</span><span style="color: #000000;">);</span>//Set the color for this polygon</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">glBegin</span><span style="color: #000000;">(</span><span style="color: #643820;">GL_POLYGON</span><span style="color: #000000;">);</span>//Let us begin drawing some points</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span>//Specify the points</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #2e0d6e;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span>glVertex2i<span style="color: #000000;">(</span><span style="color: #1c00cf;">100</span><span style="color: #000000;">,</span><span style="color: #1c00cf;">50</span><span style="color: #000000;">);</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #2e0d6e;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span>glVertex2i<span style="color: #000000;">(</span><span style="color: #1c00cf;">100</span><span style="color: #000000;">,</span><span style="color: #1c00cf;">130</span><span style="color: #000000;">);</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #2e0d6e;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span>glVertex2i<span style="color: #000000;">(</span><span style="color: #1c00cf;">150</span><span style="color: #000000;">, </span><span style="color: #1c00cf;">130</span><span style="color: #000000;">);</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #2e0d6e;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span>glVertex2i<span style="color: #000000;">(</span><span style="color: #1c00cf;">100</span><span style="color: #000000;">,</span><span style="color: #1c00cf;">50</span><span style="color: #000000;">);</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">glEnd</span><span style="color: #000000;">();</span>//Ok we are done specifying points</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">glFlush</span><span style="color: #000000;">();</span>//Write this out to the screen</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco;">}</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco;"><span style="color: #aa0d91;">int</span> main (<span style="color: #aa0d91;">int</span> argc, <span style="color: #aa0d91;">char</span> **argv) {</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">glutInit</span><span style="color: #000000;">(&amp;argc,argv);</span>//Init glut passing some args, if you know C++ you should know we are just passing the args straight thru from main</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">glutInitDisplayMode</span><span style="color: #000000;">(</span><span style="color: #643820;">GLUT_SINGLE</span><span style="color: #000000;">|</span><span style="color: #643820;">GLUT_RGB</span><span style="color: #000000;">);</span>//Specify the Display Mode, this one means there is a single buffer and uses RGB to specify colors</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">glutInitWindowSize</span><span style="color: #000000;">(</span><span style="color: #1c00cf;">640</span><span style="color: #000000;">, </span><span style="color: #1c00cf;">480</span><span style="color: #000000;">);</span>//Set the window size</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">glutInitWindowPosition</span><span style="color: #000000;">(</span><span style="color: #1c00cf;">100</span><span style="color: #000000;">,</span><span style="color: #1c00cf;">100</span><span style="color: #000000;">);</span>//Where do we want to place the window initially?</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">glutCreateWindow</span><span style="color: #000000;">(</span><span style="color: #c41a16;">&#8220;My First Window&#8221;</span><span style="color: #000000;">);</span>//Name the window and create it</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">glutDisplayFunc</span><span style="color: #000000;">(myDisplay);</span>//Set the callback function, will be called as needed</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #26474b;">myInit</span><span style="color: #000000;">();</span>//Initialize the window</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #2e0d6e;">glutMainLoop</span><span style="color: #000000;">();</span>//Start the main loop running, nothing after this will execute for all eternity (right now)</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #aa0d91;">return</span><span style="color: #000000;"> </span><span style="color: #1c00cf;">0</span><span style="color: #000000;">;</span>//Return from this function.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco;">}</p>
</blockquote>
<div id="attachment_85" class="wp-caption aligncenter" style="width: 510px"><a href="http://ttjcrew.com/wp-content/uploads/2009/06/Output.png"><img class="size-large wp-image-85" src="http://ttjcrew.com/wp-content/uploads/2009/06/Output-500x391.png" alt="The output of this simple program" width="500" height="391" /></a><p class="wp-caption-text">The output of this simple program</p></div>
<p>I hope this helps  you guys, this is just the basics if there is interest I will continue writing tutorials on more advanced things using OpenGL, GLUT, and C++. As a challenge, turn the background blue, draw a black octagon on top of it. Good luck.</p>
]]></content:encoded>
			<wfw:commentRss>http://ttjcrew.com/?feed=rss2&amp;p=75</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project: Ethernet Enabled Twitter Client</title>
		<link>http://ttjcrew.com/?p=32</link>
		<comments>http://ttjcrew.com/?p=32#comments</comments>
		<pubDate>Thu, 25 Jun 2009 21:03:19 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://ttjcrew.com/?p=32</guid>
		<description><![CDATA[For my latest project I wanted to build a microcontroller powered device I could hang on my wall (or pin to at the time of writing this). I decided to build a Twitter reader, but not just any old &#8220;LCD connected to a PC&#8221; setup. No, I wanted this thing to be computer independent. If [...]]]></description>
			<content:encoded><![CDATA[<p>For my latest project I wanted to build a microcontroller powered device I could hang on my wall (or pin to at the time of writing this). I decided to build a Twitter reader, but not just any old &#8220;LCD connected to a PC&#8221; setup. No, I wanted this thing to be computer independent.</p>
<p><span id="more-32"></span></p>
<p>If you want to build one of these you&#8217;re going to need a few things&#8230;<br />
1. <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=666" target="_blank">Arduino Board</a><br />
2. <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=9026" target="_blank">Arduino Ethernet Shield</a><br />
3. <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=462" target="_blank">Serial Enabled 20&#215;4 LCD Screen</a><br />
4. <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=298" target="_blank">5-9V Regulated Power Source</a></p>
<p>The Arduino USB Board is a great microcontroller to get you started and will allow you to build anything from notification systems to robots. The Ethernet Shield is a simple module that drops on top of the Arduino Board and allows the microcontroller to connect to an Ethernet connection and transfer data. The LCD screen I chose was serial enabled (simplifies our job immensely) so you just need to connect 3 wires to the display. You&#8217;re also obviously going to need a power source to power the whole thing (unless you want to tether the Arduino to your PC, but that defeats the purpose of a PC independent Twitter reader&#8230;now doesn&#8217;t it?) I was able to use a 5v regulated power adapter I had lying around but if you don&#8217;t have one of those I&#8217;d suggest getting the 9v adapter w/ barrel connector from SparkFun. Anyway, onto the build&#8230;</p>
<p>I started by wiring up 3 wires (+/-/signal) to my LCD screen as seen below.</p>
<div id="attachment_52" class="wp-caption alignnone" style="width: 510px"><img class="size-large wp-image-52" title="LCD Screen" src="http://ttjcrew.com/wp-content/uploads/2009/06/DSC_0004-500x334.jpg" alt="LCD Screen" width="500" height="334" /><p class="wp-caption-text">LCD Screen</p></div>
<div id="attachment_53" class="wp-caption alignnone" style="width: 510px"><img class="size-large wp-image-53" title="Wired LCD" src="http://ttjcrew.com/wp-content/uploads/2009/06/DSC_0005-500x334.jpg" alt="Wired LCD" width="500" height="334" /><p class="wp-caption-text">Wired LCD</p></div>
<p>Next I had to find a way to connect these wires into the Arduino without just jamming the stripped wire directly into the Arduino. I found some small pins (you can use old resistors or any component for that matter which has solid pins coming from it) and soldered them to the ends of the wires that I connected to the LCD display. I then plugged these pins into the Ethernet Shield and zip tied the wiring in place. I connected the signal wire to pin 2 and the power wires to 5v and GND.</p>
<div id="attachment_55" class="wp-caption alignnone" style="width: 510px"><img class="size-large wp-image-55" title="Soldered Pins" src="http://ttjcrew.com/wp-content/uploads/2009/06/DSC_0008-500x334.jpg" alt="Soldered Pins" width="500" height="334" /><p class="wp-caption-text">Soldered Pins</p></div>
<div id="attachment_54" class="wp-caption alignnone" style="width: 510px"><img class="size-large wp-image-54" title="Ethernet Shield" src="http://ttjcrew.com/wp-content/uploads/2009/06/DSC_0006-500x334.jpg" alt="Ethernet Shield" width="500" height="334" /><p class="wp-caption-text">Ethernet Shield</p></div>
<p>Now I just took the Ethernet Shield and stacked it on top of the Arduino Board.</p>
<div id="attachment_56" class="wp-caption alignnone" style="width: 510px"><img class="size-large wp-image-56" title="Arduino and Shield" src="http://ttjcrew.com/wp-content/uploads/2009/06/DSC_0009-500x334.jpg" alt="Arduino and Shield" width="500" height="334" /><p class="wp-caption-text">Arduino and Shield</p></div>
<div id="attachment_57" class="wp-caption alignnone" style="width: 510px"><img class="size-large wp-image-57" title="Stacked Shield" src="http://ttjcrew.com/wp-content/uploads/2009/06/DSC_0010-500x334.jpg" alt="Stacked Shield" width="500" height="334" /><p class="wp-caption-text">Stacked Shield</p></div>
<p>The next step was to power everything from a wall outlet. I found a regulated 5v power supply sitting on my desk that I wasn&#8217;t using. You have the option of powering the Arduino off the USB connector or through the barrel connector. The Arduino has a built in voltage regulator so that if you connect a power source to the barrel connector, it will be fed through this 5v regulator. If the power you&#8217;re feeding into the barrel connector is any lower than about 7v, the regulator won&#8217;t be able to properly supply the 5v. Because I already had an adapter that was outputting almost exactly 5v (and always make sure to check with a multimeter!) I soldered a USB connector onto the end of the supply. This way I could feed the Arduino Board my 5v without feeding it through the voltage regulator.</p>
<div id="attachment_58" class="wp-caption alignnone" style="width: 510px"><img class="size-large wp-image-58" title="Arduino Connections" src="http://ttjcrew.com/wp-content/uploads/2009/06/DSC_0011-500x334.jpg" alt="Arduino Connections" width="500" height="334" /><p class="wp-caption-text">Arduino Connections</p></div>
<div id="attachment_59" class="wp-caption alignnone" style="width: 510px"><img class="size-large wp-image-59" title="5v Power Supply" src="http://ttjcrew.com/wp-content/uploads/2009/06/DSC_0013-500x334.jpg" alt="5v Power Supply" width="500" height="334" /><p class="wp-caption-text">5v Power Supply</p></div>
<div id="attachment_60" class="wp-caption alignnone" style="width: 510px"><img class="size-large wp-image-60" title="All Wired Up" src="http://ttjcrew.com/wp-content/uploads/2009/06/DSC_0014-500x334.jpg" alt="All Wired Up" width="500" height="334" /><p class="wp-caption-text">All Wired Up</p></div>
<p>Ok, so now we&#8217;re done with the hardware. Now we actually need the code to make the Twitter Reader work. If you don&#8217;t already have the arduino software, you can download it from <a href="http://arduino.cc" target="_blank">arduino.cc</a>.</p>
<p>Here is my Arduino sketch I wrote for the twitter display: <a href="wp-content/uploads/2009/06/eTwitterLCD3.zip">eTwitterLCD3.zip</a></p>
<p>Now, there are a few things you&#8217;re going to need to change to get this to run. At the top of the file you&#8217;ll see:</p>
<p><em>byte ip[] = { 192, 168, 1, 44 };<br />
byte gateway[] = { 192, 168, 1, 254 };   //your router&#8217;s IP address<br />
byte subnet[] = { 255, 255, 255, 0 };    //subnet mask of the network</em></p>
<p>You will need to change this to work on your network. The IP address doesn&#8217;t matter so long as it&#8217;s a valid IP and not in conflict with another device on your network.</p>
<p>A little further into the code you&#8217;ll find this:</p>
<p><em>client.println(&#8220;GET /statuses/friends_timeline/YOURTWITTERNAME.xml HTTP/1.0&#8243;);<br />
client.println(&#8220;Authorization: Basic AUTH_KEY_GOES_HERE&#8221;);</em></p>
<p>This is the HTTP header that we are sending to twitter.com. Obviously for the first line you will enter your username before the &#8220;.xml&#8221;. For the second line we need to setup authentication with our twitter username and password. Basic HTTP authentication is simply the string &#8220;username:password&#8221; base64 encoded. So if your username was &#8220;foo&#8221; and your password was &#8220;bar&#8221;, you just need to base64 encode the string &#8220;foo:bar&#8221;, which would result in the authentication key of &#8220;Zm9vOmJhcg==&#8221;. For base64 encoding I simply just searched on google for a site that allowed you to enter a string and have it encoded to base64. It&#8217;s pretty easy to write a PHP script to do this as well, but I only needed to do it once so I just ended up using <a href="http://www.motobit.com/util/base64-decoder-encoder.asp" target="_blank">this site</a>. Once you&#8217;ve got your authentication key entered into the sketch, upload it to your Arduino, connect an Ethernet cable, and you should be set to go. The Arduino will immediately begin pulling down your &#8220;friends&#8221; timeline and parsing out the most recent tweet. The software will automatically scroll between 2 pages if the tweet becomes that long.</p>
<div id="attachment_61" class="wp-caption alignnone" style="width: 510px"><img class="size-large wp-image-61" title="Pinned to the Wall" src="http://ttjcrew.com/wp-content/uploads/2009/06/DSC_0015-500x334.jpg" alt="Pinned to the Wall" width="500" height="334" /><p class="wp-caption-text">Pinned to the Wall</p></div>
<div id="attachment_62" class="wp-caption alignnone" style="width: 510px"><img class="size-large wp-image-62" title="Reading Tweets" src="http://ttjcrew.com/wp-content/uploads/2009/06/DSC_0016-500x334.jpg" alt="Reading Tweets" width="500" height="334" /><p class="wp-caption-text">Reading Tweets</p></div>
<p>There&#8217;s a few other options I&#8217;ve setup in the code that you can play around with. I&#8217;ve also tried to document the source code so you can better understand it, but if you really want to start learning how it works, just start hacking apart the code and playing around with the different functions. If you&#8217;re getting connection issues, keep in mind that Twitter will block requests for a few minutes if you request data too often. I&#8217;ve found a good minimum server contact interval to be around 2 minutes. Feel free to add to the code or change as you see fit. And don&#8217;t forget to post back here if you made something really cool using my code or the same basic idea. I&#8217;d love to see it or post updates with what you&#8217;ve come up with!</p>
]]></content:encoded>
			<wfw:commentRss>http://ttjcrew.com/?feed=rss2&amp;p=32</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Tech Junkies Episode #4</title>
		<link>http://ttjcrew.com/?p=48</link>
		<comments>http://ttjcrew.com/?p=48#comments</comments>
		<pubDate>Thu, 25 Jun 2009 16:21:44 +0000</pubDate>
		<dc:creator>The Tech Junkies</dc:creator>
				<category><![CDATA[Vidcast Episodes]]></category>

		<guid isPermaLink="false">http://ttjcrew.com/?p=48</guid>
		<description><![CDATA[In this episode of The Tech Junkies, Ben and Eric discover a large wasp nest in Ben&#8217;s shed. Rather than taking the risk of taking down the nest themselves, The Tech Junkies build a remotely operated robot armed with cans of RAID that drives into the shed and takes the nest down. [QuickTime (H.264) Download]-[XviD [...]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=5318617&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=5318617&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
In this episode of The Tech Junkies, Ben and Eric discover a large wasp nest in Ben&#8217;s shed. Rather than taking the risk of taking down the nest themselves, The Tech Junkies build a remotely operated robot armed with cans of RAID that drives into the shed and takes the nest down.</p>
<p>[<a href="content/The_Tech_Junkies_Episode_04.mov">QuickTime (H.264) Download</a>]-[<a href="content/The_Tech_Junkies_Episode_04.avi">XviD (AVI) Download</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://ttjcrew.com/?feed=rss2&amp;p=48</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Episode #4 Release Date</title>
		<link>http://ttjcrew.com/?p=28</link>
		<comments>http://ttjcrew.com/?p=28#comments</comments>
		<pubDate>Mon, 22 Jun 2009 18:27:23 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://ttjcrew.com/?p=28</guid>
		<description><![CDATA[Episode #4 of The Tech Junkies has finally been completed and will be hitting the site on June 25th (this Thursday). For this episode we built a wasp killing robot that can take down an entire nest via remote operation. Make sure to hit up the site to grab/watch the new episode! We&#8217;ve also got [...]]]></description>
			<content:encoded><![CDATA[<p>Episode #4 of The Tech Junkies has finally been completed and will be hitting the site on June 25th (this Thursday). For this episode we built a wasp killing robot that can take down an entire nest via remote operation. Make sure to hit up the site to grab/watch the new episode! We&#8217;ve also got some other footage filmed and are actively working on episode #5. Oh and if you haven&#8217;t checked it out yet, make sure to visit the TTJ forums (on the nav on the right). We&#8217;re looking for show ideas or any other general discussion you have about the show.</p>
]]></content:encoded>
			<wfw:commentRss>http://ttjcrew.com/?feed=rss2&amp;p=28</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Tech Junkies Episode #3</title>
		<link>http://ttjcrew.com/?p=17</link>
		<comments>http://ttjcrew.com/?p=17#comments</comments>
		<pubDate>Fri, 19 Jun 2009 18:10:23 +0000</pubDate>
		<dc:creator>The Tech Junkies</dc:creator>
				<category><![CDATA[Vidcast Episodes]]></category>

		<guid isPermaLink="false">http://ttjcrew.com/?p=17</guid>
		<description><![CDATA[In this episode we take a look at WiFi extension methods and put various methods to the test to see how much of a boost you can get from home-made projects. [QuickTime (H.264) Download]-[XviD (AVI) Download]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=5234917&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=5234917&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
In this episode we take a look at WiFi extension methods and put various methods to the test to see how much of a boost you can get from home-made projects.</p>
<p>[<a href="content/The_Tech_Junkies_Episode_03.mp4">QuickTime (H.264) Download</a>]-[<a href="content/The_Tech_Junkies_Episode_03.avi">XviD (AVI) Download</a>]<a href="content/The_Tech_Junkies_Episode_03.m4v"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ttjcrew.com/?feed=rss2&amp;p=17</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Tech Junkies Episode #2</title>
		<link>http://ttjcrew.com/?p=15</link>
		<comments>http://ttjcrew.com/?p=15#comments</comments>
		<pubDate>Fri, 19 Jun 2009 16:54:54 +0000</pubDate>
		<dc:creator>The Tech Junkies</dc:creator>
				<category><![CDATA[Vidcast Episodes]]></category>

		<guid isPermaLink="false">http://www.ttjcrew.com/?p=15</guid>
		<description><![CDATA[In this episode of The Tech Junkies we show various lock hacks including bump keys, lock raking, lock picking, and the masterlock shim. We also give a tour of Control Our Junk and go behind the scenes to show you how it works. [QuickTime Download]-[XviD Download]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=5229912&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=5229912&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
In this episode of The Tech Junkies we show various lock hacks including bump keys, lock raking, lock picking, and the masterlock shim. We also give a tour of Control Our Junk and go behind the scenes to show you how it works.</p>
<p>[<a href="content/The_Tech_Junkies_Episode_02.m4v">QuickTime Download</a>]-[<a href="content/The_Tech_Junkies_Episode_02.avi">XviD Download</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://ttjcrew.com/?feed=rss2&amp;p=15</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Tech Junkies Episode #1</title>
		<link>http://ttjcrew.com/?p=13</link>
		<comments>http://ttjcrew.com/?p=13#comments</comments>
		<pubDate>Fri, 19 Jun 2009 16:53:52 +0000</pubDate>
		<dc:creator>The Tech Junkies</dc:creator>
				<category><![CDATA[Vidcast Episodes]]></category>

		<guid isPermaLink="false">http://www.ttjcrew.com/?p=13</guid>
		<description><![CDATA[Our first episode features building an Internet controlled airsoft gun and what happens when you plug speakers into a wall outlet. [QuickTime Download]-[XviD Download]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=5229586&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=5229586&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
Our first episode features building an Internet controlled airsoft gun and what happens when you plug speakers into a wall outlet.</p>
<p>[<a href="content/The_Tech_Junkies_Episode_01.m4v">QuickTime Download</a>]-[<a href="content/The_Tech_Junkies_Episode_01.avi">XviD Download</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://ttjcrew.com/?feed=rss2&amp;p=13</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
