<?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>Contraterrene - Tony Hursh</title>
	<atom:link href="http://contraterrene.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://contraterrene.com/blog</link>
	<description>Bricolage: we haz it.</description>
	<lastBuildDate>Fri, 08 Feb 2013 04:34:58 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.6-beta3-24300</generator>
		<item>
		<title>Blog Retirement</title>
		<link>http://contraterrene.com/blog/blog/2012/08/24/blog-retirement/</link>
		<comments>http://contraterrene.com/blog/blog/2012/08/24/blog-retirement/#comments</comments>
		<pubDate>Fri, 24 Aug 2012 04:26:28 +0000</pubDate>
		<dc:creator>Tony Hursh</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://contraterrene.com/blog/?p=258</guid>
		<description><![CDATA[Running two blogs was an interesting experiment, but this one just isn&#8217;t getting enough love. I&#8217;ll be posting everything over here from now on. &#160;]]></description>
				<content:encoded><![CDATA[<p>Running two blogs was an interesting experiment, but this one just isn&#8217;t getting enough love.</p>
<p>I&#8217;ll be posting everything <a href="http://contraterrene.com/blog/ebooks">over here</a> from now on.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://contraterrene.com/blog/blog/2012/08/24/blog-retirement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtual Education Hangout in Google Plus</title>
		<link>http://contraterrene.com/blog/blog/2012/08/21/virtual-education-hangout-in-google-plus/</link>
		<comments>http://contraterrene.com/blog/blog/2012/08/21/virtual-education-hangout-in-google-plus/#comments</comments>
		<pubDate>Tue, 21 Aug 2012 16:39:39 +0000</pubDate>
		<dc:creator>Tony Hursh</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://contraterrene.com/blog/?p=256</guid>
		<description><![CDATA[This is going to be a weekly event. The first one is this Thursday at 8:00 PM. Note that you&#8217;ll need to circle this group (and be circled by it in turn) in order to participate.  All are welcome. We&#8217;ll &#8230; <a href="http://contraterrene.com/blog/blog/2012/08/21/virtual-education-hangout-in-google-plus/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>This is going to be a weekly event. The first one is this Thursday at 8:00 PM. Note that you&#8217;ll need to circle <a href="https://plus.google.com/u/0/b/111471874663404556766/">this group</a> (and be circled by it in turn) in order to participate.  All are welcome. We&#8217;ll be discussing anything and everything related to education technology.</p>
]]></content:encoded>
			<wfw:commentRss>http://contraterrene.com/blog/blog/2012/08/21/virtual-education-hangout-in-google-plus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtual Education Unit I: Blogs</title>
		<link>http://contraterrene.com/blog/blog/2012/08/10/virtual-education-unit-i-blogs/</link>
		<comments>http://contraterrene.com/blog/blog/2012/08/10/virtual-education-unit-i-blogs/#comments</comments>
		<pubDate>Fri, 10 Aug 2012 11:19:41 +0000</pubDate>
		<dc:creator>Tony Hursh</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://contraterrene.com/blog/?p=248</guid>
		<description><![CDATA[The first unit in my Virtual Education series is now live at Amazon.  These units are short, hands-on lessons on education technology aimed at working educators. The series as a whole will be handled MOOC-style. The texts have links to &#8230; <a href="http://contraterrene.com/blog/blog/2012/08/10/virtual-education-unit-i-blogs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The first unit in my Virtual Education series is now <a href="http://www.amazon.com/Virtual-Education-Unit-Blogs-ebook/dp/B008VDAWNI/contraterrene-20">live at Amazon</a>.  These units are short, hands-on lessons on education technology aimed at working educators. The series as a whole will be handled <a href="http://en.wikipedia.org/wiki/Mooc">MOOC</a>-style. The texts have links to online resources, including discussion forums and regular audio/video/text chats.</p>
<p>Update: the lesson has been accepted for KDP Select. If you have Amazon Prime, you&#8217;ll be able to borrow it for free. By all means feel free to do so.</p>
<p>&nbsp;</p>
<div id="attachment_331" class="wp-caption alignnone" style="width: 197px"><a href="http://www.amazon.com/Virtual-Education-Unit-Blogs-ebook/dp/B008VDAWNI/contraterrene-20"><img class="size-medium wp-image-331" title="Unit I Cover" src="http://contraterrene.com/blog/ebooks/files/2012/08/bloggingcover-187x300.jpg" alt="" width="187" height="300" /></a><p class="wp-caption-text">Unit I Cover</p></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://contraterrene.com/blog/blog/2012/08/10/virtual-education-unit-i-blogs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New ebooks blog</title>
		<link>http://contraterrene.com/blog/blog/2012/04/15/new-ebooks-blog/</link>
		<comments>http://contraterrene.com/blog/blog/2012/04/15/new-ebooks-blog/#comments</comments>
		<pubDate>Sun, 15 Apr 2012 17:01:12 +0000</pubDate>
		<dc:creator>Tony Hursh</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://contraterrene.com/blog/?p=240</guid>
		<description><![CDATA[I&#8217;ve started another blog for ebook stuff. General ed tech hackery and random thoughts will continue to appear here.]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve started <a href="http://contraterrene.com/blog/ebooks/">another blog</a> for ebook stuff. General ed tech hackery and random thoughts will continue to appear here.</p>
]]></content:encoded>
			<wfw:commentRss>http://contraterrene.com/blog/blog/2012/04/15/new-ebooks-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bulk Downloading Google Web Fonts for local use</title>
		<link>http://contraterrene.com/blog/blog/2012/02/20/downloading-google-web-fonts-for-local-use/</link>
		<comments>http://contraterrene.com/blog/blog/2012/02/20/downloading-google-web-fonts-for-local-use/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 23:37:26 +0000</pubDate>
		<dc:creator>Tony Hursh</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://contraterrene.com/blog/?p=202</guid>
		<description><![CDATA[Google Web Fonts is a very large collection of freely-distributable fonts (some great, some not so great ). They provide a variety of methods for using these in your web pages, which are all fine if you need just a &#8230; <a href="http://contraterrene.com/blog/blog/2012/02/20/downloading-google-web-fonts-for-local-use/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Google Web Fonts is a <a href="http://www.google.com/webfonts">very large collection of freely-distributable fonts</a> (some great, some not so great <img src='http://contraterrene.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ). They provide a variety of methods for using these in your web pages, which are all fine if you need just a couple of them. Unfortunately a <a href="http://mobimorphic.com">recent project</a> requires several hundred of them. Loading them over the web at runtime is a non-starter &#8212; it&#8217;s just too slow (I need to load every font so I can display the full collection  as type samples). You <strong>could</strong> download the fonts one at a time, but I&#8217;m way too lazy for that. Ruby to the rescue!</p>
<p>Update: I see that WordPress (or at least this theme) eats indentation even if you wrap the code in &lt;code&gt;&lt;/code&gt; tags. Fail. Oh, well. If you have a use for this, I&#8217;d bet money that your editor will handle reindenting the code for you. Heh.</p>
<p><code><br />
# Font downloader for Google Web Fonts.<br />
# Puts the fonts in a file called "Fontname.ttf" (spaces in the font name are removed)<br />
# and outputs the CSS code to load the fonts.<br />
# Run with something like ruby snagfonts.rb > fontloader.css to get the CSS font directives in a nice file.<br />
# Copyright 2012 by Contraterrene eLearning Group, LLC<br />
# MIT License or Ruby License, your choice.</p>
<p>require 'rubygems'</p>
<p>require 'open-uri'<br />
fonts = [<br />
  		"Aclonica",<br />
    	"Annie+Use+Your+Telescope",<br />
    	"Anonymous+Pro",<br />
    	"Allerta+Stencil",<br />
    	"Allerta",<br />
    	"Amaranth"</p>
<p># Add all you want <img src='http://contraterrene.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Just be sure to replace any spaces in the font name with +</p>
<p>]</p>
<p>baseURL = 'http://fonts.googleapis.com/css?family='</p>
<p>fontcss = "";<br />
fonts.each do |font|<br />
  fontURL = baseURL + font<br />
  open(fontURL) {|f|<br />
    # This file contains the Google-based CSS rules for the font.<br />
    fontCSS = f.read()<br />
    # Extract the URL for the actual font data.<br />
    urlstr = fontCSS.match(/url\(\'([^\']+)/)<br />
    url = urlstr[1]<br />
    # Read the TrueType font data<br />
    gttf = open(url)<br />
    ttffontCSS = gttf.read()<br />
    # I'm putting my fonts in a fonts/ subdirectory, which needs to exist ahead of time.<br />
    fname = "fonts/" + font + ".ttf"<br />
    # Get rid of any + characters in the font name - some OSes don't like that.<br />
    fname = fname.gsub(/\+/,'');<br />
    fontFile = File.new(fname, "w")<br />
    fontFile.syswrite(ttffontCSS)<br />
    fontFile.close<br />
    gttf.close<br />
    # Tweak the CSS font directive so it uses our local copy rather than Google's copy<br />
    fontCSS = fontCSS.sub(url,fname)<br />
    fontcss = fontcss + fontCSS;<br />
  }</p>
<p>end<br />
puts fontcss</p>
<p></code></p>
<p>This little script will download all the fonts you&#8217;ve listed in the array, and output the correct CSS to load them. As written, the fonts will be saved in the fonts/ directory (which you must create ahead of time), while the CSS goes to standard output (which you can redirect to a file). It should be simple enough to mod if you want something else.</p>
<p>Sample CSS output:<br />
<code><br />
@font-face {<br />
  font-family: 'Aclonica';<br />
  font-style: normal;<br />
  font-weight: normal;<br />
  src: local('Aclonica'), local('Aclonica-Regular'), url('fonts/Aclonica.ttf') format('truetype');<br />
}<br />
@font-face {<br />
  font-family: 'Annie Use Your Telescope';<br />
  font-style: normal;<br />
  font-weight: normal;<br />
  src: local('Annie Use Your Telescope'), local('AnnieUseYourTelescope'), url('fonts/AnnieUseYourTelescope.ttf') format('truetype');<br />
}<br />
@font-face {<br />
  font-family: 'Anonymous Pro';<br />
  font-style: normal;<br />
  font-weight: normal;<br />
  src: local('Anonymous Pro'), local('AnonymousPro'), url('fonts/AnonymousPro.ttf') format('truetype');<br />
}<br />
@font-face {<br />
  font-family: 'Allerta Stencil';<br />
  font-style: normal;<br />
  font-weight: normal;<br />
  src: local('Allerta Stencil Regular'), local('AllertaStencil-Regular'), url('fonts/AllertaStencil.ttf') format('truetype');<br />
}<br />
@font-face {<br />
  font-family: 'Allerta';<br />
  font-style: normal;<br />
  font-weight: normal;<br />
  src: local('Allerta Regular'), local('Allerta-Regular'), url('fonts/Allerta.ttf') format('truetype');<br />
}<br />
@font-face {<br />
  font-family: 'Amaranth';<br />
  font-style: normal;<br />
  font-weight: normal;<br />
  src: local('Amaranth'), url('fonts/Amaranth.ttf') format('truetype');<br />
}</p>
<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://contraterrene.com/blog/blog/2012/02/20/downloading-google-web-fonts-for-local-use/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pure HTML5/JavaScript color picker for Webkit</title>
		<link>http://contraterrene.com/blog/blog/2012/02/14/pure-html5javascript-color-picker-for-webkit/</link>
		<comments>http://contraterrene.com/blog/blog/2012/02/14/pure-html5javascript-color-picker-for-webkit/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 05:08:58 +0000</pubDate>
		<dc:creator>Tony Hursh</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://contraterrene.com/blog/?p=199</guid>
		<description><![CDATA[Touch/mobile-friendly. No Flash. No external images. No reliance on external frameworks (such as jQuery). No CSS (style to suit yourself). Self-contained JavaScript object (should work without interfering with any framework you&#8217;re using). Enjoy. &#160;]]></description>
				<content:encoded><![CDATA[<p>Touch/mobile-friendly. No Flash. No external images. No reliance on external frameworks (such as jQuery). No CSS (style to suit yourself). Self-contained JavaScript object (should work without interfering with any framework you&#8217;re using).</p>
<p><a href="https://github.com/tonyhursh/SimplePicker">Enjoy</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://contraterrene.com/blog/blog/2012/02/14/pure-html5javascript-color-picker-for-webkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamic Generation and Injection of CSS Using Data URIs</title>
		<link>http://contraterrene.com/blog/blog/2012/02/11/dynamic-generation-and-injection-of-css-using-data-uris/</link>
		<comments>http://contraterrene.com/blog/blog/2012/02/11/dynamic-generation-and-injection-of-css-using-data-uris/#comments</comments>
		<pubDate>Sat, 11 Feb 2012 16:11:13 +0000</pubDate>
		<dc:creator>Tony Hursh</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://contraterrene.com/blog/?p=195</guid>
		<description><![CDATA[This snippet illustrates how to generate and parse CSS dynamically. &#160;]]></description>
				<content:encoded><![CDATA[<p><a href="http://contraterrene.com/snippets/dynamicstyle.html">This snippet</a> illustrates how to generate and parse CSS dynamically.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://contraterrene.com/blog/blog/2012/02/11/dynamic-generation-and-injection-of-css-using-data-uris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What I Did on My Winter Vacation</title>
		<link>http://contraterrene.com/blog/blog/2011/11/27/what-i-did-on-my-winter-vacation/</link>
		<comments>http://contraterrene.com/blog/blog/2011/11/27/what-i-did-on-my-winter-vacation/#comments</comments>
		<pubDate>Sun, 27 Nov 2011 18:48:32 +0000</pubDate>
		<dc:creator>Tony Hursh</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://contraterrene.com/blog/?p=187</guid>
		<description><![CDATA[You can now build your own installable web apps for iPhone, iPad, and Android  at: https://mobimorphic.com/ (update: the web apps will also work in the Kindle Fire browser, but as yet I haven&#8217;t found a way to install them to the home &#8230; <a href="http://contraterrene.com/blog/blog/2011/11/27/what-i-did-on-my-winter-vacation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>You can now build your own installable web apps for iPhone, iPad, and Android  at: <a title="Mobimorphic" href="https://mobimorphic.com">https://mobimorphic.com/</a> (<strong>update:</strong> the web apps will also work in the Kindle Fire browser, but as yet I haven&#8217;t found a way to install them to the home screen).</p>
<p>Note that you DON&#8217;T need to be a programmer to build one of these &#8212; that was the design goal. If you can use Google Reader or set up a Google Calendar or Flickr album you can use this. Conversely, if you are a programmer you can use the External Code block and go as far as your imagination and skills can take you.</p>
<p>I&#8217;ve been working on this stuff for about a month, and I think it&#8217;s time to let other people start beating on it. It definitely needs more extensive testing on Android &#8212; works fine on my cheapie Android phone and on my Kindle Fire, but there are about a billion different configurations of Android out there. Let me know if something breaks. Note that there are two links on that page &#8212; the first goes to a sample app that needs to run on a mobile device to be fully functional. The second is to the self-service app builder, which needs to run on a desktop or notebook using Google Chrome or Safari (no Firefox or IE support, sorry).</p>
<p>Supported resource types at present: Web feed (RSS and Atom), Twitter feed, Flickr photo sets, podcasts (both audio and video), YouTube channels, Google Maps, user-entered HTML (includes a WYSIWYG editor), external code, external site, phone dialer, SMS text message, iTunes store, email, Google Calendar, and Facebook.</p>
<p>Next steps: performance optimization, more themes, and better docs. I also have some ideas for cool new blocks, and want to make Facebook an internal resource (like Twitter) rather than an external link.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://contraterrene.com/blog/blog/2011/11/27/what-i-did-on-my-winter-vacation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is the modern equivalent of BASIC?</title>
		<link>http://contraterrene.com/blog/blog/2011/07/23/what-is-the-modern-equivalent-of-basic/</link>
		<comments>http://contraterrene.com/blog/blog/2011/07/23/what-is-the-modern-equivalent-of-basic/#comments</comments>
		<pubDate>Sat, 23 Jul 2011 16:20:28 +0000</pubDate>
		<dc:creator>Tony Hursh</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://contraterrene.com/blog/?p=136</guid>
		<description><![CDATA[In this post, Mark Guzdial brings up an issue that&#8217;s generated a fair amount of interest in recent years.  The old-school personal computers &#8212; Apple II, Atari, Commodore &#8212; all came with a free, and built-in, BASIC interpreter. BASIC even &#8230; <a href="http://contraterrene.com/blog/blog/2011/07/23/what-is-the-modern-equivalent-of-basic/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In <a href="http://computinged.wordpress.com/2011/07/18/how-are-students-learning-programming-in-a-post-basic-world/">this post</a>, Mark Guzdial brings up an issue that&#8217;s generated a fair amount of interest in recent years.  The old-school personal computers &#8212; Apple II, Atari, Commodore &#8212; all came with a free, and built-in, BASIC interpreter. BASIC even came with PC-DOS/MS-DOS.  This onboard BASIC was the first exposure to programming for many (I&#8217;m tempted to say most) of today&#8217;s programmers.</p>
<p>Now, no one would argue that BASIC is a great language. It was, however, free and ubiquitous &#8211; there were problems if you wanted to share your Atari BASIC program with someone who had an Apple II, but often you could make the code work with a little bit of ingenuity.</p>
<p>Where do modern kids get that experience?  Are we creating a generation of appliance users who (if they&#8217;re exposed to programming at all) get their first experience in a behemoth like Java?</p>
<p>So there&#8217;s no confusion here: I like Java (well, I like the JVM anyway <img src='http://contraterrene.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ), and have written more than my share of it. However, it doesn&#8217;t exactly lend itself to casual tinkering.  Compare:</p>
<pre>10 PRINT "Hello, world!"</pre>
<p>1 line, 11 characters of overhead, what the code does is obvious at a glance, even to someone who doesn&#8217;t know programming (they might wonder about the 10, but that&#8217;s about it).</p>
<p>to:</p>
<pre>public class HelloWorld {

     public static void main(String[] args) {
          System.out.println("Hello, World!");
     }

}</pre>
<p>6 lines, 112 characters of overhead &#8212; plus you have to compile it, maybe set up your CLASSPATH, and perhaps perform other chores that stand in the way of instant gratification. Also, the code is largely opaque to a programming-naive reader. &#8220;public class&#8221;? &#8220;static&#8221;? &#8220;void&#8221;? Say what?</p>
<p>There have been many attempts to fix this. <a href="http://scratch.mit.edu/">Scratch from MIT</a>, <a href="http://www.alice.org/">Alice from Carnegie Mellon</a>, indie projects such as <a href="http://hackety-hack.com/">Hackety Hack</a> from <a href="http://en.wikipedia.org/wiki/Why_the_lucky_stiff">why the lucky stiff</a> (please come back, _why! We miss you!), special purpose scripting languages such as <a href="http://wiki.secondlife.com/wiki/LSL_Portal">LSL</a>, and several others.</p>
<p>With the exception of LSL, most of them are excellent (Cory Ondrejka, author of LSL:  &#8220;<em>[N]ote to self, next time spend more than one night designing language.</em>&#8221; <img src='http://contraterrene.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ).  I&#8217;ve had good luck <a href="http://contraterrene.com/course_outlines/VirtualWorldsOutline.html">teaching this type of language to an audience of K-12 teachers</a>, most of whom had no background in programming.</p>
<p>Where they come up short is ubiquity. They&#8217;re almost all free, which is great, but they have to be installed, which is not so great. Most school computers are locked down extremely tightly (<a href="http://www.wwwords.co.uk/rss/abstract.asp?j=elea&amp;aid=4458">an interesting topic its own right</a>). In fact, one of my students was reprimanded for installing Scratch on her classroom machines.</p>
<p>Even if you are permitted to install the software, the installation step still creates a barrier for sharing your creation with your friends, since they in turn have to install something before they can run your code.</p>
<p>MIT has worked around this to some degree with their Java (and now Flash) web-based Scratch players, but Java and Flash present their own issues (school firewalls or other security software may block Java and Flash, Windows machines, and starting with OS X Lion, Macs, no longer come with Java installed, Flash doesn&#8217;t work at all on iPhone/iPad, and doesn&#8217;t work very well on Android).</p>
<p>So&#8230; what to do?</p>
<p>I would argue that JavaScript is the modern equivalent of BASIC; it&#8217;s free, ubiquitous, and has the requisite nasty, nasty syntax. <img src='http://contraterrene.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   Any kid with a web browser and a text editor can write and run JavaScript <strong>without installing anything</strong>. HTML 5 opens up the possibility for impressive visual and sound effects that can be shared with anyone else on the planet who has a modern browser.</p>
<p>Even with the ugly syntax, JavaScript is a much better language than old-school BASIC. Closures, anonymous functions, objects &#8212; there are a lot of Big Ideas in there.</p>
<p>Besides the syntax, the other drawbacks of JavaScript include performance and the sandbox model (sandboxing is essential when you&#8217;re running arbitrary code from random web sites, but extremely inconvenient when you&#8217;re running your own trusted code).</p>
<p>There are workarounds. There are new packages that let you use better syntax (e.g., <a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a>, which gives you Ruby-like syntax, the experimental <a href="https://github.com/clojure/clojurescript">ClojureScript</a>, which gives you Lisp, and many others).</p>
<p>With respect to speed, Google has invested major effort in their <a href="http://code.google.com/p/v8/">V8 JavaScript compiler</a>, which gives you near-native code performance. It&#8217;s much, much faster than classic JavaScript.</p>
<p>There are also several options for those who chafe at the sandbox.</p>
<p><a href="http://nodejs.org/">Node.js</a> lets you access the file system, write servers, and similar stuff.</p>
<p>Packages such as <a href="http://www.phonegap.com/">PhoneGap</a> and <a href="http://www.appcelerator.com/">Appcelerator Titanium</a> let you write JavaScript applications that run on phones and other mobile platforms. In both cases, the code has direct access to phone features such as the camera, microphone, contact list, geolocation, accelerometers, and so on. PhoneGap works by calling native routines from interpreted JavaScript, while  Titanium precompiles the JavaScript to native code.</p>
<p>While I have no data, I would wager that the ability to do cool things on their phones, and share those cool things with their friends*, would be an extremely powerful motivator for today&#8217;s students.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>* The biggest barriers to doing phone stuff are bureaucratic rather than technical &#8212; there are some issues involved with distributing your creation.  For iOS,  the best option right now (on a school level)  appears to be <a href="http://developer.apple.com/library/ios/#featuredarticles/FA_Wireless_Enterprise_App_Distribution/Introduction/Introduction.html">Apple&#8217;s Enterprise Distribution</a> mechanism, which isn&#8217;t particularly transparent, cheap, or low-friction. For individuals (or if you want wider distribution through the App Store) you&#8217;ll need to buy a seat in the standard iOS developer program. I&#8217;d really like to see Apple set up some kind of low-cost student program &#8212; perhaps it could include the standard developer package&#8217;s ability to distribute to a limited number of devices on an ad hoc basis,  but not include the commercial features (e.g., distribution through the App Store). Android is much more lenient in this respect.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://contraterrene.com/blog/blog/2011/07/23/what-is-the-modern-equivalent-of-basic/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Project-Based Learning: Ur Doin It Wrong</title>
		<link>http://contraterrene.com/blog/blog/2011/03/29/project-based-learning-ur-doing-it-wrong/</link>
		<comments>http://contraterrene.com/blog/blog/2011/03/29/project-based-learning-ur-doing-it-wrong/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 16:22:34 +0000</pubDate>
		<dc:creator>Tony Hursh</dc:creator>
				<category><![CDATA[Policy]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://contraterrene.com/blog/?p=130</guid>
		<description><![CDATA[It&#8217;s always been mystifying to me why some equate a constructivist/constructionist/project-based/inquiry-based approach to education with &#8220;teacher doesn&#8217;t have to do any work&#8221; (actually, I&#8217;m pretty sure why some people are fond of that idea, but we won&#8217;t go there).  Some &#8230; <a href="http://contraterrene.com/blog/blog/2011/03/29/project-based-learning-ur-doing-it-wrong/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><img src="http://contraterrene.com/blog/wp-content/uploads/2011/03/pblwrong.jpg" alt="Project-Based Learning: Ur Doin It Wrong" /></p>
<p>It&#8217;s always been mystifying to me why some equate a constructivist/constructionist/project-based/inquiry-based approach to education with &#8220;teacher doesn&#8217;t have to do any work&#8221; (actually, I&#8217;m pretty sure why some people are fond of that idea, but we won&#8217;t go there).  Some years ago, Kirschner, Sweller, and Clark stirred the pot with their article <a href="http://www.cogtech.usc.edu/publications/kirschner_Sweller_Clark.pdf">Why Minimal Guidance During Instruction Does Not Work: An Analysis of the Failure of Constructivist, Discovery, Problem-Based, Experiential, and Inquiry-Based Teaching</a>.</p>
<p>Those of us who have advocated (and practiced) this style of teaching with success immediately recognized some of the serious problems with this paper.  It&#8217;s pretty clear  that doing truly original work without any scaffolding from a knowledgeable other is hard. Really hard. They give you PhDs for that. <img src='http://contraterrene.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  In the entire history of the human race, only two people (that we know of) have invented calculus. Odds that a student is going to discover calculus by him- or herself? Not very good.</p>
<p>That&#8217;s not to say that students can&#8217;t learn from unstructured exploration &#8212; I&#8217;m a big advocate of tinkering (<em>bricolage</em>, if you want it to sound impressive), and have learned many useful things from it.  But, you know, students don&#8217;t really need to pay you tuition to do that. If they aren&#8217;t getting any  (or &#8220;minimal&#8221;) guidance from the instructor, why are they even in school? Why is there even a &#8220;teacher&#8221;?</p>
<p>(there are some who would argue that school as we know it is a bad idea altogether, but that&#8217;s a separate discussion).</p>
<p>The best response to Kirschner, et al, that I&#8217;ve seen is <a href="http://www.cogtech.usc.edu/publications/hmelo_ep07.pdf">Hmelo-Silver, Duncan, and Chinn&#8217;s Scaffolding and Achievement in Problem-Based and Inquiry Learning: A Response to Kirschner, Sweller, and Clark (2006)</a>.  Their discussion matches closely with my own experience. Correct application of these methods doesn&#8217;t mean that the teacher provides no guidance, as Kirschner, et al would have it.  On the contrary, I would argue that doing a good job in this respect requires <strong>more</strong> work, not less. It&#8217;s really much easier for the teacher to make every student perform  exactly the same task, which can be graded with a check-off rubric. Giving  students the freedom to pursue their own interests means (or should mean) that the instructor gives each and every student individual attention and careful guidance to prevent them from wandering off into the weeds.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://contraterrene.com/blog/blog/2011/03/29/project-based-learning-ur-doing-it-wrong/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
