<?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; Justin Heideman</title>
	<atom:link href="http://blogs.walkerart.org/newmedia/author/justin/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>Building the Walker&#8217;s mobile site, part 2 &#8212; google analytics without javascript</title>
		<link>http://blogs.walkerart.org/newmedia/2009/11/12/building-walkers-mobile-site-google-analytics-without-javascript-pt2/</link>
		<comments>http://blogs.walkerart.org/newmedia/2009/11/12/building-walkers-mobile-site-google-analytics-without-javascript-pt2/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 20:27:13 +0000</pubDate>
		<dc:creator>Justin Heideman</dc:creator>
				<category><![CDATA[Mobile Devices]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=991</guid>
		<description><![CDATA[As I mentioned in my last post on our mobile site, one of the key features for our site was making sure that we don&#8217;t use any javascript unless absolutely necessary. If you use Google Analytics  (GA) as your stats package, this poses a problem, since the supported way to run GA is via a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.walkerart.org/newmedia/files/2009/11/ga_mobile.jpg"><img class="alignright size-medium wp-image-1030" src="http://blogs.walkerart.org/newmedia/files/2009/11/ga_mobile-450x438.jpg" alt="ga_mobile" width="315" height="307" /></a>As I mentioned in my last post on our mobile site, one of the key features for our site was making sure that we don&#8217;t use any javascript unless absolutely necessary. If you use Google Analytics  (GA) as your stats package, this poses a problem, since the supported way to run GA is via a chunk of javascript at the bottom of every page. And to make matters worse, the ga.js file is not gzipped, so you&#8217;re loading 9K which would otherwise be about 4k, on a platform where every byte counts. By contrast, if you could just serve the tracking gif, it is 47 bytes. And no javascript that might not run on B-grade or below devices.</p>
<p>A few weeks ago, Google announced <a href="http://analytics.blogspot.com/2009/10/google-analytics-now-more-powerful.html">support for analytics inside mobile apps and some cursory support for mobile sites</a>:</p>
<blockquote><p>Google Analytics now tracks mobile websites and mobile apps so you can better measure your mobile marketing efforts. If you&#8217;re optimizing content for mobile users and have created a mobile website, Google Analytics can track traffic to your mobile website from all web-enabled devices, whether or not the device runs JavaScript. This is made possible by adding a server side code snippet to your mobile website which will become available to all accounts in the coming weeks (<a href="http://www.google.com/analytics/googleanalyticsformobile.zip">download snippet instructions</a>). We will be supporting PHP, Perl, JSP and ASPX sites in this release. Of course, you can still track visits to your regular website coming from high-end, Javascript enabled phones.</p></blockquote>
<p>And that is the extent of the documentation you will find anywhere on Google on how to run analytics without javascript. The code included is handy if you happen to run one of their platforms, but the <a href="http://m.walkerart.org">Walker&#8217;s mobile site</a> runs on the python side of AppEngine, so their code doesn&#8217;t do us much good. Thankfully, since they provide us with the source, we can without too much trouble, translate the php or perl into python and make it AppEngine friendly.</p>
<h5>How it works</h5>
<p>Regular Google Analytics works by serving some javascript and a small 1px x 1px gif file to your site from Google. The gif lets Google learn many things from the HTTP request your browser makes, such as your browser, OS, where you came from, your rough geo location, etc. The javascript lets them learn all kinds of nifty things about your screen, flash versions, event that fire, etc. And Google tracks you through a site by setting some cookies on that gif they serve you.</p>
<p>To use GA without javascript, we can still do most of that, and we do it by generating our own gif file and passing some information back to Google through our server. That is, we generate a gif, assign and track our own cookie, and then gather that information as you move through the site, and use a HTTP request with the appropriate query strings and pass it back to Google, which they then compile and treat as regular old analytics.</p>
<h5>The Code</h5>
<p>To make this work in appeinge, we create a  URL in our webapp that we&#8217;ll serve the gif from. I&#8217;m using &#8220;/ga/&#8221;:</p>
<pre class="brush: python;">
def main():
application = webapp.WSGIApplication(
[('/', home.MainHandler),
# edited out extra lines here
('/ga/', ga.GaHandler),
],
debug=False)
wsgiref.handlers.CGIHandler().run(application)
</pre>
<p>And here&#8217;s the big handler for /ga/. I based it mostly off the php and some of the perl (click to expand the full code):</p>
<pre class="brush: python; collapse: true; light: false; toolbar: true;">
from google.appengine.ext import webapp
from google.appengine.api import urlfetch
import re, hashlib, random, time, datetime, cgi, urllib, uuid

# google analytics stuff
VERSION = &quot;4.4sh&quot;
COOKIE_NAME = &quot;__utmmobile&quot;

# The path the cookie will be available to, edit this to use a different cookie path.
COOKIE_PATH = &quot;/&quot;

# Two years in seconds.
COOKIE_USER_PERSISTENCE = 63072000

GIF_DATA = [
      chr(0x47), chr(0x49), chr(0x46), chr(0x38), chr(0x39), chr(0x61),
      chr(0x01), chr(0x00), chr(0x01), chr(0x00), chr(0x80), chr(0xff),
      chr(0x00), chr(0xff), chr(0xff), chr(0xff), chr(0x00), chr(0x00),
      chr(0x00), chr(0x2c), chr(0x00), chr(0x00), chr(0x00), chr(0x00),
      chr(0x01), chr(0x00), chr(0x01), chr(0x00), chr(0x00), chr(0x02),
      chr(0x02), chr(0x44), chr(0x01), chr(0x00), chr(0x3b)
  ]

class GaHandler(webapp.RequestHandler):
	def getIP(self,remoteAddress):
	  	if remoteAddress == '' or remoteAddress == None:
			return ''

		#Capture the first three octects of the IP address and replace the forth
		#with 0, e.g. 124.455.3.123 becomes 124.455.3.0
		res = re.findall(r'\d+\.\d+\.\d+\.', remoteAddress)
		if res:
			return res[0] + &quot;0&quot;
		else:
			return &quot;&quot;

	def getVisitorId(self, guid, account, userAgent, cookie):
		#If there is a value in the cookie, don't change it.
		if type(cookie).__name__ != 'NoneType': # or len(cookie)!=0:
			return cookie

		message = &quot;&quot;

		if type(guid).__name__ != 'NoneType': # or len(guid)!=0:
			#Create the visitor id using the guid.
			message = guid + account
		else:
			#otherwise this is a new user, create a new random id.
			message = userAgent + uuid.uuid1(self.getRandomNumber()).__str__()

		m = hashlib.md5()
		m.update(message)
		md5String = m.hexdigest()

		return str(&quot;0x&quot; + md5String[0:16])

	def getRandomNumber(self):
		return random.randrange(0, 0x7fffffff)

	def sendRequestToGoogleAnalytics(self,utmUrl):
		'''
		Make a tracking request to Google Analytics from this server.
		Copies the headers from the original request to the new one.
		If request containg utmdebug parameter, exceptions encountered
		communicating with Google Analytics are thown.
		'''
		headers = {
			&quot;user_agent&quot;: self.request.headers.get('user_agent'),
			&quot;Accepts-Language&quot;: self.request.headers.get('http_accept_language'),
			}
		if len(self.request.get(&quot;utmdebug&quot;))!=0:
			data = urlfetch.fetch(utmUrl, headers=headers)
		else:
			try:
				data = urlfetch.fetch(utmUrl, headers=headers)
			except:
				pass

	def get(self):
		'''
		Track a page view, updates all the cookies and campaign tracker,
		makes a server side request to Google Analytics and writes the transparent
		gif byte data to the response.
		'''
	  	timeStamp = time.time()

		domainName = self.request.headers.get('host')
		domainName = domainName.partition(':')[0]

		if len(domainName) == 0:
			domainName = &quot;m.walkerart.org&quot;;

		#Get the referrer from the utmr parameter, this is the referrer to the
		#page that contains the tracking pixel, not the referrer for tracking
		#pixel.
		documentReferer = self.request.get(&quot;utmr&quot;)

		if len(documentReferer) == 0 or documentReferer != &quot;0&quot;:
			documentReferer = &quot;-&quot;
		else:
			documentReferer = urllib.unquote_plus(documentReferer)

		documentPath = self.request.get(&quot;utmp&quot;)
		if len(documentPath)==0:
			documentPath = &quot;&quot;
		else:
			documentPath = urllib.unquote_plus(documentPath)

		account = self.request.get(&quot;utmac&quot;)
		userAgent = self.request.headers.get(&quot;user_agent&quot;)
		if len(userAgent)==0:
			userAgent = &quot;&quot;

		#Try and get visitor cookie from the request.
		cookie = self.request.cookies.get(COOKIE_NAME)

		visitorId = str(self.getVisitorId(self.request.headers.get(&quot;HTTP_X_DCMGUID&quot;), account, userAgent, cookie))

		#Always try and add the cookie to the response.
		d = datetime.datetime.fromtimestamp(timeStamp + COOKIE_USER_PERSISTENCE)
		expireDate = d.strftime('%a,%d-%b-%Y %H:%M:%S GMT')

		self.response.headers.add_header('Set-Cookie', COOKIE_NAME+'='+visitorId +'; path='+COOKIE_PATH+'; expires='+expireDate+';' )
	  	utmGifLocation = &quot;http://www.google-analytics.com/__utm.gif&quot;

		myIP = self.getIP(self.request.remote_addr)

		#Construct the gif hit url.
		utmUrl = utmGifLocation + &quot;?&quot; + &quot;utmwv=&quot; + VERSION  + \
			&quot;&amp;utmn=&quot; + str(self.getRandomNumber()) + \
			&quot;&amp;utmhn=&quot; + urllib.pathname2url(domainName) + \
			&quot;&amp;utmr=&quot; + urllib.pathname2url(documentReferer) + \
			&quot;&amp;utmp=&quot; + urllib.pathname2url(documentPath) + \
			&quot;&amp;utmac=&quot; + account + \
			&quot;&amp;utmcc=__utma%3D999.999.999.999.999.1%3B&quot; + \
			&quot;&amp;utmvid=&quot; + str(visitorId) + \
			&quot;&amp;utmip=&quot; + str(myIP)

		# we dont send requests when we're developing
		if domainName != 'localhost':
			self.sendRequestToGoogleAnalytics(utmUrl)

		#If the debug parameter is on, add a header to the response that contains
		#the url that was used to contact Google Analytics.
		if len(self.request.get(&quot;utmdebug&quot;)) != 0:
			self.response.headers.add_header(&quot;X-GA-MOBILE-URL&quot; , utmUrl)

	  	#Finally write the gif data to the response.
		self.response.headers.add_header('Content-Type', 'image/gif' )
		self.response.headers.add_header('Cache-Control', 'private, no-cache, no-cache=Set-Cookie, proxy-revalidate' )
		self.response.headers.add_header('Pragma', 'no-cache' )
		self.response.headers.add_header('Expires', 'Wed, 17 Sep 1975 21:32:10 GMT' )
		self.response.out.write(''.join(GIF_DATA))
</pre>
<p>So now we know what to do with our requests at /ga/ when we get them, we just need to make the proper requests to that URL in the first place. So we need to generate the URL we&#8217;re going to have the visitor&#8217;s browser request in the first place. With normal django, we would be able to use template_context to automatically insert it into the page&#8217;s template values. But, since AppEngine doesn&#8217;t use that, we have our own helper functions to do that, which I showed some of in my last post. Here&#8217;s the updated helper functions, with the GoogleAnalyticsGetImageUrl function included:</p>
<pre class="brush: python;">
import settings

def googleAnalyticsGetImageUrl(request):
	url = &quot;&quot;
	url += '/ga/' + &quot;?&quot;
	url += &quot;utmac=&quot; + settings.GA_ACCOUNT
	url += &quot;&amp;utmn=&quot; + str(random.randrange(0, 0x7fffffff))

	referer = request.referrer
	query = urllib.urlencode(request.GET) #$_SERVER[&quot;QUERY_STRING&quot;];
	path = request.path #$_SERVER[&quot;REQUEST_URI&quot;];

	if len(referer) == 0:
		referer = &quot;-&quot;

	url += &quot;&amp;utmr=&quot; + urllib.pathname2url(referer)

	if len(path)!=0:
		url += &quot;&amp;utmp=&quot; + urllib.pathname2url(path)

	url += &quot;&amp;guid=ON&quot;;

	return {'gaImgUrl':url}

def getTempalteValues(request):
	myDict = {}
	myDict.update(ua_test(request))
	myDict.update(googleAnalyticsGetImageUrl(request))
	return myDict
</pre>
<p>Assuming we use getTemplateValues to set up our inital template_values dict, we should have a variable named &#8216;gaImgUrl&#8217; in our page. To use it, all we need to do is put this at the bottom of every page on the site:</p>
<pre class="brush: xml;">
&lt;img src=&quot;{{ gaImgUrl }}&quot; alt=&quot;analytics&quot; /&gt;
</pre>
<p>My <code>settings</code> file contains  the GA_ACCOUNT variable, but replaces the standard GA-XXXXXX-X setup with MO-XXXXXX-X. I&#8217;m assuming the MO- tells google that it&#8217;s a mobile so accept the proxied requests.</p>
<p>One thing to keep in mind with this technique is that you cannot cache your rendered templates. The image you server will necessarily have a different query string every time, and if you cached it, you would ruin your analytics. Instead, you should cache nearly everything from your view functions, except the gaImgUrl variable.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2009/11/12/building-walkers-mobile-site-google-analytics-without-javascript-pt2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Media kills in the Walker&#8217;s pumpkin carving contest</title>
		<link>http://blogs.walkerart.org/newmedia/2009/11/11/new-media-kills-in-the-walkers-pumpkin-carving-contest/</link>
		<comments>http://blogs.walkerart.org/newmedia/2009/11/11/new-media-kills-in-the-walkers-pumpkin-carving-contest/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 21:56:36 +0000</pubDate>
		<dc:creator>Justin Heideman</dc:creator>
				<category><![CDATA[NMI Today]]></category>
		<category><![CDATA[New Media Art]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=1003</guid>
		<description><![CDATA[Every year, the Walker has a staff halloween party, which includes a departmental pumpkin carving contest. And this isn&#8217;t just a carve a grocery store pumpkin contest, it&#8217;s a creative, conceptual, re-imagine an artist or artwork pumpkin contest. Invariably, our carpentry shop and registration departments usually blow everyone else out of the water. Those of [...]]]></description>
			<content:encoded><![CDATA[<p>Every year, the Walker has a staff halloween party, which includes a departmental pumpkin carving contest. And this isn&#8217;t just a carve a grocery store pumpkin contest, it&#8217;s a creative, conceptual, re-imagine an artist or artwork pumpkin contest. Invariably, our carpentry shop and registration departments usually blow everyone else out of the water. Those of us that are a little less hands-on with the art work tend to be outclassed every year (exhibits <a href="http://blogs.walkerart.org/offcenter/2005/10/24/the-conceptual-art-of-pumpkin-carving/">1</a>, <a href="http://blogs.walkerart.org/offcenter/2005/11/10/vol-ii-the-conceptual-art-of-pumpkin-carving/">2</a>, and <a href="http://blogs.walkerart.org/offcenter/2006/10/31/the-conceptual-art-of-pumpkin-carving-vol-iii/">3</a>). New Media Initiatives never wins.</p>
<p><strong>But not this year.</strong></p>
<p><em>This year, we had a plan. </em></p>
<p>Actually, we came up with the plan after our no-show defeat last year, but we smartly held onto it for this year (thank you, iCal). On the day of the contest, we replaced every image of artwork on the Walker website with an image of a pumpkin.</p>
<p><a href="http://blogs.walkerart.org/newmedia/files/2009/11/Walker-Art-Center-20091102.png"><img src="http://blogs.walkerart.org/newmedia/files/2009/11/pumpkin_wac_home.jpg" alt="walker homepage with pumpkins" /></a></p>
<p>And the rest of the pages (click to embiggen):</p>
<div id="attachment_1005" class="wp-caption alignleft" style="width: 160px"><a href="http://blogs.walkerart.org/newmedia/files/2009/11/Walker-Art-Center-Calendar-20091102.png"><img class="size-thumbnail wp-image-1005" src="http://blogs.walkerart.org/newmedia/files/2009/11/Walker-Art-Center-Calendar-20091102-150x150.png" alt="Calendar" width="150" height="150" /></a><p class="wp-caption-text">Calendar</p></div>
<div id="attachment_1008" class="wp-caption alignleft" style="width: 160px"><a href="http://blogs.walkerart.org/newmedia/files/2009/11/Collections-and-Resources-20091102.png"><img class="size-thumbnail wp-image-1008" src="http://blogs.walkerart.org/newmedia/files/2009/11/Collections-and-Resources-20091102-150x150.png" alt="Collections and Resources" width="150" height="150" /></a><p class="wp-caption-text">Collections and Resources</p></div>
<div id="attachment_1007" class="wp-caption alignleft" style="width: 160px"><a href="http://blogs.walkerart.org/newmedia/files/2009/11/Walker-Art-Center-Artists-in-Residence-20091102.png"><img class="size-thumbnail wp-image-1007" src="http://blogs.walkerart.org/newmedia/files/2009/11/Walker-Art-Center-Artists-in-Residence-20091102-150x150.png" alt="Artists-in-Residence" width="150" height="150" /></a><p class="wp-caption-text">Artists-in-Residence</p></div>
<div id="attachment_1011" class="wp-caption alignleft" style="width: 160px"><a href="http://blogs.walkerart.org/newmedia/files/2009/11/Walker-Art-Center-Visual-Arts-20091102.png"><img class="size-thumbnail wp-image-1011" src="http://blogs.walkerart.org/newmedia/files/2009/11/Walker-Art-Center-Visual-Arts-20091102-150x150.png" alt="Visual Arts" width="150" height="150" /></a><p class="wp-caption-text">Visual Arts</p></div>
<div id="attachment_1009" class="wp-caption alignleft" style="width: 160px"><a href="http://blogs.walkerart.org/newmedia/files/2009/11/Design-»-The-Quick-and-the-Dead-20091102.png"><img class="size-thumbnail wp-image-1009" src="http://blogs.walkerart.org/newmedia/files/2009/11/Design-»-The-Quick-and-the-Dead-20091102-150x150.png" alt="Design Blog" width="150" height="150" /></a><p class="wp-caption-text">Design Blog</p></div>
<p><br class="clear" /><br />
We ended up winning in the &#8220;Funniest Pumpkin&#8221; category. </p>
<p>Because we serve all of our media from a single server using lighttpd, and our files are all uniformly named, we were able to implement a simple rule set in lighty to replace the images. Instead of the requested file, each image was re-directed to a simple perl script that would grab a random jpg from our pool of pumpkin images, and send it&#8217;s contents instead. Part of the plan was that we would only serve these images to people visiting our site from inside our internal network. The rest of the world would see our website just as always. In our department, we all unplugged our ethernet cables and ran off of our firewall&#8217;d WiFi, which effectively put us outside the network, seeing nothing different on the site. We had a hard time holding back evil cackles as people came to us wondering how our site was hacked, and watching it slowly dawn on them that this was our pumpkin.</p>
<p>The images we used were all the <a href="http://www.flickr.com/search/?q=pumpkin&amp;l=cc&amp;ss=2&amp;ct=6&amp;mt=all&amp;w=all&amp;adv=1">creative commons licensed flickr images of pumpkins</a> I could find. There were 54 of them. Here they are, for credit:</p>
<ul>
<li><a title="Pumpkin on Flickr - Photo Sharing!" href="http://www.flickr.com/photos/itspaulkelly/2974473528/">Pumpkin</a></li>
<li><a title="My Geek-o-Lantern. on Flickr - Photo Sharing!" href="http://www.flickr.com/photos/42091646@N00/2976282481">My Geek-o-Lantern.</a></li>
<li><a title="Pumpkins! on Flickr - Photo Sharing!" href="http://www.flickr.com/photos/julishannon/1464530443/">Pumpkins!</a></li>
<li><a title="mini pumpkins on Flickr - Photo Sharing!" href="http://www.flickr.com/photos/39242181@N00/113481892/">mini pumpkins</a></li>
<li><a title="My favorite season on Flickr - Photo Sharing!" href="http://www.flickr.com/photos/jimnix/4002507779/">My favorite season</a></li>
<li><a title="Tux Pumpkin! on Flickr - Photo Sharing!" href="http://www.flickr.com/photos/chemist/1811471244/">Tux Pumpkin!</a></li>
<li><a title="Thanksgiving, Orcas Island on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1816575">Thanksgiving, Orcas Island</a></li>
<li><a title="the last pumpkins on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=58804931">the last pumpkins</a></li>
<li><a title="candy pumpkins on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=55260249">candy pumpkins</a></li>
<li><a title="Jack O'Lanterns on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1564502415">Jack O&#8217;Lanterns</a></li>
<li><a title="Dreams of Mellowcreme on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=48845241">Dreams of Mellowcreme</a></li>
<li><a title="R.I.P. Punky on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1699672044">R.I.P. Punky</a></li>
<li><a title="Inside the Amber Pieces of Cloth Time on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1768916332">Inside the Amber Pieces of Cloth Time</a></li>
<li><a title="Pumpkin Trio on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=3882211541">Pumpkin Trio on Flickr</a></li>
<li><a title="Cannibal Pumpkin - Halloween 2007 on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1792803096">Cannibal Pumpkin</a></li>
<li><a title="Pumpkin Avalanche - With a Recipe! on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=3963035133">Pumpkin Avalanche</a></li>
<li><a title="Day 320 - Pumpkin Porn on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1489046267">Day 320</a> One of my favorites</li>
<li><a title="IMG_0589 on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1811000238">IMG_0589</a></li>
<li><a title="halloween bokeh on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=2941787498">halloween bokeh</a></li>
<li><a title="Spooky on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1812682954">Spooky</a></li>
<li><a title="pumpkin rows.jpg on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=256206366">pumpkin rows.jpg</a></li>
<li><a title="My front steps on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1874673828">My front steps</a></li>
<li><a title="Halloween 2006 on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=284521375">Halloween 2006</a></li>
<li><a title="Halloween 2005 on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=58268972">Halloween 2005</a></li>
<li><a title="Fall on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1442846663">Fall</a></li>
<li><a title="pumpkin twins on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=284058024">pumpkin twins</a></li>
<li><a title="fructele toamnei on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=4037884392">fructele toamnei</a></li>
<li><a title="Pumpkin Harvest on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=2967467487">Pumpkin Harvest</a></li>
<li><a title="small pie pumpkin on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=2971439925">small pie pumpkin</a></li>
<li><a title="Pumpkins - Space Invader on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1027786">Pumpkins &#8211; Space Invader</a></li>
<li><a title="You smiling at me on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=4028382825">You smiling at me</a></li>
<li><a title="after the storm on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=67933417">after the storm</a></li>
<li><a title="You Must Be Daddy's Little Pumpkin I Can Tell by the Way You Roll on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=45560282">You Must Be Daddy&#8217;s Little Pumpkin I Can Tell by the Way You Roll</a></li>
<li><a title="Mini citrouilles / Mini Pumpkins on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=245095819">Mini citrouilles / Mini Pumpkins</a></li>
<li><a title="Jack on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=284957537">Jack</a></li>
<li><a title="Duaflex: Pumpkin Patch on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=271814820">Duaflex: Pumpkin Patch</a></li>
<li><a title="'WELCOME GREAT PUMPKIN' on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1411179536">&#8216;WELCOME GREAT PUMPKIN&#8217;</a></li>
<li><a title="pumpkin lit on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=284057663">pumpkin lit</a></li>
<li><a title="Don't overdo it this Halloween on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=2980602687">Don&#8217;t overdo it this Halloween</a></li>
<li><a title="Smiler glow on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=59562000">Smiler glow</a></li>
<li><a title="Hypnotised pumpkin on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=2963800977">Hypnotised pumpkin</a></li>
<li><a title="sad pumpkins on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1576740677">sad pumpkins</a></li>
<li><a title="Red Eye on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=274464845">Red Eye</a></li>
<li><a title="winking pumpkin on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1801258448">winking pumpkin</a></li>
<li><a title="Black Cat Pumpkin on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=273212143">Black Cat Pumpkin</a></li>
<li><a title="Take me to your....tricks and treats! on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=284955421">Take me to your&#8230;.tricks and treats!</a></li>
<li><a title="Which one? on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=253320625">Which one?</a></li>
<li><a title="Pumpkins and Gourds Everywhere! on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1620036155">Pumpkins and Gourds Everywhere!</a></li>
<li><a title="smiley pumpkin on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1659129551">smiley pumpkin</a></li>
<li><a title="Spongebob Pumpkin Pants on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1466029546">Spongebob Pumpkin Pants</a></li>
<li><a title="Silk Garden Lite Socks on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1578821929">Silk Garden Lite Socks</a></li>
<li><a title="i like how cute the tiny pumpkin is on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1662803326">i like how cute the tiny pumpkin is</a></li>
<li><a title="Happy Halloween From Sunny New Jersey! on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=53570647">Happy Halloween From Sunny New Jersey!</a></li>
<li><a title="patch o' pumpkins on Flickr - Photo Sharing!" href="http://flickr.com/photo.gne?id=1723126935">patch o&#8217; pumpkins</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2009/11/11/new-media-kills-in-the-walkers-pumpkin-carving-contest/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Building the Walker&#8217;s mobile website with Google AppEngine, part 1</title>
		<link>http://blogs.walkerart.org/newmedia/2009/11/09/building-the-walkers-mobile-website-with-google-appengine-part-1/</link>
		<comments>http://blogs.walkerart.org/newmedia/2009/11/09/building-the-walkers-mobile-website-with-google-appengine-part-1/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 23:26:18 +0000</pubDate>
		<dc:creator>Justin Heideman</dc:creator>
				<category><![CDATA[Mobile Devices]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=956</guid>
		<description><![CDATA[Over the summer, our department made a small but significant policy change. We decided to take a cue from Google&#8217;s 20% time philosophy and spend one day a week working on a Walker-related project of our choosing. Essentially, we wanted to embark on quicker, more nimble projects that hold more interest for our team. The [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-963" src="http://blogs.walkerart.org/newmedia/files/2009/11/mwalker-iphone-234x450.png" alt="mwalker-iphone" width="234" height="450" />Over the summer, our department made a small but significant policy change. We decided to take a cue from Google&#8217;s <a href="http://googleblog.blogspot.com/2006/05/googles-20-percent-time-in-action.html">20% time philosophy</a> and spend one day a week working on a Walker-related project of our choosing. Essentially, we wanted to embark on quicker, more nimble projects that hold more interest for our team. The project I decided to experiment with was making a <a href="http://m.walkerart.org">mobile website for the Walker, m.walkerart.org</a>.</p>
<h5>Reviewing our current site to inform the mobile site</h5>
<p>The web framework we use for most of our site has the ability, with some small changes, to load different versions of a page based on a visitor&#8217;s User Agent (what browser they&#8217;re using). This would mean we could detect if a visitor was running IE on a Desktop or Mobile Safari on an iPhone, and serve each of them two different versions of a page. This is how a lot of mobile sites are done.</p>
<p>This is not the approach we went with for our mobile site, because it violates two of the primary rules (in my mind) of making a mobile website:</p>
<ol>
<li>Make it simple.</li>
<li>Give people the stuff they&#8217;re looking for on their phones right away.</li>
</ol>
<p>Our site is complicated: we have pages for different disciplines, a calendar with years of archives, and many specialty sites. Rule #1, violated. To address #2, I took a look at our web analytics to figure out what most people come to our site looking for. This won&#8217;t surprise anyone, but it&#8217;s hours, admission, directions, and what&#8217;s happening today at the Walker:</p>
<div id="attachment_960" class="wp-caption alignnone" style="width: 344px"><img class="size-full wp-image-960" src="http://blogs.walkerart.org/newmedia/files/2009/11/topContent.jpg" alt="Top Walker Pages as noted by Google Analytics" width="334" height="296" /><p class="wp-caption-text">Top Walker Pages as noted by Google Analytics</p></div>
<p>So it seems pretty clear those things should be up front. One of the other things you might want to access on a mobile is <a href="http://newmedia.walkerart.org/aoc">Art on Call</a>. While Art on Call is designed primarily around dial-in access, there is also a website, but it isn&#8217;t optimized for the small screen of a smartphone. We have WiFi in most spaces within our building, so accessing Art on Call via an web interface and streaming audio via HTTP rather than POTS is a distinct possibility that I wanted to enable.</p>
<h5>Prototyping with Google AppEngine</h5>
<p>I decided to develop a quick prototype using <a href="http://code.google.com/appengine/">Google AppEngine</a>, thinking I&#8217;d end up using GAE in the end, too. Because this was a 20% time project, I had the freedom to do it using the technology I was interested in. AppEngine has the advantage of being something that isn&#8217;t hosted on our server, so there was no need to configure any complicated server stuff. In my mind, AppEngine is perfect for a mobile site because of the low bandwidth requirements for a mobile site. Google doesn&#8217;t provide a ton for free, but if your pages are only 20K each, you can fit quite a bit within the quotas they do give provide. AppEngine&#8217;s primary language is also python, a big plus, since python is the best programming language.</p>
<p>In about two days I built a proof of concept mobile site that displayed the big-ticket pages (hours, admission,etc.) and had a simple interface for Art on Call. Using <a href="http://code.google.com/p/iui/">iUi</a> as a front-end framework was really, really useful here, because it meant that the amount of HTML/CSS/JS I had to code was super minimal, and I didn&#8217;t have to design anything.</p>
<p>I showed the prototype to <a href="http://blogs.walkerart.org/newmedia/author/robin/">Robin</a> and she enthusiastically gave me the green light to work on it full-time.</p>
<h5>Designing a mobile website</h5>
<p>A strategy I saw when looking at mobile sites was to actually have <em>two</em> mobile sites: one for the A-grade phones (iPhone, Nokia S60, Android, Pre) and one for the B- and C-grade phones (Blackberry and Windows Mobile). The main difference between the two is the use of javascript and some more advanced layout. Depending on what version of Blackberry you look at, they have a pretty lousy HTML/CSS implementation, and horrendous or no javascript support.</p>
<p>To work around this, our mobile site does not use any javascript on most pages and tries to keep the HTML/CSS pretty simple. We don&#8217;t do any fancy animations to load between pages like iUi or <a href="http://www.jqtouch.com/">jQtouch</a> do: even on an iPhone those animations are slow. If you make your pages small enough, they should load fast enough and a transition is not necessary.</p>
<p>Designing mobile pages is fun. The size and interface methods for the device force you to re-think how to people interact and what&#8217;s important. They&#8217;re also fun because they&#8217;re blissfully simple. Each page on our mobile site is usually just a headline, image, paragraph or two, and some links. Laying out and styling that content is not rocket surgery.</p>
<p>Initially, when I did my design mockups in Photoshop, I wanted to use a numpad on the site for <a href="http://newmedia.walkerart.org/aoc/">Art on Call</a>, much like the iPhone features for making a phone call. There&#8217;s no easy input for doing this, but I thought it wouldn&#8217;t be too hard to create one with a little javascript (for those that had it). Unfortunately, due to the way touchscreen phones handle click/touch events in the browser, there&#8217;s a delay between when you touch and when the click event fires in javascript. This meant that it was possible to touch/type the number much faster than the javascript events fired. No go.</p>
<p>Instead, the latest versions of WebKit provide with a HTML5 <a href="http://www.bennadel.com/blog/1721-Default-To-The-Numeric-Email-And-URL-Keyboards-On-The-iPhone.htm">input field with a type of &#8220;number&#8221;</a>. On iPhone OS 3.1 and better, it will bring up the keypad already switched to the numeric keys. It does not do this on iPhone OS prior to 3.1. I&#8217;m not sure how Android and Pre handle it.</p>
<div id="attachment_968" class="wp-caption alignleft" style="width: 254px"><img class="size-medium wp-image-968 " src="http://blogs.walkerart.org/newmedia/files/2009/11/aoc_mockup-244x450.jpg" alt="Mocked up Art on Call code input." width="244" height="450" /><p class="wp-caption-text">Mocked up Art on Call code input.</p></div>
<div id="attachment_967" class="wp-caption alignleft" style="width: 250px"><img class="size-medium wp-image-967  " src="http://blogs.walkerart.org/newmedia/files/2009/11/aoc_input_actual-300x450.jpg" alt="Implimented Art on Call code input." width="240" height="360" /><p class="wp-caption-text">Implimented Art on Call code input.</p></div>
<p><br class="clear" /></p>
<h5>Comparing smartphones</h5>
<p>Here&#8217;s a few screenshots of the site on various phones:</p>
<div id="attachment_976" class="wp-caption alignleft" style="width: 250px"><img class="size-medium wp-image-976 " src="http://blogs.walkerart.org/newmedia/files/2009/11/pre-300x450.jpg" alt="Palm Pre" width="240" height="360" /><p class="wp-caption-text">Palm Pre</p></div>
<div id="attachment_977" class="wp-caption alignleft" style="width: 250px"><img class="size-medium wp-image-977 " src="http://blogs.walkerart.org/newmedia/files/2009/11/android-300x450.jpg" alt="Android 1.5" width="240" height="360" /><p class="wp-caption-text">Android 1.5</p></div>
<div id="attachment_978" class="wp-caption alignleft" style="width: 298px"><img class="size-medium wp-image-978  " src="http://blogs.walkerart.org/newmedia/files/2009/11/bb9630-450x338.jpg" alt="Blackberry 9630" width="288" height="216" /><p class="wp-caption-text">Blackberry 9630</p></div>
<p><br class="clear" /><br />
Not pictured is Windows Mobile, because it looks really bad.</p>
<p>A future post may cover getting all of these emulators up and running, because it&#8217;s not as straight easy as it should be. Working with the blackberry emulator is especially painful.<br />
<br class="clear" /></p>
<h5>How our mobile site works</h5>
<p>The basic methodology for our mobile site is to pull the data, via either RSS or XML from our main website, parse it, cache it, and re-template it for mobile visitors. Nearly all of the pages on our site are available via XML if you know how to look. Parsing XML into usable data is a computationally expensive task, so caching is very important. Thankfully, AppEngine provides easy access to memcache, so we can memcache the XML fetches and the parsing as much as possible. Here&#8217;s our simple but effective URL parse/cache helper function:</p>
<pre class="brush: python;">
from google.appengine.api import urlfetch
from xml.dom import minidom
from google.appengine.api import memcache

def parse(url,timeout=3600):
	memKey = hash(url)
	r = memcache.get('fetch_%s' % memKey)
	if r == None:
		r = urlfetch.fetch(url)
		memcache.add(key=&quot;fetch_%s&quot; % memKey, value=r, time=timeout)
	if r.status_code == 200:
		dom = memcache.get('dom_%s' % memKey)
		if dom == None:
			dom = minidom.parseString(r.content)
			memcache.add(key=&quot;dom_%s&quot; % memKey, value=dom, time=timeout)
		return dom
	else:
		return False
</pre>
<p>Google AppEngine does not impose much of a structure for your web app. Similar to <a href="http://docs.djangoproject.com/en/dev/topics/http/urls/">Django&#8217;s urls.py</a>, you link regular expressions for URLS to class-based handlers. You can&#8217;t pass any variables beyond what&#8217;s in the URL or the <a href="http://pythonpaste.org/webob/">WebOb</a> to the request handler. Each handler will call a different method, depending if it&#8217;s a GET, POST, DELETE, http request. If you&#8217;re coming from the django world like me, this is not much of a big deal at first, but it gets tedious pretty fast. If I had it to do over again, I&#8217;d probably use <a href="http://code.google.com/p/app-engine-patch/">app-engine-patch</a> from the outset, and thus be able to use all the normal django goodies like middleware, template context, and way more configurable urls.</p>
<p>Within each handler, we also cache the generated data where possible. That is, after our get handler has run, we cache all the values that we pass to our template that won&#8217;t change over time. Here&#8217;s an example of the classes that handle the visit section of our mobile site:</p>
<pre class="brush: python;">
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.api import memcache
from xml.dom import minidom
from google.appengine.api import memcache
from utils import feeds, parse, template_context, text
import settings

class VisitDetailHandler(webapp.RequestHandler):
	def get(self):
		url = self.request.get(&quot;s&quot;) + &quot;?style=xml&quot;
		template_values = template_context.getTempalteValues(self.request)
		path = settings.TEMPLATE_DIR + 'info.html'
		memKey = hash(url)

		r = memcache.get('visit_%s' % memKey)
		if r and not settings.DEBUG:
			template_values.update(r)
			self.response.out.write(template.render(path, template_values))
		else:
			dom = parse.parse(url)
			records = dom.getElementsByTagName(&quot;record&quot;)
			contents = []
			for rec in records:
				title = text.clean_utf8(rec.getElementsByTagName('title')[0].childNodes[0].nodeValue)
				body = text.clean_utf8(rec.getElementsByTagName('body')[0].childNodes[0].nodeValue)
				contents.append({'title':title,'body':body})

			back = {'href':'/visit/#top', 'text':'Visiting'}
			cacheableTemplateValues = { &quot;contents&quot;: contents,'back':back }
			memcache.add(key='visit_%s' % memKey, value={ &quot;contents&quot;: contents,'back':back }, time=7200)
			template_values.update(cacheableTemplateValues)
			self.response.out.write(template.render(path, template_values))
</pre>
<p>Dealing with parsing XML via the standard DOM methods is a great way to test your tolerance for pain. I would use libxml and xpath, AppEngine doesn&#8217;t provide those libraries in their python environment.</p>
<p>Because the only part of Django&#8217;s template system that AppEngine uses is the template language, and nothing else, we have to roll our own helper functions for context. Meaning, if we want to pass a bunch variables by default to our templates, something easy in django, we have to do it a little differently with GAE. I set up a function called getTemplateValues, which we pass the WebOb request, and it ferrets out and organizes info we need for the templates, passing it back as a dict.</p>
<pre class="brush: python;">
def ua_test(request):
	uastring = request.headers.get('user_agent')
	uaDict = {}
	if &quot;Mobile&quot; in uastring and &quot;Safari&quot; in uastring:
		uaDict['isIphone'] = True
	if 'BlackBerry' in uastring:
		uaDict['isBlackBerry'] = True
	return uaDict

def getTempalteValues(request):
	myDict = {}
	myDict.update(ua_test(request))
	myDict.update(googleAnalyticsGetImageUrl(request))
	return myDict
</pre>
<p>In my next post, I&#8217;ll talk about how to track visitors on a mobile site using google analytics, without using javascript.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2009/11/09/building-the-walkers-mobile-website-with-google-appengine-part-1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Art(ists) on the Verge 2: Grants for new media artists in minnesota</title>
		<link>http://blogs.walkerart.org/newmedia/2009/10/16/artists-on-the-verge-2-grants-for-new-media-artists-in-minnesota/</link>
		<comments>http://blogs.walkerart.org/newmedia/2009/10/16/artists-on-the-verge-2-grants-for-new-media-artists-in-minnesota/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 16:15:37 +0000</pubDate>
		<dc:creator>Justin Heideman</dc:creator>
				<category><![CDATA[New Media Art]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=934</guid>
		<description><![CDATA[Minneapolis-based Northern Lights.mn has announced the second year of Ar(ists) on the Verge:
Northern Lights announces a second round of Art(ists) on the Verge commissions (AOV2). AOV2 is an intensive, mentor-based fellowship program for 5 Minnesota-based, emerging artists or artist groups working experimentally at the intersection of art,  technology, and digital culture with a focus on [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 229px"><img src="http://farm1.static.flickr.com/176/409214263_ac7119e827.jpg" alt="" width="219" height="329" /><p class="wp-caption-text">Photo  by k0a1a.net.</p></div>
<p>Minneapolis-based Northern Lights.mn has announced the <a href="http://northern.lights.mn/2009/10/announcing-artists-on-the-verge-2/">second year of Ar(ists) on the Verge</a>:</p>
<p style="padding-left: 30px">Northern Lights announces a second round of Art(ists) on the Verge commissions (AOV2). AOV2 is an intensive, mentor-based fellowship program for 5 Minnesota-based, emerging artists or artist groups working experimentally at the intersection of art,  technology, and digital culture with a focus on network-based practices that are interactive and/or participatory. AOV2 is generously supported by the Jerome Foundation.</p>
<p>Northern Lights was founded by former Walker New Media Curator Steve Dietz. The grants this year will be juried by Dietz, along with Kathleen Forde, Curator for Time-Based Arts at the Experimental Media and Performing Arts Center (EMPAC)  in Troy, NY, and the Walker&#8217;s chief curator, <a href="http://blogs.walkerart.org/visualarts/2009/02/02/the-walker-welcomes-chief-curator-darsie-alexander/">Darsie Alexander</a>.</p>
<p>The resulting show  show at the Weisman Art Museum from last years grantees was worth checking out. It is good to see work being done to create our own new media art structures here in Minnesota, rather than watching cool things like Eyebeam happen from afar.</p>
<p>And by the way, Northern Lights&#8217; blog, Public Address, has become one of my favorite reads for neat artwork being made around the world. I confess I find a lot of art blogs rather dry and esoteric, but not <a href="http://northern.lights.mn/publicaddress/">Public Address</a>. And, this may seem somewhat mundane and obvious, but near every post has an interesting image, which is nice for an art blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2009/10/16/artists-on-the-verge-2-grants-for-new-media-artists-in-minnesota/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Access the Walker&#8217;s website from Minneapolis Public WiFi</title>
		<link>http://blogs.walkerart.org/newmedia/2009/10/02/access-the-walkers-website-from-minneapolis-public-wifi/</link>
		<comments>http://blogs.walkerart.org/newmedia/2009/10/02/access-the-walkers-website-from-minneapolis-public-wifi/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 17:38:18 +0000</pubDate>
		<dc:creator>Justin Heideman</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[minneapolis]]></category>
		<category><![CDATA[wifi]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=924</guid>
		<description><![CDATA[If you&#8217;re visiting town and are out and about, getting info on the Walker and other cultural institutions in the city via the web just got easier. Minneapolis&#8217; city-wide wireless network now lets users access walkerart.org without being a subscriber. Here&#8217;s how it works:
On your computer, select the &#8220;City of Minneapolis Public WiFi&#8221; network.

Open your [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re visiting town and are out and about, getting info on the Walker and other cultural institutions in the city via the web just got easier. <a href="http://usiwireless.com/">Minneapolis&#8217; city-wide wireless network</a> now lets users access walkerart.org without being a subscriber. Here&#8217;s how it works:</p>
<p>On your computer, select the &#8220;City of Minneapolis Public WiFi&#8221; network.</p>
<p><img class="alignnone size-full wp-image-925" src="http://blogs.walkerart.org/newmedia/files/2009/10/select_wifi.png" alt="select_wifi" width="285" height="184" /></p>
<p>Open your browser and point yourself to <a href="http://walkerart.org">walkerart.org</a>. That should do it. You may be  directed to a user agreement log in screen and then the &#8220;walled garden&#8221; of Minneapolis city information and lists of other accessible community sites. The Walker is listed under Area Arts &amp; Culture &gt; Arts &amp; Museums &gt; Art Museums.</p>
<div id="attachment_927" class="wp-caption alignleft" style="width: 280px"><a href="http://blogs.walkerart.org/newmedia/files/2009/10/type_in_url.png"><img class="size-medium wp-image-927  " src="http://blogs.walkerart.org/newmedia/files/2009/10/type_in_url-450x338.png" alt="Wireless Log In Screen" width="270" height="203" /></a><p class="wp-caption-text">Wireless Log In Screen</p></div>
<div id="attachment_926" class="wp-caption alignleft" style="width: 280px"><a href="http://blogs.walkerart.org/newmedia/files/2009/10/go_portal.png"><img class="size-medium wp-image-926  " src="http://blogs.walkerart.org/newmedia/files/2009/10/go_portal-450x338.png" alt="Minneapolis Dowtown Area Walled Garden Portal" width="270" height="203" /></a><p class="wp-caption-text">Minneapolis Dowtown Area Walled Garden Portal</p></div>
<p><br class="clear" /></p>
<h5>A brief history of Minneapolis Municipal WiFi</h5>
<p>Several years ago, the City of Minneapolis joined with USI Wireless to build out a city-wide network. The goal was to provide access for city government and citizens. The city would be a core tenant, paying USI, and USI would sell access to citizens. The city required USI to build a community portal and USI must provide grants out of it&#8217;s profits to non-profits working to bridge the digital divide.</p>
<p>Over the last several years, the network has slowly been built out. Right now there are <a href="http://www.usiwireless.com/service/minneapolis/schedule.htm">some problem areas</a>, which include Loring Park and the <a href="http://garden.walkerart.org">Minneapolis Sculpture Garden</a>. My understanding is that these areas should see service sometime soon, though I&#8217;m not sure of any exact plans on the Sculpture Garden.</p>
<p>There are a couple things I have really liked about the network:</p>
<ul>
<li><strong>We&#8217;re doing it.</strong> A lot of cities have talked about building municipal wifi, and then discover large problems and things don&#8217;t work well. There have been some issues with in Minneapolis, it is taking longer to build the network than originally thought, but my impression is that it has worked fairly well.</li>
<li><strong>It&#8217;s network neutral.</strong> The agreement between the city and USI specifically requires USI to not hinder any type of traffic over another.</li>
<li><strong>Parts of it are free.</strong> This is how you can get to our site for free.</li>
<li><strong>It&#8217;s low cost.</strong> The cost for being a subscriber is pretty low, compared to other wire-based providers.</li>
<li><strong>It&#8217;s local.</strong> USI is a local company.</li>
</ul>
<p>For more information on the network and the history, <a href="http://www.pfhyper.com/blog">Peter Fleck has been blogging about Minneapolis WiFi</a> for some time.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2009/10/02/access-the-walkers-website-from-minneapolis-public-wifi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web and video standards roundup</title>
		<link>http://blogs.walkerart.org/newmedia/2009/09/17/web-and-video-standards-roundup/</link>
		<comments>http://blogs.walkerart.org/newmedia/2009/09/17/web-and-video-standards-roundup/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 19:47:32 +0000</pubDate>
		<dc:creator>Justin Heideman</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=886</guid>
		<description><![CDATA[   

Eric at Adapted Studio put together this sweet little demo of HTML5 and Canvas in action, in the form of the Game of life. Source code is included, too, if you want to learn a few nifty things.
Color me surprised, but Microsoft is actually purporting to work together on at least some [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adaptedstudio.com/weblog/2009/sep/14/life-fun/"><img class="alignnone size-thumbnail wp-image-11" src="http://blogs.walkerart.org/files/2009/09/life2-150x150.gif" alt="life2" width="120" height="120" /></a> <a href="http://arstechnica.com/microsoft/news/2009/09/ie-program-manager-endorses-html-5-multimedia-tags.ars"><img class="alignnone size-thumbnail wp-image-10" src="http://blogs.walkerart.org/files/2009/09/513636061_98d07f7966-150x150.jpg" alt="html5 " width="120" height="120" /></a> <a href="http://ejohn.org/apps/learn/"><img class="alignnone size-thumbnail wp-image-12" src="http://blogs.walkerart.org/files/2009/09/Screen-shot-2009-09-17-at-2.35.28-PM-150x150.png" alt="learning advanced javascript" width="120" height="120" /></a> <a href="http://diveintomark.org/archives/2009/01/08/give-slides"><img class="alignnone size-thumbnail wp-image-13" src="http://blogs.walkerart.org/files/2009/09/Screen-shot-2009-09-17-at-2.36.06-PM-150x150.png" alt="audio codec wtf" width="120" height="120" /></a></p>
<ul>
<li>Eric at Adapted Studio put together this sweet little <a href="http://adaptedstudio.com/weblog/2009/sep/14/life-fun/">demo of HTML5 and Canvas in action</a>, in the form of the Game of life. Source code is included, too, if you want to learn a few nifty things.</li>
<li>Color me surprised, but Microsoft is actually purporting to <a href="http://arstechnica.com/microsoft/news/2009/09/ie-program-manager-endorses-html-5-multimedia-tags.ars">work together on at least some of the HTML5</a> spec. This could be good. Using &lt;video&gt; would be much easier if everyone would do it. But there still is the nasty issue of codecs, which is even more thorny than W3C specs.</li>
<li>This is from about a year ago, but John Resig (of jQuery fame) posted a very nice tutorial for <a href="http://ejohn.org/apps/learn/">Learning Advanced Javascript</a>. It clears up a lot of confusion about seemingly advanced techniques.</li>
<li>Also worth perusing is Mark Pilgrim&#8217;s <a href="http://diveintomark.org/archives/2008/12/18/give-part-1-container-formats">Gentle introduction to video formatting</a>. If you&#8217;re a video geek, you might know some of this, but there&#8217;s detail that might fill in some gaps. The <a href="http://diveintomark.org/archives/2009/01/08/give-slides">slides</a> are also slightly amusing. I had no idea the .mkv format came from a bunch of guys in Russia that decided to opensource it.</li>
</ul>
<p>HTML 5 image form <a href="http://www.flickr.com/photos/justinsomnia/513636061/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2009/09/17/web-and-video-standards-roundup/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Sleep on It: Time-lapse and post-mortem</title>
		<link>http://blogs.walkerart.org/newmedia/2009/05/18/dont-sleep-on-it-time-lapse-post-mortem/</link>
		<comments>http://blogs.walkerart.org/newmedia/2009/05/18/dont-sleep-on-it-time-lapse-post-mortem/#comments</comments>
		<pubDate>Mon, 18 May 2009 17:39:12 +0000</pubDate>
		<dc:creator>Justin Heideman</dc:creator>
				<category><![CDATA[Media]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=842</guid>
		<description><![CDATA[Now that Don&#8217;t Sleep on It is over and everyone has caught up on some sleep, I thought I&#8217;d share a bit more on the technical setup and a lesson learned. Witt told me he thought that it was one of the best, if not THE best, event that WACTAC has ever done. I tend [...]]]></description>
			<content:encoded><![CDATA[<p>Now that <a href="http://calendar.walkerart.org/event.wac?id=5018">Don&#8217;t Sleep on It</a> is over and everyone has <a href="http://teens.walkerart.org/2009/05/17/dont-sleep-on-it/">caught up on some sleep</a>, I thought I&#8217;d share a bit more on the technical setup and a lesson learned. Witt told me he thought that it was one of the best, if not THE best, event that <a href="http://teens.walkerart.org/">WACTAC</a> has ever done. I tend to agree.</p>
<p>As I explored in a previous post, we used a digital still camera to take our single frame images, then stitch them together in quicktime as a longer move. For the event itself, we used two cameras. The primary camera, a Canon 10D, was equipped with a 16mm wide-angle lens that gave us a really good shot of the entire space. The second camera, a Canon G9, wasn&#8217;t quite as wide-angle, but would be a good backup camera in case something happened to the 10D. A sample of the space:</p>
<p><a href="http://blogs.walkerart.org/newmedia/files/2009/05/dont_sleep_on_it_space.jpg"><img class="alignnone size-medium wp-image-845" src="http://blogs.walkerart.org/newmedia/files/2009/05/dont_sleep_on_it_space-450x298.jpg" alt="dont_sleep_on_it_space" width="450" height="298" /></a></p>
<p>We taped off sight lines, just out of frame, so the artists would know what was in frame and what was not.</p>
<p>Our events &amp; media production team set up a very nice mount for the cameras, as you can sort of see in this blurry, hastily snapped iPhone shot:</p>
<p><a href="http://blogs.walkerart.org/newmedia/files/2009/05/camera_mount.jpg"><img class="alignnone size-medium wp-image-844" src="http://blogs.walkerart.org/newmedia/files/2009/05/camera_mount-339x450.jpg" alt="camera_mount" width="339" height="450" /></a></p>
<p>Unfortunately, every good plan has it&#8217;s own particular achilies heel. In this case, that heel was electronics&#8217; desire for an uninterrupted flow of electricity. Midway through the evening on Friday night, the circuit breaker that powered the computer and cameras was tripped. Power was quickly restored, and the computers were turned back on. However, the startup procedure to get the time-lapse running was not something that could be scripted or automated, so the capture did not start again until 9 AM the next morning when I cam to check on things.</p>
<p>The lesson here: Time lapse is awesome, but<strong> next time, use an uninterpretable power supply.</strong> Preferably one that has a loud audible warning. I probably should have thought of this, but it really didn&#8217;t occur to me how chaotic and crazy the event would actually be (I mean that in the most endearing way possible).</p>
<p>The fact that we lost 12 hours of the time-lapse does stink, but it also means we still captured 12 hours of the event. I&#8217;ve assembled the video, and it has been <a href="http://www.youtube.com/watch?v=MB7jVGSoDIg">posted to YouTube</a>, but the quailty is not as good as a quicktime file. Here is a higher-quality quicktime MP4:</p>
<p><a href="http://blogs.walkerart.org/newmedia/2009/05/18/dont-sleep-on-it-time-lapse-post-mortem/"><em>Click here to view the embedded video.</em></a><br />
Click to play, or <a href="http://walkerart.s3.amazonaws.com/channel/09/dont_sleep_on_it_web.mp4">download the original file</a>.</p>
<p>To fill some of the 12-hour gap, we hastily collected photos from whoever was available and had taken photos. They&#8217;ve been put together as a short slideshow filling a portion of the 12-hour missing period.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2009/05/18/dont-sleep-on-it-time-lapse-post-mortem/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
<enclosure url="http://walkerart.s3.amazonaws.com/channel/09/dont_sleep_on_it_web.mp4" length="83898383" type="video/mp4" />
		</item>
		<item>
		<title>Testing time-lapse software</title>
		<link>http://blogs.walkerart.org/newmedia/2009/05/07/testing-time-lapse-software/</link>
		<comments>http://blogs.walkerart.org/newmedia/2009/05/07/testing-time-lapse-software/#comments</comments>
		<pubDate>Thu, 07 May 2009 18:56:53 +0000</pubDate>
		<dc:creator>Justin Heideman</dc:creator>
				<category><![CDATA[Motion Graphics]]></category>
		<category><![CDATA[NMI Today]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=837</guid>
		<description><![CDATA[WACTAC has an event next week called Don&#8217;t Sleep on It, taking place during Art-a-Whirl. The gist of the event: over the course of 24 hours different groups of artists will transform a gallery space, destroying and re-building the art many times over the period. At the end of the event, they want to show [...]]]></description>
			<content:encoded><![CDATA[<p>WACTAC has an event next week called <a href="http://calendar.walkerart.org/event.wac?id=5018">Don&#8217;t Sleep on It</a>, taking place during Art-a-Whirl. The gist of the event: over the course of 24 hours different groups of artists will transform a gallery space, destroying and re-building the art many times over the period. At the end of the event, they want to show a time-lapse video of the transformation. </p>
<p>Making a time-lapse movie is not hard. While it can be done using a video camera, it&#8217;s easier to use a digital still camera. You take a series of images at predefined intervals and stitch them together using software like After Effects, or, even simpler, Quicktime Pro. We&#8217;re using a Canon G10 and the <a href="http://www.versiontracker.com/dyn/moreinfo/macosx/15676&amp;vid=109847">Canon Remote Capture software</a> to take photos every 10 seconds. I set up a test in our office just to make sure it would run correctly and without incident. Here&#8217;s the result:</p>
<a href="http://blogs.walkerart.org/newmedia/2009/05/07/testing-time-lapse-software/"><em>Click here to view the embedded video.</em></a>
<p>Taking one photo every 10 seconds over 24 hours generates 8640 frames, creating a video just under 10 minutes long. We may end up dropping every other frame to create a shorter movie. The nice thing about using a digital still camera for this is that it produces a video well beyond even 1080P HD resolution.</p>
<p>In the above video, you can enjoy watching me look up documentation on Django, read a book about symfony, and my be mesmerized by a screensaver. </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2009/05/07/testing-time-lapse-software/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Recent enhancements to mnartists.org</title>
		<link>http://blogs.walkerart.org/newmedia/2009/04/03/recent-enhancements-to-mnartistsorg/</link>
		<comments>http://blogs.walkerart.org/newmedia/2009/04/03/recent-enhancements-to-mnartistsorg/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 21:30:39 +0000</pubDate>
		<dc:creator>Justin Heideman</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[mnartists.org]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=753</guid>
		<description><![CDATA[For the past month or two, we have been working on changes to mnartists.org. We deployed some of these changes several weeks ago, and just deployed even more now. I thought I would take some time to highlight the enhancements and new goodies.
Homepage
The first change you&#8217;ll notice when visiting the site is that the home [...]]]></description>
			<content:encoded><![CDATA[<p>For the past month or two, we have been working on changes to <a href="http://mnartists.org/home.do">mnartists.org</a>. We deployed some of these changes several weeks ago, and just deployed even more now. I thought I would take some time to highlight the enhancements and new goodies.</p>
<h4>Homepage</h4>
<p>The first change you&#8217;ll notice when visiting the site is that the home page got an overhaul. The rotators for New Artwork and Featured Collections were changed to display images to the full-size of their boxes and they animate smoother. This means sometimes cropping work, but we think it&#8217;s a trade-off worth making.</p>
<p>Articles are also displayed with a three-tier hierarchy, allowing the site to call recent writing out more prominently, even though we feature six instead of 10. The sidebar on the homepage has also been reorganized, bringing the mnartists.org blog to the top and adding links to the <a href="http://www.facebook.com/pages/Minneapolis-MN/mnartistsorg/40989003319">Facebook</a> and <a href="http://twitter.com/mnartistsdotorg">Twitter</a> profiles for mnartists.org.</p>
<div id="attachment_754" class="wp-caption alignleft" style="width: 342px"><img class="size-medium wp-image-754" src="http://blogs.walkerart.org/newmedia/files/2009/04/mna_homepage_new-450x337.jpg" alt="mna_homepage_new" width="332" height="248" /><p class="wp-caption-text">The revised homepage.</p></div>
<div id="attachment_759" class="wp-caption alignleft" style="width: 326px"><strong></strong><strong><img class="size-medium wp-image-759" src="http://blogs.walkerart.org/newmedia/files/2009/04/mna_articles-450x370.jpg" alt="Revised article page" width="316" height="260" /></strong><p class="wp-caption-text">Revised article page</p></div><br />
<br class="clear" /></p>
<p><br class="clear" /></p>
<h4>Articles</h4>
<p>Articles got some attention in several ways. First, we changed the way images are displayed by adding a larger expanding gallery at the top of each article, rather than having small images thumbnails listed down the left side. On the back end for editors, we also added an enhanced editor (tiny mce) to allow for richer control over formatting and even embedding other media.</p>
<p><strong>Social media Sharing<br />
</strong>Across many areas of the site, you&#8217;ll now see a link to Share this article/artwork/collection/event. Using much of the same <a href="http://blogs.walkerart.org/newmedia/2008/12/22/enabling-users-to-share-content-to-social-media-sites/">code we developed for the Walker Calendar</a>, sharing is now easier on mnartists.org. We connect with Facebook, Twitter, Myspace, Delicious, Google Bookmarks, and Yahoo Bookmarks, as well as rolling in email links in a few places.</p>
<p><div id="attachment_764" class="wp-caption alignnone" style="width: 536px"><img class="size-full wp-image-764" src="http://blogs.walkerart.org/newmedia/files/2009/04/mna_sharing.jpg" alt="mna_sharing" width="526" height="98" /><p class="wp-caption-text">The new sharing links.</p></div>
<h4>Search</h4>
<p>The one change that will probably make everyone cry tears of joy is the search results refinement. We&#8217;ve heard lots of complaints about the search, not wholly unfounded. The search actually works pretty good, but the simple search weights everything more or less equally. If you search for someone&#8217;s name, hoping to just get their artist page, it will be in the results, but there might be other things that rank higher.</p>
<p>The revised search result page lets you change your simple search into an advanced search, using tabs above the results to select the type of resource you want to search for. This is very similar to what google does with their search results refinements (web, images, video, maps, etc.).</p>
<div id="attachment_767" class="wp-caption alignleft" style="width: 280px"><img class="size-medium wp-image-767" src="http://blogs.walkerart.org/newmedia/files/2009/04/mna_search_before-450x382.jpg" alt="Old style search results" width="270" height="229" /><p class="wp-caption-text">Old style search results</p></div>
<div id="attachment_766" class="wp-caption alignleft" style="width: 280px"><img class="size-medium wp-image-766" src="http://blogs.walkerart.org/newmedia/files/2009/04/mna_search_after-450x382.jpg" alt="New search results with refinements." width="270" height="229" /><p class="wp-caption-text">New search results with refinements.</p></div><br />
<br class="clear" /></p>
<p><br class="clear" /></p>
<h4>Artist Pages</h4>
<p>Artist pages also got an overhaul with two big changes. First, images for each artwork will display at a new, larger size, about 519px tall and/or 520px wide. For artworks with more than one image associated, a gallery rotating gallery will cycle through the images. Previously, if an artwork had more than one image associated, only the first would show up, and the rest would be listed in the &#8220;Related Media&#8221; list.</p>
<p><div id="attachment_770" class="wp-caption alignleft" style="width: 280px"><img class="size-medium wp-image-770" src="http://blogs.walkerart.org/newmedia/files/2009/04/brent-before-450x407.png" alt="Old artist homepage." width="270" height="244" /><p class="wp-caption-text">Old artist homepage.</p></div>
<div id="attachment_771" class="wp-caption alignleft" style="width: 280px"><img class="size-medium wp-image-771" src="http://blogs.walkerart.org/newmedia/files/2009/04/brent-after-450x391.png" alt="Revised artist page." width="270" height="235" /><p class="wp-caption-text">Revised artist page.</p></div><br />
<br class="clear" /></p>
<p>Secondly, we changed the way Related Media works. Now, it is simply &#8220;Media List&#8221; lists every type of media associated with an artwork. More importantly, for non-image media, such as video and audio, we embed the media in the actual page. So if you upload a quicktime file, the quicktime embed code will be generated and put right into the page. MP3 audio files will be played with the <a href="http://www.longtailvideo.com/">jwplayer</a> flash player, making audio on the site a lot more nifty. We&#8217;re using the excellent <a href="http://www.malsup.com/jquery/media/">jquery.media</a> plugin to do this.</p>
<p>This approach to handling media isn&#8217;t without some issues, but given the variety of media already on the site and our resources to work on it, this is the best solution. We are looking at making more substantial changes to this in the future, but this is a good incremental improvement.</p>
<p><div id="attachment_776" class="wp-caption alignleft" style="width: 280px"><img class="size-medium wp-image-776" src="http://blogs.walkerart.org/newmedia/files/2009/04/heather_video_before-450x337.png" alt="Artwork with video before changes." width="270" height="202" /><p class="wp-caption-text">Artwork with video before changes.</p></div>
<div id="attachment_775" class="wp-caption alignleft" style="width: 191px"><img class="size-medium wp-image-775" src="http://blogs.walkerart.org/newmedia/files/2009/04/heather_video_after-301x450.png" alt="Artwork with video after changes. (Two video files attached)" width="181" height="270" /><p class="wp-caption-text">Artwork with video after changes. (Two video files attached)</p></div><br />
<br class="clear" /></p>
<p>The image size and media enhancements have also been applied to the collections area of the site.<br />
<br class="clear" /></p>
<h4>Editing text</h4>
<p>Another change we made a month ago was adding a visual editor to various form fields on the site. Prior to the change, users could only enter a very limited selection of markup to entries, [b] for bold, [i] for italic, and [a] for a link. We&#8217;ve eliminated that and replaced it with the new editor (tiny_mce), which allows for bold, italic, underline, unordered lists, and links. While seemingly simple, it was actually quite a challenge to deal with both the legacy code and the new formatting. The text actually goes through several transformations between the editor, the database, and being displayed again. Keeping everything consistent is a non-trivial pile of regular expressions. </p>
<p><div id="attachment_778" class="wp-caption alignnone" style="width: 539px"><img src="http://blogs.walkerart.org/newmedia/files/2009/04/editor.jpg" alt="The new visual editor." width="529" height="380" class="size-full wp-image-778" /><p class="wp-caption-text">The new visual editor.</p></div>
<p>One thing that we will have to keep an eye on is users pasting in text from Microsoft Word. Word tends to shove a bunch of garbage pseudo-html into the clipboard, and when pasting, it can be difficult to filter out. The editor has a button to Paste from word (with the blue W) that helps.  </p>
<h4>Any issues?</h4>
<p>If you notice any problems with the site, please let our <a href="mailto:info@mnartists.org">community manager</a> or myself know. Bugs may crop up, and we do fix things.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2009/04/03/recent-enhancements-to-mnartistsorg/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Give us your tubes, your tweets, your faces and your flick(r)s</title>
		<link>http://blogs.walkerart.org/newmedia/2009/02/27/give-us-your-tubes-your-tweets-your-faces-and-your-flickrs/</link>
		<comments>http://blogs.walkerart.org/newmedia/2009/02/27/give-us-your-tubes-your-tweets-your-faces-and-your-flickrs/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 21:53:24 +0000</pubDate>
		<dc:creator>Justin Heideman</dc:creator>
				<category><![CDATA[Social Networking]]></category>

		<guid isPermaLink="false">http://blogs.walkerart.org/newmedia/?p=741</guid>
		<description><![CDATA[We just made a small addition to the Walker website: a social media page. In case you didn&#8217;t know, the Walker is on Flickr, Twitter, FaceBook, and YouTube. The Walker has actually been in those spaces for some time, but there hasn&#8217;t been a good connection from the Walker site.
There are four different Walker-related groups [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://info.walkerart.org/about/socialmedia.wac"><img class="alignright size-medium wp-image-745" src="http://blogs.walkerart.org/newmedia/files/2009/02/wac_social-215x450.jpg" alt="" width="215" height="450" /></a>We just made a small addition to the Walker website: a <a href="http://info.walkerart.org/about/socialmedia.wac">social media page</a>. In case you didn&#8217;t know, the Walker is on <a href="http://flickr.com/photos/walkerart/">Flickr</a>, <a href="http://twitter.com/walkerartcenter">Twitter</a>, <a href="http://www.facebook.com/pages/Minneapolis-MN/Walker-Art-Center/6265053179">FaceBook</a>, and <a href="http://youtube.com/walkerartcenter">YouTube</a>. The Walker has actually been in those spaces for some time, but there hasn&#8217;t been a good connection from the Walker site.</p>
<p>There are four different Walker-related groups for user contributed content on flickr: <a title="Walker Art Center Group on Flickr" href="http://www.flickr.com/groups/walkerartcenter/">Walker Art Center</a>, <a title="Minneapolis Sculpture Garden Group on Flickr" href="http://www.flickr.com/groups/minneapolissculpturegarden/">Minneapolis Sculpture Garden</a>, <a title="Walker After Hours Group on Flickr" href="http://flickr.com/groups/walkerafterhours/">Walker After Hours</a>, and <a title="Walker Art Center Teen Arts Council on Flickr" href="http://flickr.com/groups/WACTAC/">WACTAC</a>. The social media page highlights the most recent Walker and Garden photos. We also post a good number of photos of our own, from After Hours to exhibition installation views. To make things clearer, we also added a official <a href="http://info.walkerart.org/about/photography.wac">photography policy</a>.</p>
<p>Since around September of 2008, I have been posting on twitter as the <a href="http://twitter.com/walkerartcenter">@walkerartcenter</a>. Twitterfeed fills in some gaps with our blog posts, but I try to announce other notable things and answer visitor questions there. When the <a href="http://search.twitter.com/search?q=%23snowmageddon">#snowmageddon</a> happened, our twitter followers knew about it first. The social media page lists our latest 5 tweets to give visitors a good indication of what we tweet about.</p>
<p>We&#8217;re on the <a href="http://www.facebook.com/pages/Minneapolis-MN/Walker-Art-Center/6265053179">Facebook</a>, too, and keep the page up-to-date with selected events and current exhibitions. Facebook doesn&#8217;t let Pages do a whole lot, but we&#8217;ve got 6500 fans.</p>
<p>And the <a href="http://youtube.com/walkerartcenter">Walker&#8217;s YouTube</a> page has been around for over a year, first starting with the <a href="http://blogs.walkerart.org/newmedia/2008/02/22/building-tv-interface-youtube-mac/">Tell us a story about your suburb</a> project for <a href="http://design.walkerart.org/worldsaway">Worlds Away</a>. We&#8217;ve posted a few things from the archives there, and we&#8217;re slowly porting content from the Walker Channel to YouTube as well.</p>
<p>Setting the social media page up was made easier by using the <a href="http://tweet.seaofclouds.com/">Tweet!</a> and<a href="http://www.projectatomic.com/2008/04/jquery-flickr/"> jQuery.Flickr</a> plugins.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.walkerart.org/newmedia/2009/02/27/give-us-your-tubes-your-tweets-your-faces-and-your-flickrs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
