<?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>New Media Initiatives &#187; Hardware</title>
	<atom:link href="http://blogs.walkerart.org/newmedia/category/hardware/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.walkerart.org/newmedia</link>
	<description>Just another Walker Blogs weblog</description>
	<lastBuildDate>Thu, 12 Nov 2009 20:27:13 +0000</lastBuildDate>
	<generator>walker_blogs</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Build a bridging firewall (cheap!)</title>
		<link>http://blogs.walkerart.org/newmedia/2009/06/22/build-a-bridging-firewall-cheap/</link>
		<comments>http://blogs.walkerart.org/newmedia/2009/06/22/build-a-bridging-firewall-cheap/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 18:07:12 +0000</pubDate>
		<dc:creator>Nate Solas</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=862</guid>
		<description><![CDATA[New Media has a number of development servers located in-house where we get stuff done before releasing it out into the wild.  Until last week these were protected by an aging OpenBSD firewall running packet filter and all was well until midweek when the motherboard failed.  Not having a spare on hand, I was scrambling [...]]]></description>
			<content:encoded><![CDATA[<p>New Media has a number of development servers located in-house where we get stuff done before releasing it out into the wild.  Until last week these were protected by an aging OpenBSD firewall running <a href="http://en.wikipedia.org/wiki/PF_(firewall)">packet filter</a> and all was well until midweek when the motherboard failed.  Not having a spare on hand, I was scrambling for a solution.</p>
<div class="wp-caption alignright" style="width: 260px"><a href="http://en.wikipedia.org/wiki/Linksys_WRT54G_series"><img src="http://upload.wikimedia.org/wikipedia/en/thumb/e/ee/Linksys_WRT54G_V1.jpg/250px-Linksys_WRT54G_V1.jpg" alt="Linksys wireless router" width="250" height="188" /></a><p class="wp-caption-text">Linksys wireless router</p></div>
<p>Being familiar with the <a href="http://www.dd-wrt.com/">dd-wrt project</a>, I was pretty sure I could build a firewall out of a <a href="http://en.wikipedia.org/wiki/Linksys_WRT54G_series">Linksys router</a>.  We went with the WRT54GL, currently as cheap as $50 on Amazon.  (We bought local so we&#8217;d have it sooner, and it was a bit more).</p>
<p>The first step after flashing the firmware with the latest dd-wrt build (v24-sp2) was to take off the antennas and turn off the radio.  The last thing I want for the firewall is to be broadcasting an SSID and allow wireless associations.  This actually requires a startup script on the router, with a line to remove the wireless module so it won&#8217;t try to reenable itself:</p>
<pre style="padding-left: 30px">wl radio off
wl down
rmmod wl</pre>
<p>Good start.  Next I needed to bridge the WAN port with the LAN ports, which ended up being a struggle until I found the easy options in the dd-wrt GUI.  First, set the LAN to use a static IP and make sure you can connect via another machine to configure it.  You&#8217;ll also need to enable SSH access and remote configuration &#8211; but be sure to lock this down once the firewall is running!</p>
<p>Once you have the LAN configured, you need to set the WAN connection type to &#8220;disabled&#8221;.  This will give you a checkbox to bridge the LAN and WAN:  &#8220;Assign WAN port to switch&#8221;.  Lastly, under Advanced Routing set the Operating Mode to &#8220;Router&#8221; so it stops trying to do NAT.  Apply these settings, and you&#8217;ll basically have an expensive dumb switch &#8211; all traffic shows up on every port, and there&#8217;s no logic at all.  We&#8217;re halfway there.</p>
<p>Being unfamiliar with iptables (we use OpenBSD and pf for firewalls around here), I was under the impression that iptables rules would work in a bridging environment.  This is not the case: bridged packets don&#8217;t reach iptables at all!  The best I could do was block everything (manual restart needed), or otherwise blow up the configuration (manual restart needed) as I tried to mess with the bridge.  This was an incredibly frustrating learning curve as everything I could find made it sound like this was the way to configure a firewall in Linux, but it just wasn&#8217;t working.</p>
<p>Note to keep you sane: don&#8217;t do any of this testing in the startup scripts or you&#8217;ll brick your router, guaranteed.  Do it all from the command line with a known-good startup.  That way it&#8217;s a simple (but annoying) power cycle to get things back up.</p>
<p>The trick, it turns out, is a kernel module called ebtables.  Luckily, this is included in the dd-wrt build, but it&#8217;s not turned on by default!  Add this to your startup script:</p>
<pre style="padding-left: 30px">insmod ebtables
insmod ebtable_filter
insmod ebt_ip.o</pre>
<p>And, ta-da, all your iptables rules will start impacting packets!  Now it&#8217;s just a matter of configuring the firewall rules.  We&#8217;re using something like this:  (vlan0 represents the LAN ports, and vlan1 is the WAN port)</p>
<pre style="padding-left: 30px"># drop everything by default:
iptables -P FORWARD DROP
# clear the old rules:
iptables -F FORWARD
# forward stuff that's established already
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# let connections out:
iptables -A FORWARD -i vlan0 -m state --state NEW -j ACCEPT

# firewall access rules
iptables -F INPUT
# WAC ips can get to fw:
iptables -A INPUT -p tcp -d 1.2.3.4 -s 4.3.2.1/24 -j ACCEPT
# drop everything else!
iptables -A INPUT -p tcp -d 1.2.3.4 -j DROP

# ... snipped all the actual access rules and packet flood protection ...</pre>
<p>The only trick here is the last few lines which limit access to the firewall machine itself.  We can&#8217;t use the FORWARD rules since these packets are destined for the internal hardware and not forwarded, but we do need to limit access via the INPUT chain.  In this example the firewall has IP 1.2.3.4 and the network I want to access it from has 4.3.2.x.  That way I can leave the firewall&#8217;s remote access turned on and limit it to our network.  (because there&#8217;s no terminal access you can&#8217;t make it a truly transparent bridge or you&#8217;d never be able to change the config!)</p>
<p>I admit I&#8217;m a bit nervous posting some of this in case there&#8217;s a glaring security hole, but it seems good to me.  Anyone see anything they&#8217;d like to warn me about before we get hacked?</p>
<p>And there you have it!  For the cost of a cheap router and some time (not much, since you can just follow these notes!) you have a full-featured bridging firewall running on dedicated hardware.  With a little extra work it would be easy to get VPN running and much more&#8230;  I&#8217;m hoping for years of service from this little guy!</p>
<p><span style="font-size: xx-small">( Hat tip another <a href="http://slagwerks.com/blog/index.php/2008/10/10/openbsd-firewall-on-soekris-4501/">DIY firewall solution</a> that I&#8217;d really like to try someday. )</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2009/06/22/build-a-bridging-firewall-cheap/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing a Lighttpd proxy</title>
		<link>http://blogs.walkerart.org/newmedia/2008/11/22/installing-a-lighttpd-proxy/</link>
		<comments>http://blogs.walkerart.org/newmedia/2008/11/22/installing-a-lighttpd-proxy/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 17:39:00 +0000</pubDate>
		<dc:creator>Nate Solas</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=694</guid>
		<description><![CDATA[It had been a slow build, but an incident a few weeks ago made it finally clear: the Walker website was becoming a victim of its own success.  A post on the Teens site contained a picture of the Joker for the then-upcoming Batman movie, and as Halloween approached we found ourselves on the front [...]]]></description>
			<content:encoded><![CDATA[<p>It had been a slow build, but an incident a few weeks ago made it finally clear: the Walker website was becoming a victim of its own success.  A <a href="http://teens.walkerart.org/2008/01/">post on the Teens site</a> contained a picture of the Joker for the then-upcoming Batman movie, and as Halloween approached we found ourselves on the front page of Google image search as people began looking for costume ideas.  The exponential traffic was crippling our web server:</p>
<p><a href="http://blogs.walkerart.org/newmedia/files/2008/11/teens_spike.png"><img class="alignnone size-full wp-image-695" src="http://blogs.walkerart.org/newmedia/files/2008/11/teens_spike.png" alt="" width="405" height="138" /></a></p>
<p>The biggest problem was simply that Apache is heavy.  It&#8217;s resource-intensive, especially when you are running several modules as we were &#8211; PHP, proxy, cache, etc.  The teens site is especially difficult since it runs as a combination of a blog (PHP on Apache 2) and .wac pages (mod_perl &amp; Axkit).  Every hit to the Joker post &#8211; even if the page was cached &#8211; would tie up a number of Apache processes as it served the style sheets, images, and javascript to support the page.  We were reaching our MaxClients setting but unable to raise it without running out of memory for our other more intensive servers (mod_perl and postgres, I&#8217;m looking at you&#8230;).</p>
<p>As this diagram shows, it&#8217;s nothing but Apache servers, and it just wasn&#8217;t scaling to meet our current demand.</p>
<p><a href="http://blogs.walkerart.org/newmedia/files/2008/11/wac_old_servers.png"><img class="alignnone size-full wp-image-696" src="http://blogs.walkerart.org/newmedia/files/2008/11/wac_old_servers.png" alt="" width="500" height="177" /></a></p>
<p>The approach was two-fold: some quick auditing and re-writing of the worst offending .wac pages&#8217; SQL to speed up the slow pages, and yet another web server in front of everything.  It was a no brainer to pick Lighttpd, or &#8220;Lighty&#8221;.  It&#8217;s written to do one thing &#8211; serve static content &#8211; and do it extremely fast.  Fortunately it can also proxy requests, so it was a pretty simple matter to reassign some ports and write a few rules to route all requests through Lighty.</p>
<p><a href="http://blogs.walkerart.org/newmedia/files/2008/11/wac_new_servers.png"><img class="alignnone size-full wp-image-697" src="http://blogs.walkerart.org/newmedia/files/2008/11/wac_new_servers.png" alt="" width="500" height="206" /></a></p>
<p>The end result is astonishing.  Our server hums along happily under even the most intense traffic we can throw at it (the email blast for the <a href="http://filmvideo.walkerart.org/detail.wac?id=4737&amp;title=Upcoming%20Programs">British Television Advertising Awards</a>) and doesn&#8217;t even start to complain.  Moving the bulk of the requests to the extremely fast and resource-light server meant we could devote more resources to quickly processing the slow pages (mod_perl).  Between the SQL tuning and the extra resources, the bulk of these pages are now served between 2 and 10(!!!) times faster!</p>
<p>The lesson here, for anyone with an Apache server creaking and groaning under increased traffic, is to stop waiting and install Lighty.  If your site is PHP-based, you can run this as a fast CGI module from Lighty and do away with Apache altogether.  You can also use Lighty to stream (and &#8220;scrub&#8221;!) flv and mp4 video files.  (I&#8217;m using both of these techniques for the <a href="http://ace2.artsconnected.org/">new ArtsConnectEd</a>.)</p>
<p>The only caveat: be careful as you look for examples on the web.  Remarkably, it seems there are many confused webmasters who expect to see a performance boost by putting Lighty <em>behind</em> their struggling Apache.  This will not help at all, and in fact will probably make things worse.  Lighty has to be first in the chain to take the load off Apache.</p>
<p>Enjoy the speed!  I know our server is enjoying the breathing room!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2008/11/22/installing-a-lighttpd-proxy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hacking the iPod Touch</title>
		<link>http://blogs.walkerart.org/newmedia/2008/11/03/hacking-the-ipod-touch/</link>
		<comments>http://blogs.walkerart.org/newmedia/2008/11/03/hacking-the-ipod-touch/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 18:51:44 +0000</pubDate>
		<dc:creator>Justin Heideman</dc:creator>
				<category><![CDATA[Around the Museum Web]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Physical Interface]]></category>
		<category><![CDATA[gallery]]></category>
		<category><![CDATA[ipodtouch]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=652</guid>
		<description><![CDATA[Shelley Bernstein over at the Brooklyn Museum has posted some details on their recent hack of the iPod Touch to use in the gallery. Shelly hasn&#8217;t posted all the details on the blog, but if you contact her, she will be happy to link you up to the juice. If you&#8217;re looking to do something [...]]]></description>
			<content:encoded><![CDATA[<p>Shelley Bernstein over at the Brooklyn Museum has posted some details on their recent <a href="http://www.brooklynmuseum.org/community/blogosphere/bloggers/2008/10/31/ipod-touch-for-use-in-the-gallery/">hack of the iPod Touch</a> to use in the gallery. Shelly hasn&#8217;t posted all the details on the blog, but if you contact her, she will be happy to link you up to the juice. If you&#8217;re looking to do something like this in a gallery, it&#8217;s a great head-start.</p>
<div id="attachment_653" class="wp-caption alignnone" style="width: 460px"><a href="http://blogs.walkerart.org/newmedia/files/2008/11/bdh_gallery.jpg"><img class="size-medium wp-image-653" src="http://blogs.walkerart.org/newmedia/files/2008/11/bdh_gallery-450x337.jpg" alt="Photo by Shelly Bernstein" width="450" height="337" /></a><p class="wp-caption-text">Photo by Shelly Bernstein</p></div>
<p>Using an iPod touch as a video display in a gallery is a really great idea for a number of reasons:</p>
<ul>
<li>iPods are cheap (relatively).</li>
<li>The screens are offer a high resolution and an acceptable size.</li>
<li>They&#8217;re small and unobtrusive, so they have the potential to not irritate curators who dislike too much stuff near the art. </li>
<li>The playback hardware is contained right in the unit, so no need for extra wires to a DVD player or other playback device.</li>
<li>They have WiFi, so there is potential for remote administration, updating, and connecting to content on the Net. </li>
<li>If you get a first generation, they&#8217;re hackable. The second generation will probably be hackable soon. Thanks to things like <a href="http://www.appsafari.com/software/5325/cydia/">Cydia</a>, you can install SSH and all kinds of useful goodies.</li>
<li>The interface is simple. Though I&#8217;m not sure if my grandma would know how to interact with it. </li>
</ul>
<p>The only real downside to the IPod touch is the cord comes out a weird angle, making the mounting and display a little tricky.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2008/11/03/hacking-the-ipod-touch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rock the Garden^h^h^h^h^h^h Webserver</title>
		<link>http://blogs.walkerart.org/newmedia/2008/03/26/rock-gardenhhhhhh-webserver/</link>
		<comments>http://blogs.walkerart.org/newmedia/2008/03/26/rock-gardenhhhhhh-webserver/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 17:08:05 +0000</pubDate>
		<dc:creator>Nate Solas</dc:creator>
				<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/2008/03/26/rock-the-gardenhhhhhh-webserver/</guid>
		<description><![CDATA[The good news: about 8 million music lovers are simultaneously clicking on our email blast for information on Rock the Garden!
The bad news: about 8 million music lovers are subsequently melting our server. I feel like I should drive out there and blow on it to help keep it from overheating, but I&#8217;m on my [...]]]></description>
			<content:encoded><![CDATA[<p>The good news: about 8 million music lovers are simultaneously clicking on our email blast for information on Rock the Garden!</p>
<p>The bad news: about 8 million music lovers are subsequently melting our server. I feel like I should drive out there and blow on it to help keep it from overheating, but I&#8217;m on my bike today and not up for the extra miles. So&#8230;</p>
<blockquote><p>Dear music lovers,</p>
<p>I&#8217;m glad there&#8217;s so much interest in the show! I think it&#8217;s going to be great. But please, please, click slower!</p>
<p>Love,</p>
<p>Your frantic webmaster</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2008/03/26/rock-gardenhhhhhh-webserver/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Building a TV interface for YouTube using a mac and a browser</title>
		<link>http://blogs.walkerart.org/newmedia/2008/02/22/building-tv-interface-youtube-mac/</link>
		<comments>http://blogs.walkerart.org/newmedia/2008/02/22/building-tv-interface-youtube-mac/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 17:03:51 +0000</pubDate>
		<dc:creator>Justin Heideman</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[nptech]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/2008/02/22/building-a-tv-interface-for-youtube-using-a-mac-and-a-browser/</guid>
		<description><![CDATA[
For the installation of Worlds Away, we needed to find a way to show the YouTube videos in the gallery. If you&#8217;ve visited the show, you&#8217;d see the videos installed in a Rec Room in the center of the gallery, complete with green shag carpeting, faux wood-gain paneling, low ceiling and bean bag chairs. It [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://blogs.walkerart.org/newmedia/wp-content/uploads/2008/02/youtube_tv.jpg' alt='YouTube on the TV' /></p>
<p>For the installation of Worlds Away, we needed to find a way to show the YouTube videos in the gallery. If you&#8217;ve visited the show, you&#8217;d see the videos installed in a Rec Room in the center of the gallery, complete with green shag carpeting, faux wood-gain paneling, low ceiling and bean bag chairs. It looks very much like my grandparent&#8217;s basement, minus the musty smell. The videos are viewable on a CRT television set on the floor in the corner of the room. I built a custom interface to allow people to control the TV, play the YouTube videos over the internet, at a decent quality, without violating the YouTube terms of service, and being mostly mischief-proof.</p>
<p>If you want to be spared the details, here&#8217;s a video:</p>
<a href="http://blogs.walkerart.org/newmedia/2008/02/22/building-tv-interface-youtube-mac/"><em>Click here to view the embedded video.</em></a>
<p>Or, <a href="#">view it in a browser</a>. This opens a pop-up window, Safari suggested, since that what it was built for. Use the left and right arrow keys, enter and escape to navigate.</p>
<p>When we started the project, we looked into ripping the flash video files from YouTube and creating a DVD. Testing showed the quality wasn&#8217;t great, but passable on a standard-def CRT television. The big hang-up about a DVD based approach was that it&#8217;s expressly forbidden in the <a href="http://youtube.com/t/terms">YouTube terms of service</a>:</p>
<blockquote><p>You agree not to access User Submissions (defined below) or YouTube Content through any technology or means other than the video playback pages of the Website itself, the YouTube Embedable Player, or other explicitly authorized means YouTube may designate.</p></blockquote>
<p>While it&#8217;s one thing to just avoid agreements like this with a wink and a nod for one-off or personal use, it didn&#8217;t seem like a good idea to blatantly violate the terms of service for an installation that would be in the gallery for months.</p>
<p>We also discussed setting up a computer in the gallery and simply putting a web page on it thin a custom player and view the videos. We weren&#8217;t too happy with that idea either, since it didn&#8217;t really fit within the Rec Room concept in the gallery &#8212; my grandparents don&#8217;t have a computer in the basement. We also discussed putting a big plasma TV on the wall, more like a modern TV, and using a remote or some sort of a pointing device to select videos using a custom YouTube player. Again, this option seemed costly (no spare plasma screens sitting around) and not within the theme of the room.</p>
<p>What we wanted was something kind of like the Apple TV, except limited to the 12 videos we selected for the exhibition. Quick research revealed no way to lock down an Apple TV or limit it to a particular YouTube playlist, so that was out. But what about making a web page that worked in a similar fashion?</p>
<p>It is possible to make Safari work in fullscreen mode using <a href="http://haoli.dnsalias.com/Saft/index.html">Saft</a>. And there are applications that work with the Apple Remote to set up custom events and keystrokes. A computer with the right video card can also go out to a TV. And a little javascript magic in the browser could pull it all together with fancy fade and scroll effects.</p>
<p><strong>jQuery and Safari fun</strong></p>
<p>I started with the web page. I already knew I wanted to use <a href="http://jquery.com/">jQuery</a> for this project, if possible. I&#8217;ve been using <a href="http://mootools.net/">MooTools</a> for a while now and I wanted to expand my horizons to include a second Javascript library (half kidding). Using a TV screen for a display limits the usable resolution to 640&#215;480, so there is not enough room to display all the entries on screen at once. Instead, I found the jCarousel plugin that I was able to use to scroll the video information across the screen. <a href="http://sorgalla.com/jcarousel/">JCarousel</a> has a lot of hooks for various events, so it made it quite easy to plug in to. The second thing I&#8217;d need was something to show the videos on screen once selected. The <a href="http://jquery.com/demo/thickbox/">thickbox</a> plugin is a lightbox clone, and seemed to do the trick. I tied it all together with some custom event hooks for keystrokes and a some logic to keep errant keystrokes from triggering multiple videos, excess scrolling, etc. In the end, I found that using the arrow keys and esc and enter are the best. In Safari, if you use any actual letter keys, it will default to type ahead find functionality and interfere with the scrolling offset.</p>
<p>The interface is designed explicitly for Safari. Since this is a single computer installation under our control, I don&#8217;t have to worry about whether or not it works in IE or Firefox. I have no idea if it works in IE (ignorance truly <em>is</em> bliss), but it only half-works in Firefox. Firefox doesn&#8217;t want to load the flash player in Thickbox. I&#8217;ve experienced <a href="http://blogs.walkerart.org/newmedia/2008/02/07/exhibition-wiki-worlds/">problems with Firefox ignoring the z-index on Flash elements</a> in the past, so this is not surprising.</p>
<p><strong>Remote buddy</strong></p>
<p><img src='http://blogs.walkerart.org/newmedia/wp-content/uploads/2008/02/remotebuddy.jpg' alt='Remote Buddy'>Now that I had figured out how to deal with the browser, I had to figure out a way to have the remote interface with the browser by sending specific keystrokes for each button. After looking at several programs that do this with the Apple remote, I settled on <a href="http://www.iospirit.com/remotebuddy/">Remote Buddy</a>. It was the easiest to configure so that it would only work with specific applications. I configured it to send the left arrow key on left arrow press, right on right, enter on play and escape key on menu button press.</p>
<p>One problem with the remote was that our computer was an older mirror-door G4 tower, which does not have an infrared receiver. Thankfully, Remote Buddy supports third-party usb receivers, so I <a href="http://www.newegg.com/Product/Product.asp?Item=N82E16880100851">ordered one</a>, and it worked like a charm. Microsoft does build good hardware.</p>
<p><strong>Video out</strong></p>
<p>Unfortunately, we weren&#8217;t able to track down a G4 that had S-video or composite out, so I also ordered a newer video card for that. We got an ATI Radeon 9200 which has an excellent control panel for TV-out settings, letting you manipulate all aspects of the size, stretch, overscan, etc.</p>
<p><strong>Net connection</strong></p>
<p>In this configuration, the videos stream in real time from YouTube&#8217;s servers. Our galleries have pretty good wireless saturation, and an airport card in this tower allows the machine to connect to the network. I spent some time looking into using Squid for caching the youtube videos, but it appears YouTube recently changed the way videos are embedded, using some sort of a time-based token in the URL, making caching difficult if not impossible. Another option would be to keep the videos loaded in the browser, but in a hidden element. However, since there&#8217;s no interface for controlling the YouTube embedded player with javascript, starting and stopping the player is not possible.</p>
<p><strong>Putting it together</strong></p>
<p>After connecting all these things, I cleaned up the interface a bit, changing the typeface to Avenir, choosing colors that worked better on the Television (don&#8217;t use white). I configured Safari to start in full-screen kiosk mode, which Saft enables. Safari and Remote Buddy were set to launch on login, and the machine is set to automatically log in. Additionally, I set up a simple shell script that checks each of them to make sure they&#8217;re running and if not, relaunches them. With relaunching the applications, it&#8217;s important to use the command-line version of Applescript, since that will cleanly deal with backgrounding the process and giving correct screen focus.</p>
<p>Doc Czypinski, who was the lead tech for installing the show, was able to figure out a way to glue a white plastic strip to the back of the remote. He was then able to cable the remotes to the gallery furniture so that they don&#8217;t walk away during the show.</p>
<p><strong>Post-mortem</strong></p>
<p>Now that the computer has been in the gallery for about a week, there are two things we&#8217;ve learned. First, visitors tend to expect things to be playing automatically on the TV, since that&#8217;s the way most media things are in galleries. When they do figure out they need to use the remote, they tend to click the big play button and not cycle through the videos to choose. I&#8217;ve attempted to help this by putting arrows on the screen to indicate left and right so that visitors know to use the arrows on the remote to scroll.</p>
<p>The second issue is that the wireless hasn&#8217;t been 100% reliable. As anyone who uses Wifi on a regular basis knows, it&#8217;s not always up 100% of the time, and the wifi in our gallery goes out once in a while. I&#8217;m looking at writing a script that will cycle the Airport card off and on if it looses connectivity, or displays a message on screen if there is extended connectivity loss. A wired connection would certainly be better, but the convenience of Wifi cannot be beaten.</p>
<p>Gallery photo by Cameron Wittig. Arm of Justin Heideman.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2008/02/22/building-tv-interface-youtube-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building a Multiple iPod Charger</title>
		<link>http://blogs.walkerart.org/newmedia/2007/06/07/building-multiple-ipod-charger/</link>
		<comments>http://blogs.walkerart.org/newmedia/2007/06/07/building-multiple-ipod-charger/#comments</comments>
		<pubDate>Thu, 07 Jun 2007 21:39:07 +0000</pubDate>
		<dc:creator>Brent Gustafson</dc:creator>
				<category><![CDATA[Art on Call]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Mobile Devices]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/2007/06/07/building-a-multiple-ipod-charger/</guid>
		<description><![CDATA[One of the cool things we&#8217;re doing for the Walker&#8217;s upcoming exhibition Picasso and American Art is significantly increasing our iPod audio tour capacity.  For the exhibit we were able to get 25 iPod Video&#8217;s, and like our normal iPod audio tours, we will be letting visitors use them for free.  The same [...]]]></description>
			<content:encoded><![CDATA[<p>One of the cool things we&#8217;re doing for the Walker&#8217;s upcoming exhibition <i><a href="http://calendar.walkerart.org/canopy.wac?id=2735">Picasso and American Art</a></i> is significantly increasing our iPod audio tour capacity.  For the exhibit we were able to get 25 iPod Video&#8217;s, and like our normal iPod audio tours, we will be letting visitors use them for free.  The same content is also available on <a href="http://newmedia.walkerart.org/aoc">Art on Call</a>.</p>
<p>This presents a bit of a challenge however.  Up until now we&#8217;ve only had four iPod Nano&#8217;s to worry about, and plugging a few into a computer or two to charge isn&#8217;t that big a deal.  Now however we have 25 of them to deal with, and there certainly aren&#8217;t enough USB ports to go around.  The goal was to find a way to charge most of the iPods, do it in a limited space, and do it for as cheap as possible.</p>
<p>My solution was to buy three USB hubs and use them just for charging.  We don&#8217;t really need to have them connected to the computer to sync with, we just want the power.  This turned out to be harder than I thought.  I went through a few USB hubs trying to get the iPods just to charge off the supplied AC adaptor.  Each hub I tried didn&#8217;t allow this.  It would only charge when the hub was connected to a computer via USB.  I can&#8217;t fathom a reason why they limited it like this, as the power comes from AC on the hub, not from USB.  Whether the hub was connected to a computer should not really dictate whether power could be supplied to the device or not. Alas, there was no cost efficient way around this.</p>
<p>So I had no choice, if I wanted to charge via any hub, I had to connect the hub to a computer.  Thankfully we did have a computer near where our iPod storage is.  Except it only has two open USB ports, not the three I needed.  Another stumbling block.  But then the thought occured to daisy chain the hubs.  In essence, the USB cable that was supposed to go to the computer for each hub would plug into one of the other hubs instead.  The last in the chain would then plug into the computer.  Basically we could connect all of the iPods to a computer with one USB cord, regardless of how many hubs we had.  And that&#8217;s what we did, as it worked perfectly:</p>
<p><img></p>
<p>One interesting feature of this is it allows us to mount all of these iPods at once, <a href="http://blogs.walkerart.org/newmedia/files/2007/06/mounted_ipods1.png">as you can see here</a>.  This actually makes adding and editing content on all of them a breeze.  So in the end, perhaps all of the troubles were a blessing.</p>
<p>Total cost for this: $60.  It may not look the prettiest, but sometimes when you&#8217;re trying to be frugal, getting something that just works is what counts.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2007/06/07/building-multiple-ipod-charger/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Social networking for hardware</title>
		<link>http://blogs.walkerart.org/newmedia/2006/10/10/social-networking-for-hardware/</link>
		<comments>http://blogs.walkerart.org/newmedia/2006/10/10/social-networking-for-hardware/#comments</comments>
		<pubDate>Tue, 10 Oct 2006 14:49:12 +0000</pubDate>
		<dc:creator>Justin Heideman</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=247</guid>
		<description><![CDATA[We Make Money Not Art has an interview with Burak Arikan up, who is the lead developer of OpenIO and Pinkie. Prior to reading the interview, I had no idea what either were, but they sound very cool, like most things that come out of the Media Lab:

Pinkie is a network based electronics prototyping board. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.we-make-money-not-art.com/">We Make Money Not Art</a> has <a href="http://www.we-make-money-not-art.com/archives/009014.php">an interview</a> with Burak Arikan up, who is the lead developer of <a href="http://openio.org/">OpenIO</a> and Pinkie. Prior to reading the interview, I had no idea what either were, but they sound very cool, like most things that come out of the <a href="http://www.media.mit.edu/">Media Lab</a>:</p>
<blockquote>
<p>Pinkie is a network based electronics prototyping board. Pinkie has been designed to easily compose sensors and actuators that reside in different locations. Pinkies are inherently invisible, they hide behind the structures and only serve as facilitators to interface the physical world to the digital network.</p>
<p>Open I/O works like a peer-to-peer file sharing program, rather then sharing media files in your PC, you share data sensed from your physical environment. While Pinkies are organizing the low-level information (e.g., sensing the world), Open I/O is for higher concepts such as managing distributed devices, collaboration, and social networking.</p>
</blockquote>
<p>This sounds to be a very interesting project. It seems like the floodgates are starting to open on <a href="http://eroktronix.com/">small</a> <a href="http://wiring.org.co/ioboard/index.html">hardware</a> <a href="http://makezine.com/controller/">devices</a> that are <a href="http://www.arduino.cc/">open</a> and <a href="http://wiring.org.co/">easily programmable</a>. Since there are so many of these devices, it seems only natural that they need social networking.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2006/10/10/social-networking-for-hardware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Not all roses</title>
		<link>http://blogs.walkerart.org/newmedia/2006/06/12/not-all-roses/</link>
		<comments>http://blogs.walkerart.org/newmedia/2006/06/12/not-all-roses/#comments</comments>
		<pubDate>Mon, 12 Jun 2006 19:29:50 +0000</pubDate>
		<dc:creator>Nate Solas</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=210</guid>
		<description><![CDATA[[Now that our main blogger is leaving, we've got to start picking up the slack and posting.  I promise eventually to not just post about hardware and software bugs, but today that's what I've got...]
Porter continues to be a rockstar hardware-wise, but I&#8217;ve been having some trouble with the proxy/caching webserver running on it. [...]]]></description>
			<content:encoded><![CDATA[<p><em>[Now that our <a href="http://blogs.walkerart.org/newmedia/?p=208">main blogger is leaving</a>, we've got to start picking up the slack and posting.  I promise eventually to not just post about hardware and software bugs, but today that's what I've got...]</em></p>
<p>Porter continues to be a rockstar hardware-wise, but I&#8217;ve been having some trouble with the proxy/caching webserver running on it.  Sure, it&#8217;s caching, but every so often it would grab a version of page and decide to keep it for 3 days instead of the directed 1 hour.  At first I thought it was a one-time deal from switching some cache settings on the server, but it kept happening&#8230;  Walker staff would make a change to some content, wait, but it would never show up on the live page.  Trouble.</p>
<p>The problem was caused by a line stored in the cached HTTP header: Cache-Control: max-age=259200.  (that&#8217;s three days worth of seconds)  (I&#8217;m including details so google can pick this up and hopefully save some poor guy a frustrating morning.)  After some serious digging it appears the mod_cache module we&#8217;re using was taking whatever Cache-Control header was being sent by the <em>browser</em> and saving it in the cached header!  In other words, I had configured the server to cache things for a maximum of 1 hour, but all it took to blow that up was a browser (or spider?) sending a request saying it didn&#8217;t want anything older than 3 days.  Our caching server held on to that &#8220;3-days&#8221; part and decided the whole page should be valid for that long.  Totally.  Wrong.</p>
<p>I debated making changes to the mod_cache source and recompiling, but I finally found an easier answer: &#8220;<code>CacheIgnoreHeaders Cache-Control"</code>.  This tells the caching module to ignore the problem lines, and it seems to be golden.  I&#8217;ll let it run for a while and see&#8230;</p>
<p>[<em>In further bad news, the US got creamed 3-0 by the Czech Republic in their World Cup opener.  Not unexpected, but it doesn't bode well for getting past group play...]</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2006/06/12/not-all-roses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing Porter</title>
		<link>http://blogs.walkerart.org/newmedia/2006/06/09/announcing-porter/</link>
		<comments>http://blogs.walkerart.org/newmedia/2006/06/09/announcing-porter/#comments</comments>
		<pubDate>Fri, 09 Jun 2006 14:39:53 +0000</pubDate>
		<dc:creator>Nate Solas</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=209</guid>
		<description><![CDATA[I would like to be the first to publicly welcome &#8220;Porter&#8221; to the Walker&#8217;s family of webservers!  Porter was, to be honest, long overdue &#8211; and to continue the awkward metaphor, it was a difficult birth.  Maybe next time a C-Section.  (ok, I&#8217;m done.)
The problem was obvious to anyone who&#8217;d used our [...]]]></description>
			<content:encoded><![CDATA[<p>I would like to be the first to publicly welcome &#8220;Porter&#8221; to the Walker&#8217;s family of webservers!  Porter was, to be honest, long overdue &#8211; and to continue the awkward metaphor, it was a difficult birth.  Maybe next time a C-Section.  (ok, I&#8217;m done.)</p>
<p>The problem was obvious to anyone who&#8217;d used our website for any significant amount of time in the last year or two: as our technology on the backend increased, as new features and sites were added, the existing server was crawling to a slow and painful death.  Frequent reboots (reboots!  On Linux!  The horror!) were required, and working in the CMS admin system was nearly intolerable.   You could literally go get a drink of water while loading certain pages.</p>
<p>The solution was equally obvious:  upgrade!  But the execution proved quite labor-intensive &#8211; lots of tightly integrated bits and pieces that had to be unravelled carefully and put back together to create a semblance of a whole.  <a href="http://collections.walkerart.org/item/object/1015">Really</a>.</p>
<p>My goal was to transition to the new server without any noticeable downtime, and it went as well as I could have hoped.  There were some tense moments at the end &#8211; there&#8217;s really nothing like the feeling of pulling the plug (metaphorically) on an entire institution&#8217;s website and crossing your fingers you didn&#8217;t miss something when the new one comes up.  Then a big sigh of relief when you realize of course you did, but it&#8217;s pretty minor, and wow!  Look how much faster it runs!</p>
<p>So, welcome, <a href="http://www.bjcp.org/styles04/Category12.html">Porter</a>!  You make your daddy proud.  (ok, <em>now</em> I&#8217;m done.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2006/06/09/announcing-porter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New Servers!</title>
		<link>http://blogs.walkerart.org/newmedia/2005/11/29/new-servers/</link>
		<comments>http://blogs.walkerart.org/newmedia/2005/11/29/new-servers/#comments</comments>
		<pubDate>Tue, 29 Nov 2005 16:07:50 +0000</pubDate>
		<dc:creator>Nate Solas</dc:creator>
				<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=102</guid>
		<description><![CDATA[Good news in New Media &#8211; two new web servers arrived yesterday.  This will provide a much-needed upgrade to a few of our sites and hopefully give us some room to grow.  We can finally separate a few things that should never have been running on the same machine, and merge some things [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.walkerart.org/newmedia/wp-content/newmedia/servers.jpg" title="New Servers"><img src="http://blogs.walkerart.org/newmedia/wp-content/newmedia/thumb-servers.jpg" alt="New Servers" width="150" height="200"></a>Good news in New Media &#8211; two new web servers arrived yesterday.  This will provide a much-needed upgrade to a few of our sites and hopefully give us some room to grow.  We can finally separate a few things that should never have been running on the same machine, and merge some things that should.</p>
<p>Of course, I say that like it&#8217;s going to be easy &#8211; I&#8217;m actually a bit nervous about the whole thing, it&#8217;s a lot of custom code and applications to port, not to mention our whole staging/production process.  So I&#8217;ve got my work cut out for me, but it will be worth it in the end.  Keep your fingers crossed!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2005/11/29/new-servers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
