<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Software As She's Developed &#187; Design Patterns</title>
	<atom:link href="http://softwareas.com/tag/design-patterns/feed" rel="self" type="application/rss+xml" />
	<link>http://softwareas.com</link>
	<description>Mahemoff's Podcast/Blog - Web, Programming, Usability from the Author of 'Ajax Design Patterns' (AjaxPatterns.org)</description>
	<lastBuildDate>Mon, 26 Jul 2010 16:52:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.4" -->
		<copyright>Copyright &amp;#xA9; Software As She's Developed 2010 </copyright>
		<managingEditor>michael@mahemoff.com (Software As She's Developed)</managingEditor>
		<webMaster>michael@mahemoff.com (Software As She's Developed)</webMaster>
		<category>posts</category>
		<ttl>1440</ttl>
		<itunes:keywords></itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary>Mahemoff's Podcast/Blog - Web, Programming, Usability from the Author of 'Ajax Design Patterns' (AjaxPatterns.org)</itunes:summary>
		<itunes:author>Software As She's Developed</itunes:author>
		<itunes:category text="Society &amp; Culture"/>
		<itunes:owner>
			<itunes:name>Software As She's Developed</itunes:name>
			<itunes:email>michael@mahemoff.com</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://softwareas.com/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<image>
			<url>http://softwareas.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
			<title>Software As She's Developed</title>
			<link>http://softwareas.com</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>Events Last Week: Web Fonts, Social Design Patterns, BT Dev Day, Real-Time Javascript</title>
		<link>http://softwareas.com/events-last-week-web-fonts-social-design-patterns-bt-dev-day-real-time-javascript</link>
		<comments>http://softwareas.com/events-last-week-web-fonts-social-design-patterns-bt-dev-day-real-time-javascript#comments</comments>
		<pubDate>Mon, 25 Jan 2010 00:37:16 +0000</pubDate>
		<dc:creator>mahemoff</dc:creator>
				<category><![CDATA[HumansAndTech]]></category>
		<category><![CDATA[SoftwareDev]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Fonts]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[NodeJS]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://softwareas.com/events-last-week-web-fonts-social-design-patterns-bt-dev-day-real-time-javascript</guid>
		<description><![CDATA[Last week saw a confluence of excellent events. In  the same week as a house move, it proved to be a week of much learning and little sleep. I&#8217;d hoped to do a better write-up, it never happened, a combination of being too busy and new MAC BATTERIES SUCK, meaning the lappy couldn&#8217;t last [...]]]></description>
			<content:encoded><![CDATA[<p>Last week saw a confluence of excellent events. In  the same week as a house move, it proved to be a week of much learning and little sleep. I&#8217;d hoped to do a better write-up, it never happened, a combination of being too busy and new MAC BATTERIES SUCK, meaning the lappy couldn&#8217;t last through the whole session. But fortunately, I have some links to point to. Here&#8217;s a quick summary anyway, along with the linkage.</p>

<h3>Web Fonts at London Web Standards</h3>

<p><a href="http://www.londonwebstandards.org/2010/01/lws-january-web-fonts-with-ben-weiner-live-blog/">@otrops captured the live notes in glorious detail</a>, as did <a href="http://www.boogdesign.com/b2evo/index.php/2010/01/19/lws-january-web-fonts?blog=2">Rob Crowther</a>.</p>

<p>Ben is ideally placed to cover the brave new world of web fonts, being a web maker who studied fonts at uni. He walked us through the evolution of font hacks on the web: image with alt tag; CSS background image with text pushed off the page; rendering with Flash (<a href="http://www.mikeindustries.com/blog/sifr">SiFR</a>); rendering with Canvas or SVG (<a href="http://cufon.shoqolate.com/generate/">Cufon</a>, <a href="http://typeface.neocracy.org/">TypeFace.js</a>), using JSON-based font spec data. It all leads up to the holy grail: @font-face.</p>

<p>Great, so we have @font-face, but issues remain:
* The foundries &#8211; Mark Pilgrim, in no uncertain terms, <a href="http://diveintomark.org/archives/2009/04/21/fuck-the-foundries"></a>complains the font vendors are stuck in the dark ages of the printing press, in their resistance to support @font-face. This seems to be changing with <a href="http://people.mozilla.com/~jkew/woff/woff-spec-latest.html">WOFF</a>, a web-only format that seems to placate the foundries, who worry their fonts will be stolen. It seems more like a symbolic gesture, since the data could still be converted and in any event the print fonts could still be appropriated, but the foundries are feeling more reassured and making signs they will go along with it.
* Performance issue &#8211; Bandwidth issues and Paul Irish&#8217;s &#8220;flash of unstyled text&#8221;, where the user notices the font change once the fancy @font-face font has been downloaded.
* Compatibility &#8211; IE has long supported font-face, but with EOT format fonts, and that remains the case. You therefore need both types of fonts, and licenses will generally not give you both.</p>

<h3>Social Design Patterns</h3>

<p>I was, needless to say, psyched about this. Yahoo! has been the closest thing to a realisation of the inspiring design pattern vision of the mid-late &#8217;90s. Patterns on the web, for both its own employees and the wider community to learn from and evolve. These are social design patterns mined by Christian Crumlish (@mediajunkie), in many respect the closest thing software has to an analogy of building architecture, where design patterns originally came from.</p>

<p>There are 96 patterns in all and I&#8217;m looking forward to poring through them. In these patterns are hundreds of people-years&#8217; experience of observing real-world social systems. In my own pattern work, I&#8217;ve found it necessary to articulate the overarching design principles behind the patterns. Pattern languages should be opinionated, so it&#8217;s a good thing to make explicit your criteria for filtering design features. Christian has followed this model too, and identified 5 overarching principles:</p>

<ul>
<li>Paving the cowpaths. Facilitating the patterns that are already happening, rather than imposing your own invented process. Also means evolving with your users, ev dogster started as photo sharing but evolved to social network.</li>
<li>Talk like a person.</li>
<li>Play well with others. Open standards, mashups, etc. &#8220;if you love something, set if free&#8221;</li>
<li>Learn from games.</li>
<li>game UI concepts</li>
<li>designing the rules, but ultimately letting the people who come into the space finish the experience themselves.*</li>
<li>Respect the ethical dimension.</li>
</ul>

<p>See <a href="http://www.designingsocialinterfaces.com/patterns.wiki/index.php?title=Main_Page">the wiki</a> or <a href="http://www.amazon.com/Designing-Social-Interfaces-Principles-Experience/dp/0596154925">the book</a> for more details.</p>

<h3>BT Developer Day</h3>

<p>This was an internal conference for BTers in London covering a range of general tech trends, and also being a chance to get together and talk shop. The agenda included talks on Scala, Rails, Kanban, iPhone development, and even a lightning talk from @psd on the horrors and delights of APL.</p>

<p><a href="http://docs.google.com/present/edit?id=0AY-4v1wFiVhuZGNwbjVmM3JfMjdkdmdtNTRnNA&#038;hl=en">I gave a talk on Embracing the Web</a>, emphasising open standards and the supreme primacy of <a href="http://paulirish.com/2009/cornify-easter-egg-with-jquery/">Konami Cornification</a>.</p>

<h3>Real-Time Javascript</h3>

<p>At the Javascript meetup, a great talk on NodeJS and WebSockets. NodeJS is coming on thick and fast, and Makoto Inoue showed how the technology plays nicely with WebSockets. WebSockets are all about Comet-style interaction, so  expect to see a lot more of this combo in the next couple years.</p>

<p>Luis Ciprian, visiting from Brazil, gave us an overview of XMPP and talked us through a real-time web app &#8211; a basketball score and conversation tracker &#8211; using XMPP.</p>

<p>Fin.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareas.com/events-last-week-web-fonts-social-design-patterns-bt-dev-day-real-time-javascript/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Design Pattern: Script Islands</title>
		<link>http://softwareas.com/design-pattern-script-islands</link>
		<comments>http://softwareas.com/design-pattern-script-islands#comments</comments>
		<pubDate>Sun, 06 Dec 2009 17:47:29 +0000</pubDate>
		<dc:creator>mahemoff</dc:creator>
				<category><![CDATA[SoftwareDev]]></category>
		<category><![CDATA[Ajax Patterns]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://softwareas.com/design-pattern-script-islands</guid>
		<description><![CDATA[

"Script Island" is what I'm calling a design pattern I alluded to here. The pattern is to embed Javascript in your HTML like so:

PLAIN TEXT

HTML:
&#60;script id="greeting" type="x-deferred-script"&#62;
&#160; alert(&#34;this is my script - it's eval'd on demand&#34;);
&#60;/script&#62; 




When the page loads, the browser should say "I don't know what 'x-deferred-script' is, and therefore ignore the concents [...]]]></description>
			<content:encoded><![CDATA[<p><img style="width:400px;" src="http://picupper.com/2009/12/06/car-on-island_sale.jpg" /></p>

<p>"Script Island" is what I'm calling a design pattern I <a href="http://mini.softwareas.com/experiment-making-use-of-and-innerhtml-with-s">alluded to here</a>. The pattern is to embed Javascript in your HTML like so:</p>

<div class="igBar"><span id="lhtml-2"><a href="#" onclick="javascript:showPlainTxt('html-2'); return false;">PLAIN TEXT</a></span></div>

<div class="syntax_hilite"><span class="langName">HTML:</span><br /><div id="html-2">
<div class="html"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"greeting"</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"x-deferred-script"</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></div></li>
<li style="font-weight: bold;color:#26536A;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; alert(&quot;this is my script - it's eval'd on demand&quot;);</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span> </div></li></ol></div>
</div></div>

<p><br /></p>

<p>When the page loads, the browser should say "I don't know what 'x-deferred-script' is, and therefore ignore the concents of the script tag. You eval it manually later on, using something like <tt>eval($("script#greeting").html());</tt> This is similar to <a href="http://googlecode.blogspot.com/2009/09/gmail-for-mobile-html5-series-reducing.html">Google's trick of embedding Javascript in comments</a>, but has the additional benefit of keeping Javascript where it should be, in a script tag. This way, it plays nicer with code editors (e.g. Vim happily handles syntax highlighting) and analytical tools. (Technically, those tools should probably do the same as browsers and <em>not</em> treat anything inside a script tag as Javascript, but fortunately for us, they do.)</p>

<p>Script Islands are useful in the following situations:</p>

<ul>
<li>With a complex web app - lots of Javascript - where you want it to load quickly and without lots of processing or round-tripping back to the server. Sometimes, it's a better user experience to load the lot in one go, show something, and eval() the rest of the Javascript once the basic app is running (perhaps in anticipation of a separate "page" or another part of the application). This is a special case of <a href="http://ajaxpatterns.org/Predictive_Fetch">Predictive Fetch</a>; it makes sense Google would use (a variant of) Script Island for the mobile edition of GMail, where round trips to and from the server are expensive.</li>
<li>With a single-page application (SPA) like TiddlyWiki, where all the code is inside the HTML file. Each of the script islands is a separate module, and a microkernel is responsible for loading the scripts according to different rules. For example, the scripts might contain "depends" attributes to declare they depend on other scripts, so the microkernel sequences the script loading. Or another scenario might be that the user has some control over which scripts get loaded; instead of deleting the other scripts from the file, you keep them around in case the user wants to repackage the SPA, with a different set of scripts.</li>
</ul>

<p>BTW I <a href="http://mini.softwareas.com/experiment-making-use-of-and-innerhtml-with-s">originally</a> used <tt>&lt;script src=""&gt;</tt> to trick the browser into not evaluating the script tag's innerHTML. Thanks to <a href="http://jermolene.com">Jeremy</a> for coming up with the more elegant alternative of a <tt>type=x-tiddler</tt> (which I stated above in the more generic form <tt>type=x-deferred-script</tt>).</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareas.com/design-pattern-script-islands/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Post-Modern Job Posting: Pattern Curator</title>
		<link>http://softwareas.com/post-modern-job-posting-pattern-curator</link>
		<comments>http://softwareas.com/post-modern-job-posting-pattern-curator#comments</comments>
		<pubDate>Thu, 12 Oct 2006 08:13:29 +0000</pubDate>
		<dc:creator>mahemoff</dc:creator>
				<category><![CDATA[HumansAndTech]]></category>
		<category><![CDATA[SoftwareDev]]></category>
		<category><![CDATA[AjaxPatterns]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Pattern Languages]]></category>

		<guid isPermaLink="false">http://www.softwareas.com/post-modern-job-posting-pattern-curator</guid>
		<description><![CDATA[It's cool to see Yahoo! posting a job for pattern curator:


CURATE THE YAHOO! PATTERN LIBRARY
Yahoo!'s Platform User Experience Design team is looking for a new curator for the Pattern Library. The curator works with designers from across Yahoo! to develop new patterns and to eventually migrate a pattern to the public library. You will be [...]]]></description>
			<content:encoded><![CDATA[<p>It's cool to see Yahoo! posting a job for <a href="http://feeds.feedburner.com/~r/LooksGoodWorksWell/~3/35763952/wanted-pattern-curator-for-yahoo.html">pattern curator</a>:</p>

<blockquote>
CURATE THE YAHOO! PATTERN LIBRARY
Yahoo!'s Platform User Experience Design team is looking for a new curator for the Pattern Library. The curator works with designers from across Yahoo! to develop new patterns and to eventually migrate a pattern to the public library. You will be responsible for spotting trends in the designs of our properties, for designing and crafting new additions to the library and for evangelizing the authorship of new patterns among your Interaction Designer colleagues.

You will partner with our Platform Presentation Engineering team to create interactions and best practices that accompany the UI Widget Library. Additionally, you will own the external Public Pattern Library and develop the pattern lifecycle from internal to external libraries. And last but not least, you will be the spearhead and driver for a new addition to our Library suite - a new Terms Library and will work closely with our internal editorial team.
</blockquote>

<p>Patterns will become more important to organisations as companies realise there's value in concrete advice based on real-world examples, to complement vague mission statements with stuff people can actually use day to day. This will be aided by the  general trend towards wikis and more user-friendly document evolution. For several years now, <a href="http://www.boxesandarrows.com/view/implementing_a_pattern_library_in_the_real_world_a_yahoo_case_study">Yahoo! has been using patterns</a> in this more holistic sense, and the ad for a pattern curator suggests they've been more than happy with the results.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareas.com/post-modern-job-posting-pattern-curator/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>&#8220;So, Jesse, Is Ajax a Pattern?&#8221;</title>
		<link>http://softwareas.com/so-jesse-is-ajax-a-pattern</link>
		<comments>http://softwareas.com/so-jesse-is-ajax-a-pattern#comments</comments>
		<pubDate>Tue, 16 May 2006 03:32:29 +0000</pubDate>
		<dc:creator>mahemoff</dc:creator>
				<category><![CDATA[HumansAndTech]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[AjaxPatterns]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.softwareas.com/so-jesse-is-ajax-a-pattern</guid>
		<description><![CDATA[&#8230; That&#8217;s the question I finally got to ask the man who gave Ajax its name, following Jesse James  Garrett&#8217;s keynote last week at The Ajax Experience. I consider Ajax a very standard, uncontroversial, example of a pattern, so I&#8217;ve wondered why it wasn&#8217;t introduced as such, in the original Ajax paper.

Jesse said he&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230; That&#8217;s the question I finally got to ask the man who gave Ajax its name, following <a href="http://jjg.net/">Jesse James  Garrett&#8217;s</a> keynote last week at <a href="http://theajaxexperience.com">The Ajax Experience</a>. I consider Ajax a very standard, uncontroversial, <a href="http://softwareas.com/ajax-patterns-in-the-pattern-community-radar">example of a pattern</a>, so I&#8217;ve wondered why it wasn&#8217;t introduced as such, in the <a href="http://adaptivepath.com/publications/essays/archives/000385.php">original Ajax paper</a>.</p>

<p>Jesse said he&#8217;s asked the question quite a bit. He didn&#8217;t answer the question directly - there wasn&#8217;t a &#8220;Yes&#8221; or a &#8220;No&#8221;. Essentially, he just made the point that patterns mean different things to different people, everyone has their own idea, etc. In other words, I think he either doesn&#8217;t want to get bogged down in the debate or doesn&#8217;t consider it important.</p>

<p>At first, that seemed rather anticlimatic, but on reflection, I can see his point. He mentioned in his talk how people (of a certain kind, I guess) mail him saying &#8220;I wrote this app in 2000, it uses IFrame yadda yadda  &#8230; Is it Ajax?&#8221;.  So he probably has enough trouble with the definition of Ajax to worry about the definition of patterns as well. Moreover, he&#8217;s a consultant, and probably talks to high-level managers who wouldn&#8217;t know a pattern from a shell script.</p>

<p>So it&#8217;s understandable from a pragmatic perspective why &#8220;pattern&#8221; isn&#8217;t used in the original definition of Ajax, even though Ajax fits the mould perfectly. However, it <em>is</em> a shame for software, and industry at large, that patterns aren&#8217;t the standard way people think about designs and processes. Framed as a pattern, a high-level architectural style like Ajax can evolve quickly, as people begin to consider examples, forces, rationale, and all the other standard attributes of a pattern. Furthermore, people can ask about the role of this pattern in the entire ecosystem of patterns. What are its alternatives and how does it stack up? What <a href="http://ajaxpatterns.org">are the lower-level patterns</a> that should be solve questions opened up by applying the high-level pattern?</p>

<p>That many managers don&#8217;t get patterns leaves a lot of potential for improvement within organisations. An open wiki of interlinked organisational, technical, usability, etc patterns should be an asset to any company. As explained in <a href="http://pliant.org/Evolution-In-Action.pdf">this visionary paper</a> by Jed Harris and Austin Henderson. The 2020 scenario suggests how patterns might be navigated in the future.</p>

<blockquote>
<p>
Then she puts a probe into the guise and begins 
looking for the patterns that the guise uses to model market response to Heavy Metal.*  Her 
office shows her the internal organization of the guise as a network of nodes whose size and 
clustering reflect how much they contribute to the guiseâ€šÃ„Ã´s current display. Each of the nodes is 
a small view of the associated pattern, showing its current state; if she focuses on a single 
node, she can usually tell how it is contributing to the display.  Olivia thinks of this display as 
a â€šÃ„Ãºsea of nodesâ€šÃ„Ã¹ because the ripples and swirls remind her of flowing water.  She swims 
through the sea, getting a feeling for how Fred has put the guise together, and how the guise 
itself is interpreting the current behavior of Heavy Metalâ€šÃ„Ã´s customers.  After a little while she 
zeros in on the service and support patterns.  By suppressing the contribution of some patterns 
and looking at what changes in the display, she eventually finds a patternâ€šÃ„Ã® <i>Service is a 
Feature</i>â€šÃ„Ã® that seems to be most involved with the aspects that have been bothering her. 
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://softwareas.com/so-jesse-is-ajax-a-pattern/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
