<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><!-- generator="wordpress/2.0.4" --><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Dubroy.com/blog</title>
	<link>http://dubroy.com/blog</link>
	<description>on programming, usability, and design; by Patrick Dubroy</description>
	<pubDate>Wed, 09 Jul 2008 21:26:27 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/dubroy" type="application/rss+xml" /><item>
		<title>Actually, this IS your father’s text editor</title>
		<link>http://feeds.feedburner.com/~r/dubroy/~3/331130060/</link>
		<comments>http://dubroy.com/blog/2008/07/09/actually-this-is-your-fathers-text-editor/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 21:26:27 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
		
	<dc:subject>usability</dc:subject>
	<dc:subject>programming</dc:subject>
	<dc:subject>hci</dc:subject><dc:subject>hci</dc:subject><dc:subject>programming</dc:subject><dc:subject>text editors</dc:subject><dc:subject>usability</dc:subject>
		<guid isPermaLink="false">http://dubroy.com/blog/2008/07/09/actually-this-is-your-fathers-text-editor/</guid>
		<description><![CDATA[This week, I&#8217;m doing all my coding on a borrowed MacBook. It&#8217;s the most time I&#8217;ve ever spent doing development on a Mac. I&#8217;ve done a bit here and there on my Mac Mini, but usually I just use that for web browsing, downloading episodes of Degrassi High, and such.

Of course I needed a text [...]]]></description>
			<content:encoded><![CDATA[<p>This week, I&#8217;m doing all my coding on a borrowed MacBook. It&#8217;s the most time I&#8217;ve ever spent doing development on a Mac. I&#8217;ve done a bit here and there on my Mac Mini, but usually I just use that for web browsing, downloading episodes of Degrassi High, and such.</p>

<p>Of course I needed a text editor, so I figured I&#8217;d give <a href="http://macromates.com">TextMate</a> a try since it&#8217;s highly recommended by many Mac hackers. My first impression has been good. It&#8217;s a got a nice, simple, no-frills interface, some slick built-in themes (Espresso Libre ftw!), and the bundles come in pretty handy.</p>

<p>I&#8217;ve found a few small things that have thrown off my rhythm though. The regular find command (&#8984;-F) doesn&#8217;t do an incremental search, and hitting Enter again doesn&#8217;t bring up the next match. Yes, I know about Ctrl-S, but geez, I gave up Emacs like <em>eons</em> ago, and I&#8217;m just <em>so</em> used to typing Ctrl-F (on Windows) or &#8984;-F (on the Mac) to search. And I want it to work that way in <em>every</em> application. </p>

<p>Another thing that I miss is the way the Home and End keys work on Windows: they move the cursor to the beginning and end of the line. On the Mac, they take you to the beginning and end of the file, which you can also do on Windows by hitting Ctrl-Home and Ctrl-End. I really miss the Windows behaviour, because it&#8217;s my favourite way to nuke a line or a whole section of code: whack Home, then hold down Shift and use the arrow keys to select the lines you want to kill.</p>

<p>Anyways, the point of this post is not to complain about TextMate, because it is a fine piece of software, and I&#8217;m sure it won&#8217;t take long for me to adapt. But this experience got me thinking about the whole experience of programming in a text editor, and made me realize that this hasn&#8217;t really changed much in 30 years.</p>

<h2>Where&#8217;s the innovation?</h2>

<p>In 2008, on almost every operating system, your choices for a text editor are roughly the same:</p>

<ul>
<li>vi, the <em>modal</em> editor for UNIX-loving, bearded hackers</li>
<li>Emacs, the <em>non-modal</em> editor for LISP-loving, bearded hackers</li>
<li>Some kind of <a href="http://en.wikipedia.org/wiki/WIMP_(computing)">WIMP</a>-y editor, for everyone else. Sure, there are plenty of &#8220;choices&#8221; in this category, but it&#8217;s like the choice between Coke, Dr. Pepper, and root beer: they&#8217;re still all sugary, caramel-coloured beverages. TextMate, Eclipse, Visual Studio, Notepad, etc. &#8212; the actual act of <em>editing text</em> is almost exactly the same in all of them. These guys basically work like your standard WYSIWYG word processor, with a few extra features for coding.</li>
</ul>

<p>Now let&#8217;s go back 30 years, to 1978. I wasn&#8217;t <em>breathing</em> 30 years ago, let alone coding, so I had to go to Google for a little history lesson. But as I understand it, here were your choices in 1978:</p>

<ul>
<li>a line editor like <a href="http://en.wikipedia.org/wiki/Ed_(text_editor)">ed</a>, which I&#8217;ve been told was roughly like trying to write with a pen tied to the end of a metre stick</li>
<li>vi, the modal editor for UNIX-loving, bearded hackers</li>
<li>Emacs, the non-modal editor for LISP-loving, bearded hackers</li>
<li>Some kind of WIMP-y editor, if you were lucky enough to be working at Xerox PARC</li>
</ul>

<p>So where&#8217;s the innovation?</p>

<p>At this point, you might be thinking, who cares? Emacs/vi/TextMate is good enough. The thing is, the text editor is still the <strong>primary user interface for coding</strong>. That&#8217;s why some people get so religious about their preference. It just seems weird to me that there have been so few attempts to try something truly new. And I find it hard to believe we reached the pinnacle of programming UIs in 1978.</p>

<h3>A few ideas</h3>

<p>Most editors are just as good for writing a blog post or screenplay as they are for writing code. But the structure of code is completely different. You rarely open up a source file and read it from beginning to end. But most programming environments seemed to be designed for that kind of workflow.</p>

<p>In the end, I think that&#8217;s the real kicker: most programming languages are file-based. For some reason, we seem to be so attached to coding in plain text with 80-character lines. If you drop this assumption, things start to get a bit more interesting. But that only takes us to where Smalltalk IDEs were at in the 80s.</p>

<p>Anyways, most of the dynamic languages aren&#8217;t <em>inherently</em> file-based. By that I mean that it&#8217;s not too difficult to interface with the interpreter without using text files. So that&#8217;s not a good excuse.</p>

<p>Here are a few things I&#8217;d love to experiment with in a programming environment:</p>

<ul>
<li><p>Better support for random access. The structure of code is more like hypertext than it is like a book. </p></li>
<li><p>Richer annotations. Comments take up valuable screen space. It would be nice to be able to have more unobtrusive comments in the code. This would also allow you to do things like have a discussion thread about a section of code, link to other relevant methods, etc. Even something as simple as comments that auto-wrap to the width of the window would be a nice touch.</p></li>
<li><p>Better support for looking at several sections of code at the same time. Some editors (including Emacs) allow you to split the window into several viewports. That&#8217;s a start, but it could be improved upon I think. That reminds me, I&#8217;ve been meaning to try <a href="http://en.wikipedia.org/wiki/Acme_(text_editor)">Acme</a> for a while.</p></li>
<li><p>Tighter integration between the editor and the runtime. One example is having your editor be able to tell you &#8220;every time you&#8217;ve run this method, this variable has been of type X&#8221;. Another example is if your editor visualized code paths &#8212; maybe you could overlay a heat map on top of the source code for profiling purposes</p></li>
<li><p>Explicit support for exploratory programming. When I code in Python, I like to keep an interactive console open, where I can try out little snippets of code. With a bit of tweaking (e.g., not tossing out my entire method when I make a syntax error on the last line), I could see this becoming a primary way to write code.</p></li>
</ul>

<p>What do you guys think? What are your favourite programming editors/environments, and why? Any other ideas about how programming UIs could be shaken up?</p>
<img src="http://feeds.feedburner.com/~r/dubroy/~4/331130060" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRSS>http://dubroy.com/blog/2008/07/09/actually-this-is-your-fathers-text-editor/feed/</wfw:commentRSS>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=dubroy&amp;itemurl=http%3A%2F%2Fdubroy.com%2Fblog%2F2008%2F07%2F09%2Factually-this-is-your-fathers-text-editor%2F</feedburner:awareness><feedburner:origLink>http://dubroy.com/blog/2008/07/09/actually-this-is-your-fathers-text-editor/</feedburner:origLink></item>
		<item>
		<title>The future of tabbed browsing</title>
		<link>http://feeds.feedburner.com/~r/dubroy/~3/319666373/</link>
		<comments>http://dubroy.com/blog/2008/06/25/the-future-of-tabbed-browsing/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 12:11:47 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
		
	<dc:subject>design</dc:subject>
	<dc:subject>usability</dc:subject>
	<dc:subject>hci</dc:subject><dc:subject>design</dc:subject><dc:subject>hci</dc:subject><dc:subject>mozilla firefox</dc:subject><dc:subject>tabbed browsing</dc:subject><dc:subject>tabs</dc:subject><dc:subject>usability</dc:subject>
		<guid isPermaLink="false">http://dubroy.com/blog/2008/06/25/the-future-of-tabbed-browsing/</guid>
		<description><![CDATA[For my master&#8217;s thesis, I&#8217;m looking at how people use multiple windows and tabs to organize their web browsing. I&#8217;m especially interested in tabs. I&#8217;m a pretty heavy tab user myself, and I while I can&#8217;t live without tabs (in today&#8217;s browsers), I also think that tabs introduce some problems of their own.

In my research, [...]]]></description>
			<content:encoded><![CDATA[<p>For my master&#8217;s thesis, I&#8217;m looking at how people use multiple windows and tabs to organize their web browsing. I&#8217;m especially interested in tabs. I&#8217;m a pretty heavy tab user myself, and I while I can&#8217;t live without tabs (in today&#8217;s browsers), I also think that tabs introduce some problems of their own.</p>

<p>In my research, there are two main questions that I&#8217;d like to answer. First, what are the problems that people encounter with tabbed browsing? And second, how <em>exactly</em> do people use tabbed browsing? What strategies do they use, and why? The answers to these questions could guide the future design of web browsers.</p>

<h3>Great minds think alike</h3>

<p>It just so happens that I&#8217;m not the only person interested in this. <a href="http://beltzner.ca/mike/">Mike Beltzner</a> put me in touch with a bunch of people at Mozilla who have been thinking along similar lines, and I thought I&#8217;d point you guys to some of the interesting things they&#8217;ve been posting.</p>

<p>The closest thing to the work I&#8217;m doing is Bryan Clark&#8217;s <a href="http://clarkbw.net/blog/2008/05/20/tabulation/">post about how and why people use tabs</a>. Bryan is working on the UI for Thunderbird, the Mozilla mail client. They&#8217;re interested in understanding the use cases for tabs, in order to support similar use cases in Thunderbird. He&#8217;s collecting his data informally; I&#8217;m hoping to get similar data, but in a more formal way.</p>

<h3>Big changes&#8230;</h3>

<p>On the Humanized blog more than a year ago, Aza Raskin wrote about <a href="http://www.humanized.com/weblog/2007/04/05/firefox_20_tabs_gone_wrong/">the problem with tab scrolling</a>, and <a href="http://humanized.com/weblog/2007/06/19/humanized_puzzler_2_firefox_tabs/">challenged his readers to come up with a better solution</a>. Lots of interesting thoughts in the comments, especially the idea of implimenting &#8220;tabs&#8221; as a single, infinitely long document (perhaps inspired by <a href="http://jef.raskincenter.org">Aza&#8217;s father Jef</a>&#8217;s ideas).</p>

<p>That was last summer; more recently, since he&#8217;s joined Mozilla, Aza&#8217;s been looking at interfaces for mobile browsers. To check out some of the ideas he&#8217;s playing with, check out his post on <a href="http://azarask.in/blog/post/firefox-mobile-concept-video/">Firefox mobile concepts</a>. I really like the idea of implementing tabs in a zooming UI &#8212; it&#8217;s something I&#8217;ve been thinking about for a while.</p>

<h3>&#8230;and smaller changes</h3>

<p>Since he&#8217;s currently focusing on mobile, Aza&#8217;s prototypes are a bit more radical than we&#8217;ll probably ever see in the desktop version of Firefox. But Jenny Boriss and Madhava Enros are looking at both big and small ways to improve the tabbed browsing experience on the desktop. Boriss  starts by listing some of the problems with tabs, and suggests some possible ways to fix the problem: check out her post <a href="http://jboriss.wordpress.com/2008/06/08/improving-tabs/">here</a>. </p>

<p>Inspired by Boriss&#8217; post, Madhava comes at the problem from a different angle, &#8220;crushing it, finally, in something we like to call the pincing crab-claw of good design&#8221;: see <a href="http://madhava.com/egotism/archive/005020.html">here</a>. Boriss <a href="http://jboriss.wordpress.com/2008/06/24/is-visual-navigation-ahead-for-firefox/">follows up with a great post</a>, incorporating some of Madhava&#8217;s ideas, which discusses ways that future versions of Firefox might better support visual navigation. These ideas are a bit more down-to-earth, maybe; it&#8217;s easier to see them being added to a future version of Firefox.</p>

<h3>Coming Soon?</h3>

<p>If you&#8217;re interested in how this will all play out in the next version of Firefox, check out <a href="http://wiki.mozilla.org/Firefox3.1/themes/visual_navigation">this wiki page</a>. Mozilla has assembled a critical mass of talented UI people, and I&#8217;m really interested to see what they come up with in future versions of my favourite browser. If you have any thoughts, I know they&#8217;d love to get your opinion.</p>

<p>As for me, I&#8217;ll be posting some of my own ideas soon, and will hopefully have some empirical data in the next couple of months to back some of these ideas up. Until then, I&#8217;ll keep you posted.</p>
<img src="http://feeds.feedburner.com/~r/dubroy/~4/319666373" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRSS>http://dubroy.com/blog/2008/06/25/the-future-of-tabbed-browsing/feed/</wfw:commentRSS>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=dubroy&amp;itemurl=http%3A%2F%2Fdubroy.com%2Fblog%2F2008%2F06%2F25%2Fthe-future-of-tabbed-browsing%2F</feedburner:awareness><feedburner:origLink>http://dubroy.com/blog/2008/06/25/the-future-of-tabbed-browsing/</feedburner:origLink></item>
		<item>
		<title>Things to check out</title>
		<link>http://feeds.feedburner.com/~r/dubroy/~3/299441421/</link>
		<comments>http://dubroy.com/blog/2008/05/27/things-to-check-out/#comments</comments>
		<pubDate>Tue, 27 May 2008 23:59:30 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
		
	<dc:subject>links</dc:subject><dc:subject>links</dc:subject>
		<guid isPermaLink="false">http://dubroy.com/blog/2008/05/27/things-to-check-out/</guid>
		<description><![CDATA[A roundup of the latest links from del.icio.us/pdubroy:


AJAX Libraries API - Google Code

I was wondering when this was going to happen. Google announces that they are now providing 
hosting and distributing of popular JavaScript libraries. No longer do you have to include the kitchen 
sink in your application. Well, as long as you are willing [...]]]></description>
			<content:encoded><![CDATA[<p>A roundup of the latest links from <a href="http://del.icio.us/pdubroy">del.icio.us/pdubroy</a>:</p>

<ul>
<li><p><a href="http://code.google.com/apis/ajaxlibs/">AJAX Libraries API - Google Code</a></p>

<p>I was wondering when this was going to happen. Google announces that they are now providing 
hosting and distributing of popular JavaScript libraries. No longer do you have to include the kitchen 
sink in your application. Well, as long as you are willing to put your eggs in Google&#8217;s basket.</p></li>
<li><p><a href="http://pyre.third-bit.com/blog/archives/1573.html">Proposal for a new ticketing system for DrProject</a></p>

<p>An interesting idea for bug tracking. Your bug database starts as a simple to-do list, and then you 
add fields as you need them. Only one working on a project? Don&#8217;t need the &#8220;owner&#8221; field. Just starting 
to write the code? Don&#8217;t need the &#8220;release&#8221; field.</p></li>
<li><p><a href="http://tayasui.com/Grape.html">Grape desktop</a></p>

<p>Really cool concept for a desktop interface based on zooming and spatial organization.</p></li>
<li><p><a href="http://beautifulcode.oreillynet.com/2008/01/long_methods_are_natural.php">Long Methods are Natural - Beautiful Code</a></p>

<p>Michael Feathers explains how method length seems to have a power law distribution.</p></li>
<li><p><a href="http://ixda.org/discuss.php?post=28363&amp;search=iTunes+U">Stanford Human-Computer Interaction Seminar - Free on videos iTunes</a></p>

<p>via <a href="http://www.usabilityblog.com">UsabilityBlog</a></p></li>
<li><p><a href="http://factoryjoe.com/blog/2008/05/05/when-location-is-everywhere/">When location is everywhere | FactoryCity</a></p>

<p>How will your web app change when (and not if) your users can easily share their location data?</p></li>
</ul>
<img src="http://feeds.feedburner.com/~r/dubroy/~4/299441421" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRSS>http://dubroy.com/blog/2008/05/27/things-to-check-out/feed/</wfw:commentRSS>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=dubroy&amp;itemurl=http%3A%2F%2Fdubroy.com%2Fblog%2F2008%2F05%2F27%2Fthings-to-check-out%2F</feedburner:awareness><feedburner:origLink>http://dubroy.com/blog/2008/05/27/things-to-check-out/</feedburner:origLink></item>
		<item>
		<title>One fine day at meshU</title>
		<link>http://feeds.feedburner.com/~r/dubroy/~3/294674549/</link>
		<comments>http://dubroy.com/blog/2008/05/20/one-fine-day-at-meshu/#comments</comments>
		<pubDate>Wed, 21 May 2008 01:02:45 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
		
	<dc:subject>design</dc:subject>
	<dc:subject>programming</dc:subject><dc:subject>design</dc:subject><dc:subject>iterative design</dc:subject><dc:subject>maglev</dc:subject><dc:subject>mesh08</dc:subject><dc:subject>meshu</dc:subject><dc:subject>programming</dc:subject><dc:subject>toronto</dc:subject>
		<guid isPermaLink="false">http://dubroy.com/blog/2008/05/20/one-fine-day-at-meshu/</guid>
		<description><![CDATA[I just got back from meshU, a one-day conference focused on design and development for the web. I went on a bit of a whim; the student tickets were only 30 bucks, and there were lots of interesting speakers. Well, it was a good decision &#8212; the three talks I saw were well worth the [...]]]></description>
			<content:encoded><![CDATA[<p>I just got back from <a href="http://www.meshconference.com/meshu/">meshU</a>, a one-day conference focused on design and development for the web. I went on a bit of a whim; the student tickets were only 30 bucks, and there were lots of interesting speakers. Well, it was a good decision &#8212; the three talks I saw were well worth the price.</p>

<p><em>(As an aside, I see that I&#8217;ve been added to Patrick Mueller&#8217;s <a href="http://planet-oti.muellerware.org/">Planet OTI</a> aggregator. OTIers, read on! Today&#8217;s post contains at least two OTI connections.)</em></p>

<h3>Avi Bryant: Turning the Tables: Moving Beyond Relational Storage</h3>

<p>The first talk I attended was by <a href="http://www.avibryant.com/">Avi Bryant</a> of <a href="http://dabbledb.com/">Dabble DB</a> fame. Avi talked about <strike>why</strike> <em>how</em> not to use a RDBMS. There&#8217;s been a lot of interest lately in alternatives to the relational database &#8212; <a href="http://incubator.apache.org/couchdb/">CouchDB</a>, <a href="http://aws.amazon.com/simpledb">Amazon SimpleDB</a>, and <a href="http://labs.google.com/papers/bigtable.html">Google BigTable</a> being the most famous examples.</p>

<p>Avi mentioned that there are two main cases where it&#8217;s advantageous to have something <em>other</em> than a relational database. First, if your dataset is massive, as with Google. In this case, it&#8217;s just not feasible to use a RDMS. The second case is if your dataset is really just many small, independent datasets, in which case it might be simpler and more scalable to use an alternative technique.</p>

<p>At the end of the talk, Avi demoed <a href="http://ruby.gemstone.com/">MagLev</a>, which is a Ruby interpreter built on top of a Smalltalk VM (OTI connection #1). This was <em>really</em> cool, not just because it&#8217;s Ruby running on top of Smalltalk. It was cool because MagLev can transparently persist heap objects to disk, and distribute them to other VMs, either locally or running on other machines. For example, you can define a function in one VM, and then call it from another VM. Wow. As far as I know this was the first time MagLev has been shown in public, but there&#8217;s going to be <a href="http://en.oreilly.com/rails2008/public/schedule/detail/4351">a talk at RailsConf 2008</a>.</p>

<h3>Daniel Burka: Iterative Design Strategies</h3>

<p>The second talk I attended was by <a href="dtb">Daniel Burka</a> (OTIers probably know Daniel&#8217;s brother Peter). Daniel is the lead designer for <a href="http://digg.com">Digg</a> and a co-founder of <a href="http://pownce.com">Pownce</a>. Daniel gave a great talk on iterative design strategies. You can check out the slides <a href="http://www.slideshare.net/dburka/daniel-burka-iterative-design-strategies">here</a>.</p>

<p>It was really interesting to hear some of Daniel&#8217;s stories from Digg. He said that one of the times that they redesigned the comments, they were getting a lot of negative feedback from users. But they also noticed that under the new system, stories were getting more comments than ever before. So although there was a vocal minority who weren&#8217;t happy with the design, it was an overall success. The moral of the story is that you need to look at the implicit feedback as much as the explicit feedback.</p>

<p>Another thing I took away from Daniel&#8217;s talk was that I should read <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FHow-Buildings-Learn-Happens-Theyre%2Fdp%2F0140139966&amp;tag=dubroycomblog-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">How Buildings Learn</a> by Stewart Brand. I&#8217;ve had this recommended to me enough times that I&#8217;ve finally decided to buy it.</p>

<h3>John Resig: Building Interactive Prototypes with jQuery</h3>

<p>John Resig is the creator of <a href="http://jquery.com">jQuery</a>, &#8220;the write less, do more Javascript library&#8221;.
This talk was pretty timely for me. I just started using jQuery a few weeks ago for a Firefox extension that I&#8217;m writing, and I&#8217;m pretty much in love with it. So it was practically guaranteed that I would like this talk, since it was further demonstration of all that is awesome about jQuery. I did learn one new thing from the talk &#8212; I&#8217;d never heard of the <a href="http://www.malsup.com/jquery/form/">jQuery Form Plugin</a> before, and it is really cool as well. </p>

<p>I&#8217;m not sure what more I can say about this one. If you&#8217;re a web developer, or a designer who codes a little, you should seriously check jQuery out.</p>

<hr />

<p>So that was my day. $30 well spent at <a href="http://www.meshconference.com/meshu/">meshU</a>. Thanks to the organizers: <a href="http://www.markevanstech.com/">Mark</a>, <a href="http://www.mathewingram.com/work/">Mathew</a>, <a href="http://www.robhyndman.com">Rob</a>, and <a href="http://stuart.blogware.com/">Stuart</a>.</p>
<img src="http://feeds.feedburner.com/~r/dubroy/~4/294674549" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRSS>http://dubroy.com/blog/2008/05/20/one-fine-day-at-meshu/feed/</wfw:commentRSS>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=dubroy&amp;itemurl=http%3A%2F%2Fdubroy.com%2Fblog%2F2008%2F05%2F20%2Fone-fine-day-at-meshu%2F</feedburner:awareness><feedburner:origLink>http://dubroy.com/blog/2008/05/20/one-fine-day-at-meshu/</feedburner:origLink></item>
		<item>
		<title>Sugar leaves the One Laptop per Child nest</title>
		<link>http://feeds.feedburner.com/~r/dubroy/~3/291891691/</link>
		<comments>http://dubroy.com/blog/2008/05/16/sugar-leaves-the-one-laptop-per-child-nest/#comments</comments>
		<pubDate>Fri, 16 May 2008 20:39:38 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
		
	<dc:subject>usability</dc:subject>
	<dc:subject>hci</dc:subject>
	<dc:subject>olpc</dc:subject><dc:subject>hci</dc:subject><dc:subject>olpc</dc:subject><dc:subject>one laptop per child</dc:subject><dc:subject>sugar</dc:subject><dc:subject>sugar labs</dc:subject><dc:subject>usability</dc:subject>
		<guid isPermaLink="false">http://dubroy.com/blog/2008/05/16/sugar-leaves-the-one-laptop-per-child-nest/</guid>
		<description><![CDATA[

It&#8217;s been an interesting 24 hours for anyone who follows the One Laptop per Child project. Yesterday, OLPC announced that they have teamed up with Microsoft to make Windows XP available on the XO. Then it was announced that Walter Bender, OLPC&#8217;s former president of software and content, is forming a new organization called Sugar [...]]]></description>
			<content:encoded><![CDATA[<p><img id="image212" src="http://dubroy.com/blog/wp-content/uploads/2008/05/sugarlabs.png" alt="Sugar Labs logo" style="float:left; margin-right: 1em;"/></p>

<p>It&#8217;s been an interesting 24 hours for anyone who follows the <a href="http://laptop.org">One Laptop per Child</a> project. Yesterday, OLPC announced that <a href="http://ap.google.com/article/ALeqM5ifBqQ4EB3gbHAm7tMzrIuNlkzrrQD90MHKF80">they have teamed up with Microsoft to make Windows XP available on the XO</a>. Then it was announced that Walter Bender, OLPC&#8217;s former president of software and content, is forming a new organization called <a href="http://wiki.sugarlabs.org/go/Announcing_SugarLabs">Sugar Labs</a> to spearhead development of the Sugar user interface.</p>

<p>This is an interesting development. I started working on OLPC-related projects a few months ago, doing some work on <a href="http://dubroy.com/blog/2008/04/17/xotablet/">the user interface for the built-in graphics tablet</a>. Back in January, I wrote about <a href="http://dubroy.com/blog/2008/01/10/the-innovative-interface-of-the-olpc-laptop/">how cool I think the Sugar UI is</a>. I really hope that Sugar can gain some momentum on its own, instead of constantly being overshadowed by the political and ethical issues of the One Laptop per Child project as a whole.</p>

<p>I&#8217;ve been thinking about buying myself some kind of ultra-portable laptop, and since I find it almost impossible to type on the XO keyboard, I&#8217;m currently eying the <a href="http://eeepc.asus.com/global/">Asus Eee PC</a>. I don&#8217;t think it makes sense to use a conventional desktop environment on that kind of machine, and I think that the current Sugar UI is a really promising alternative. Now that Sugar is being developed separately from the OLPC project, it will be interesting to see if it can develop into a useful general-purpose desktop shell.</p>
<img src="http://feeds.feedburner.com/~r/dubroy/~4/291891691" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRSS>http://dubroy.com/blog/2008/05/16/sugar-leaves-the-one-laptop-per-child-nest/feed/</wfw:commentRSS>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=dubroy&amp;itemurl=http%3A%2F%2Fdubroy.com%2Fblog%2F2008%2F05%2F16%2Fsugar-leaves-the-one-laptop-per-child-nest%2F</feedburner:awareness><feedburner:origLink>http://dubroy.com/blog/2008/05/16/sugar-leaves-the-one-laptop-per-child-nest/</feedburner:origLink></item>
		<item>
		<title>This is my brain on Twitter</title>
		<link>http://feeds.feedburner.com/~r/dubroy/~3/285566203/</link>
		<comments>http://dubroy.com/blog/2008/05/07/this-is-my-brain-on-twitter/#comments</comments>
		<pubDate>Wed, 07 May 2008 18:45:39 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
		
	<dc:subject>meta</dc:subject><dc:subject>del.icio.us</dc:subject><dc:subject>meta</dc:subject><dc:subject>narcissism</dc:subject><dc:subject>twitter</dc:subject>
		<guid isPermaLink="false">http://dubroy.com/blog/2008/05/07/this-is-my-brain-on-twitter/</guid>
		<description><![CDATA[In case you just can&#8217;t get enough of me on this blog, I&#8217;m pleased to announce the following:

Since all my other plans fell through, I decided to show up to the Twitter party (fashionably late, of course). You can get your Dubroy fix in bite-sized chunks at http://twitter.com/dubroy. Hope to see you there!

And from time [...]]]></description>
			<content:encoded><![CDATA[<p>In case you just can&#8217;t get enough of me on this blog, I&#8217;m pleased to announce the following:</p>

<p>Since all my other plans fell through, I decided to show up to the Twitter party (fashionably late, of course). You can get your Dubroy fix in bite-sized chunks at <a href="http://twitter.com/dubroy">http://twitter.com/dubroy</a>. Hope to see you there!</p>

<p>And from time to time, I bookmark things that strike my fancy at <a href="http://del.icio.us/pdubroy">http://del.icio.us/pdubroy</a>. Most of the links are relevant to this blog, so I try to post a link roundup here every now and then.</p>
<img src="http://feeds.feedburner.com/~r/dubroy/~4/285566203" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRSS>http://dubroy.com/blog/2008/05/07/this-is-my-brain-on-twitter/feed/</wfw:commentRSS>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=dubroy&amp;itemurl=http%3A%2F%2Fdubroy.com%2Fblog%2F2008%2F05%2F07%2Fthis-is-my-brain-on-twitter%2F</feedburner:awareness><feedburner:origLink>http://dubroy.com/blog/2008/05/07/this-is-my-brain-on-twitter/</feedburner:origLink></item>
		<item>
		<title>If this is Object Calisthenics, I think I’ll stay on the couch</title>
		<link>http://feeds.feedburner.com/~r/dubroy/~3/284695878/</link>
		<comments>http://dubroy.com/blog/2008/05/06/if-this-is-object-calisthenics-i-think-ill-stay-on-the-couch/#comments</comments>
		<pubDate>Tue, 06 May 2008 14:56:33 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
		
	<dc:subject>programming</dc:subject><dc:subject>object calisthenics</dc:subject><dc:subject>object oriented</dc:subject><dc:subject>oo</dc:subject><dc:subject>oop</dc:subject><dc:subject>programming</dc:subject>
		<guid isPermaLink="false">http://dubroy.com/blog/2008/05/06/if-this-is-object-calisthenics-i-think-ill-stay-on-the-couch/</guid>
		<description><![CDATA[Via <a href="http://weblog.raganwald.com/">Raganwald</a>, I saw this post by Andrew Birnstock: <a href="http://binstock.blogspot.com/2008/04/perfecting-oos-small-classes-and-short.html">Perfecting OO's Small Classes and Short Methods</a>. The post is a summary of an essay by Jeff Bay called Object Calisthenics, from the new Pragmatic Programmers book <a href="http://www.pragprog.com/titles/twa/thoughtworks-anthology">The ThoughtWorks Anthology</a>. "Object Calisthenics" is supposedly an exercise to get you to write better object-oriented code. Reading through the suggestions, I couldn't decide if the article was serious or not.]]></description>
			<content:encoded><![CDATA[<p>Via <a href="http://weblog.raganwald.com/">Raganwald</a>, I saw this post by Andrew Birnstock: <a href="http://binstock.blogspot.com/2008/04/perfecting-oos-small-classes-and-short.html">Perfecting OO&#8217;s Small Classes and Short Methods</a>. The post is a summary of an essay by Jeff Bay called Object Calisthenics, from the new Pragmatic Programmers book <a href="http://www.pragprog.com/titles/twa/thoughtworks-anthology">The ThoughtWorks Anthology</a>.</p>

<p>&#8220;Object Calisthenics&#8221; is supposedly an exercise to get you to write better object-oriented code. Reading through the suggestions, <strong>I couldn&#8217;t decide if the article was serious or not</strong>. From Andrew&#8217;s summary:</p>

<blockquote>
  <ol>
  <li><p>Use only one level of indentation per method. If you need more than one level, you 
  need to create a second method and call it from the first. This is one of the most important constraints in the exercise.</p></li>
  <li><p>Don’t use the ‘else’ keyword. Test for a condition with an if-statement and exit the routine if it’s not 
  met. This prevents if-else chaining; and every routine does just one thing. You’re getting the idea.</p></li>
  <li><p>Wrap all primitives and strings. This directly addresses “primitive obsession.” If you want to use an integer, 
  you first have to create a class (even an inner class) to identify it’s true role. So zip codes are an object not 
  an integer, for example. This makes for far clearer and more testable code.</p></li>
  </ol>
</blockquote>

<p>From what I can tell, this really is serious. These are supposed to be the object-oriented equivalent of chin-ups, designed to whip you into shape to write better OO code.</p>

<p>This strikes me as so bogus, I can&#8217;t even begin to describe it.</p>

<p>I&#8217;m not against OO: I&#8217;m a huge fan of Smalltalk, and I cut my programming teeth at <a href="http://en.wikipedia.org/wiki/Object_Technology_International">one of the oldest object-oriented development shops</a>. In fact, I keep thinking of something that <a href="http://inside-swt.blogspot.com/">Steve Northover</a> used to say to me when I was on my first work term at OTI:</p>

<p><strong>&#8220;That which obscures my code is bad.&#8221;</strong></p>

<p>If you&#8217;ve ever seen a large body of code that adheres to The One True OO Style<small><sup>TM</sup></small> &#8212; like say, Smalltalk class libraries &#8212; you&#8217;ll understand that almost every step you take towards &#8220;true OO&#8221; is just another way of obscuring the meaning of your code. If you break your code up into 10 different methods, then that&#8217;s 10 different places I have to look to figure out what is going on. You&#8217;re just writing spaghetti code by a different name. If you&#8217;re building a very large library, then maybe, just <em>maybe</em>, the additional flexibility is worth it.</p>

<p>I think Paul Graham sums it up best in his essay <a href="http://paulgraham.com/noop.html">Why Arc Isn&#8217;t Especially Object-Oriented</a>:</p>

<blockquote>
  <p>My own feeling is that object-oriented programming is a useful technique in some cases, 
  but it isn&#8217;t something that has to pervade every program you write. You should be able to 
  define new types, but you shouldn&#8217;t have to express every program as the definition of new types.</p>
</blockquote>
<img src="http://feeds.feedburner.com/~r/dubroy/~4/284695878" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRSS>http://dubroy.com/blog/2008/05/06/if-this-is-object-calisthenics-i-think-ill-stay-on-the-couch/feed/</wfw:commentRSS>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=dubroy&amp;itemurl=http%3A%2F%2Fdubroy.com%2Fblog%2F2008%2F05%2F06%2Fif-this-is-object-calisthenics-i-think-ill-stay-on-the-couch%2F</feedburner:awareness><feedburner:origLink>http://dubroy.com/blog/2008/05/06/if-this-is-object-calisthenics-i-think-ill-stay-on-the-couch/</feedburner:origLink></item>
		<item>
		<title>Firefox’s awesomebar: a command-line for web apps</title>
		<link>http://feeds.feedburner.com/~r/dubroy/~3/276383302/</link>
		<comments>http://dubroy.com/blog/2008/04/23/firefoxs-awesome-bar-a-command-line-for-web-apps/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 19:31:18 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
		
	<dc:subject>usability</dc:subject>
	<dc:subject>hci</dc:subject><dc:subject>awesomebar</dc:subject><dc:subject>command line</dc:subject><dc:subject>firefox</dc:subject><dc:subject>hci</dc:subject><dc:subject>usability</dc:subject><dc:subject>web applications</dc:subject>
		<guid isPermaLink="false">http://dubroy.com/blog/2008/04/23/firefoxs-awesome-bar-a-command-line-for-web-apps/</guid>
		<description><![CDATA[One of the cooler features of Firefox 3 (which is currently in beta) is the <em>awesomebar</em>, which is the nickname for the URL bar and its new autocomplete features. Madhava, one of Mozilla's talented interacticians, noticed something neat: this means that the URL bar can be used as a shortcut to perform certain commands in web apps like Google Docs.]]></description>
			<content:encoded><![CDATA[<p><img id="image208" src="http://dubroy.com/blog/wp-content/uploads/2008/04/firefox-logo.png" alt="Mozilla Firefox logo" style="float: left; margin-right: 1em;"/></p>

<p>One of the cooler features of Firefox 3 (which is currently in beta) is the <em>awesomebar</em>, which is the nickname for the URL bar and its new autocomplete features. Madhava, one of Mozilla&#8217;s talented interacticians, <a href="http://madhava.com/egotism/archive/005016.html">noticed something neat</a>: this means that the URL bar can be used as a shortcut to perform commands in web apps like Google Docs.</p>

<p>Here&#8217;s how it works: instead of navigating to Google Docs and clicking the &#8220;new document&#8221; button, you can just type the words &#8220;new document&#8221; into your awesomebar. These search terms will match part of the query string of a Google Docs URL, and visiting that URL will pop you right into a new document.</p>

<p>This reason this works in Firefox 3 is because the awesomebar autocompletes <em>anywhere</em> in the URL or page title, not just at the beginning of the URL like older versions of Firefox. For more information about the awesomebar, check out <a href="http://www.dria.org/wordpress/archives/2008/04/17/628/">Deb Richardson&#8217;s post</a>, or see some of my older posts: <a href="http://dubroy.com/blog/2007/11/06/firefox-3-awesomeness/">Firefox 3 Awesomeness</a> and <a href="http://dubroy.com/blog/2007/11/20/firefox-3-beta-1-usability-impressions/">Firefox 3 Beta 1: Usability impressions</a>. </p>

<p>I just tried something similar when I went to write this post: instead of navigating to my blog&#8217;s admin page and then clicking &#8220;New post&#8221;, I just typed &#8220;new post&#8221; into the URL bar. The first hit was on the title of the Wordpress &#8220;Create New Post&#8221; page. Sweet!</p>

<p>I think this is pretty cool. It means that Firefox&#8217;s URL bar is now a command-line for web apps. Of course, this is just more evidence of the <a href="http://lifehacker.com/software/command-line/geek-to-live--the-command-line-comeback-226223.php">command-line comeback</a> and <a href="http://www.useit.com/alertbox/990321.html">the URL as a user interface</a>.</p>
<img src="http://feeds.feedburner.com/~r/dubroy/~4/276383302" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRSS>http://dubroy.com/blog/2008/04/23/firefoxs-awesome-bar-a-command-line-for-web-apps/feed/</wfw:commentRSS>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=dubroy&amp;itemurl=http%3A%2F%2Fdubroy.com%2Fblog%2F2008%2F04%2F23%2Ffirefoxs-awesome-bar-a-command-line-for-web-apps%2F</feedburner:awareness><feedburner:origLink>http://dubroy.com/blog/2008/04/23/firefoxs-awesome-bar-a-command-line-for-web-apps/</feedburner:origLink></item>
		<item>
		<title>What I’ve been up to: freehand drawing on the OLPC laptop</title>
		<link>http://feeds.feedburner.com/~r/dubroy/~3/272400313/</link>
		<comments>http://dubroy.com/blog/2008/04/17/what-ive-been-up-to-freehand-drawing-on-the-olpc-laptop/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 19:57:55 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
		
	<dc:subject>design</dc:subject>
	<dc:subject>usability</dc:subject>
	<dc:subject>hci</dc:subject>
	<dc:subject>olpc</dc:subject><dc:subject>design</dc:subject><dc:subject>hci</dc:subject><dc:subject>olpc</dc:subject><dc:subject>one laptop per child</dc:subject><dc:subject>pentablet</dc:subject><dc:subject>tablet</dc:subject><dc:subject>usability</dc:subject><dc:subject>xo</dc:subject><dc:subject>xotablet</dc:subject>
		<guid isPermaLink="false">http://dubroy.com/blog/2008/04/17/what-ive-been-up-to-freehand-drawing-on-the-olpc-laptop/</guid>
		<description><![CDATA[Some of you might remember my post from January where I talked about the innovative interface of the OLPC laptop. I wrote that post after talking to Mike Fletcher about doing an OLPC-related project for a course I was taking with Greg Wilson. It turned out to be a really fun and cool project, and [...]]]></description>
			<content:encoded><![CDATA[<p>Some of you might remember my post from January where I talked about <a href="http://dubroy.com/blog/2008/01/10/the-innovative-interface-of-the-olpc-laptop/">the innovative interface of the OLPC laptop</a>. I wrote that post after talking to <a href="http://blog.vrplumber.com">Mike Fletcher</a> about doing an OLPC-related project for a course I was taking with <a href="http://pyre.third-bit.com">Greg Wilson</a>. It turned out to be a really fun and cool project, and now that I&#8217;m finally finished the course, I thought I&#8217;d post about it here.</p>

<p>So, you&#8217;ve probably all heard of <a href="http://laptop.org">One Laptop per Child</a>. They recently started shipping their first laptop, which is called the XO. One of the unique things about the XO is that it comes with a built-in graphics tablet. Unfortunately, the system software doesn&#8217;t come with tablet support built-in. My project for the semester was to work on improving the tablet support &#8212; specifically, the API for activity developers, and the user interface for drawing.</p>

<p>The user interface ended up being the most challenging part of the problem, because the XO tablet is not quite like a standard graphics tablet. It has no hover mode, and it has an aspect ratio that&#8217;s completely different from the XO&#8217;s screen. In this video, where I explain some of the ways I&#8217;ve come up with to deal with these problems. </p>

<p><br />
<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/Fpc9vOUd2xw&amp;hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/Fpc9vOUd2xw&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>

<p>For more information about the project, check out the <a href="http://wiki.laptop.org/go/Pen_Tablet_Support">Pen Tablet Support</a> and <a href="http://wiki.laptop.org/go/Pen_Tablet_UI">Pen Tablet UI</a> pages on the OLPC wiki.</p>

<p>I&#8217;m planning on continuing with this work this summer, so if you&#8217;ve got a comment or any other ideas, I&#8217;d love to hear them. Leave &#8216;em here, or send me an email.</p>
<img src="http://feeds.feedburner.com/~r/dubroy/~4/272400313" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRSS>http://dubroy.com/blog/2008/04/17/what-ive-been-up-to-freehand-drawing-on-the-olpc-laptop/feed/</wfw:commentRSS>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=dubroy&amp;itemurl=http%3A%2F%2Fdubroy.com%2Fblog%2F2008%2F04%2F17%2Fwhat-ive-been-up-to-freehand-drawing-on-the-olpc-laptop%2F</feedburner:awareness><feedburner:origLink>http://dubroy.com/blog/2008/04/17/what-ive-been-up-to-freehand-drawing-on-the-olpc-laptop/</feedburner:origLink></item>
		<item>
		<title>On wiki markup languages</title>
		<link>http://feeds.feedburner.com/~r/dubroy/~3/268143119/</link>
		<comments>http://dubroy.com/blog/2008/04/10/on-wiki-markup-languages/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 04:43:19 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
		
	<dc:subject>usability</dc:subject><dc:subject>formatting</dc:subject><dc:subject>markdown</dc:subject><dc:subject>usability</dc:subject><dc:subject>wiki</dc:subject>
		<guid isPermaLink="false">http://dubroy.com/blog/2008/04/10/on-wiki-markup-languages/</guid>
		<description><![CDATA[In the past few days, I&#8217;ve been doing quite a bit of writing in three different wikis:


the One Laptop per Child wiki
the DrProject wiki for a class I&#8217;m taking with Greg Wilson
random notes that I keep on a Jottit page


I&#8217;ve become pretty finely attuned to the difference between their markup languages. The OLPC wiki runs [...]]]></description>
			<content:encoded><![CDATA[<p>In the past few days, I&#8217;ve been doing quite a bit of writing in three different wikis:</p>

<ul>
<li>the <a href="http://wiki.laptop.org">One Laptop per Child wiki</a></li>
<li>the <a href="https://www.drproject.org/">DrProject</a> wiki for a class I&#8217;m taking with <a href="http://pyre.third-bit.com/blog/">Greg Wilson</a></li>
<li>random notes that I keep on a <a href="http://jottit.com">Jottit</a> page</li>
</ul>

<p>I&#8217;ve become pretty finely attuned to the difference between their markup languages. The OLPC wiki runs on <a href="http://mediawiki.org">MediaWiki</a>, the same as Wikipedia. The version of DrProject that we&#8217;re using seems to use a variant of the MediaWiki syntax. Jottit uses <a href="http://daringfireball.net/projects/markdown/">Markdown</a> format. In this wiki-markup-language-cage-match, here&#8217;s my decision:</p>

<p><strong>Markdown rules.</strong></p>

<p>Markdown wins, hands down. In fact, ever since I learned about Markdown a few years ago, I&#8217;ve been wishing for a wiki that would support it. Luckily, more and more are. In fact, even <a href="https://www.drproject.org/DrProject/wiki/WikiFormatting">the new version of DrProject supports Markdown</a>.</p>

<p>I won&#8217;t even begin to go into the reasons why Markdown is so superior. If you haven&#8217;t tried it out yet, give it a go.</p>
<img src="http://feeds.feedburner.com/~r/dubroy/~4/268143119" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRSS>http://dubroy.com/blog/2008/04/10/on-wiki-markup-languages/feed/</wfw:commentRSS>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=dubroy&amp;itemurl=http%3A%2F%2Fdubroy.com%2Fblog%2F2008%2F04%2F10%2Fon-wiki-markup-languages%2F</feedburner:awareness><feedburner:origLink>http://dubroy.com/blog/2008/04/10/on-wiki-markup-languages/</feedburner:origLink></item>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetFeedData?uri=dubroy</feedburner:awareness></channel>
</rss>
