<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/wordpress-mu-1.2.5" -->
<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:slash="http://purl.org/rss/1.0/modules/slash/"
        xmlns:opencore="http://www.openplans.org/opencore"
	>

<channel>
	<title>TOPP Design</title>
	<link>http://www.openplans.org/projects/topp-design/blog</link>
	<description>Just another  weblog</description>
	<pubDate>Thu, 09 Oct 2008 16:50:27 +0000</pubDate>
	<generator>http://wordpress.org/?v=wordpress-mu-1.2.5</generator>
	<language>en</language>
			<item>
		<title>Negative margins and Internet Explorer: a cautionary tale</title>
		<link>http://www.openplans.org/projects/topp-design/blog/2008/10/09/negative-margins-and-internet-explorer-a-cautionary-tale/</link>
		<comments>http://www.openplans.org/projects/topp-design/blog/2008/10/09/negative-margins-and-internet-explorer-a-cautionary-tale/#comments</comments>
        	<slash:comments>0</slash:comments> 
		<pubDate>Thu, 09 Oct 2008 16:50:27 +0000</pubDate>
		<dc:creator>chris</dc:creator>
                <opencore:userid>chris</opencore:userid>
		
		<category><![CDATA[TOPP.dzn]]></category>

		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://www.openplans.org/projects/topp-design/blog/2008/10/09/negative-margins-and-internet-explorer-a-cautionary-tale/</guid>
		<description><![CDATA[When we were getting ready to launch the LivableStreets website earlier this year, I ran into an odd renderbug which I&#8217;ve finally had time to write up. The issue I found was that Internet Explorer would cut off portions of an element when negative margins caused it to extend beyond its parent.
An example will probably [...]]]></description>
			<content:encoded xml:base="http://www.openplans.org/projects/topp-design/blog/2008/10/09/negative-margins-and-internet-explorer-a-cautionary-tale/"><![CDATA[<p>When we were getting ready to launch the <a href="http://www.livablestreets.com/">LivableStreets</a> website earlier this year, I ran into an odd renderbug which I&#8217;ve finally had time to write up. The issue I found was that Internet Explorer would cut off portions of an element when negative margins caused it to extend beyond its parent.</p>
<p>An example will probably help make the issue more clear.</p>
<p>The structure we&#8217;ll use is simple. A &#8220;container&#8221; div wth an explicit width will contain all our content. Each test case will be a &#8220;holder&#8221; div, which contains the paragraphs with negative margins to pull them beyond the boundaries of both parent elements.</p>
<p>In a standards-compliant rendering, elements can be caused to extend beyond containing elements, through the use of negative margins:</p>
<div><a href="http://skitch.com/dimmerswitch/2ym1/negative-margin-renderbug-ff3"><img src="http://img.skitch.com/20081009-knxryy3d6f9yfk46742uxxxt11.preview.jpg" alt="negative-margin-renderbug-ff3" /></a></div>
<p>Internet Explorer, of course, plays by different rules. Let&#8217;s start by looking at IE6:</p>
<div><a href="http://skitch.com/dimmerswitch/2ypf/microsoft-windows-xp"><img src="http://img.skitch.com/20081009-kq9w6wk27pkucpewy2fpgqj3tm.preview.jpg" alt="Microsoft Windows XP" /></a></div>
<p>When no width is set for the holder div, the paragraphs with negative margins are shown to extend beyond their holder div, but are clipped at the edge of the container div. However, when we explicitly set the width of the holder div to 100%, the paragraphs are clipped at the edge of the <em>holder</em> div - they&#8217;re not allowed to extend past <strong>any</strong> of the containing elements (more correctly, the <em>content</em> does extend past, but it&#8217;s inappropriately truncated, as though <code>overflow: hidden;</code> were declared on holder divs).</p>
<p>The same results are obtained in our second result set. When we declare the width in pixels, the paragraphs are clipped at the edge of the holder div. When we explicitly declare the width to be auto (same as the default property for block-level elements), content is clipped at the edge of the container div:</p>
<div><a href="http://skitch.com/dimmerswitch/2ypt/microsoft-windows-xp"><img src="http://img.skitch.com/20081009-mh75aa2fcbdrsgnkr146jdarpw.preview.jpg" alt="Microsoft Windows XP" /></a></div>
<p>With Internet Explorer 7, we get yet another curveball. IE7 does properly honor the negative left margin in all cases, regardless of whether (or how) we declare a width for the holder div. The <em>right</em> negative-margin isn&#8217;t so lucky. It still gets truncated exactly the same way as IE6:</p>
<div><a href="http://skitch.com/dimmerswitch/2ym6/microsoft-windows-xp"><img src="http://img.skitch.com/20081009-m6baux3bxd9mh8hub7tr4qt51x.preview.jpg" alt="Microsoft Windows XP" /></a></div>
<div><a href="http://skitch.com/dimmerswitch/2ycq/microsoft-windows-xp"><img src="http://img.skitch.com/20081009-mbeeufx1ij782b1r3f7p9nu76f.preview.jpg" alt="Microsoft Windows XP" /></a></div>
<p>It&#8217;s almost like the dev team created a unit test for left negative margins and decided they were all set.</p>
<p>To their credit, the IE8 team has fixed right negative margins, based on the current beta:</p>
<div><a href="http://skitch.com/dimmerswitch/2fpn/microsoft-windows-xp"><img src="http://img.skitch.com/20081009-brudmpxtmjx9bdmxp3mbbwwrhr.preview.jpg" alt="Microsoft Windows XP" /></a></div>
<p>So, if your site has sizable numbers of IE users (which, I think, is most of us), be aware that negative margins can cause unexpected consequences. Explicitly declaring <code>overflow: visible;</code> on holder and container has no impact on the resulting page renders. For the LSN launch, I ended up using relative positioning to achieve the desired affect.</p>
<p>Have a different workaround? I&#8217;d love to hear about it. In the meantime, <a href="/projects/topp-design/negative-margins-renderbug/negativemarginrenderbug.html">here&#8217;s the testcase</a> I put together.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openplans.org/projects/topp-design/blog/2008/10/09/negative-margins-and-internet-explorer-a-cautionary-tale/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Click to Clipboard</title>
		<link>http://www.openplans.org/projects/topp-design/blog/2008/10/06/click-to-clipboard/</link>
		<comments>http://www.openplans.org/projects/topp-design/blog/2008/10/06/click-to-clipboard/#comments</comments>
        	<slash:comments>0</slash:comments> 
		<pubDate>Mon, 06 Oct 2008 22:31:05 +0000</pubDate>
		<dc:creator>chris</dc:creator>
                <opencore:userid>chris</opencore:userid>
		
		<category><![CDATA[TOPP.dzn]]></category>

		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://www.openplans.org/projects/topp-design/blog/2008/10/06/click-to-clipboard/</guid>
		<description><![CDATA[Background
Our team uses Skitch a lot. It&#8217;s a pretty invaluable tool for communicating visual information - you can easily annotate screenshots or comps. There&#8217;s great communicative value in being able to point at something, and as a remote employee in my past two jobs, I can&#8217;t imagine ever collaborating on web work without it.
Aside: Skitch [...]]]></description>
			<content:encoded xml:base="http://www.openplans.org/projects/topp-design/blog/2008/10/06/click-to-clipboard/"><![CDATA[<h2>Background</h2>
<p>Our team uses <a>Skitch</a> a lot. It&#8217;s a pretty invaluable tool for communicating visual information - you can easily annotate screenshots or comps. There&#8217;s great communicative value in being able to point at something, and as a remote employee in my past two jobs, I can&#8217;t imagine ever collaborating on web work without it.</p>
<p><strong>Aside</strong>: Skitch is Mac-only, but I&#8217;ve heard good things about <a href="http://www.jingproject.com/">Jing</a> if you&#8217;re on Windows. I don&#8217;t know of an equivalent solution on Linux, unfortunately.</p>
<p>Skitch does a lot of things well, but one bit of polish which always pops out at new users is the &#8220;Click to Clipboard&#8221; functionality. Skitch provides lots of ways for you to share your images, and when you click in the appropriate field, the site copies all the data to your computer&#8217;s clipboard, and presents a nice confirmation that you&#8217;re ready to paste that elsewhere:</p>
<div><a href="http://skitch.com/dimmerswitch/a7n7/skitch-clipboard-popup"><img src="http://img.skitch.com/20081006-1riux9tfy8ibu8nfwg84ceuqqs.preview.jpg" alt="skitch-clipboard-popup"></a></div>
<p>I decided to create a workalike function in <a href="http://jquery.com/">jQuery</a>, my favorite javascript library. I got a rudimentary version up and running a while back, building on the approach Jeff Larson wrote up, over at <a href="http://www.jeffothy.com/weblog/clipboard-copy/">http://www.jeffothy.com/weblog/clipboard-copy/</a>.</p>
<p>Today, I was able to get my workalike polished up and turned into my first jQuery plugin - it&#8217;s available at <a href="http://github.com/chrispatterson/jquery-clipboard/tree/master">http://github.com/chrispatterson/jquery-clipboard/tree/master</a>. There are still some pieces of polish I&#8217;m planning to add, but I&#8217;m pretty happy with it so far.</p>
<h2>Using the plugin</h2>
<p><strong>Note</strong>: this assumes that you&#8217;ve downloaded jQuery (<a href="http://docs.jquery.com/Downloading_jQuery">http://docs.jquery.com/Downloading_jQuery</a>), the jQuery Flash plugin (<a href="http://jquery.lukelutman.com/plugins/flash/">http://jquery.lukelutman.com/plugins/flash/</a>), and the jQuery Clipboard plugin (<a href="http://github.com/chrispatterson/jquery-clipboard/tree/master">http://github.com/chrispatterson/jquery-clipboard/tree/master</a>). All examples can be used at the bottom of the page (immediately before the  tag), or set to fire with <code>$(document).ready</code></p>
<p>To add &#8220;click to clipboard&#8221; behavior to the element with an id of <code>share-link</code>:</p>
<p><code>$('#share-link').clickToClipboard();</code></p>
<p>To add &#8220;click to clipboard&#8221; behavior to all elements with a class of <code>shareable</code>:</p>
<p><code>$('.shareable').clickToClipboard();</code></p>
<p>clickToClipboard allows you to customize how long it takes for the notice to fade out, as well as the message used (for cases where you don&#8217;t want to use an image).</p>
<p>To have a slower fade effect, starting 1.5 seconds after the target element loses focus:</p>
<p><code>$('#share-link').clickToClipboard( {fadeoutLength: 900, fadeoutTimer: 1500});</code></p>
<p>To customize the notice text:</p>
<p><code>$('#share-link').clickToClipboard( {clipboardText: "You're ready to paste!"});</code></p>
<p>The look and feel of the notice is totally customizable through CSS. I&#8217;ve included a demo in the github repository, which shows how it might look with a background image. This is my first jQuery plugin, so I&#8217;m definitely open to feedback on ways to structure things better, or enhancement requests on how it be more flexible about supporting stuff folks need.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openplans.org/projects/topp-design/blog/2008/10/06/click-to-clipboard/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Better Blockquotes</title>
		<link>http://www.openplans.org/projects/topp-design/blog/2008/09/26/better-blockquotes/</link>
		<comments>http://www.openplans.org/projects/topp-design/blog/2008/09/26/better-blockquotes/#comments</comments>
        	<slash:comments>0</slash:comments> 
		<pubDate>Fri, 26 Sep 2008 17:00:19 +0000</pubDate>
		<dc:creator>chris</dc:creator>
                <opencore:userid>chris</opencore:userid>
		
		<category><![CDATA[TOPP.dzn]]></category>

		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://www.openplans.org/projects/topp-design/blog/2008/09/26/better-blockquotes/</guid>
		<description><![CDATA[For the Streetsblog WordPress theme, we wanted to include a widget which would display a featured user comment. The comp had spiffy oversized quotes surrounding the featured text.
I&#8217;d seen http://24ways.org/2005/swooshy-curly-quotes-without-images a while back, and decided to improve upon it for the new Streetsblog site. In particular, the floated close quotes in Simon Willison&#8217;s approach will [...]]]></description>
			<content:encoded xml:base="http://www.openplans.org/projects/topp-design/blog/2008/09/26/better-blockquotes/"><![CDATA[<p>For the <a href="http://streetsblog.org">Streetsblog</a> WordPress theme, we wanted to include a widget which would display a featured user comment. The comp had spiffy oversized quotes surrounding the featured text.</p>
<p>I&#8217;d seen <a href="http://24ways.org/2005/swooshy-curly-quotes-without-images">http://24ways.org/2005/swooshy-curly-quotes-without-images</a> a while back, and decided to improve upon it for the new Streetsblog site. In particular, the floated close quotes in Simon Willison&#8217;s approach will often leave a lot of whitespace.</p>
<div><a href="http://skitch.com/dimmerswitch/abbp/firefox-blockquotes-start"><img src="http://img.skitch.com/20081001-1yb7a73s1wtrkaa33dut89p8be.preview.jpg" alt="firefox-blockquotes-start"></a></div>
<p>The first version I&#8217;d done looked fine, and is what we launched with, but after a while folks found an odd renderbug. Internet Explorer (versions 6 and 7) would drop the quoted text down by about 2em, but <strong>only if the quote fit on a single line</strong>.</p>
<p>This week I was able to track down and fix the issue.</p>
<p>Here&#8217;s a screenshot of our launch CSS, as rendered by standards-compliant browsers:</p>
<div><a href="http://skitch.com/dimmerswitch/abbi/firefox-launch-css"><img src="http://img.skitch.com/20081001-tfjhrx5778361a788ftiikqhuu.preview.jpg" alt="firefox-launch-css"></a></div>
<p>Here&#8217;s a screenshot of our launch CSS, as rendered by Internet Explorer:</p>
<div><a href="http://skitch.com/dimmerswitch/abb5/ie7-blockquote-launch-css"><img src="http://img.skitch.com/20081001-kx2p6p6j3mt7d6tndh7c9c6iei.preview.jpg" alt="ie7-blockquote-launch-css"></a></div>
<p>After a little digging, it became clear that the issue was IE inappropriately using the line-height for the opening quote for the <em>entire</em> blockquote, in those cases where the blockquote fits on a single line.</p>
<p>Lots of tinkering with <code>line-height</code> and <code>vertical-align</code> properties ensued - those have got to be the least consistent CSS properties I&#8217;ve run into for a while, and will probably be the subject of a later post.</p>
<p>Eventually, I ended up with something that worked in standards-compliant browsers:</p>
<div><a href="http://skitch.com/dimmerswitch/abc5/firefox-better-blockquotes"><img src="http://img.skitch.com/20081001-crdh9pthbjbqpgdyyngfxtfcfe.preview.jpg" alt="firefox-better-blockquotes"></a></div>
<p>And looks fine in IE7:</p>
<div><a href="http://skitch.com/dimmerswitch/abnx/ie7-better-blockquotes"><img src="http://img.skitch.com/20081001-g7ajh8tmh1u2a85t2ehf89jy9f.preview.jpg" alt="ie7-better-blockquotes"></a></div>
<p>IE6 has an issue with line-height still - it will incorrectly indent the second line of text, to make room for the floated open quote (because IE6 ignores our explicit height declaration for that element):</p>
<div><a href="http://skitch.com/dimmerswitch/abna/ie6-betterblockquotes"><img src="http://img.skitch.com/20081001-f9reea1imk2hbg3n78equdyb8y.preview.jpg" alt="ie6-betterblockquotes"></a></div>
<p>That&#8217;s a tradeoff I&#8217;m willing to accept, in this case.</p>
<h2>Markup for Better Blockquotes</h2>
<p><code>&lt;blockquote class="selfclear"&gt;<br />
	&lt;span class=&#8221;open-quote&#8221;&gt;&amp;#8220;&lt;/span&gt;<br />
	Fiction is obliged to stick to possibilities. Truth isn&#8217;t.<br />
	&lt;span class=&#8221;close-quote&#8221;&gt;&amp;#8221;&lt;/span&gt;<br />
&lt;/blockquote&gt;</code></p>
<p><strong>Note</strong>: The selfclear class is a variation of the clever method <a href="http://www.positioniseverything.net/easyclearing.html">originally written up</a> at Position Is Everything - used to clear floats without unnecessary markup.</p>
<h2>CSS for Better Blockquotes</h2>
<p><code>.selfclear:after {<br />
content: &#8220;.&#8221;;<br />
display: block;<br />
height: 0;<br />
clear: both;<br />
visibility: hidden;<br />
}</code></p>
<p><code>.selfclear {<br />
display: inline-block; /* IE 7 */<br />
}</code></p>
<p><code>.selfclear {<br />
display: block;<br />
}</code></p>
<p><code>* html .selfclear {<br />
height: 1px; /* IE &lt; 7 */<br />
}</code></p>
<p><code>blockquote {<br />
font-style: italic;<br />
color: #191f2f;<br />
font-size: 1.3em;<br />
line-height: 2em;<br />
}</code></p>
<p><code>blockquote .open-quote, <br />
blockquote .close-quote {<br />
font-family: georgia, serif;<br />
color: #6b707e;<br />
font-style: normal;<br />
font-size: 4em;<br />
line-height: 1em;<br />
}</code></p>
<p><code>blockquote .open-quote {<br />
float: left;<br />
height: 0.35em;<br />
padding: 0 0.1em 0 0;<br />
vertical-align: -60%;<br />
position: relative;<br />
top: -0.1em;<br />
}</code></p>
<p><code>blockquote .close-quote {<br />
vertical-align: -50%;<br />
padding: 0 0 0 0.1em;<br />
}</code></p>
<p>Replace the fonts and colors as needed for your design, and you should be all set!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openplans.org/projects/topp-design/blog/2008/09/26/better-blockquotes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Thoughts on WYSIWYG</title>
		<link>http://www.openplans.org/projects/topp-design/blog/2008/09/17/thoughts-on-wysiwyg/</link>
		<comments>http://www.openplans.org/projects/topp-design/blog/2008/09/17/thoughts-on-wysiwyg/#comments</comments>
        	<slash:comments>0</slash:comments> 
		<pubDate>Wed, 17 Sep 2008 19:04:12 +0000</pubDate>
		<dc:creator>rpenate</dc:creator>
                <opencore:userid>rpenate</opencore:userid>
		
		<category><![CDATA[OpenCore]]></category>

		<guid isPermaLink="false">http://www.openplans.org/projects/topp-design/blog/2008/09/17/thoughts-on-wysiwyg/</guid>
		<description><![CDATA[After talking to Nicholas Bergson-Shilcock about our mutual skepticism towards the WYSIWYG model on the web, I thought I&#8217;d dredge up these thoughts from February of 2007.
  

As we move towards devoting greater and greater resources towards developing the Xinha Editor, we are faced with an interesting set of issues and opportunities: not only [...]]]></description>
			<content:encoded xml:base="http://www.openplans.org/projects/topp-design/blog/2008/09/17/thoughts-on-wysiwyg/"><![CDATA[<p><em>After talking to <a href="http://www.nicholasbs.com/">Nicholas Bergson-Shilcock</a> about our mutual skepticism towards the WYSIWYG model on the web, I thought I&#8217;d dredge up these <a href="/projects/opencore/thoughts-on-wysiwyg/">thoughts from February of 2007</a>.</em><br />
  
</p>
<p>As we move towards devoting greater and greater resources towards developing the Xinha Editor, we are faced with an interesting set of issues and opportunities: not only do we have to <strong>determine the degree of user control we allow</strong> but also—and to some degree as consequence of that—we have to question certain fundamental assumptions about <strong>the (in)appropriateness of the WYSIWYG model</strong>.
</p>
<h2>User Control<br />
</h2>
<p>In recent conversations with Jackie I argued for limiting (though I prefer to say <em>managing</em>) user options to increase user happiness. My justification for this is best described by the adjacent line graphs.
</p>
<p>Our editor should make it easy for our users to create documents for the web, but it should not provide so many options as to be stressful or confusing. <a href="http://headrush.typepad.com/creating_passionate_users/2007/02/how_much_contro.html">As Kathy Sierra says</a>, &#8220;the amount of pain and effort should match the user&#8217;s perceived payoff&#8221;. She even has <a href="http://headrush.typepad.com/photos/uncategorized/usercontrolone.png">a neat graphic</a>. Our users want control and ownership of their pages, and that is something with which we provide them, but at what point do we provide so many options that the user no longer feels in control of the page?
</p>
<p>We need to tailor the editor to fulfill the needs of our users: basic word processing, including basic inline type styling (bold, italic, underline, strikethrough, color); list creation (ordered and unordered, definition lists(?), and nesting); table creation and management (table stying, row and column manipulation); image inclusion; hyperlinking and page creation (wicked, internal, and external should be consolidated). But, we don&#8217;t need to provide much more&#8230; in fact we probably shouldn&#8217;t provide things like: font families, absolute font sizes, perhaps even text alginment (left, right, center)&#8230;<br />
  
</p>
<h2>The WYSIWYG Model<br />
</h2>
<p>&#8230;because the WYSIWYG model, as we have been thinking about it, may not be the ideal way of fulfilling these (perceived) needs. As Luke and I discussed it: the WYSIWYG model is predicated on emulating the experience of a typical word processor, specifically in regards to designing for presentation, and thus fails engage with the medium that is the web. As stated above, our editor should make it easy for our users to create documents <em>for the web</em>. The concept we have been working with emphasizes presentation (how things look) when it should equally emphasize structure (how things work) and semantics (what things mean).
</p>
<p>To provide our users with a better experience we need to better <a href="http://alistapart.com/articles/grokwebstandards">understand web standards (like A List Apart)</a> and incorporate all three modes of thinking/editing into our editor in a way that is easy for users to understand. <a href="http://www.wymeditor.org/en/">WYMEditor</a>, an example Luke pointed out, works on a <acronym title="What You See Is What You Mean">WYSIWYM</acronym> model and emphasizes the <em>meaning</em> of content over its presentation.
</p>
<h2>The WYSIWYM Model: Ideas About Implementation<br />
</h2>
<p>It&#8217;s possible and desirable to implement core elements of the WYSIWYM model in our editor in several ways:
</p>
<h3>+ Clean Markup<br />
</h3>
<p>Producing acceptable (X)HTML is perhaps the technically most difficult yet also more important thing for our editor to do. There is little point in focusing on the presentational niceties if the markup won&#8217;t render correctly anyway. The markup produced should strive to be structurally and semantically proper, conform to standards, and not be contaminated by visual information like font styles and weights, borders, colors, etc.
</p>
<p>We can accomplish by limiting certain tags (like the evil &#8220;font&#8221; tag), running operations on the output markup to ensure a base level of acceptability, and outsourcing visual information to pre-defined CSS classes that are applied at the block level wherever possible. Ideally the editor could even be aware of the block-level context and provide only those styles which are appropriate to that block type (for example table styles for tables, list styles for lists, etc). By constraining users&#8217; choices intelligently we make it easier for the user to get things done. Furthermore, <em>if we don&#8217;t provide clean markup then any future support for theming or alternate styles will result in extreme pain for both us and our users</em>.
</p>
<h3>+ Semantic/Structural User-end Views<br />
</h3>
<p>The editor should make the structure of the page transparent to our users, either by default or through a toggle (like the ¶ button in Microsoft Word). As you can see from their <a href="http://demo.wymeditor.org/editor/editor.htm">demo, WYMeditor</a> does a good job of this (they clearly leave out presentational elements as they are committed to a &#8220;pure&#8221; WYSIWYM model). This level of information benefits our users because they learn to think of the web as distinct from print media and enables them to build pages that will function across themes and Deliverations without breaking.<br />
  
</p>
<p>We can accomplish a similar effect using CSS specific to the editor context that adds borders, backgrounds, margin, padding, and (vernacular) labels to the block-level elements as we determine to be appropriate.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openplans.org/projects/topp-design/blog/2008/09/17/thoughts-on-wysiwyg/feed/</wfw:commentRss>
		</item>
		<item>
		<title>20% Time</title>
		<link>http://www.openplans.org/projects/topp-design/blog/2008/09/11/20-time/</link>
		<comments>http://www.openplans.org/projects/topp-design/blog/2008/09/11/20-time/#comments</comments>
        	<slash:comments>0</slash:comments> 
		<pubDate>Thu, 11 Sep 2008 21:41:23 +0000</pubDate>
		<dc:creator>rpenate</dc:creator>
                <opencore:userid>rpenate</opencore:userid>
		
		<category><![CDATA[TOPP.dzn]]></category>

		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://www.openplans.org/projects/topp-design/blog/2008/09/11/20-time/</guid>
		<description><![CDATA[When the process for the Design Team at TOPP was first developed it was geared towards meeting the needs of fairly well-defined, planned projects to internal clients like OpenGeo and Livable Streets. As time went on, however, we realized that fires, maintenance tasks, and small projects were falling through the cracks. While we were successfully [...]]]></description>
			<content:encoded xml:base="http://www.openplans.org/projects/topp-design/blog/2008/09/11/20-time/"><![CDATA[<p>When the process for the Design Team at <a href="http://theopenplanningproject.org">TOPP</a> was first developed it was geared towards meeting the needs of fairly well-defined, planned projects to internal clients like <a href="http://www.opengeo.org/">OpenGeo</a> and <a href="http://www.livablestreets.com/">Livable Streets</a>. As time went on, however, we realized that fires, maintenance tasks, and small projects were falling through the cracks. While we were successfully unveiling projects like the Livable Streets Network and birthing the OpenGeo brand, we found an incredibly glaring omission—life doesn&#8217;t always happen in well-defined and planned ways. We were failing to properly support projects over the longer-term and some developers were frustrated with renderbugs and web design issues that shouldn&#8217;t have eaten up so much of their time. While looking for a way to improve this glaring error with our process I quite literally looked north for an answer.
</p>
<h2>Testing the waters<br />
</h2>
<p>It&#8217;s hard to work for a technology company without living in the shadow of Google. TOPP is pretty keenly aware of the big G not only because many of our employees applied there (some even turning down job offers) but also because their New York headquarters has a looming presence just a few blocks uptown. Many of our policies are reminiscent of theirs—including free lunch, flex time, and frisbees—to name just the ones beginning with F. One policy in particular that had always struck a chord with me, however, is Google&#8217;s idea of 20% time.
</p>
<p>We&#8217;ve been experimenting with 20% time here in the Design Team at TOPP and it has proven incredibly valuable at making us more effective. Starting in July, Chris started on a limited form of 20% time that made him responsible for allocating some of his time as he saw fit for dealing with web design issues brought up by developers that were outside the scope of his primary priority. Issues that he saw taking longer were kicked upstream for more formal prioritizing. We made sure he wasn&#8217;t being spread too thin by making sure to include recaps at our weekly meetings.
</p>
<p>After extending the pilot to Phil, I&#8217;m convinced it is a good idea.<br />
  
</p>
<h2>Extending the scope<br />
</h2>
<p>Now we are ready to broaden the scope of 20% time and extend it to the whole team. For those of you who haven&#8217;t heard, <a href="http://www.nytimes.com/2007/10/21/jobs/21pre.html?ex=1350619200&amp;en=f4b2cd9d18f162bb&amp;ei=5124&amp;partner=permalink&amp;exprod=permalink">the Google Way</a> encourages employees to take 20 percent of their time to work on something company-related that interests them personally. While ours is currently limited towards &#8216;putting out fires&#8217;, I want to extend it a bit beyond that and bring a few steps closer to Google&#8217;s model.
</p>
<p><strong>I want all members of the Design Team to take 20% of their time and manage it as they see fit</strong>, be it as one day a week or an hour and a half a day. While I still want maintenance and support of existing projects to continue to be the driving priority behind 20% time, any time left over in excess of that could go to: pairing with TOPP developers on new projects, like <a href="http://blog.survv.org/category/survvorg/">Anil&#8217;s Survv idea</a>; contributing to existing open source projects of value to TOPP, like <a href="/projects/opencore/xinha-details">Sonali&#8217;s work on Xinha</a>; writing a blog post for a TOPP-sponsored blog, like this one; developing a TOPP Talk or a talk that represents TOPP at a conference; reading a book from the TOPP library, especially if turning it into a blog post or TOPP Talk; or countless other things.
</p>
<p>Obviously it&#8217;s difficult to tell where to draw the line with 20% time and it&#8217;ll probably take us some time to strike the right balance. To reiterate, I still want maintenance and support of existing projects to continue to be the driving priority behind 20% time. We will continue to review the use of one&#8217;s 20% time at our weekly meetings, which shouldhave the dual purpose of cross-pollinating our efforts and helping us find the boundaries of what is acceptable use of that time. Things that fall outside the scope of 20% time include personal projects of no relation to TOPP, like redesigning a friend&#8217;s website or planning a personal vacation. When in doubt, the easiest way to find out whether something would be appropriate or not would be to ask me.
</p>
<p>There you have it, now use it! My first use of 20% time will probably be finishing that much-delayed blog post on &#8220;Open Source Design&#8221;, I suggest yours include a perusal of this <em>New York Times</em> article on <a href="http://www.nytimes.com/2007/10/21/jobs/21pre.html?ex=1350619200&amp;en=f4b2cd9d18f162bb&amp;ei=5124&amp;partner=permalink&amp;exprod=permalink">the Google Way</a>.<br />
  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.openplans.org/projects/topp-design/blog/2008/09/11/20-time/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Thoughts on Consumer Mapping</title>
		<link>http://www.openplans.org/projects/topp-design/blog/2008/07/30/thoughts-on-consumer-mapping/</link>
		<comments>http://www.openplans.org/projects/topp-design/blog/2008/07/30/thoughts-on-consumer-mapping/#comments</comments>
        	<slash:comments>0</slash:comments> 
		<pubDate>Wed, 30 Jul 2008 18:54:28 +0000</pubDate>
		<dc:creator>rpenate</dc:creator>
                <opencore:userid>rpenate</opencore:userid>
		
		<category><![CDATA[OpenGeo]]></category>

		<guid isPermaLink="false">http://www.openplans.org/projects/topp-design/blog/2008/07/30/thoughts-on-consumer-mapping/</guid>
		<description><![CDATA[Back in March, a blog post appeared on Into the Pudding in which Cholmes outlined his vision for a world in which everyone could remix web maps. It focused on lot on the technology and what not, but the kernel of the idea was to provide a more full-featured consumer mapping application—a Google Maps killer.

A [...]]]></description>
			<content:encoded xml:base="http://www.openplans.org/projects/topp-design/blog/2008/07/30/thoughts-on-consumer-mapping/"><![CDATA[<p>Back in March, a blog post appeared on Into the Pudding in which Cholmes outlined <a href="http://cholmes.wordpress.com/2008/03/05/letting-everyone-remix-web-maps/">his vision</a> for a world in which everyone could remix web maps. It focused on lot on the technology and what not, but the kernel of the idea was to provide a more full-featured consumer mapping application—a <a href="http://maps.google.com/">Google Maps</a> killer.
</p>
<p>A few months later, in the breezy courtyard of an Italian monastery, Andreas Hocevar and I discussed the idea a little further to begin spec&#8217;ing out what it would require. We determined that any killer mapping app would need not just annotations comparable to those in Google&#8217;s <a href="http://maps.google.com/support/bin/answer.py?hl=en&amp;answer=68480">My Maps</a> but could really innovate by providing substantive map making tools—the ability to add and manage layers, style them, and export/share the finished map with the world. Like Google Maps, it would have to allow users to collaborate and share maps, but could go a step further by providing simple versioning and commenting. But unlike Google Maps, it would allow users to actually <em>create</em> their own maps rather than rely on the one provided. Users interested in hydrology could create maps focused on watersheds and flood plains, while users interested in social justice could create maps highlighting relationships between race and poverty.
</p>
<p>Eventually, more advanced features like the ability to create and display buffers or allow others to copy maps while tracking their genealogy would seal the deal. Using these tools, a clever user could combine a preexisting hydrology map with a preexisting social justice map to produce a hard-hitting map showing the environmental justice issues surrounding a catastrophe like Hurricane Katrina. Most importantly though, users would not need advanced GIS knowledge or software—like what was required by many to produce such maps in August of 2006—but could instead create them easily and quickly through the web.
</p>
<p>Andreas and I resolved that for such an application to work it would need to be easy-to-use, non-jargony, and most of the technology would have to happen &#8216;under the hood&#8217;—<em>it should just work</em>. Different projections, for example, should only appear when an unresolvable conflict arises and caching should be determined automagically based on how much traffic a map gets. A major impediment to this is the inaccessibility of good data, and I don&#8217;t know whether we can get over that hump.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openplans.org/projects/topp-design/blog/2008/07/30/thoughts-on-consumer-mapping/feed/</wfw:commentRss>
		</item>
		<item>
		<title>An Ontology of Pop-Ups</title>
		<link>http://www.openplans.org/projects/topp-design/blog/2008/01/30/an-ontology-of-pop-ups/</link>
		<comments>http://www.openplans.org/projects/topp-design/blog/2008/01/30/an-ontology-of-pop-ups/#comments</comments>
        	<slash:comments>0</slash:comments> 
		<pubDate>Wed, 30 Jan 2008 18:56:25 +0000</pubDate>
		<dc:creator>rpenate</dc:creator>
                <opencore:userid>rpenate</opencore:userid>
		
		<category><![CDATA[OpenGeo]]></category>

		<guid isPermaLink="false">http://www.openplans.org/projects/topp-design/blog/2008/01/30/an-ontology-of-pop-ups/</guid>
		<description><![CDATA[This post is adapted from an internal wiki page and reflects design decisions made for OpenGeo. It&#8217;s only one small part of a much larger discussion, but I figured it was interesting enough to repost. The original can be found here.

The Problem

I was tossing and turning in bed the other night thinking about a proposal. [...]]]></description>
			<content:encoded xml:base="http://www.openplans.org/projects/topp-design/blog/2008/01/30/an-ontology-of-pop-ups/"><![CDATA[<p><em>This post is adapted from an internal wiki page and reflects design decisions made for <a href="http://www.opengeo.org/">OpenGeo</a>. It&#8217;s only one small part of a much larger discussion, but I figured it was interesting enough to repost. The original can be found </em><em><a href="/projects/vespucci/map-comparison">here</a></em><em>.</em>
</p>
<h2>The Problem<br />
</h2>
<p>I was tossing and turning in bed the other night thinking about a proposal. Something wasn&#8217;t sitting quite right with me, there was something amiss about the proposal that I couldn&#8217;t put my finger on. Then it occurred to me that the sidebar was all wrong—not just how it was being used, but that fact that it existed at all. When the initial suggestion was made it was an easy solution to the problem of finding a home for the comments. In proposing an off-the-cuff solution to a minor problem, however, we had inadvertently boxed the entire project into a faulty paradigm.
</p>
<h3>Desktop application vs. Web application<br />
</h3>
<p>We kept thinking of the map as a desktop application with a monopoly on screen real estate as opposed to a web application that can exist in a myriad of spaces and configurations. We had basically imposed upon users (both producers and consumers) a map which could only be used one way: alone, full-screen, with little context.
</p>
<p>The reason that things like Google Maps keep popping up in every corner of the web is because they can. Google makes it incredibly easy to produce and disseminate maps. and his ease of use has lead to widespread adoption—it doesn&#8217;t take a computer scientist to figure out how plop one into a blog post. We, on the other hand, not only make it hard to consume maps, by disallowing embedding in our OpenPlans software for &#8217;security&#8217; reasons, but are now on a path to make it difficult to produce maps as well.
</p>
<p>As an example of our narrow focus, picture the map as it is now—running edge-to-edge on our luxuriously large monitors. Looks neat, eh? A real application will all these neat pop-up effects. Now shrink it to a generous width of 620 pixels and embed into a blog post, like so:
</p>
<p><img src="/projects/vespucci/map-comparison/vespucci-tight.png" alt="vespucci-tight.png" align="middle" height="470" width="628" />
</p>
<p>See what happens with the sidebar? It takes up 340 pixels (well over half) of the room available on the map and leaves no room for the pop-up itself, which is supposedly the star of the show. Clearly this model is not going to cut it.
</p>
<h2>The Solutions<br />
</h2>
<p>Fortunately, we don&#8217;t have to reinvent the wheel. Google Maps already provides us with a working model of how to approach mapping on the web. Much of this model has already proven itself on the web and established conventions as to what sort of interactions users expect. We don&#8217;t have to start from scratch with new models to be innovative when instead we can build on others&#8217; successes and contribute our own competitive advantages.
</p>
<p>We don&#8217;t need to fight Google head on when we can instead build to our strengths. We can improve on their model in several ways, including: better organizing the information in our pop-ups; providing better collaboration tools, such as comments and history; and being more open about how we import, export, and share data. The latter two are primarily technical issues (though they likely have interaction aspects), so I am going to focus primarily on the first: how we structure our pop-ups.
</p>
<h3>Anatomy of a Pop-up<br />
</h3>
<p><img src="/projects/vespucci/map-comparison/openlayers-anatomy-of-a-popup.gif" alt="openlayers-anatomy-of-a-popup.gif" align="right" height="358" width="429" />Why add more objects to the interface when we should instead improve the one we have? Rather than arbitrarily using a sidebar to collect metadata about a marker, we&#8217;d be better off leveraging the pop-up itself. Doing so is not only more intuitive for the user, but also declutters the interface and simplifies issues of trying to synchronize state between the pop-up an a sidebar.
</p>
<p>As Google and Yahoo have proven in their mapping applications, the pop-up can be a very versatile tool. Unfortunately, it can also be a bit unweildy if improperly structured or inconsistently used. My proposal is that we scrap the sidebar and instead structure our data using the carefully defined pop-up structure on the right.
</p>
<ul>
<li>The <em>red</em> section in the upper left is the title and describes the entire object.</li>
<li>The <em>orange</em> section just below is for different views on that object including notes, comments, and history—though one could see contexts in which other would be appropriate, perhaps &#8216;team&#8217; and &#8216;tasks&#8217; if it is a view of an OpenCore project.</li>
<li>The <em>green</em> section in the center contains the content of a particular view and is the only section that scrolls if the content exceeds the maximum pop-up size.</li>
<li>The <em>blue</em> section in the lower left is for state-changing actions related to the current view, such as adding a comment when in the comments view or editing the notes when in the notes view.</li>
<li>The <em>purple</em> section in the lower right is for actions or resources that terminate or are supplemental to the current state, such as a comment feed when in the comment view or the save/cancel options when editing the note.</li>
<li>The <em>white</em> section in the upper right is reserved for actions that are attached to the entire pop-up, not a particular view within it.</li>
</ul>
<p>Although these conventions should be adhered to as much as possible, they should not be a hindrance to the user and should be deviated from in exceptional circumstances.<br />
  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.openplans.org/projects/topp-design/blog/2008/01/30/an-ontology-of-pop-ups/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
