<?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"
	>

<channel>
	<title>phy5ics</title>
	<atom:link href="http://blog.phy5ics.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.phy5ics.com</link>
	<description></description>
	<pubDate>Fri, 01 Apr 2011 17:07:03 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>Command Line Base64 Encoding</title>
		<link>http://blog.phy5ics.com/2011/04/01/command-line-base64-encoding/</link>
		<comments>http://blog.phy5ics.com/2011/04/01/command-line-base64-encoding/#comments</comments>
		<pubDate>Fri, 01 Apr 2011 17:07:03 +0000</pubDate>
		<dc:creator>Barton</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.phy5ics.com/?p=95</guid>
		<description><![CDATA[I&#8217;m currently authoring an AIR 2.5 application in HTML/CSS/JS and ran into some issues with @font-face embedding where no matter what I did the fonts would not load and render correctly despite trying both TTF and OTF versions.  After that, I opted to try base64-encoding of the fonts for inclusion via a data url, since [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently authoring an AIR 2.5 application in HTML/CSS/JS and ran into some issues with @font-face embedding where no matter what I did the fonts would not load and render correctly despite trying both TTF and OTF versions.  After that, I opted to try base64-encoding of the fonts for inclusion via a data url, since they are now supported in AIR.  I&#8217;m running on OS X and have openssl installed, so I opted to run the following command, which I&#8217;ve used in the past for generated base64-encoded files for other Webkit-based projects and didn&#8217;t have any issues:</p>
<p><code>shell# openssl base64 -in UniversLTStd.otf -out Std</code></p>
<p>This produced a proper base64 file that worked perfectly in Safari, but when the same encoded file was inserted into CSS and launched in the AIR runtime, it resulted in the display of the default font.  After ruminating a bit on the issue, I suspected that the line breaks produced by the openssl encoding were the issue, and not feeling particularly like removing line breaks by hand on 709 lines of code, I busted out the following:</p>
<p><code>shell# tr -d '\r\n' < Std > StdNoBreaks</code></p>
<p>I then used the output in the resulting file as the data url and it worked like a charm in the AIR runtime with the following CSS:</p>
<p>
<code>src: url("data:font/opentype;charset=utf-8;base64,[INSERT_BASE64_ENCODED_DATA_HERE]&#8220;);</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phy5ics.com/2011/04/01/command-line-base64-encoding/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cannes Lions Touchwall Wins Media Post Award</title>
		<link>http://blog.phy5ics.com/2010/05/30/cannes-lions-touchwall-wins-media-post-award/</link>
		<comments>http://blog.phy5ics.com/2010/05/30/cannes-lions-touchwall-wins-media-post-award/#comments</comments>
		<pubDate>Sun, 30 May 2010 21:56:14 +0000</pubDate>
		<dc:creator>Barton</dc:creator>
		
		<category><![CDATA[General Technology]]></category>

		<category><![CDATA[Physical Computing]]></category>

		<category><![CDATA[RFID]]></category>

		<category><![CDATA[Schematic]]></category>

		<guid isPermaLink="false">http://blog.phy5ics.com/?p=84</guid>
		<description><![CDATA[I am pleased to announce that the Cannes Lions Touchwall 2009 captured the &#8220;Best integration with experiential/activity&#8221; award given out by MediaPost&#8217;s Digital Out of Home division.  This is a satisfying validation of an experience that takes a technology for which very few practical applications exist (touchwalls) and augmented it with an unobtrusive form of [...]]]></description>
			<content:encoded><![CDATA[<p>I am pleased to announce that the Cannes Lions Touchwall 2009 captured the &#8220;Best integration with experiential/activity&#8221; award given out by MediaPost&#8217;s Digital Out of Home division.  This is a satisfying validation of an experience that takes a technology for which very few practical applications exist (touchwalls) and augmented it with an unobtrusive form of authentication via RFID to provide a compelling, personalized informational and social experience for Cannes Lions Festival delegates.</p>
<p><img alt="" src="http://phy5ics.com/gfx/projects/cannes-interior.png" title="Cannes Lions 2009 Entrance" class="alignnone" width="440" height="293" /></p>
<p>For more details and the other winners, see <a href="http://www.mediapost.com/events/?/showID/DigitalOutofHomeAwards.10.NYC/type/Content/itemID/1233/DigitalOut-of-HomeAwards-WINNER.html" target="_blank">MediaPost Digital Out-of-Home Awards</a><br/><a href="http://phy5ics.com/projects/cannes-lions-touchwall">View project details</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phy5ics.com/2010/05/30/cannes-lions-touchwall-wins-media-post-award/feed/</wfw:commentRss>
		</item>
		<item>
		<title>FreshDirect iPhone App Featured in App Store Staff Pics</title>
		<link>http://blog.phy5ics.com/2010/04/22/freshdirect-iphone-app-featured-in-app-store-staff-pics/</link>
		<comments>http://blog.phy5ics.com/2010/04/22/freshdirect-iphone-app-featured-in-app-store-staff-pics/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 22:39:28 +0000</pubDate>
		<dc:creator>Barton</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.phy5ics.com/?p=87</guid>
		<description><![CDATA[A week after being a featured iPhone app in the Apple App Store, continued interest in what is arguably the most complex and robust e-commerce application in the App Store picks up another acknowledgement.  It has now been featured as a Staff Pick, standing alongside some other amazing apps such as Tweetie 2, FlightTrack [...]]]></description>
			<content:encoded><![CDATA[<p>A week after being a featured iPhone app in the Apple App Store, continued interest in what is arguably the most complex and robust e-commerce application in the App Store picks up another acknowledgement.  It has now been featured as a Staff Pick, standing alongside some other amazing apps such as Tweetie 2, FlightTrack Pro, Brightkite and Moviefone.</p>
<p><img src="http://phy5ics.com/gfx/projects/freshdirect-iphone-staff-picks.png" width="700"/></p>
<p><a href="http://itunes.apple.com/us/app/freshdirect/id346631494?mt=8" target="_blank">Download the free FreshDirect iPhone app</a><br/><a href="http://phy5ics.com/projects/freshdirect-iphone-app">View project details</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phy5ics.com/2010/04/22/freshdirect-iphone-app-featured-in-app-store-staff-pics/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Installing MongoDB on MediaTemple (dv)</title>
		<link>http://blog.phy5ics.com/2010/03/27/installing-mongodb-on-mediatemple-dv/</link>
		<comments>http://blog.phy5ics.com/2010/03/27/installing-mongodb-on-mediatemple-dv/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 00:43:42 +0000</pubDate>
		<dc:creator>Barton</dc:creator>
		
		<category><![CDATA[mongodb]]></category>

		<category><![CDATA[hosting]]></category>

		<category><![CDATA[mediatemple]]></category>

		<guid isPermaLink="false">http://blog.phy5ics.com/?p=73</guid>
		<description><![CDATA[Due to a project that  I&#8217;ve been working on that has some very specific software requirements  I consolidated several separate boxes (from Joyent and MediaTemple&#8217;s Grid Service) to a new (dv) from  MediaTemple for more flexibility.  As part of that migration, I needed to get MongoDB setup on CentOS.  The only RPM [...]]]></description>
			<content:encoded><![CDATA[<p>Due to a project that  I&#8217;ve been working on that has some very specific software requirements  I consolidated several separate boxes (from Joyent and MediaTemple&#8217;s Grid Service) to a new (dv) from  MediaTemple for more flexibility.  As part of that migration, I needed to get MongoDB setup on CentOS.  The only RPM out there is for MongoDB is 1.2.2, (available here: http://chrislea.com/2010/02/07/mongodb-1-2-2-for-centos-5/).  However, I quickly found out that with MT&#8217;s (dv), there are all sorts of depsolving issues with the Plesk psa packages and boost.  So after all sorts of hell with yum, I decided to give the pre-compiled binaries a shot, and much to my dismay, they worked a treat with no fussing. I ran into further issues with installing the MongoDB PHP extension via pecl, but figured out how to work around those as well.  In an effort to help out those that might run into this as well, here are instructions on how to get it running on an MT (dv).</p>
<p style="font-size: 19.5px; line-height: 28.5px;"><span id="more-73"></span></p>
<p><strong>Here is the dependency hell that I ran into after adding the repository:</strong></p>
<pre># yum install --enablerepo=chl mongo-server mongo
Loaded plugins: fastestmirror, protectbase
Loading mirror speeds from cached hostfile
 * addons: mirror.trouble-free.net
 * atomic: www4.atomicorp.com
 * base: mirror.rackspace.com
 * epel: serverbeach1.fedoraproject.org
 * extras: mirrors.unbornmedia.com
 * rpmforge: apt.sw.be
 * updates: updates.interworx.info
0 packages excluded due to repository protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mongo.i386 0:1.2.2-mongodb_2 set to be updated
--> Processing Dependency: boost >= 1.35 for package: mongo
--> Processing Dependency: libboost_program_options-mt.so.4 for package: mongo
--> Processing Dependency: libboost_filesystem-mt.so.4 for package: mongo
--> Processing Dependency: libjs.so.1 for package: mongo
--> Processing Dependency: libboost_thread-mt.so.4 for package: mongo
--> Processing Dependency: libboost_system-mt.so.4 for package: mongo
---> Package mongo-server.i386 0:1.2.2-mongodb_2 set to be updated
--> Running transaction check
--> Processing Dependency: libboost_date_time.so.2 for package: psa
--> Processing Dependency: libboost_filesystem.so.2 for package: psa
---> Package boost.i386 0:1.37.0-6 set to be updated
---> Package js.i386 1:1.7.0-1.el5.rf set to be updated
--> Finished Dependency Resolution
psa-8.6.0-cos5.build86080722.00.i586 from installed has depsolving problems
  --> Missing Dependency: libboost_filesystem.so.2 is needed by package
psa-8.6.0-cos5.build86080722.00.i586 (installed)
psa-8.6.0-cos5.build86080722.00.i586 from installed has depsolving problems
  --> Missing Dependency: libboost_date_time.so.2 is needed by package
psa-8.6.0-cos5.build86080722.00.i586 (installed)
Error: Missing Dependency: libboost_date_time.so.2 is needed by package
psa-8.6.0-cos5.build86080722.00.i586 (installed)
Error: Missing Dependency: libboost_filesystem.so.2 is needed by package
psa-8.6.0-cos5.build86080722.00.i586 (installed)
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.</pre>
<p><strong>Installing MongoDB from Pre-Compiled Binaries</strong></p>
<p>Log in to your (dv) and su to root and get to work:</p>
<pre>
[user@hostname]# su root
[root@hostname]# cd /var/lib
[root@hostname]# wget http://downloads.mongodb.org/linux/mongodb-linux-i686-1.4.0.tgz
[root@hostname]# tar -xvf mongodb-linux-i686-1.4.0.tgz
</pre>
<p>From there, you&#8217;ll want to create the directories for the database:</p>
<pre>
[root@hostname]# mkdir /data
[root@hostname]# mkdir /data/db
</pre>
<p>That&#8217;s all there is to it.  You can test your install by doing the following:</p>
<pre>
[root@hostname]# ./mongod
./mongod --help for help and startup options
Sat Mar 27 09:59:16 Mongo DB : starting : pid = 24197 port = 27017 dbpath = /data/db/ master = 0 slave = 0  32-bit 

** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
**       see http://blog.mongodb.org/post/137788967/32-bit-limitations for more

Sat Mar 27 09:59:16 db version v1.4.0, pdfile version 4.5
Sat Mar 27 09:59:16 git version: 514f8bbab657c1dc110d45eea6ea33de296dbb26
Sat Mar 27 09:59:16 sys info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_37
Sat Mar 27 09:59:16 waiting for connections on port 27017
Sat Mar 27 09:59:16 web admin interface listening on port 28017
</pre>
<p><strong>Installing MongoDB Driver for PHP</strong></p>
<p>Here is what I ran into at first:</p>
<pre>
[root@hostname]# cd /var/tmp
[root@hostname]# pecl install mongo
downloading mongo-1.0.6.tgz ...
Starting to download mongo-1.0.6.tgz (53,175 bytes)
.............done: 53,175 bytes
16 source files, building
running: phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
building in /var/tmp/pear-build-phy5ics/mongo-1.0.6
running: /var/cache/php-pear/mongo-1.0.6/configure
checking for egrep... grep -E
checking for a sed that does not truncate output... //bin/sed
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.
ERROR: `/var/cache/php-pear/mongo-1.0.6/configure' failed
</pre>
<p>Looking at this, I realized that /var/tmp wasn&#8217;t mounted to allow execution.  That was easy enough to fix after figuring out what it was.  The key is to remount /var/tmp to allow execution:</p>
<pre>
mount -o,remount,rw,exec /var/tmp
</pre>
<p>Once you do that, then you can just run the pecl install command and everything works fine:</p>
<pre>[root@hostname]# pecl install mongo</pre>
<p><i>Important:</i> Don&#8217;t forget to change it back once you&#8217;ve done your business:</p>
<pre>
mount -o,remount,rw,noexec /var/tmp
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.phy5ics.com/2010/03/27/installing-mongodb-on-mediatemple-dv/feed/</wfw:commentRss>
		</item>
		<item>
		<title>KnifeandPork.com Launches</title>
		<link>http://blog.phy5ics.com/2010/01/01/knifeandporkcom-launches/</link>
		<comments>http://blog.phy5ics.com/2010/01/01/knifeandporkcom-launches/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 22:45:59 +0000</pubDate>
		<dc:creator>Barton</dc:creator>
		
		<category><![CDATA[Announcements]]></category>

		<guid isPermaLink="false">http://blog.phy5ics.com/?p=90</guid>
		<description><![CDATA[I am excited to announce that my new project for 2010 and beyond has launched.  While not technology related, it represents the other passions that I hold near-and-dear: cooking and photography.  The new year starts off properly with Black-Eyed Peas with Smoked Ham Hocks served alonside Collard Greens with Bacon and Red Onion. [...]]]></description>
			<content:encoded><![CDATA[<p>I am excited to announce that my new project for 2010 and beyond has launched.  While not technology related, it represents the other passions that I hold near-and-dear: cooking and photography.  The new year starts off properly with Black-Eyed Peas with Smoked Ham Hocks served alonside Collard Greens with Bacon and Red Onion.  Be sure to check back often, as I cook nearly every night.</p>
<p><a href="http://www.flickr.com/photos/phy5ics/4236177532/" title="Collard Greens by phy5ics, on Flickr"><img src="http://farm3.static.flickr.com/2764/4236177532_1950d87f2a.jpg" width="500" height="336" alt="Collard Greens" /></a></p>
<p><a href="http://knifeandpork.com/" target="_blank">Visit knifeandpork.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phy5ics.com/2010/01/01/knifeandporkcom-launches/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Holiday Infographics</title>
		<link>http://blog.phy5ics.com/2009/12/25/holiday-infographics/</link>
		<comments>http://blog.phy5ics.com/2009/12/25/holiday-infographics/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 20:19:32 +0000</pubDate>
		<dc:creator>Barton</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.phy5ics.com/?p=68</guid>
		<description><![CDATA[
Happy Holidays from phy5ics!
]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.phy5ics.com/wp-content/uploads/2009/12/happy_holidays.jpg"><img class="alignnone size-full wp-image-69" title="happy_holidays" src="http://blog.phy5ics.com/wp-content/uploads/2009/12/happy_holidays.jpg" width="700" /></a></p>
<p>Happy Holidays from phy5ics!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phy5ics.com/2009/12/25/holiday-infographics/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Bluetooth + GPS + Python + ActionScript - Part 2 - Hooking Up</title>
		<link>http://blog.phy5ics.com/2008/11/06/bluetooth-gps-python-actionscript-part-2-hooking-up/</link>
		<comments>http://blog.phy5ics.com/2008/11/06/bluetooth-gps-python-actionscript-part-2-hooking-up/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 05:10:42 +0000</pubDate>
		<dc:creator>Barton</dc:creator>
		
		<category><![CDATA[AS3]]></category>

		<category><![CDATA[Bluetooth]]></category>

		<category><![CDATA[GPS]]></category>

		<category><![CDATA[Physical Computing]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[Twisted]]></category>

		<guid isPermaLink="false">http://phy5ics.com/blog/?p=58</guid>
		<description><![CDATA[Overview
After having built the hardware in Part 1, it is fairly useless without a way to get the GPS data from the device somewhere else in order to do something useful with it.  For this project, the end result will be a visualization of the GPS data in Flash Player on a Mac.  There are [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Overview</strong></p>
<p>After having built the hardware in Part 1, it is fairly useless without a way to get the GPS data from the device somewhere else in order to do something useful with it.  For this project, the end result will be a visualization of the GPS data in Flash Player on a Mac.  There are myriad ways to accomplish this, however very few approaches can easily encapsulate all of these steps in a single language.  This is because both low-level system access (to read the serial data) and some sort of server (to serve the data to Flash Player) are required.  While it is definitely possible to use any number of other languages such as Java, Processing, C++, etc., performing all of these tasks with those languages would require significant amounts of code.</p>
<p>With that said, I opted for Python not only because I love it, but also because it is quite straightforward to use it to read from a serial port using the <a href="http://pyserial.wiki.sourceforge.net/pySerial" target="_blank">pyserial module</a> and also to establish any number of different types of servers including standard HTTP and socket servers.  While there are built-in libraries for creating and managing servers, I ultimately decided on creating a socket server using <a href="http://twistedmatrix.com/trac/" target="_blank">Twisted</a>.  Twisted is an enormously powerful networking framework that simplifies the creation of all sorts of servers.</p>
<p>Why add another framework when a standard HTTP server would suffice for serving up data to the Flash Player?  The implementation of a standard HTTP server would require Flash Player polling the service to determine if data had been updated.  So, rather than rely on that sub-par solution, Twisted makes the creation of socket servers very easy, which then allows the Flash Player to receive data in real-time via an XMLSocket connection.  Not only that, but one of the coolest aspects of Twisted is that it makes it fairly easy to write multi-user socket servers, which will be a nice addition for future enhancements</p>
<p>Here is what the overall system architecture ends up looking like when all of that is considered:</p>
<p><a href="http://phy5ics.com/blog/wp-content/uploads/2008/11/gps_bt_sys_arch.jpg"><img class="alignnone size-full wp-image-62" title="gps_bt_sys_arch" src="http://phy5ics.com/blog/wp-content/uploads/2008/11/gps_bt_sys_arch.jpg" /></a></p>
<p>However, before diving into these details, the first step is to hook up the device to the Mac via a serial Bluetooth connection and verifying that everything is working so far.</p>
<p><span id="more-58"></span></p>
<p><strong>Bluetooth Pairing</strong><br />
Obviously, the first step is to power up the board.  After that, pairing the BlueSMiRF with the Mac.  This is a very straightforward process.  From the Bluetooth preference pane in System Preferences, click the &#8220;+&#8221; icon to add a new Bluetooth device.  Advance through the dialog boxes, configuring the device that shows up as <strong><em>SparkFun-BT</em></strong>.  The passkey for BlueSMiRF module is <strong><em>default</em></strong>, so type that in when prompted.</p>
<p><a href="http://phy5ics.com/blog/wp-content/uploads/2008/11/bt_pairing.jpg"><img class="alignnone size-full wp-image-59" title="bt_pairing" src="http://phy5ics.com/blog/wp-content/uploads/2008/11/bt_pairing.jpg" /></a><br />
Once that&#8217;s been done, by checking the serial interfaces in <strong><em>/dev</em></strong>, it can be verified that it is now active as a serial device.  That is done by opening a terminal window and typing <strong><em>ls /dev/tty.*</em></strong>.  That will list out all available serial interfaces.  The BlueSMiRF should show up as something like <strong><em>tty.SparkFun-BT-COM0-1</em></strong>.</p>
<p><a href="http://phy5ics.com/blog/wp-content/uploads/2008/11/ls_tty.jpg"><img class="alignnone size-full wp-image-60" title="ls_tty" src="http://phy5ics.com/blog/wp-content/uploads/2008/11/ls_tty.jpg" /></a></p>
<p><strong></strong></p>
<p><strong>Screen</strong><br />
Screen is a Unix application that allows one to attach a terminal session to a particular process.  To view the serial communication that is happening on the serial port that the BlueSMiRF is attached to, this is a good option.  This can be done by typing the following command into the terminal to view the serial communication on that port in realtime:</p>
<p><strong><em>screen /dev/tty.SparkFun-BT-COM0-1 9600</em></strong></p>
<p>Note that the <strong><em>9600</em></strong> at the end of that command is the baud rate.  That command should yield some cryptic messages being printed in Terminal like the following if everything else is wired up properly:</p>
<p><a href="http://phy5ics.com/blog/wp-content/uploads/2008/11/nmea.jpg"><img class="alignnone size-full wp-image-61" title="nmea" src="http://phy5ics.com/blog/wp-content/uploads/2008/11/nmea.jpg" /></a></p>
<p>To exit screen, hit <strong><em>control-a</em></strong>, then <strong><em>control-\</em></strong>.</p>
<p>The strings that are seen here are NMEA strings, which are derived from a specification that standardizes the way that marine electronics communicate with each other.  For additional information on this, check out <a href="http://www.gpsinformation.org/dale/nmea.htm">http://www.gpsinformation.org/dale/nmea.htm</a>.  If the GPS has a location fix, then numerous lines beginning with $GPGGA will be displayed, which precedes messages that contain the location fix data.  Otherwise, there will be mostly $GPGSV, which represents data regarding the GPS satellites themselves.</p>
<p><strong>OK, Now What?</strong></p>
<p>Now that there is data coming in over a virtual serial port, the next step is writing the software.  The next article in this series will examine the Twisted socket server and Flash XMLSocket connection along with providing the source code for those systems.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phy5ics.com/2008/11/06/bluetooth-gps-python-actionscript-part-2-hooking-up/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Thanks for all the Fish</title>
		<link>http://blog.phy5ics.com/2008/07/24/thanks-for-all-the-fish/</link>
		<comments>http://blog.phy5ics.com/2008/07/24/thanks-for-all-the-fish/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 02:16:37 +0000</pubDate>
		<dc:creator>Barton</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://phy5ics.com/blog/2008/07/24/thanks-for-all-the-fish/</guid>
		<description><![CDATA[I greatly appreciate everyone&#8217;s comments and input on my article on Bluetooth and GPS 
.  It is quite nice to have the exposure from Make and also to have one&#8217;s efforts peer reviewed as it leads to productive introspection around one&#8217;s work.
Allow me to respond to those who took the time to comment on my [...]]]></description>
			<content:encoded><![CDATA[<p>I greatly appreciate everyone&#8217;s comments and input on my article on <a href="http://phy5ics.com/blog/2008/03/16/bluetooth-gps-actionscript-part-1-hardware/">Bluetooth and GPS </a><br />
.  It is quite nice to have the exposure from Make and also to have one&#8217;s efforts peer reviewed as it leads to productive introspection around one&#8217;s work.</p>
<p>Allow me to respond to those who took the time to comment on my little project:</p>
<p><strong>To Tam, David and Snoopy:</strong><br />
No, I didn&#8217;t actually short out the entire board by connecting VCC+ and GND.  That is a mistake in my first attempt to draw out a schematic in Illustrator.  So to those that are copying this project word-for-word - please don&#8217;t follow the diagram exactly.  I&#8217;ll update it in the next couple of days when I have a chance.  As an aside, I&#8217;d be curious to hear from others about what they use for drawing circuit diagrams.  I just use Illustrator because that&#8217;s what I know from my days long past as a designer.</p>
<p><strong>To Siftah and Arto:</strong><br />
What I&#8217;ve done is most definitely available as a commercial product and most likely for less than I invested in the various components.  However, I just happen to be a nerd and am quite interested in learning from products and devices that may exist for an equal or greater price.</p>
<p>Because I cobbled my project together from off-the-shelf components, I can continually break down and re-combine any of the components I utilized into more-and-more interesting and complicated projects.  With a consumer product, I would be beholden to whatever the particular manufacturer of that consumer product dictated the functionality of a given device to be.</p>
<p>Additionally, while I&#8217;m not entirely familiar with what is on the market with regards to Bluetooth GPS devices, it&#8217;s much cooler, in my opinion, to be able to do whatever I want with the IMEA codes that I ingest and store from a piece of hardware via my own drivers and software as compared with what a GPS hardware/software vendor happens to expose via a crippled API in response to what their marketing team thinks that I might be interested in doing with said data that I collected via blood, sweat and tears on the trail.  Isn&#8217;t that why we all read and love Make?</p>
<p>Birds have dominated the sky since the day that they evolved to become flying creatures.  However, since man has gazed upon them, we have looked to them for  inspiration and in envy, often (unsuccessfully) invoking their form in an attempt to share the currents and soar above.  So, while I could theoretically transmute into a bird (or purchase one) to create an exact replica of something that already exists, by creating a reasonable facsimile I can learn how exactly it works, improve upon it and have fun doing it.</p>
<p><!-- ~ --><!-- ~ --></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phy5ics.com/2008/07/24/thanks-for-all-the-fish/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Bluetooth + GPS + ActionScript - Part 1 - Hardware</title>
		<link>http://blog.phy5ics.com/2008/03/16/bluetooth-gps-actionscript-part-1-hardware/</link>
		<comments>http://blog.phy5ics.com/2008/03/16/bluetooth-gps-actionscript-part-1-hardware/#comments</comments>
		<pubDate>Sun, 16 Mar 2008 17:37:19 +0000</pubDate>
		<dc:creator>Barton</dc:creator>
		
		<category><![CDATA[AS3]]></category>

		<category><![CDATA[Bluetooth]]></category>

		<category><![CDATA[GPS]]></category>

		<category><![CDATA[Physical Computing]]></category>
<category>as3</category><category>bluetooth</category><category>gps</category><category>physical computing</category>
		<guid isPermaLink="false">http://phy5ics.com/blog/2008/03/16/bluetooth-gps-actionscript-part-1-hardware/</guid>
		<description><![CDATA[Overview
For this project, my goal was to get GPS data into my Mac for some visualization experiments with ActionScript.  After some initial prototypes that worked well using an RS232-to-USB converter, I decided that wasn&#8217;t slick enough and had it too many wires.  I like things nice and clean around my desk, so I [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Overview</strong><br />
For this project, my goal was to get GPS data into my Mac for some visualization experiments with ActionScript.  After some initial prototypes that worked well using an RS232-to-USB converter, I decided that wasn&#8217;t slick enough and had it too many wires.  I like things nice and clean around my desk, so I opted for adding Bluetooth in place of a USB converter.</p>
<p>After experimenting with some different methods, some using microprocessors and some not, I opted for the simpler route, eliminating the microprocessor.  A microprocessor doesn&#8217;t add anything other than cost for the basic purpose of this project.  Although stay tuned for another posting about integrating a similar configuration with the Make Controller and Arduino microprocessors.</p>
<p><span id="more-43"></span><br />
<strong>Parts List</strong></p>
<ul>
<li> <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=114" target="_blank">5V regulated power supply</a></li>
<li> <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=158" target="_blank">BlueSMiRF Bluetooth Module</a></li>
<li> <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=465" target="_blank">EM406A GPS Module</a></li>
<li> Extra 6-pin interface cable</li>
<li> 9V battery holder</li>
<li> Headers</li>
<li> Breadboard</li>
<li> Solid 22-gauge wire</li>
<li> Soldering iron</li>
</ul>
<p><strong>5v Power Supply</strong><br />
Select a 5V power supply to use.  In this case, I&#8217;m using a switchable 3.3V/5V power supply kit that I picked up from SparkFun.  I made a slight modification to it and soldered a 9V battery adaptor to it to make it a bit more flexible and truly wireless rather than using the standard 9V DC wall adaptor.  This is just my preference for prototyping.  When I get down to a final design, I generally switch it up in favor of a simple voltage regulator to save space and weight.</p>
<p><strong>BlueSMiRF Embedded Bluetooth Serial RF Link</strong><br />
The BlueSMiRF module is sweet little device, providing an easy way to link any project using a serial interface to a computer (or another BlueSMiRF module).  Simply connect the TX, RX to another serial device along with vcc (4.5V-5.5V) and ground and it is ready to pair.</p>
<p><strong>EM406A GPS Board</strong><br />
This small board uses the SiRF Star III chipset, which is a nice chipset that is relatively stingy on power supply and can fix its position - known as TTFF (Time To First Fix), even in indoor environments, in a matter of 30 seconds or so.  Just keep in mind that the odd peach-colored ceramic part is the antenna and should point towards the sky.   Many other chipsets offer significantly less in terms of performance and most are unable to fix a position unless outside.  I was sold on it since happens to be the same chipset that I have in my Garmin CS60x, a considerably more expensive device.</p>
<p>Besides all that, the EM406A is a perfect candidate for integration with physical computing projects because it&#8217;s output is serial.  It starts outputting NMEA strings at 4800 baud once its position is fixed.  NMEA 0183 is a standard with which GPS data is transmitted from a device using comma-delimited strings.  For more information on NMEA, consult <a href="http://www.gpsinformation.org/dale/nmea.htm" target="_blank">this resource</a>.</p>
<p>The documentation for the board itself is well done.  In addition to the NMEA strings that are broadcast from the board itself, the EM406A can have commands sent to it via its serial interface to get specific NMEA data back.  The only catch is be sure to get an 6-pin extra interface cable along with the board itself.  I cut the interface cable in half and then soldered the wires some headers to make prototyping easier.  Otherwise it&#8217;s going to be impossible to do anything useful with it.</p>
<p><strong>Schematic</strong><br />
Now that we have all that down, here&#8217;s a little schematic of how everything is hooked up together:</p>
<p><a href="http://phy5ics.com/blog/wp-content/uploads/2008/11/gps_bt_schematic_rev1.jpg"><img class="alignnone size-full wp-image-54" title="gps_bt_schematic_rev1" src="http://phy5ics.com/blog/wp-content/uploads/2008/11/gps_bt_schematic_rev1.jpg" /></a></p>
<p><strong>Photograph</strong></p>
<p><a href="http://phy5ics.com/blog/wp-content/uploads/2008/11/gps_bt_2.jpg"><img class="alignnone size-full wp-image-56" title="gps_bt_2" src="http://phy5ics.com/blog/wp-content/uploads/2008/11/gps_bt_2.jpg" /></a><br />
<strong>Next Article</strong><br />
In the next post, I&#8217;ll be working through the software aspects of this project.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phy5ics.com/2008/03/16/bluetooth-gps-actionscript-part-1-hardware/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Remount an External Hard Drive in Leopard</title>
		<link>http://blog.phy5ics.com/2008/03/14/remount-an-external-hard-drive-in-leopard/</link>
		<comments>http://blog.phy5ics.com/2008/03/14/remount-an-external-hard-drive-in-leopard/#comments</comments>
		<pubDate>Sat, 15 Mar 2008 01:27:14 +0000</pubDate>
		<dc:creator>Barton</dc:creator>
		
		<category><![CDATA[General Technology]]></category>

		<category><![CDATA[leopard]]></category>

		<guid isPermaLink="false">http://phy5ics.com/blog/2008/03/14/remount-an-external-hard-drive-in-leopard/</guid>
		<description><![CDATA[This may seem like a fairly outlandish edge case for external hard drives, but it&#8217;s one that I&#8217;ve run recently.  Suppose you have an external Firewire drive connected to your MacBook Pro and then daisy-chained via Firewire to that, you have several more Firewire drives.  Then suppose you&#8217;ve accidentally ejected that first drive [...]]]></description>
			<content:encoded><![CDATA[<p>This may seem like a fairly outlandish edge case for external hard drives, but it&#8217;s one that I&#8217;ve run recently.  Suppose you have an external Firewire drive connected to your MacBook Pro and then daisy-chained via Firewire to that, you have several more Firewire drives.  Then suppose you&#8217;ve accidentally ejected that first drive that everything else is daisy-chained to.  Then suppose that you&#8217;re currently in the middle of a render to one of the other down-stream drives and really need some files off of the drive that was unmounted.  That removes the possibility of physically disconnecting the first drive to then reconnecting it to remount it, since the act of disconnecting would fubar the render.</p>
<p><span id="more-42"></span> I know that you&#8217;re now agreeing that this is a tedious edge case and probably clicking the close button on your browser, but for those that haven&#8217;t yet, there&#8217;s an easy answer.  Open up Disk Utility from /Applications/Utilities and select the drive that you unmounted and click &#8220;Mount&#8221; from the menu.  Problem solved, render complete (hours later).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phy5ics.com/2008/03/14/remount-an-external-hard-drive-in-leopard/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
 


