<?xml version="1.0" encoding="UTF-8"?>
<feed
  xmlns="http://www.w3.org/2005/Atom"
  xmlns:thr="http://purl.org/syndication/thread/1.0"
  xml:lang="en"
   >
  <title type="text">Gary Bishop</title>
  <subtitle type="text">Geeks making the world a bit better.</subtitle>

  <updated>2012-02-13T14:47:48Z</updated>
  <generator uri="http://blogofile.com/">Blogofile</generator>

  <link rel="alternate" type="text/html" href="http://www.cs.unc.edu/~gb/blog" />
  <id>http://www.cs.unc.edu/~gb/blog/feed/atom/</id>
  <link rel="self" type="application/atom+xml" href="http://www.cs.unc.edu/~gb/blog/feed/atom/" />
  <entry>
    <author>
      <name></name>
      <uri>http://www.cs.unc.edu/~gb/blog</uri>
    </author>
    <title type="html"><![CDATA[Remotely refreshing multiple browsers during web testing]]></title>
    <link rel="alternate" type="text/html" href="http://www.cs.unc.edu/~gb/blog/2012/02/08/remotely-refreshing-multiple-browsers-during-web-testing" />
    <id>http://www.cs.unc.edu/~gb/blog/2012/02/08/remotely-refreshing-multiple-browsers-during-web-testing</id>
    <updated>2012-02-08T19:43:00Z</updated>
    <published>2012-02-08T19:43:00Z</published>
    <category scheme="http://www.cs.unc.edu/~gb/blog" term="Uncategorized" />
    <summary type="html"><![CDATA[Remotely refreshing multiple browsers during web testing]]></summary>
    <content type="html" xml:base="http://www.cs.unc.edu/~gb/blog/2012/02/08/remotely-refreshing-multiple-browsers-during-web-testing"><![CDATA[
<p>I'm working on the rewrite of Tar Heel Reader and testing it on desktop, iPad, iPod Touch, and IE6-8. I hate manual steps in my edit/test loop. The i* devices are particularly bothersome because I push my changes, pick up the device, hit the home button to wake it up, slide-to-unlock, and then hit the tiny refresh button. There had to be a better way.</p>

<p>I'm pretty sure I saw someone doing something that enabled them to force multiple browsers to refresh but when I went looking I couldn't find it. So, I decided it would be fun to try to write my own.</p>

<p>I inserted a script tag into the footer of my pages to load this javascript from remoteCommand.js.</p>

<script src="https://gist.github.com/1775825.js?file=remoteCommand.js"></script>

<p>And I added the following php code to my theme directory.</p>

<script src="https://gist.github.com/1775825.js?file=remoteCommand.php"></script>

<p>Now I keep a file command.js in the directory and update it as necessary. My Makefile for testing copies the theme files over to the server using rsync and then copies the command.js to /usr/tmp/command.js on the server. The php script notices the change and responds to requests from any browsers I have open on the testing site. They eval the javascript and force a reload or whatever else I needed to have happen.</p>

<p>I haven't seriously tested with it yet but I think this will allow me to have the iPad and iPod propped up on my desk (with autolock disabled), IE* running in a VM, and Firefox running on my desktop all reload each time I hit F7 to build in Sublime Text 2.</p>

<p>This approach is not scalable using Apache and php. Each connected browser is tying up a thread running that loop. Tornado would be a scalable solution but this was easy to hack out quickly and will meet my needs.</p>
]]></content>
  </entry>
  <entry>
    <author>
      <name></name>
      <uri>http://www.cs.unc.edu/~gb/blog</uri>
    </author>
    <title type="html"><![CDATA[How many Tar Heel Reader users have Javascript disabled?]]></title>
    <link rel="alternate" type="text/html" href="http://www.cs.unc.edu/~gb/blog/2012/01/23/how-many-tar-heel-reader-users-have-javascript-disabled-" />
    <id>http://www.cs.unc.edu/~gb/blog/2012/01/23/how-many-tar-heel-reader-users-have-javascript-disabled-</id>
    <updated>2012-01-23T09:40:00Z</updated>
    <published>2012-01-23T09:40:00Z</published>
    <category scheme="http://www.cs.unc.edu/~gb/blog" term="Uncategorized" />
    <summary type="html"><![CDATA[How many Tar Heel Reader users have Javascript disabled?]]></summary>
    <content type="html" xml:base="http://www.cs.unc.edu/~gb/blog/2012/01/23/how-many-tar-heel-reader-users-have-javascript-disabled-"><![CDATA[
<p>I'm redesigning <a href="http://tarheelreader.org">Tar Heel Reader</a> in hopes of taking load off the server and making the site friendlier to tablets and phones. Over the last few weeks I did a mockup with jQuery Mobile that works well enough on mobile devices but it was just kludged into the current system and it didn't work at all on IE6. So, I've decided to back up and rethink things.
</p>
<p>One question that immediately came to mind was could I assume users would have Javascript enabled? A bit of searching on the web gave the estimate that 2% of US users have Javascript disabled but some people claim that number may be inflated by bots and such. If only I could sample our users I would have the number I really wanted.</p>
<p>I began to think about instrumenting the site to collect some statistics when I looked at the php code for rendering book pages. Incredibly, I had already encoded the information I needed into image URLs! I have no recollection of doing it but years ago when I wrote the code I added the query parameter <code>?noscript=1</code> to the images when they are loaded by a browser with Javascript turned off. I salute past me for the amazing foresight!</p>
<p>Some simple analysis of my Apache log files using zcat, grep, awk, sort, uniq, and wc in pipelines tells me that over the 9-week period from 18 September 2011 to 20 November 2011, <b>337 unique IP addresses read 67,532 book pages with Javascript disabled</b>. During that period a total of 1,842,915 book pages were read so about <b>3.7% of the total had Javascript disabled</b>. My other stats indicate about 27,000 books were read per week so they must have averaged about 7.6 pages per book.</p>
<p>To confirm this analysis I used <a href="http://www.infosniper.net/">Info Sniper</a> to lookup a small sample of the IP addresses; they look like schools and homes, not bots. I also examined the user agents; again they looked reasonable for browsers includeing various versions of IE, Safari, and Firefox.</p>
<p>The bottom line is we've got to continue supporting readers with Javascript disabled. <b>During a typical week almost 1000 books are read without Javascript</b>. I don't want to shut out those children.</p>]]></content>
  </entry>
  <entry>
    <author>
      <name></name>
      <uri>http://www.cs.unc.edu/~gb/blog</uri>
    </author>
    <title type="html"><![CDATA[VirtualBox Tricks]]></title>
    <link rel="alternate" type="text/html" href="http://www.cs.unc.edu/~gb/blog/2012/01/01/virtualbox-tricks" />
    <id>http://www.cs.unc.edu/~gb/blog/2012/01/01/virtualbox-tricks</id>
    <updated>2012-01-01T20:24:00Z</updated>
    <published>2012-01-01T20:24:00Z</published>
    <category scheme="http://www.cs.unc.edu/~gb/blog" term="Uncategorized" />
    <summary type="html"><![CDATA[VirtualBox Tricks]]></summary>
    <content type="html" xml:base="http://www.cs.unc.edu/~gb/blog/2012/01/01/virtualbox-tricks"><![CDATA[
<p>I need to run an old version of Ubuntu Linux on my new server to support some otherwise obsolete software. It should have been easy but my ignorance made it take a few days of intermittent head banging. Here are few notes for my future self.</p>
<ol>
    <li>When importing virtual machines into <a href="https://www.virtualbox.org/">VirtualBox</a> they change the MAC address of the simulated Ethernet connection. In my case this resulted in a non-working network. The simple fix (in the Ubuntu Feisty guest) is to edit the /etc/iftab to replace the MAC address with the correct one.</li>
    <li>Using the remote display requires installing the <a href="https://www.virtualbox.org/wiki/Downloads">extension pack</a>.</li>
    <li>Tunnel the remote display with <code>ssh -L3389:localhost:3389 host</code></li>
</ol>]]></content>
  </entry>
  <entry>
    <author>
      <name></name>
      <uri>http://www.cs.unc.edu/~gb/blog</uri>
    </author>
    <title type="html"><![CDATA[Yogurt]]></title>
    <link rel="alternate" type="text/html" href="http://www.cs.unc.edu/~gb/blog/2011/11/03/yogurt" />
    <id>http://www.cs.unc.edu/~gb/blog/2011/11/03/yogurt</id>
    <updated>2011-11-03T19:22:00Z</updated>
    <published>2011-11-03T19:22:00Z</published>
    <category scheme="http://www.cs.unc.edu/~gb/blog" term="Uncategorized" />
    <summary type="html"><![CDATA[Yogurt]]></summary>
    <content type="html" xml:base="http://www.cs.unc.edu/~gb/blog/2011/11/03/yogurt"><![CDATA[
<p>I learned most of what I know about making yogurt from <a href="http://chowhound.chow.com/topics/567084">Maria Lorraine's post</a> at Chowhound. I combined what I learned there with some technical articles and reading tons of other web postings. This recipe is the result of considerable experimentation and has been successfully producing thick delicious yogurt for many weeks.</p>

<p>I'm working by weight using a cheap digital kitchen scale. When I use ounces (oz) below, I mean weight. One fluid ounce of water weighs one ounce but this is not true for other substances. You'll also need an accurate thermometer; I use a Thermopen.</p>

<p>I fortify the milk with additional milk solids by adding Nido Instant Whole Milk. You can usually find Nido in the "Hispanic" section of grocery stores. Don't buy the Infant formula, you want the normal dry milk. They just changed the name to <em>Fortificada</em>. The fortified milk is 95% milk + 5% Nido. Other people use various brands of dry milk; anything should work as long as it tastes/smells good. Nido is great.</p>

<p>For vanilla flavored yogurt I use:
<ul>
  <li>68.9 oz (1/2 fluid gallon) of milk. I use 1% Mapleview milk but any should work.</li>
  <li>3.6 oz of Nido.</li>
  <li>5.5 oz of sugar.</li>
  <li>1 oz of vanilla extract.</li>
</ul></p>

<p>I've made lemon by substituting lemon extract for the vanilla.</p>

<p>If you want to make more or less, simply scale the amounts above.</p>

<p>I mix the ingredients with a stick blender in a 2 quart glass measuring cup. I cover the top with plastic wrap to reduce evaporation and heat the mixture to 180 degrees Fahrenheit in the microwave using 40% power for 35 minutes. Of course the time may vary for different microwaves; I determined the time by measuring the temperature after every 5 minutes. I use 40% power to avoid scalding the milk. Heating the mixture to 180F allows the milk proteins to relax and it kills any microorganisms that might compete with the yogurt culture.</p>

<p>Next I cool the mixture to 115F. Sometimes I just let it slowly cool. Other times I rush things using a bath of ice water in a larger bowl. I don't see any difference in the results.</p>

<p>Next I add the yogurt culture (what the technical articles call the innoculum). I bought my initial batch from <a href="http://www.cheesemaking.com/">New England Cheesemaking</a>. I have used both their Y5 "Sweet" culture and the Y1 Bulgarian. I prefer the Y1 for its tarter flavor.</p>

<p>Most articles on the web suggest using store bought yogurt as the starter; that didn't work well for me. I think a good starter is worth the few dollars you pay for it. I only needed one packet because I froze 1/2 ounce portions of the first batch in an ice tray and then transferred them to containers to keep in the freezer. When I'm ready to make yogurt I get out a cube and mix it with a small portion of the cooled milk mixture and add that back to remainder. I recently got near the end of the first batch of 12 cubes so I froze 12 more.</p>

<p>With the starter mixed in I measure 6.5 ounce portions into 8 ounce <a href="http://www.ziploc.com/Products/Pages/ContainersSmartSnapSeal.aspx">Ziplock brand plastic containers</a>. I lid them and put them into a 115 degree oven. If your oven does not support settings this low, you'll find a wide variety of alternatives on the web for keeping the yogurt warm.<p>

<p>I leave the yogurt to ferment for 6 to 8 hours. Do not disturb them during this time; I ruined a batch by checking on them too much. When it is ready the yogurt should be firmly set. You can gently test a container by tilting it slightly. The longer you let it ferment the tarter the yogurt will become.</p>

<p>After it is set I move the containers to the refrigerator. The next morning they are ready to eat. They usually have about 1/2 teaspoon of whey on top.</p>

<p>If you stir this yogurt it will become much thinner because you are breaking the matrix that holds it together. Commercial yogurt usually has a <em>stabilizer</em> added to make it hold up to stirring.</p>

<p>This recipe makes 12 servings and we eat them all in a week. I estimate each serving is about 160 calories.</p>
]]></content>
  </entry>
  <entry>
    <author>
      <name></name>
      <uri>http://www.cs.unc.edu/~gb/blog</uri>
    </author>
    <title type="html"><![CDATA[Maze Day 2012]]></title>
    <link rel="alternate" type="text/html" href="http://www.cs.unc.edu/~gb/blog/2011/11/03/maze-day-2012" />
    <id>http://www.cs.unc.edu/~gb/blog/2011/11/03/maze-day-2012</id>
    <updated>2011-11-03T09:31:00Z</updated>
    <published>2011-11-03T09:31:00Z</published>
    <category scheme="http://www.cs.unc.edu/~gb/blog" term="Uncategorized" />
    <summary type="html"><![CDATA[Maze Day 2012]]></summary>
    <content type="html" xml:base="http://www.cs.unc.edu/~gb/blog/2011/11/03/maze-day-2012"><![CDATA[
<p>This year Maze Day will be 26 April 2012 from 9AM until 2PM in <a href="http://www.cs.unc.edu/cms/about-us/about-us/directions-and-other-visitor-information" title="Directions"> Sitterson Hall</a> on the UNC Chapel Hill Campus.</p>

<p>Maze Day is for visually impaired and blind students in grades K-12, their parents and teachers. Your students will enjoy fun and educational computer applications developed especially for them. UNC students will learn how well their accessible applications work with real users. And everyone will have a good time!</p>

<p>We plan to have a wide variety of accessible fun, educational, and exercise activities. We will be especially featuring a new collection of games hosted on our web site and accessible from any computer connected to the internet.</p>

<p>Lunch will be provided. <b>Free!</b></p>

<p>To register, fill out the form below or email Diane Brauner dianebrauner@embarqmail.com or Missy Wood wood@cs.unc.edu. Also, please have parents fill out the <b>photo consent form</b> (<a href="/~gb/media/English Photo Consent.pdf">English</a> or <a href="/~gb/media/Spanish Photo Consent.pdf">Spanish</a>). We will only include your children in photographs of the event with your permission.</p>

<p>We have limited funding for travel grants for groups who could not otherwise attend. Email Missy Wood wood@cs.unc.edu for more information.</p>

<iframe src="https://docs.google.com/spreadsheet/embeddedform?formkey=dDIwMXR5YXZ2elhJQmZ5ZWlBY2tpZkE6MA" width="700" height="1500" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>
]]></content>
  </entry>
  <entry>
    <author>
      <name></name>
      <uri>http://www.cs.unc.edu/~gb/blog</uri>
    </author>
    <title type="html"><![CDATA[Introducing the Next Grid: dgrid]]></title>
    <link rel="alternate" type="text/html" href="http://www.cs.unc.edu/~gb/blog/2011/10/26/introducing-the-next-grid-dgrid" />
    <id>http://www.cs.unc.edu/~gb/blog/2011/10/26/introducing-the-next-grid-dgrid</id>
    <updated>2011-10-26T17:50:00Z</updated>
    <published>2011-10-26T17:50:00Z</published>
    <category scheme="http://www.cs.unc.edu/~gb/blog" term="Uncategorized" />
    <summary type="html"><![CDATA[Introducing the Next Grid: dgrid]]></summary>
    <content type="html" xml:base="http://www.cs.unc.edu/~gb/blog/2011/10/26/introducing-the-next-grid-dgrid"><![CDATA[
<p class="reader-comment">Nice replacement for DataGrid. </p>
<p class="reader-source"><a href="http://www.sitepen.com/blog/2011/10/26/introducing-the-next-grid-dgrid/">SitePen Blog</a></p>
<blockquote class="reader-clip"><p>We have recently reached the alpha milestone in the development of dgrid, a new component for creating lists and grids. Built on the latest Dojo technology, dgrid is <a href="http://www.sitepen.com/blog/2011/08/05/code-design-and-approach-for-the-next-grid/">designed</a> to be lightweight, fast, mobile-ready, and easy-to-use.</p></blockquote>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       est pages</a> and a few preliminary <a href="http://sitepen.github.com/dgrid/dgrid/demos/">demos</a> are available.  (These are part of the source package, so you can tinker with them on your own server as well.)</p>


<p>Related posts:</p><ol><li><a href="http://www.sitepen.com/blog/2008/07/14/dojo-12-grid/" rel="bookmark" title="Permanent Link: Dojo 1.2 Grid">Dojo 1.2 Grid</a></li>
<li><a href="http://www.sitepen.com/blog/2008/10/22/new-features-in-dojo-grid-12/" rel="bookmark" title="Permanent Link: New Features in Dojo Grid 1.2">New Features in Dojo Grid 1.2</a></li>
<li><a href="http://www.sitepen.com/blog/2007/09/16/the-dojo-grid/" rel="bookmark" title="Permanent Link: The Dojo Grid">The Dojo Grid</a></li>
</ol><p></p><p>SitePen offers beginner, intermediate, and advanced Dojo Toolkit workshops to make your development team as skilled and efficient as possible when creating dynamic, responsive web applications.  <a href="http://sitepen.com/services/workshops/index.php">Sign up today!</a></p></blockquote>
]]></content>
  </entry>
  <entry>
    <author>
      <name></name>
      <uri>http://www.cs.unc.edu/~gb/blog</uri>
    </author>
    <title type="html"><![CDATA[Feature: The iConstitution: how to protect user freedom in an app store world]]></title>
    <link rel="alternate" type="text/html" href="http://www.cs.unc.edu/~gb/blog/2011/10/17/feature-the-iconstitution-how-to-protect-user-freedom-in-an-app-store-world" />
    <id>http://www.cs.unc.edu/~gb/blog/2011/10/17/feature-the-iconstitution-how-to-protect-user-freedom-in-an-app-store-world</id>
    <updated>2011-10-17T13:22:00Z</updated>
    <published>2011-10-17T13:22:00Z</published>
    <category scheme="http://www.cs.unc.edu/~gb/blog" term="Uncategorized" />
    <summary type="html"><![CDATA[Feature: The iConstitution: how to protect user freedom in an app store world]]></summary>
    <content type="html" xml:base="http://www.cs.unc.edu/~gb/blog/2011/10/17/feature-the-iconstitution-how-to-protect-user-freedom-in-an-app-store-world"><![CDATA[
<p class="reader-comment">Interesting comparison of App stores to other options along with a proposal for how to do it right. </p>
<p class="reader-source"><a href="http://arstechnica.com/tech-policy/news/2011/10/the-iconstitution-how-to-protect-user-freedom-in-an-app-store-world.ars?utm_source=rss&utm_medium=rss&utm_campaign=rss">Ars Technica</a></p>
<blockquote class="reader-clip"><p>  <a href="http://arstechnica.com/tech-policy/news/2011/10/the-iconstitution-how-to-protect-user-freedom-in-an-app-store-world.ars?utm_source=rss&utm_medium=rss&utm_campaign=rss">
	  <img src="http://static.arstechnica.net/assets/2011/10/beware-apps-4e9882c-intro-thumb-640xauto-26580.jpg" border="0" height="390" hspace="4" vspace="4" width="640" />
	  </a>
  </p>
		        
    <p>When the iPad was unveiled in early 2010, it received almost universal acclaim in the mainstream press. But in the technology blogosphere, the response was more mixed. Boing Boing's Cory Doctorow <a href="http://web.archive.org/web/20100403234517/http://www.boingboing.net/2010/04/02/why-i-wont-buy-an-ipad-and-think-you-shouldnt-either.html">quipped</a> that the devices "feels like the second coming of the CD-ROM 'revolution.'" Princeton computer scientist Ed Felten <a href="https://freedom-to-tinker.com/blog/felten/ipad-disneyland-computers">compared</a> the iPad to Disneyland. "I like to visit Disneyland," he wrote at the time, "but I wouldn't want to live there." And your humble correspondent said that the iPad's locked-down architecture <a href="http://timothyblee.com/2010/01/29/why-geeks-hate-the-ipad/">"feels like using a pair of safety scissors."</a> And no, that wasn't a compliment.</p>

<p>What really drew our ire was the extension of the iPhone's locked-down app store model to tablet computers. Locked-down app stores might be OK for tiny, underpowered mobile devices, we thought, but the owners of full-sized computing devices deserved the freedom to install whatever software they wanted. The iPad took that freedom away, limiting us to running the apps that make it through Apple's app review process.</p>

    
          <p><a href="http://arstechnica.com/tech-policy/news/2011/10/the-iconstitution-how-to-protect-user-freedom-in-an-app-store-world.ars?utm_source=rss&utm_medium=rss&utm_campaign=rss" title="Click here to continue reading this article"><img src="http://static.arstechnica.net/mt-static/plugins/ArsTheme/images/read-more.jpg" alt="Read the rest of this article..." /></a></p>      
        
    


      <p><a href="http://arstechnica.com/tech-policy/news/2011/10/the-iconstitution-how-to-protect-user-freedom-in-an-app-store-world.ars?utm_source=rss&utm_medium=rss&utm_campaign=rss&comments=1#comments-bar">Read the comments on this post</a></p></blockquote>
]]></content>
  </entry>
  <entry>
    <author>
      <name></name>
      <uri>http://www.cs.unc.edu/~gb/blog</uri>
    </author>
    <title type="html"><![CDATA[Visually impaired man plays Zelda. [VIDEO]]]></title>
    <link rel="alternate" type="text/html" href="http://www.cs.unc.edu/~gb/blog/2011/10/03/visually-impaired-man-plays-zelda-video" />
    <id>http://www.cs.unc.edu/~gb/blog/2011/10/03/visually-impaired-man-plays-zelda-video</id>
    <updated>2011-10-03T10:40:00Z</updated>
    <published>2011-10-03T10:40:00Z</published>
    <category scheme="http://www.cs.unc.edu/~gb/blog" term="Uncategorized" />
    <summary type="html"><![CDATA[Visually impaired man plays Zelda. [VIDEO]]]></summary>
    <content type="html" xml:base="http://www.cs.unc.edu/~gb/blog/2011/10/03/visually-impaired-man-plays-zelda-video"><![CDATA[
<p class="reader-comment">A few minutes in you see him using Navi to help him target items. I really like this idea for an accessible game. You've got a little audio "fairy" to help you know which way to go or where to strike. Also, he must have an amazing mental map of the game world. Perhaps we could sell teachers on games as helping kids build mental maps. </p>
<p class="reader-source"><a href="http://www.wimp.com/playszelda/">www.wimp.com</a></p>
<blockquote class="reader-clip">Visually impaired man plays Zelda.</blockquote>
]]></content>
  </entry>
  <entry>
    <author>
      <name></name>
      <uri>http://www.cs.unc.edu/~gb/blog</uri>
    </author>
    <title type="html"><![CDATA[put-selector: CSS Selector-Based DOM Element Creation and Manipulation]]></title>
    <link rel="alternate" type="text/html" href="http://www.cs.unc.edu/~gb/blog/2011/09/29/put-selector-css-selector-based-dom-element-creation-and-manipulation" />
    <id>http://www.cs.unc.edu/~gb/blog/2011/09/29/put-selector-css-selector-based-dom-element-creation-and-manipulation</id>
    <updated>2011-09-29T10:39:00Z</updated>
    <published>2011-09-29T10:39:00Z</published>
    <category scheme="http://www.cs.unc.edu/~gb/blog" term="Uncategorized" />
    <summary type="html"><![CDATA[put-selector: CSS Selector-Based DOM Element Creation and Manipulation]]></summary>
    <content type="html" xml:base="http://www.cs.unc.edu/~gb/blog/2011/09/29/put-selector-css-selector-based-dom-element-creation-and-manipulation"><![CDATA[
<p class="reader-comment">Another nice Javascript feature from Zyp. </p>
<p class="reader-source"><a href="http://www.sitepen.com/blog/2011/09/29/put-selector-css-selector-based-dom-element-creation-and-manipulation/">SitePen Blog</a></p>
<blockquote class="reader-clip"><p>The <a href="https://github.com/kriszyp/put-selector">put-selector package</a> provides a small yet powerful function for creating and manipulating the DOM through brief, familiar CSS selector syntax. </p></blockquote>
]]></content>
  </entry>
  <entry>
    <author>
      <name></name>
      <uri>http://www.cs.unc.edu/~gb/blog</uri>
    </author>
    <title type="html"><![CDATA[ComposeJS: Robust, Lightweight Object Composition]]></title>
    <link rel="alternate" type="text/html" href="http://www.cs.unc.edu/~gb/blog/2011/09/28/composejs-robust-lightweight-object-composition" />
    <id>http://www.cs.unc.edu/~gb/blog/2011/09/28/composejs-robust-lightweight-object-composition</id>
    <updated>2011-09-28T21:09:00Z</updated>
    <published>2011-09-28T21:09:00Z</published>
    <category scheme="http://www.cs.unc.edu/~gb/blog" term="Uncategorized" />
    <summary type="html"><![CDATA[ComposeJS: Robust, Lightweight Object Composition]]></summary>
    <content type="html" xml:base="http://www.cs.unc.edu/~gb/blog/2011/09/28/composejs-robust-lightweight-object-composition"><![CDATA[
<p class="reader-comment">Introduction to ComposeJS </p>
<p class="reader-source"><a href="http://www.sitepen.com/blog/2011/09/28/composejs-robust-lightweight-object-composition/">SitePen Blog</a></p>
<blockquote class="reader-clip"><p><a href="http://github.com/kriszyp/compose">ComposeJS</a> is a JavaScript package/module for object-oriented programming available in the <a href="http://www.sitepen.com/blog/2011/07/25/dojo-foundation-packages/">Dojo Foundation package repository</a>. JavaScript itself is already a highly object-oriented programming language, and the prototype-based inheritance system is very powerful. Rather than simply porting a “class” system from another language, the core philosophy of ComposeJS is to leverage JavaScript paradigms and enhance it with clean, terse syntax and modern composition and resolution concepts for simple, high-performance, and robust object constructors. ComposeJS uses concepts from class inheritance, multiple inheritance, mixins, <a href="http://scg.unibe.ch/archive/papers/Duca06bTOPLASTraits.pdf">traits</a>, and aspect-oriented programming to compose functionality in the most efficient manner possible. </p>
</blockquote>
]]></content>
  </entry>
</feed>

