<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description></description><title>secretrobotron is me</title><generator>Tumblr (3.0; @secretrobotron)</generator><link>http://secretrobotron.tumblr.com/</link><item><title>kidmograph:

Landscape_poster01 (*WIP)
Project i’m working on...</title><description>&lt;img src="http://25.media.tumblr.com/c475e6875acea2ab5799644ac7f8515d/tumblr_mlp1fvyJlN1rsdpaso1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a class="tumblr_blog" href="http://kidmograph.tumblr.com/post/48677092189/landscape-poster01-wip-project-im-working-on"&gt;kidmograph&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Landscape_poster01 (*WIP)&lt;/p&gt;
&lt;p&gt;Project i’m working on doing C4D Illustrations&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://secretrobotron.tumblr.com/post/48708934518</link><guid>http://secretrobotron.tumblr.com/post/48708934518</guid><pubDate>Tue, 23 Apr 2013 15:06:07 -0400</pubDate></item><item><title>thekhooll:

Tilt
By Romain Laurent
</title><description>&lt;img src="http://25.media.tumblr.com/c248737ea887713753445e0aca89eee1/tumblr_mklpzeXWmQ1rse1ipo3_r1_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/202e3a3b6f49718d232d0b1da9680fdc/tumblr_mklpzeXWmQ1rse1ipo2_r1_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/e237d4bb636a77f132da1eccfc96221b/tumblr_mklpzeXWmQ1rse1ipo1_r1_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;p&gt;&lt;a class="tumblr_blog" href="http://khooll.com/post/46895823751/tilt-by-romain-laurent"&gt;thekhooll&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;h2&gt;&lt;strong&gt;Tilt&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;By &lt;a href="http://www.romain-laurent.com/work/lhorizon/"&gt;Romain Laurent&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://secretrobotron.tumblr.com/post/47104159210</link><guid>http://secretrobotron.tumblr.com/post/47104159210</guid><pubDate>Thu, 04 Apr 2013 08:52:30 -0400</pubDate></item><item><title>A little bit of psytrance :) A Speck of Dust by Terrafractyl</title><description>&lt;iframe class="tumblr_audio_player tumblr_audio_player_46527745198" src="http://secretrobotron.tumblr.com/post/46527745198/audio_player_iframe/secretrobotron/tumblr_mkdzp3DVTm1qfuplt?audio_file=http%3A%2F%2Fwww.tumblr.com%2Faudio_file%2Fsecretrobotron%2F46527745198%2Ftumblr_mkdzp3DVTm1qfuplt" frameborder="0" allowtransparency="true" scrolling="no" width="500" height="169"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;A little bit of psytrance :) &lt;a href="http://kinematicrecords.bandcamp.com/album/a-speck-of-dust"&gt;A Speck of Dust by Terrafractyl&lt;/a&gt;&lt;/p&gt;</description><link>http://secretrobotron.tumblr.com/post/46527745198</link><guid>http://secretrobotron.tumblr.com/post/46527745198</guid><pubDate>Thu, 28 Mar 2013 16:03:03 -0400</pubDate></item><item><title>


Parallel Processing
More great chiptune tracks hosted on...</title><description>&lt;iframe class="tumblr_audio_player tumblr_audio_player_46510849532" src="http://secretrobotron.tumblr.com/post/46510849532/audio_player_iframe/secretrobotron/tumblr_mkdnqp2ZZ71qfuplt?audio_file=http%3A%2F%2Fwww.tumblr.com%2Faudio_file%2Fsecretrobotron%2F46510849532%2Ftumblr_mkdnqp2ZZ71qfuplt" frameborder="0" allowtransparency="true" scrolling="no" width="500" height="169"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="bannercontainer"&gt;&lt;/div&gt;
&lt;div class="trackView leftMiddleColumns has-art"&gt;
&lt;div id="name-section"&gt;
&lt;h2 class="trackTitle"&gt;Parallel Processing&lt;/h2&gt;
&lt;p&gt;More great chiptune tracks hosted on bandcamp.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description><link>http://secretrobotron.tumblr.com/post/46510849532</link><guid>http://secretrobotron.tumblr.com/post/46510849532</guid><pubDate>Thu, 28 Mar 2013 11:44:49 -0400</pubDate></item><item><title>Freeformers and Mozilla Jam</title><description>&lt;p&gt;Recently, I spent a couple of days in the UK with some of the brightest members of &lt;a href="http://www.freeformers.com"&gt;Freeformers&lt;/a&gt; &amp;#8212; Tom, Max, Josh, and Lewie . Our goal was to collaborate on an exploratory prototype tool that encompassed some Webmaker design and ideology, and helped Freeformers achieve higher learning efficacy in their &amp;#8220;Tech Jams&amp;#8221; &amp;#8212; sessions designed for the curious and inexperienced to awaken the instantly-capable web hacker within. From Freeformers&amp;#8217; teaching experience, we identified a sore spot for many students of the programming art: data structures. Namely, JSON blobs. Pulling together our various expertise, we put together a fairly interesting demo: &lt;a href="http://secretrobotron.github.com/d3/"&gt;&lt;a href="http://secretrobotron.github.com/d3/"&gt;http://secretrobotron.github.com/d3/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/49ab377778945d7d73acb4a11a61b7ce/tumblr_inline_mji88h2OYU1qz4rgp.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;JSON is commonly used to pass data to and from services on the web. For instance, let&amp;#8217;s pretend we&amp;#8217;re creating a web app that exists solely for hamburger enthusiasts. Users go to &amp;#8220;&lt;a href="http://burgerloversunite.com"&gt;burgerloversunite.com&lt;/a&gt;&amp;#8221; (or similar) and are encouraged to sign in and post pictures of their favourite burgers, with obligatory facebook, twitter, and YouTube integration (not an exhaustive list). But how does any of that &amp;#8220;integration&amp;#8221; really work? If &lt;em&gt;secretrobotron&lt;/em&gt; has videos of burgers to show off, how do we ask YouTube to tell us about them, their meta data, direct urls, preview images, etc.? One popular option is to send a message to YouTube in the form of a url, telling it that we expect it to return some data in a certain format, like so:&lt;/p&gt;
&lt;p class="code"&gt;http://&lt;strong&gt;gdata.youtube.com&lt;/strong&gt;/&lt;strong&gt;feeds&lt;/strong&gt;/api/users/&lt;strong&gt;secretrobotron&lt;/strong&gt;?v=2&amp;amp;alt=&lt;strong&gt;json&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In other words, &amp;#8220;computer, go to &lt;strong&gt;gdata.youtube.com&lt;/strong&gt;, find the user &amp;#8216;&lt;strong&gt;secretrobotron&lt;/strong&gt;&amp;#8217;, collect his video &lt;strong&gt;feed&lt;/strong&gt;, and send it back as &lt;strong&gt;JSON&lt;/strong&gt;.&amp;#8221; Unfortunately, such a request sends back something like this:&lt;/p&gt;
&lt;p class="code"&gt;{&amp;#8220;version&amp;#8221;:&amp;#8221;1.0&amp;#8221;,&amp;#8221;encoding&amp;#8221;:&amp;#8221;UTF-8&amp;#8221;,&amp;#8221;feed&amp;#8221;:{&amp;#8220;xmlns&amp;#8221;:&amp;#8221;http://www.w3.org/2005/Atom&amp;#8221;,&amp;#8221;xmlns$media&amp;#8221;:&amp;#8221;http://search.yahoo.com/mrss/&amp;#8221;,&amp;#8221;xmlns$openSearch&amp;#8221;:&amp;#8221;http://a9.com/-/spec/opensearch/1.1/&amp;#8221;,&amp;#8221;xmlns$gd&amp;#8221;:&amp;#8221;http://schemas.google.com/g/2005&amp;#8221;,&amp;#8221;xmlns$yt&amp;#8221;:&amp;#8221;http://gdata.youtube.com/schemas/2007&amp;#8221;&amp;#8230;&lt;/p&gt;
&lt;p&gt;How do you navigate a wall of text like that? That&amp;#8217;s not even &lt;a href="http://gdata.youtube.com/feeds/api/users/secretrobotron/uploads?v=2&amp;amp;alt=json"&gt;the whole thing&lt;/a&gt;. It&amp;#8217;s much, much longer, even for a fairly inactive user. Experienced developers tend to use tools provided by browsers or addons which help explore their data, but that can be cumbersome and difficult to understand at first.&lt;/p&gt;
&lt;p&gt;Fortunately, however, JSON data is structured as a tree, and there are certain well-established techniques for visualizing that kind of data interactively. Enter the Tree Map.&lt;/p&gt;
&lt;p&gt;&lt;img alt="treemap!" src="http://upload.wikimedia.org/wikipedia/en/8/85/GradientGroupedTreemap.jpg" width="400"/&gt;&lt;/p&gt;
&lt;p&gt;Tree Maps are designed to display nested data. Regions have sub-regions, which, in turn, have further sub-regions, and so on.&lt;/p&gt;
&lt;p&gt;Freeformers Josh and Max, remixed a &lt;a href="http://d3js.org/"&gt;D3&lt;/a&gt; Tree Map demo to display and navigate through arbitrary JSON data. Their work provided a visceral experience of exploring a nested data set, using interactivity as the dimension through which depth and nesting are discovered.&lt;/p&gt;
&lt;p&gt;Ignoring the timeline at the bottom for a minute, try out the demo: &lt;a href="http://secretrobotron.github.com/d3/"&gt;&lt;a href="http://secretrobotron.github.com/d3/"&gt;http://secretrobotron.github.com/d3/&lt;/a&gt;&lt;/a&gt; . It&amp;#8217;s a good start, illustrating the structure of JSON and implying that data structures aren&amp;#8217;t scary, but can feel rather organic. However, the simple exploratory interactivity of the treemap is where the lesson about JSON structure ends.&lt;/p&gt;
&lt;p&gt;Tom, web service API master hailing from the Netherlands, built a tiny, yet versatile library called &lt;em&gt;gtty&lt;/em&gt; to gather data from the internet (currently, Facebook, YouTube, and SoundCloud) to flow into the D3 visualization. And, it&amp;#8217;s impossible not to notice the Webmaker touch he added to the project. Paths through the structure marked by &amp;#8220;[!]&amp;#8221; lead to various external service applications, like SoundCloud and YouTube players, iframes, images, and links. Not only does this tool show that JSON has a useful, serializable structure, but that JSON is used as a communication medium for many of the services, apps and tools with which today&amp;#8217;s web citizens are familiar.&lt;/p&gt;
&lt;p&gt;With that ideology in mind, placing the Popcorn Maker timeline in the experience seemed natural. This version of the timeline is a further modified fork of the work I began with &lt;a href="http://www.toolness.com/wp/"&gt;Atul&lt;/a&gt; on &lt;a href="http://www.toolness.com/wp/2013/01/building-bridges-between-guis-and-code-with-markup-apis/"&gt;Webmaker Markup API&lt;/a&gt;. Events on the timeline represent pieces of the JSON data, and for each event, Popcorn will navigate the structure from root to destination. Clicking on the &amp;#8220;Create Event&amp;#8221; button will place an event in the timeline corresponding to the current JSON node (e.g. &lt;em&gt;root.youtube.feed&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Freeformers&amp;#8217; newest member, Lewie, worked with us to get the D3 visualization and Popcorn Maker into his carefully crafted, Bootstrap-based design. Crowded around a single computer with minutes to spare at the end of our last day, we all pitched in and managed to get the project working as a cohesive experience.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/494f038dcffa47ed5a0c33b439470320/tumblr_inline_mji8fi7xZo1qz4rgp.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;Given another day or so, it would have been elegant closure to engineer the ability to drag items directly from the JSON visualization into the timeline. But, of course, that&amp;#8217;s left as an exercise to the reader.&lt;/p&gt;
&lt;p&gt;Hopefully, playing with the tool is a catalyst for learning about the growing ecosystem of public APIs on the web, and how, at a fundamental level, technologies are often meant to play nicely together. That&amp;#8217;s the way the web is meant to be.&lt;/p&gt;</description><link>http://secretrobotron.tumblr.com/post/45106670144</link><guid>http://secretrobotron.tumblr.com/post/45106670144</guid><pubDate>Mon, 11 Mar 2013 08:55:00 -0400</pubDate><category>mozilla</category><category>webmaker</category><category>freeformers</category></item><item><title>atavus:

Hong Yi - Portrait of Aung San Suu Kyi, 2013
Read more...</title><description>&lt;img src="http://25.media.tumblr.com/d98e3bb1089f2d33e42940a4f8cde4d2/tumblr_mishieNExV1r87i11o1_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/8a3f60829f89b5426a3e255470fb7b30/tumblr_mishieNExV1r87i11o2_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/c0af8f120201278e850337fe35460746/tumblr_mishieNExV1r87i11o3_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/3ff47a776cc654d0242e8110bfb6e7da/tumblr_mishieNExV1r87i11o4_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/6965d5bfbd8e4ea3eff68c9c79e2c972/tumblr_mishieNExV1r87i11o5_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/84a01f2b180ada4b966e08e107bba85e/tumblr_mishieNExV1r87i11o6_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;p&gt;&lt;a class="tumblr_blog" href="http://atavus.tumblr.com/post/43995695838/hong-yi-portrait-of-aung-san-suu-kyi-2013-read"&gt;atavus&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://www.redhongyi.com/"&gt;Hong Yi&lt;/a&gt; - &lt;em&gt;Portrait of Aung San Suu Kyi&lt;/em&gt;, 2013&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Read more at [&lt;a href="http://www.mymodernmet.com/profiles/blogs/hong-yi-red-aung-san-suu-kyi-portrait"&gt;My Modern Met&lt;/a&gt;]&lt;/small&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://secretrobotron.tumblr.com/post/44092223961</link><guid>http://secretrobotron.tumblr.com/post/44092223961</guid><pubDate>Tue, 26 Feb 2013 17:54:48 -0500</pubDate></item><item><title>Forward Thinking: Scriptable Webmaker Tools</title><description>&lt;p&gt;Recently, &lt;a href="http://brettgaylor.tumblr.com/post/37717293716/three-content-types-for-webmaker"&gt;Brett Gaylor wrote about the prospective future of Webmaker&lt;/a&gt; in 2013, discussing the topic of &amp;#8220;Content Types&amp;#8221;. Using a promotional video from the days of black-and-white GUIs, he drew an analogy between &lt;a href="http://en.wikipedia.org/wiki/HyperCard"&gt;HyperCard&lt;/a&gt; and Webmaker ideology. The idea isn&amp;#8217;t new &amp;#8212; in fact, &lt;a href="http://www.benmoskowitz.com/?p=385"&gt;Ben Moskowitz had written previously about his own inspiration&lt;/a&gt; stemming from software like HyperCard and ResEdit. But Brett&amp;#8217;s video really drove home the point for me.&lt;/p&gt;
&lt;p&gt;While developing all-encompassing UI&amp;#8217;s for tools is ideal, it&amp;#8217;s also very hard. However, giving users the ability to script in the context of a tool alleviates much of the pain in designing the ultimate extensive UI. Moreover, it incrementally teaches the user the memes which stir around the tool and how to use them expressively to become super-users.&lt;/p&gt;
&lt;p&gt;Naturally, I started hacking away at a prototype of this type of functionality in Popcorn Maker.&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;
&lt;p&gt;Originally, one of the goals of Popcorn Maker was to show the user the Popcorn code being built for them with the tool. At every turn, the user should be able to open the hood and look at how their project&amp;#8217;s code changed to deliver what they see. Over the course of last year though, as Popcorn Maker really grew legs, that idea was supplanted by other inexorable demands more central to the comprehensive functionality of a web app &amp;#8212; all the things usually neglected at the beginning of a fast-paced project born from a prototype, like dependency loaders, layout systems, build environments, sane architecture, bugs, bugs&lt;strong&gt;, and bugs&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Instead, Popcorn Maker boasts with a pretty versatile UI system. It&amp;#8217;s not too hard on the eyes either. But, after a bit of regular usage, it&amp;#8217;s easy to see where digging your hands into a script is sometimes preferable &amp;#8212; especially for an experienced programmer.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/b373cdb54b461f5fbca8eabaf5ec9cc8/tumblr_inline_mfcibul6tp1qed8nn.png"/&gt;&lt;/p&gt;
&lt;p&gt;For example, using the plugins that ship with &lt;a href="http://popcorn.webmaker.org/"&gt;Popcorn Maker&lt;/a&gt;, the timeline has exactly one control flow. In other words, there&amp;#8217;s no way for decisions expressed by the user to affect the content of the presentation itself.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/04cfaae1c75d29819c46c9377477664e/tumblr_inline_mfcm14n3vY1qed8nn.png"/&gt;&lt;/p&gt;
&lt;p&gt;They can use the play/pause button, click on images and links, skip around the video, but the video still lacks the elegance of interactivity that can be attained with a bit of customization.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/353cdd06c6654c9b7ef1bdb79bcc5d99/tumblr_inline_mfcjzwY8Q21qed8nn.png"/&gt;&lt;/p&gt;
&lt;p&gt;If I want to prepare a Popcorn Maker project that will show content contingent upon the number of prior visits by the user the project&amp;#8217;s content needs to be somewhat intelligent. That sort of functionality could be built directly into the plugins, but it&amp;#8217;s hard for plugin designers to define everything that should or should not be possible, and present some configuration options to help.&lt;/p&gt;
&lt;p&gt;Still, using an expressive UI is favourable over writing everything out by hand, so meeting somewhere in the middle is best. And, of course, this idea has pervaded software even earlier than Hypercard. From Adobe&amp;#8217;s creative product suite to modern game engines, there is a distinct and purposeful line between the parts of software architecture that are meant to be malleable, and the relatively steadfast parts that support them. Nobody wants to write NPC scripts in C++, nor is anybody looking to write pixel shaders with &lt;a href="http://en.wikipedia.org/wiki/Haskell_%28programming_language%29"&gt;Haskell&lt;/a&gt;. Large projects provide several important vectors for contribution at different levels, and depending on the piece of the project or the type of work, a user or contributor must choose which is most appropriate (or is forced to through architectural decisions).&lt;/p&gt;
&lt;p&gt;However, with the advent of intrinsically open, dynamic languages like JavaScript, there needn&amp;#8217;t be such a stark divide between code that is meant to run the app itself and code that is meant to run &lt;em&gt;inside of&lt;/em&gt; or &lt;em&gt;with&lt;/em&gt; the app. Many other projects have similar thinking behind them, and while still being subject to a compilation process, even &lt;a href="http://processingjs.org/"&gt;Processing.js &lt;/a&gt;sketches are &lt;em&gt;almost&lt;/em&gt; JavaScript. A scripting interface for Popcorn Maker would be free of prior language restrictions though, so user-generated scripts that run inside of Popcorn Maker can simply be JavaScript! By extension, learning to script inside of Popcorn Maker will teach the user JavaScript. And scope restrictions are likely more helpful than not, giving the user a small box to think about, and forcing them to be creative when they want something more.&lt;/p&gt;
&lt;p&gt;To test all of this thinking in a prototype, I &lt;a href="https://github.com/secretrobotron/butter/tree/butter-script"&gt;created a branch of Popcorn Maker&lt;/a&gt; with a rudimentary scripting environment for the Text and Image plugins.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/17afdd632da008f46833b21bb0b1f180/tumblr_inline_mfcnskg0IR1qed8nn.png"/&gt;&lt;/p&gt;
&lt;p&gt;The Text and Image editors have a &amp;#8220;Scripts&amp;#8221; tab which exposes some opportunities for the user to add some extra customization or flexibility. For now, scripts are chained to specific events, like &amp;#8220;onStart&amp;#8221; and &amp;#8220;onEnd&amp;#8221; which are executed during the respective &amp;#8220;start&amp;#8221; function and the &amp;#8220;end&amp;#8221; functions of the plugins.&lt;/p&gt;
&lt;p&gt;Now, if I want to add some programmatic difference to a specific track event without touching the plugin implementation, I can simply add some JavaScript to the provided &lt;a href="http://codemirror.net/"&gt;CodeMirror&lt;/a&gt; textbox. Notice the mention of keywords like &amp;#8220;event&amp;#8221; and &amp;#8220;popcorn&amp;#8221;, which would not normally be accessible to globally-scoped scripts. These scripts are wrapped in a special scope providing convenient access to certain objects like Butter (&lt;strong&gt;butter&lt;/strong&gt;), the current track event (&lt;strong&gt;event&lt;/strong&gt;), and Popcorn (&lt;strong&gt;popcorn&lt;/strong&gt;). Since this is just plain JavaScript that the browser is running, I can even use the DOM event system to attach an &lt;strong&gt;onclick&lt;/strong&gt; listener to move the scrubber to 5 seconds when the user clicks on the track event&amp;#8217;s target. (&lt;em&gt;If you&amp;#8217;re familiar with older versions of Macromedia Flash, this will seem natural.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Scripting of this sort doesn&amp;#8217;t only benefit Popcorn Maker&amp;#8217;s users. Developers at all tiers often enjoy the opportunity to talk to the app at a higher level when implementing features. In the same branch, I made some potential improvements to the layout system by applying the idea of a mixin. In Popcorn Maker&amp;#8217;s layout system mixins can be used to describe a piece of UI that the developer doesn&amp;#8217;t need or want to know everything about. As an example, here&amp;#8217;s the text editor rewritten with &amp;#8220;buttermixin&amp;#8221;s.&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p&gt;&amp;lt;buttermixin type=&amp;#8221;editor&amp;#8221; editor-classes=&amp;#8221;default-editor&amp;#8221;&amp;gt;&lt;br/&gt;  &amp;lt;h1&amp;gt;Text Editor&amp;lt;/h1&amp;gt;&lt;br/&gt;  &amp;lt;buttermixin type=&amp;#8221;editor-tabs&amp;#8221;&amp;gt;&lt;br/&gt;    &amp;lt;buttermixin type=&amp;#8221;editor-tab-item&amp;#8221; tab-classes=&amp;#8221;basic-tab butter-active&amp;#8221;&amp;gt;Basic&amp;lt;/buttermixin&amp;gt;&lt;br/&gt;    &amp;lt;buttermixin type=&amp;#8221;editor-tab-item&amp;#8221; tab-classes=&amp;#8221;advanced-tab&amp;#8221;&amp;gt;Advanced&amp;lt;/buttermixin&amp;gt;&lt;br/&gt;    &amp;lt;buttermixin type=&amp;#8221;editor-tab-item&amp;#8221; tab-classes=&amp;#8221;scripts-tab&amp;#8221;&amp;gt;Scripts&amp;lt;/buttermixin&amp;gt;&lt;br/&gt;  &amp;lt;/buttermixin&amp;gt;&lt;br/&gt;  &amp;lt;buttermixin type=&amp;#8221;editor-body&amp;#8221; body-classes=&amp;#8221;butter-tabs-spacing&amp;#8221;&amp;gt;&lt;br/&gt;    &amp;lt;buttermixin type=&amp;#8221;editor-body-content-container&amp;#8221;&amp;gt;&amp;lt;/buttermixin&amp;gt;&lt;br/&gt;    &amp;lt;buttermixin type=&amp;#8221;editor-body-content-container&amp;#8221; classes=&amp;#8221;advanced-options display-off&amp;#8221;&amp;gt;&amp;lt;/buttermixin&amp;gt;&lt;br/&gt;    &amp;lt;buttermixin type=&amp;#8221;editor-body-content-container&amp;#8221; classes=&amp;#8221;scripts display-off&amp;#8221;&amp;gt;&amp;lt;/buttermixin&amp;gt;&lt;br/&gt;  &amp;lt;/buttermixin&amp;gt;&lt;br/&gt;&amp;lt;/buttermixin&amp;gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;When Popcorn Maker starts, this code is exploded into another piece of HTML incorporating predefined UI widgets. Instead of needing to know how to structure the DOM for an entire editor, one &amp;lt;buttermixin type=&amp;#8221;editor&amp;#8221;&amp;gt;&amp;lt;/buttermixin&amp;gt; will create most of the important parts that Popcorn Maker expects in order to display an editor correctly within the app. With features like this one, prototyping is far simpler because the time to look up specific CSS properties and DOM structure is reduced, and mistakes are mitigated since forgetful boilerplate syntax is inserted automatically.&lt;/p&gt;
&lt;p&gt;The app needs advancements like these to continue to grow while maintaining easy access points for developers and designers. Using a real templating system may still be a better approach, but this was an interesting experiment in continuing to use as much native HTML and JavaScript as possible in Popcorn Maker.&lt;/p&gt;
&lt;p&gt;I love being able to exploit flexible systems like the ones available through browser technology to implement architectural features. The benefits are often felt throughout the code base and its developers. I&amp;#8217;ve only begun to carve away at the landscape of high-level scripting techniques available to web apps like Popcorn Maker. When I&amp;#8217;ve got a more punchy example (perhaps a screencast) of these features, I&amp;#8217;ll certainly put it up.&lt;/p&gt;</description><link>http://secretrobotron.tumblr.com/post/38413301622</link><guid>http://secretrobotron.tumblr.com/post/38413301622</guid><pubDate>Thu, 20 Dec 2012 17:32:00 -0500</pubDate><category>mozilla</category><category>butter</category><category>popcorn maker</category><category>webmaker</category><category>scripting</category><category>hypercard</category></item><item><title>Webmaker in 2013: Collaborative Tools - Popcorn Maker</title><description>&lt;p&gt;&lt;iframe frameborder="0" height="360" src="http://www.youtube.com/embed/Mf73zjnl7gE#t=1205" width="480"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;Yesterday, &lt;a href="http://jessicaklein.blogspot.ca/" title="Jess Klein" target="_blank"&gt;Jess Klein&lt;/a&gt; and I demonstrated the power of modern web technology as a medium for prototyping ideas with the result of a 48-hour design sprint on ideas for next year&amp;#8217;s Mozilla Webmaker offering. After some discussions with Jess and &lt;a href="http://dribbble.com/chris_appleton" title="Chris Appleton" target="_blank"&gt;Chris Appleton&lt;/a&gt; &amp;#8212; following work Jess and &lt;a href="http://brettgaylor.tumblr.com/" title="Brett Gaylor"&gt;Brett Gaylor&lt;/a&gt; had done previously &amp;#8212; I spent Monday putting together a branch of Popcorn Maker which prototypes &lt;strong&gt;collaboration&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;For a more complete overview of the project and the ideas behind it, head over to &lt;a href="http://jessicaklein.blogspot.ca/2012/12/evolving-webmaker-in-2013.html"&gt;Jess&amp;#8217;s blog&lt;/a&gt;. She&amp;#8217;s written a good explanation of the potential workflow for Webmaker.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/secretrobotron/butter/tree/webmaker" title="https://github.com/secretrobotron/butter/tree/webmaker"&gt;&lt;a href="https://github.com/secretrobotron/butter/tree/webmaker"&gt;https://github.com/secretrobotron/butter/tree/webmaker&lt;/a&gt;&lt;/a&gt; is a branch of Popcorn Maker which uses WebSockets (via &lt;a href="http://socket.io/" title="http://socket.io/"&gt;socket.io&lt;/a&gt;) to connect multiple participants to a Popcorn Maker &lt;strong&gt;session.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A &lt;strong&gt;session&lt;/strong&gt; consists of a host and one or more collaborators, where collaborators are invited by the host from within Popcorn Maker. Perhaps the user would like a second opinion on text placement on the timeline, or simply needs help learning how the timeline works. They can invite a friend to their session accomplish what they need.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/d85a2d4760bcfbff514d149b15c2d7b4/tumblr_inline_mf91nwO1nl1qed8nn.gif"/&gt;&lt;/p&gt;
&lt;p&gt;Once a friend has joined the session, a chat window is active, enabling session-specific banter to take place. With this feature present, Popcorn Maker passes the obligatory &amp;#8220;chat functionality in a websocket app&amp;#8221; test.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/cfc5041649aba2f85c06b938325e2bd5/tumblr_inline_mf92s4w3v11qed8nn.gif"/&gt;&lt;/p&gt;
&lt;p&gt;Chatting about a project is somewhat useful, but we sought to deliver a more visceral collaborative learning experience. The host should be able to ask collaborators to help them use the application directly &amp;#8212; not just talk about it. So, what does it mean for collaborator to move a track event in Popcorn Maker? Does Popcorn Maker react as Google Drive (formerly Google Docs) does, letting any qualified user manipulate content without permission? Or, is there perhaps an opportunity to let the host learn something by showing them how a collaborator interacted with the software? I chose to implement a form of the latter.&lt;/p&gt;
&lt;p&gt;If the host manipulates aspects of the project, collaborators in the session see the same results immediately.&lt;/p&gt;
&lt;p&gt;&lt;iframe frameborder="0" height="360" src="http://www.youtube.com/embed/nzuFCu_kK-A" width="640"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;However, if a collaborator makes a change, the host is notified.&lt;/p&gt;
&lt;p&gt;&lt;iframe frameborder="0" height="360" src="http://www.youtube.com/embed/Y3PRa5QD9f0" width="640"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;Then, the host is able to choose from a list of potentials for the track event that the collaborator changed.&lt;/p&gt;
&lt;p&gt;&lt;iframe frameborder="0" height="360" src="http://www.youtube.com/embed/SJgsD2ncalY" width="480"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;The actions in this example are simple and limited, but the concept it exemplifies and the subsequent ideas about high-level collaboration it offers are interesting.&lt;/p&gt;
&lt;p&gt;All the video content in this post is captured from live demos, so there is working code to support collaboration in a branch Popcorn Maker. However, it took a considerable effort to coerce the app to do my bidding. &lt;a href="http://vocamus.net/dave/" title="David Humphrey"&gt;David Humphrey&lt;/a&gt; and I have already begun to discuss how Popcorn Maker&amp;#8217;s code-base could benefit from a &lt;a href="http://en.wikipedia.org/wiki/Command_pattern"&gt;Command design pattern&lt;/a&gt;, encapsulating important actions available to the user as atomic units of functionality (great for implementing redo/undo, which &lt;a href="http://scottdowne.wordpress.com/"&gt;Scott Downe&lt;/a&gt; and &lt;a href="http://mbuttu.wordpress.com/"&gt;Mohammed Buttu&lt;/a&gt; have already started). I imagine that we&amp;#8217;ll have to invent a hybrid system to do exactly what we need, and likely employ a model in which the app&amp;#8217;s user is an implementation of an &amp;#8220;actor&amp;#8221;, abstracting interactions with the app&amp;#8217;s core. Then, commands can be carried out by an actor, and most of Popcorn Maker needn&amp;#8217;t care whether that actor is being controlled by someone sitting right at the computer, a user at the other end of a network connection, or even a script that was designed to give a tutorial.&lt;/p&gt;
&lt;p&gt;Lots of exciting work to do in 2013.&lt;/p&gt;</description><link>http://secretrobotron.tumblr.com/post/38324727650</link><guid>http://secretrobotron.tumblr.com/post/38324727650</guid><pubDate>Wed, 19 Dec 2012 15:45:00 -0500</pubDate><category>butter</category><category>mozilla</category><category>popcorn maker</category><category>webmaker</category><category>collaboration</category></item><item><title>atavus:

Sylvain Meyer - Land Art
</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_me7uyyDVIq1r87i11o1_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/tumblr_me7uyyDVIq1r87i11o2_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/tumblr_me7uyyDVIq1r87i11o3_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/tumblr_me7uyyDVIq1r87i11o4_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;p&gt;&lt;a class="tumblr_blog" href="http://atavus.co/post/36757937975/sylvain-meyer-land-art"&gt;atavus&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/people/gambastyle/"&gt;Sylvain Meyer&lt;/a&gt; - &lt;em&gt;Land Art&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://secretrobotron.tumblr.com/post/36811351996</link><guid>http://secretrobotron.tumblr.com/post/36811351996</guid><pubDate>Thu, 29 Nov 2012 10:29:13 -0500</pubDate></item><item><title>It’s the kind of morning where your girlfriend explodes...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lpx77unvqv1qfuplto1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;It’s the kind of morning where your girlfriend explodes her makeup all over the floor. On purpose.&lt;/p&gt;</description><link>http://secretrobotron.tumblr.com/post/8906324424</link><guid>http://secretrobotron.tumblr.com/post/8906324424</guid><pubDate>Sun, 14 Aug 2011 09:38:18 -0400</pubDate><category>makeup</category><category>explode</category></item><item><title>Caffeine Monster Software blog: Nintendo's Portable Problem</title><description>&lt;a href="http://caffeinemonster.tumblr.com/post/8505474654"&gt;Caffeine Monster Software blog: Nintendo's Portable Problem&lt;/a&gt;: &lt;p&gt;&lt;a href="http://caffeinemonster.tumblr.com/post/8505474654"&gt;caffeinemonster&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Last week, Nintendo admitted that sales of the 3DS weren’t living up to their expectations, and outlined the steps they are taking to revitalize the platform. They plan to start with a price-cut later this month, and follow through with a strong lineup of games into the holiday season.&lt;/p&gt;
&lt;p&gt;In a…&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://secretrobotron.tumblr.com/post/8523312796</link><guid>http://secretrobotron.tumblr.com/post/8523312796</guid><pubDate>Fri, 05 Aug 2011 15:13:14 -0400</pubDate></item><item><title>Learning how to use blender 2.5…</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lolklyhqWR1qfuplto1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Learning how to use blender 2.5…&lt;/p&gt;</description><link>http://secretrobotron.tumblr.com/post/7814184273</link><guid>http://secretrobotron.tumblr.com/post/7814184273</guid><pubDate>Tue, 19 Jul 2011 16:22:46 -0400</pubDate><category>blender</category><category>rendering</category><category>3d</category><category>mozilla</category></item><item><title>Welcoming Leucocoprinus birnbaumii to our garden! Saw fit to...</title><description>&lt;img src="http://25.media.tumblr.com/1e4fa70a3edcfff94e1a597ca7cc8e51/tumblr_lo2me6HkEz1qfuplto1_r1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Welcoming Leucocoprinus birnbaumii to our garden! Saw fit to invite himself here…&lt;/p&gt;</description><link>http://secretrobotron.tumblr.com/post/7418965804</link><guid>http://secretrobotron.tumblr.com/post/7418965804</guid><pubDate>Sat, 09 Jul 2011 10:46:00 -0400</pubDate><category>mushrooms</category><category>garden</category></item><item><title>I’d certainly never seen the pit of a mango before today,...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lnj0oiisbv1qfuplto1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;I’d certainly never seen the pit of a mango before today, and thought it was exciting enough to share. My secret: VERY SHARP KNIVES.&lt;/p&gt;</description><link>http://secretrobotron.tumblr.com/post/7026876241</link><guid>http://secretrobotron.tumblr.com/post/7026876241</guid><pubDate>Tue, 28 Jun 2011 20:43:30 -0400</pubDate><category>mango</category><category>knives</category></item><item><title>While there are some very obvious pitfalls, the CubicVR.js...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lmfd7iZwa21qfuplto1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;While there are some &lt;strong&gt;very obvious&lt;/strong&gt; pitfalls, the CubicVR.js editor is coming along extremely well, as you can see. ccliffe added some great mouse movement features which let you edit on a unfixed axis.&lt;/p&gt;
&lt;p&gt;It still needs a load/save/import/export feature, better object creation/editing details (like the ability to add children to an existing scene object, or add geometry to a mesh), and some more camera controls.&lt;/p&gt;
&lt;p&gt;For now, enjoy the most standard (yet impressive) features of CubicVR.js which were most easily exploitable; gotta love those alpha layers and the bump textures on those cubes.&lt;/p&gt;</description><link>http://secretrobotron.tumblr.com/post/6285088251</link><guid>http://secretrobotron.tumblr.com/post/6285088251</guid><pubDate>Tue, 07 Jun 2011 10:50:07 -0400</pubDate><category>CubicVR.js,</category><category>JavaScript,</category><category>3D</category><category>HTML5</category><category>WebGL</category><category>editor</category><category>WYSIWYG</category></item><item><title>Sunday Hackin': CubicVR.js Scene Editor</title><description>&lt;p&gt;Sunday is arguably the best day for catching up with your hobbies. I went out for a beautiful stroll down the quay, practiced some Japanese, and got a bunch of good hacking done. It&amp;#8217;s amazing how being relaxed can make you so much more productive.&lt;/p&gt;
&lt;p&gt;Anyway, to the topic: CubicVR.js. This 3D engine is growing features like branches on a tree on tree-steroids. Last week, I decided to start work on another that will, with the right amount of work, usurp Blender as the primary means by which one can easily develop scenes for CubicVR.js in a WYSIWYG fashion.&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;
&lt;p&gt;The work is rather rough at the moment, but it&amp;#8217;s growing steadily, and I can already see where it needs some serious cleanup: &lt;a href="https://github.com/cjcliffe/CubicVR.js/tree/editor"&gt;&lt;a href="https://github.com/cjcliffe/CubicVR.js/tree/editor"&gt;https://github.com/cjcliffe/CubicVR.js/tree/editor&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Right now, it&amp;#8217;s got some sloppy keyboard/mouse bindings which Blender was gracious enough to let me borrow. So, if you&amp;#8217;re brave, give it a shot and let me know what you think. More blogs to come.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/tumblr_lmcbv3Dx1q1qed8nn.png"/&gt;&lt;/p&gt;</description><link>http://secretrobotron.tumblr.com/post/6229744123</link><guid>http://secretrobotron.tumblr.com/post/6229744123</guid><pubDate>Sun, 05 Jun 2011 19:29:00 -0400</pubDate><category>cubicvr.js</category><category>javascript</category><category>editors</category><category>blender</category><category>3D</category></item><item><title>monday:

Steamed length to sleeves. Ends all mostly weaved in....</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lk45caNO3z1qz4twqo1_r1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://monday.tumblr.com/post/4868103529"&gt;monday&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Steamed length to sleeves. Ends all mostly weaved in. Underarm gaps sewn shut. Blocking done. Center heart duplicate stitched to add depth.&lt;/p&gt;
&lt;p&gt;Total time to knit: 10 days.&lt;/p&gt;
&lt;p&gt;Now let us never speak of this again.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://secretrobotron.tumblr.com/post/5432185330</link><guid>http://secretrobotron.tumblr.com/post/5432185330</guid><pubDate>Thu, 12 May 2011 18:38:41 -0400</pubDate></item><item><title>oxane:

Fired
YONIL.com
</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lkkpui9HMI1qdj0hbo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://oxane.tumblr.com/post/5133036741"&gt;oxane&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a title="Fired" href="http://www.flickr.com/photos/yonilcom/5190021850/"&gt;Fired&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.flickr.com/photos/yonilcom/"&gt;YONIL.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://secretrobotron.tumblr.com/post/5133726040</link><guid>http://secretrobotron.tumblr.com/post/5133726040</guid><pubDate>Mon, 02 May 2011 11:45:51 -0400</pubDate></item><item><title>ordovicianfauna:

Tube, by Ara Peterson, 2008 (laser cut birch...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lkjqbsDiNd1qc518ko1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://ordovicianfauna.tumblr.com/post/5120373054"&gt;ordovicianfauna&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Tube&lt;/em&gt;, by &lt;a href="http://www.arapeterson.com/"&gt;Ara Peterson&lt;/a&gt;, 2008 (laser cut birch wood and acrylic paint, mirror)&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://secretrobotron.tumblr.com/post/5133716593</link><guid>http://secretrobotron.tumblr.com/post/5133716593</guid><pubDate>Mon, 02 May 2011 11:45:16 -0400</pubDate></item><item><title>Finally: gphotofs. Fuse saves the day again.</title><description>&lt;p&gt;I always wondered how GNOME just sort of finds my camera and automagically &amp;#8216;mounts&amp;#8217; it. Now, I know how.&lt;/p&gt;
&lt;p&gt;My girlfriend asked me to take some photos of her today (nothing scandalous) so that she can get a student photo ID. Obviously, I grab my DSLR and take some photos, but that&amp;#8217;s really only 3% of the battle.&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately, the rest of the battle happens to be, unsurprisingly, dealing with linux. Isn&amp;#8217;t that always the case? Usually, you slap in a a usb stick, SD card, or whathaveyou, dmesg it, and just find the device to mount. But, in the camera world, things are still somewhat archaic in that sense. Some piece of software has to read the USB device directly (e.g. gtkam, GIMP, etc.). This isn&amp;#8217;t surprising, seeing as how device drivers work like this anyway, but I thought there was at least a more standard way to do it.&lt;/p&gt;
&lt;p&gt;But, today, I was extra curious, and thought it impossible that there wasn&amp;#8217;t a fuse package that would solve this situation for me. After all, I really just want to mount my camera, like I do everything else in linux. I don&amp;#8217;t want to have to open some mess of GTK widgets.&lt;/p&gt;
&lt;p&gt;Enter &lt;strong&gt;gphotofs&lt;/strong&gt;. Hilariously, the Arch AUR package comes with literally no explanation (no man page), and the &amp;#8212;help description is almost useless. A quick search on google lead me here: &lt;a href="http://www.gphoto.org/doc/manual/using-gphotofs.html"&gt;&lt;a href="http://www.gphoto.org/doc/manual/using-gphotofs.html"&gt;http://www.gphoto.org/doc/manual/using-gphotofs.html&lt;/a&gt;&lt;/a&gt;. As you can see, it&amp;#8217;s very helpful:&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;
&lt;p&gt;FIXME: We need to write this section&lt;/p&gt;
&lt;p&gt;&lt;code class="systemitem"&gt;gphotofs&lt;/code&gt; is a libgphoto2 frontend which acts as user space filesystem. It is based on FUSE, the Linux user space filesystem.&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thanks.&lt;/p&gt;
&lt;p&gt;For whatever reason, the Ubuntu community has their act together, and the man page is online: &lt;a href="http://manpages.ubuntu.com/manpages/hardy/man1/gphotofs.1.html"&gt;&lt;a href="http://manpages.ubuntu.com/manpages/hardy/man1/gphotofs.1.html"&gt;http://manpages.ubuntu.com/manpages/hardy/man1/gphotofs.1.html&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So, finally, I can simply plug my camera into my beautiful linux machine, enter eighty-four commands, et voila!&lt;/p&gt;
&lt;p&gt;The outcome: cute images.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/tumblr_lke2z5Q6SX1qed8nn.jpg"/&gt;&lt;img alt="image" src="http://media.tumblr.com/tumblr_lke2zdaiz21qed8nn.jpg"/&gt;&lt;img alt="image" src="http://media.tumblr.com/tumblr_lke2zidlAL1qed8nn.jpg"/&gt;&lt;/p&gt;</description><link>http://secretrobotron.tumblr.com/post/5027879354</link><guid>http://secretrobotron.tumblr.com/post/5027879354</guid><pubDate>Thu, 28 Apr 2011 21:07:00 -0400</pubDate><category>gphoto</category><category>gphotofs</category><category>linux</category><category>cute</category><category>dslr</category><category>camera</category></item></channel></rss>
