<?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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
  >
<channel>
  <title>FunctionSource Posts</title>
  <atom:link href="http://functionsource.com/feed/entries" rel="self" type="application/rss+xml" />
  <link>http://functionsource.com</link>
  <description>Your Source for Developer News</description>
  <lastBuildDate>Fri, 02 Mar 2012 15:07:59 +0000</lastBuildDate>
  <language>en</language>
  <sy:updatePeriod>hourly</sy:updatePeriod>
  <sy:updateFrequency>1</sy:updateFrequency>
  <generator>http://viewjs.com/</generator>
  <image>
    <url>http://functionsource.com/favicon.ico</url>
    <title>FunctionSource</title>
    <link>http://functionsource.com</link>
  </image>
  
    <item>
      <guid isPermaLink="true">http://functionsource.com/post/image-set-dealing-with-dpi-in-specific-terms</guid>
      <title>image-set: dealing with DPI in specific terms</title>
      <link>http://functionsource.com/post/image-set-dealing-with-dpi-in-specific-terms</link>
      <pubDate>Fri, 02 Mar 2012 15:07:59 +0000</pubDate>
      <dc:creator>Dion Almaer</dc:creator>
      <description><![CDATA[Edward O'Connor has started an interesting conversation with his post on www-style on <a href="http://lists.w3.org/Archives/Public/www-style/2012Feb/1103.html">the image-set() function</a>. <a href="http://functionscopedev.wordpress.com/2012/03/02/image-set-dealing-with-dpi-in-specific-terms/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
      <content:encoded><![CDATA[<p>Edward O&#8217;Connor has started an interesting conversation with his post on www-style on <a href="http://lists.w3.org/Archives/Public/www-style/2012Feb/1103.html">the image-set() function</a>.</p>
<p>He argues that while the tools exist (via media queries and min-device-pixel-ratio and it&#8217;s JavaScript friend) to deal with various DPI screens such as the iPhone 4+ retina display, it is too easy to make mistakes, and this is something that you should be doing time and time again, and thus it would be nice to have a dedicated syntax (such as this:)</p>
<div class="gist" id="gist-1959004">
<div class="gist-file">
<div class="gist-data gist-syntax">
<div class="gist-highlight">
<pre>
<div class="line" id="LC1"><span class="nt">selector</span> <span class="p">{</span></div>
<div class="line" id="LC2">&nbsp;&nbsp;<span class="k">background</span><span class="o">:</span> <span class="n">image</span><span class="o">-</span><span class="n">set</span><span class="p">(</span><span class="sx">url(foo-lowres.png)</span> <span class="m">1</span><span class="err">x</span><span class="o">,</span></div>
<div class="line" id="LC3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="sx">url(foo-highres.png)</span> <span class="m">2</span><span class="err">x</span><span class="p">)</span> <span class="k">center</span><span class="p">;</span></div>
<div class="line" id="LC4"><span class="p">}</span></div>
</pre>
</div></div>
</div>
</div>
<p>I agree that life is too error prone, and have seen annoying bugs in browsers. The one that always surprises me is the extra download of CSS.</p>
<p>Saw you have separate style sheets like this:</p>
<div class="gist" id="gist-1958946">
<div class="gist-file">
<div class="gist-data gist-syntax">
<div class="gist-highlight">
<pre>
<div class="line" id="LC1"><span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">"stylesheet"</span> <span class="na">type=</span><span class="s">"text/css"</span> <span class="na">href=</span><span class="s">"retina.css"</span> <span class="na">media=</span><span class="s">"only screen and (-webkit-min-device-pixel-ratio: 2)"</span><span class="nt">&gt;</span></div>
<div class="line" id="LC2"><span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">"stylesheet"</span> <span class="na">type=</span><span class="s">"text/css"</span> <span class="na">href=</span><span class="s">"regular.css"</span> <span class="na">media=</span><span class="s">"screen"</span><span class="nt">&gt;</span></div>
</pre>
</div></div>
</div>
</div>
<p>Load that up in your browser and use the tools to see what the browser has downloaded, and you will probably see that both CSS files were downloaded. That could make sense if the media query was tied to the size of the browser (as that can change) but is your desktop browser suddenly going to double its DPI?</p>
<p>The other issue that I have with the media query solution is that it is easy to &#8220;miss&#8221; an image or two.</p>
<p>Now, with the proliferation of tools such as stylus, SASS, less and friends, you can work around the issues now. We wrap our images as <code>image-element('images/someimage.png')</code> and our tools make sure the <code>background-size</code> is set and the right image is referenced in our <code>foo@2x.css</code>.</p>
<br />  ]]></content:encoded>
      
        <category><![CDATA[css]]></category>
      
        <category><![CDATA[dpi]]></category>
      
        <category><![CDATA[retina]]></category>
      
      <comments>http://functionsource.com/post/image-set-dealing-with-dpi-in-specific-terms#social</comments>
      <slash:comments>0</slash:comments>
    </item>
  
    <item>
      <guid isPermaLink="true">http://functionsource.com/post/towers-of-takos</guid>
      <title>Towers of Takos</title>
      <link>http://functionsource.com/post/towers-of-takos</link>
      <pubDate>Thu, 01 Mar 2012 21:03:39 +0000</pubDate>
      <dc:creator>Dion Almaer</dc:creator>
      <description><![CDATA[<a href="http://towerjs.org/">Tower.js</a> is to Rails, as <a href="https://github.com/mikeal/tako">Tako</a> is to Sinatra? <a href="http://functionscopedev.wordpress.com/2012/03/01/towers-of-takos/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
      <content:encoded><![CDATA[<p>New Web frameworks. Back in my Ajaxian days we got email daily about a new Ajax framework. Back in my TheServerSide days we got email daily about a new Java Web framework.</p>
<p>These days we have new MVC rich frontend JS (and CoffeeScript) frameworks and node frameworks.</p>
<p>Two very contrasting and interesting frameworks were just launched:</p>
<p><a href="http://towerjs.org/">Tower.js</a> sits on top of node to deliver an opinionated stack for client and server:</p>
<ul>
<li>MongoDB (database)
</li><li>Redis (background jobs)
</li><li>CoffeeScript
</li><li>Stylus
</li><li>Jasmine (tests)
</li><li>jQuery
</li></ul>
<blockquote><p>
Includes a database-agnostic ORM with browser (memory) and MongoDB support, modeled after ActiveRecord and Mongoid for Ruby. Includes a controller architecture that works the same on both the client and server, modeled after Rails. The routing API is pretty much exactly like Rails 3&#8242;s. Templates work on client and server as well (and you can swap in any template engine no problem). Includes asset pipeline that works just like Rails 3&#8242;s &#8211; minifies and gzips assets with an md5-hashed name for optimal browser caching, only if you so desire. And it includes a watcher that automatically injects javascripts and stylesheets into the browser as you develop. It solves a lot of our problems, hope it solves yours too.
</p></blockquote>
<p>Think &#8220;Rails&#8221; in the new world. One of the biggest points of Rails was ActiveRecord, and Tower has a rich modeling layer in Tower.Model.</p>
<p><a href="https://github.com/mikeal/tako">Tako</a> is to Sinatra as Tower is to Rails (in a crude way). It is a very functional and simple way to create an &#8220;application&#8221; and add routes that map to static files or JSON or HTML&#8230; and Socket.IO works out of the box.</p>
<br />  ]]></content:encoded>
      
        <category><![CDATA[framework]]></category>
      
        <category><![CDATA[node]]></category>
      
      <comments>http://functionsource.com/post/towers-of-takos#social</comments>
      <slash:comments>0</slash:comments>
    </item>
  
    <item>
      <guid isPermaLink="true">http://functionsource.com/post/android-browser-code-dumps-the-mobile-web-bane-of-existence</guid>
      <title>Android browser code dumps; The mobile Web bane of existence</title>
      <link>http://functionsource.com/post/android-browser-code-dumps-the-mobile-web-bane-of-existence</link>
      <pubDate>Wed, 29 Feb 2012 13:50:20 +0000</pubDate>
      <dc:creator>Dion Almaer</dc:creator>
      <description><![CDATA[Segfaults in /system/lib/libwebcore.so makes me wonder if debugging across Android's fragmented wasteland will make the IE6 years seem like a piece of cake! <a href="http://functionscopedev.wordpress.com/2012/02/29/android-browser-code-dumps-the-mobile-web-bane-of-existence/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
      <content:encoded><![CDATA[<p>There is a chance that I will look fondly at the extra effort required to get rich Web apps running in IE6. We will remember how quaint it was when we complained about the harshness of having multiple versions of IE on the same machine so we could test them.</p>
<p>As we saw the modern mobile Web (the &#8220;there is only one Web&#8221; version vs. the WAP one) spring to life, we had smiles on our faces as we whipped up some <code>-webkit-*</code> and saw it work on our new iOS devices. Then we saw more devices come into the mix, and Android grew first to be a platform that you had to think about ([insert Opera mobile... big... blah blah]).</p>
<p>Fast forward to today and we have the following looming over us:</p>
<ul>
<li>A ton of devices coming onto the market quickly
</li><li>The devices are not coming to market with the latest OS/WebKit versions
</li><li>The devices are not updating quickly
</li><li>The WebKit builds are often quite bad!
</li></ul>
<p>This came to light again when a project I am working on was able to easily core dump the Android browser on a few devices (such as HTC Evo 4G Shift &#8230; but not the other HTC Evo 4Gs mind!).</p>
<pre>
02-24 16:35:07.589 I/DEBUG   ( 1253): pid: 6315, tid: 6329  &gt;&gt;&gt; com.android.browser &lt;&lt;&lt;
02-24 16:35:07.589 I/DEBUG   ( 1253): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000011
02-24 16:35:07.589 I/DEBUG   ( 1253):  r0 00000008  r1 49329435  r2 45e5d374  r3 47055720
02-24 16:35:07.589 I/DEBUG   ( 1253):  d30 0000000000000000  d31 3ff0000000000000
02-24 16:35:07.589 I/DEBUG   ( 1253):  scr 20000013
02-24 16:35:07.589 I/DEBUG   ( 1253):
02-24 16:35:07.639 I/DEBUG   ( 1253):          #00  pc 47055778
02-24 16:35:07.639 I/DEBUG   ( 1253):          #01  lr 4704e724
02-24 16:35:07.639 I/DEBUG   ( 1253):
02-24 16:35:07.639 I/DEBUG   ( 1253): code around pc:
02-24 16:35:07.639 I/DEBUG   ( 1253): 47055758 e1a0d00b e8bd4800 e28dd008 e12fff1e
02-24 16:35:07.639 I/DEBUG   ( 1253):
02-24 16:35:07.639 I/DEBUG   ( 1253): code around lr:
02-24 16:35:07.639 I/DEBUG   ( 1253): 4704e704 e5987017 e597000b e59b100c e52d0004
02-24 16:35:07.639 I/DEBUG   ( 1253):
02-24 16:35:07.639 I/DEBUG   ( 1253): stack:
02-24 16:35:07.639 I/DEBUG   ( 1253):     45edd8cc  00000002
02-24 16:35:07.639 I/DEBUG   ( 1253):     45edd8d0  a861c3b9  /system/lib/libwebcore.so
</pre>
<p>I shouldn&#8217;t be able to dump your core. From looking online I was shocked at the number of people complaining about some of these devices. To them, their browser crashes all the darn time. Why not use Chrome for Android I hear you ask&#8230; well that is only available for Ice Cream Sandwich, and hardly anyone has been able to upgrade to that. What about Dolphin HD? Or Firefox&#8230;. sure, but how many users are going to think to update their browser on their mobile like that? Not many&#8230;. unless they get used to awful default browsers as we did on Windows.</p>
<p>As I went through the myriad of devices to test things, I started to cry as I thought about the amount of effort it would take to get massively broad coverage that doesn&#8217;t crash some users. This is why being able to target an engine would be nice.</p>
<p>It is also why efforts such as the <a href="http://walmartlabs.blogspot.com/2012/02/community-is-pushing-mobile-web.html">latest push for decent mobile Web standards and support</a> are important. It isn&#8217;t just about passing the tests, but how well we pass them.</p>
<p>Brendan Eich talked about the tough task of pushing 60fps at all times on a mobile device. I am glad that Mozilla is pushing for this and doing pretty well I might add with their <a href="https://wiki.mozilla.org/B2G">Boot 2 Gecko</a> platform&#8230;. which gives you <a href="http://openwebdevice.com">view source for your OS</a>.</p>
<p>I hope that we can all turn this around and get away from the hell that is debugging for all of these platforms&#8230;. but can we?</p>
<br />  ]]></content:encoded>
      
        <category><![CDATA[android]]></category>
      
        <category><![CDATA[mobile]]></category>
      
      <comments>http://functionsource.com/post/android-browser-code-dumps-the-mobile-web-bane-of-existence#social</comments>
      <slash:comments>0</slash:comments>
    </item>
  
    <item>
      <guid isPermaLink="true">http://functionsource.com/post/morris-js-simple-clean-line-charts</guid>
      <title>Morris.js: Simple, clean, line charts</title>
      <link>http://functionsource.com/post/morris-js-simple-clean-line-charts</link>
      <pubDate>Tue, 28 Feb 2012 13:27:22 +0000</pubDate>
      <dc:creator>Dion Almaer</dc:creator>
      <description><![CDATA[We have seen a lot of graphing packages for the Web over the years. We have <a href="http://benaskins.github.com/simplegraph/">simple graphs</a> and <a href="http://g.raphaeljs.com/">gRaphael</a>, and then <a href="http://www.highcharts.com/">super interactive and rich High Charts</a>.

Sometimes though you want a simple and clean line chart, and <a href="http://oesmith.github.com/morris.js/">Morris.js</a> certainly does that. <a href="http://functionscopedev.wordpress.com/2012/02/28/morris-js-simple-clean-line-charts/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
      <content:encoded><![CDATA[<p><img alt="" src="http://functionscopedev.files.wordpress.com/2012/02/morrisjs.png?w=584&#038;h=273" height="273" title="morrisjs" width="584" /></p>
<p>Why do a simple line dance when you can have fun with a <a href="http://en.wikipedia.org/wiki/Morris_dance">Morris dance</a>!</p>
<p>We have seen a lot of graphing packages for the Web over the years. We have <a href="http://benaskins.github.com/simplegraph/">simple graphs</a> and <a href="http://g.raphaeljs.com/">gRaphael</a>, and then <a href="http://www.highcharts.com/">super interactive and rich High Charts</a>.</p>
<p>Sometimes though you want a simple and clean line chart, and <a href="http://oesmith.github.com/morris.js/">Morris.js</a> certainly does that.</p>
<p>As most good libraries do, it was born from a real project. <a href="http://twitter.com/olly_smith">Olly Smith</a> extracted the work from the charts that you often see on <a href="http://howmanyleft.co.uk/">How Many Left</a>.</p>
<br />  ]]></content:encoded>
      
        <category><![CDATA[charts]]></category>
      
        <category><![CDATA[graphs]]></category>
      
        <category><![CDATA[jquery]]></category>
      
        <category><![CDATA[raphael]]></category>
      
      <comments>http://functionsource.com/post/morris-js-simple-clean-line-charts#social</comments>
      <slash:comments>0</slash:comments>
    </item>
  
    <item>
      <guid isPermaLink="true">http://functionsource.com/post/connect-2-0-simplified-middleware-readies-express-3-0</guid>
      <title>Connect 2.0: Simplified middleware, readies Express 3.0</title>
      <link>http://functionsource.com/post/connect-2-0-simplified-middleware-readies-express-3-0</link>
      <pubDate>Tue, 28 Feb 2012 05:13:13 +0000</pubDate>
      <dc:creator>Dion Almaer</dc:creator>
      <description><![CDATA[TJ has <a href="http://tjholowaychuk.com/post/18418627138/connect-2-0">announced Connect 2.0</a> which brings some nice cleanup to the middleware library, and allows it to get up to speed with the latest that recent node versions bring to bear (e.g. use of the compression support). <a href="http://functionscopedev.wordpress.com/2012/02/27/connect-2-0-simplified-middleware-readies-express-3-0/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
      <content:encoded><![CDATA[<p>TJ has <a href="http://tjholowaychuk.com/post/18418627138/connect-2-0">announced Connect 2.0</a> which brings some nice cleanup to the middleware library, and allows it to get up to speed with the latest that recent node versions bring to bear (e.g. use of the compression support).</p>
<p>A big cleanup is at the core of it all&#8230;. the main access point, which becomes the simple <code>connect()</code> and returns an object that you can then use to setup for both http and https land:</p>
<div class="gist" id="gist-1929821">
<div class="gist-file">
<div class="gist-data gist-syntax">
<div class="gist-highlight">
<pre>
<div class="line" id="LC1"><span class="kd">var</span> <span class="nx">connect</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#039;connect&#039;</span><span class="p">)</span></div>
<div class="line" id="LC2">&nbsp;&nbsp;<span class="p">,</span> <span class="nx">http</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#039;http&#039;</span><span class="p">)</span></div>
<div class="line" id="LC3">&nbsp;&nbsp;<span class="p">,</span> <span class="nx">https</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#039;https&#039;</span><span class="p">);</span></div>
<div class="line" id="LC4"></div>
<div class="line" id="LC5"><span class="kd">var</span> <span class="nx">app</span> <span class="o">=</span> <span class="nx">connect</span><span class="p">()</span></div>
<div class="line" id="LC6">&nbsp;&nbsp;<span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">connect</span><span class="p">.</span><span class="nx">logger</span><span class="p">(</span><span class="s1">&#039;dev&#039;</span><span class="p">))</span></div>
<div class="line" id="LC7">&nbsp;&nbsp;<span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">connect</span><span class="p">.</span><span class="kr">static</span><span class="p">(</span><span class="s1">&#039;public&#039;</span><span class="p">))</span></div>
<div class="line" id="LC8">&nbsp;&nbsp;<span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">){</span></div>
<div class="line" id="LC9">&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="s1">&#039;hello world\n&#039;</span><span class="p">);</span></div>
<div class="line" id="LC10">&nbsp;&nbsp;<span class="p">})</span></div>
<div class="line" id="LC11"></div>
<div class="line" id="LC12"><span class="nx">http</span><span class="p">.</span><span class="nx">createServer</span><span class="p">(</span><span class="nx">app</span><span class="p">).</span><span class="nx">listen</span><span class="p">(</span><span class="mi">80</span><span class="p">);</span></div>
<div class="line" id="LC13"><span class="nx">https</span><span class="p">.</span><span class="nx">createServer</span><span class="p">(</span><span class="nx">tlsOptions</span><span class="p">,</span> <span class="nx">app</span><span class="p">).</span><span class="nx">listen</span><span class="p">(</span><span class="mi">443</span><span class="p">);</span></div>
</pre>
</div></div>
</div>
</div>
<p>With a new Connect, we can now expect a new Express, and TJ promises 3.0 coming soon!</p>
<br />  ]]></content:encoded>
      
        <category><![CDATA[connect]]></category>
      
        <category><![CDATA[express]]></category>
      
        <category><![CDATA[node]]></category>
      
      <comments>http://functionsource.com/post/connect-2-0-simplified-middleware-readies-express-3-0#social</comments>
      <slash:comments>0</slash:comments>
    </item>
  
    <item>
      <guid isPermaLink="true">http://functionsource.com/post/design-over-function-apples-calculator-and-square-receipts</guid>
      <title>Design over function; Apple’s calculator, and Square receipts</title>
      <link>http://functionsource.com/post/design-over-function-apples-calculator-and-square-receipts</link>
      <pubDate>Mon, 27 Feb 2012 13:29:34 +0000</pubDate>
      <dc:creator>Dion Almaer</dc:creator>
      <description><![CDATA[Have you ever been in the situation where designers are pushing for functionality based on aesthetics over function? Square has square receipts in their lunch room. The iOS calculator doesn't let you keep typing. What have you seen? <a href="http://functionscopedev.wordpress.com/2012/02/27/design-over-function-apples-calculator-and-square-receipts/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
      <content:encoded><![CDATA[<p>Have you ever been in the situation where designers are pushing for functionality based on aesthetics over function?</p>
<p>I was talking to someone who told me something I had heard before. If you get lunch at the Square offices, you will get a receipt for your food and it will be Square. Cute, right? You hear about the role that design has at Square (they surround the execs and are incredibly empowered). I love their work too, clean and beautiful both. The receipt though is a small example of how &#8220;keeping it square&#8221; gets rid of the form. It means that you only have the total and not the items&#8230; as that doesn&#8217;t scale to a square receipt printer.</p>
<p>Ben found another example, in the Apple iOS calculator itself. If you are doing a large calculation you will find that in the normal portrait mode you max out. The digits don&#8217;t get smaller to allow you to type more&#8230;. you are literally stopped here:</p>
<p><img alt="" src="http://functionscopedev.files.wordpress.com/2012/02/calculator-maxnum.png?w=340&#038;h=510" height="510" title="calculator-maxnum" width="340" /></p>
<p>If you want to add more, sneak over to landscape mode:</p>
<p><img alt="" src="http://functionscopedev.files.wordpress.com/2012/02/calcualtor-biggersideways.png?w=620&#038;h=413" height="413" title="calcualtor-biggersideways" width="620" /></p>
<p>Then, rotate back, and you see the hideous obtuse number instead of all of the digits scaled down:</p>
<p><img alt="" src="http://functionscopedev.files.wordpress.com/2012/02/calculator-backsideways.png?w=340&#038;h=510" height="510" title="calculator-backsideways" width="340" /></p>
<p>Small things, and maybe it wasn&#8217;t a design but rather an engineer who just put a hard stop on the length&#8230;. but it more fun to blame design.</p>
<br />  ]]></content:encoded>
      
      <comments>http://functionsource.com/post/design-over-function-apples-calculator-and-square-receipts#social</comments>
      <slash:comments>0</slash:comments>
    </item>
  
    <item>
      <guid isPermaLink="true">http://functionsource.com/post/clear-with-simple-html</guid>
      <title>Clear with simple HTML</title>
      <link>http://functionsource.com/post/clear-with-simple-html</link>
      <pubDate>Fri, 24 Feb 2012 16:34:29 +0000</pubDate>
      <dc:creator>Dion Almaer</dc:creator>
      <description><![CDATA[Evan You has created a <a href="http://clear.youyuxi.com/">a Web based Clear sample</a>  that mimics the new minimalist todo list iOS application. <a href="http://functionscopedev.wordpress.com/2012/02/24/clear-with-simple-html/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
      <content:encoded><![CDATA[<p><a href="http://www.realmacsoftware.com/clear/">Clear</a> is a new iOS application that is a great use case for pushing the boundaries on a minimalist UI. It is a todo list application that has three levels that you can zoom in and out of, and all of the actions that you take are taken by touching the core data itself. Naked todos.</p>
<p><img alt="" src="http://functionscopedev.files.wordpress.com/2012/02/clearios.png?w=620&#038;h=310" height="310" title="clearios" width="620" /></p>
<p>Some people love the minimalism, and others think claim that the minimalism doesn&#8217;t equate to simple, and the fact that you need to watch a &#8220;how to&#8221; when you launch the app to know what to do says something, but it is great to see this type of experimentation.</p>
<p>But, hold on a minute. The modern Web has todo lists as our &#8220;hello world&#8221;! Why don&#8217;t we put a &#8220;clear&#8221; UI on top of one of the many todo list backends?</p>
<p><img alt="" src="http://functionscopedev.files.wordpress.com/2012/02/clearweb.png?w=396&#038;h=744" height="744" title="clearweb" width="396" /></p>
<p>Well, it happened&#8230; at least the UI part of it did, with <a href="http://clear.youyuxi.com/">a Web based clear demo</a> by <a href="http://twitter.com/youyuxi">Evan You</a>. All is done with some nice CSS applied via our friend Zepto.</p>
<br />  ]]></content:encoded>
      
        <category><![CDATA[css]]></category>
      
        <category><![CDATA[ux]]></category>
      
      <comments>http://functionsource.com/post/clear-with-simple-html#social</comments>
      <slash:comments>0</slash:comments>
    </item>
  
    <item>
      <guid isPermaLink="true">http://functionsource.com/post/comparing-client-side-mvc-frameworks-moving-beyond-shift-reload-and-html-templates</guid>
      <title>Comparing Client Side MVC Frameworks; Moving beyond shift-reload and HTML templates</title>
      <link>http://functionsource.com/post/comparing-client-side-mvc-frameworks-moving-beyond-shift-reload-and-html-templates</link>
      <pubDate>Mon, 13 Feb 2012 05:23:17 +0000</pubDate>
      <dc:creator>Dion Almaer</dc:creator>
      <description><![CDATA[We used to think that shift-reload, and being able to load a template directly was the be all of the Web. Now we can skip the shift-reload AND make changes to the running app and have the results saved out. Life is even better. AND we don't have to code in crazy ways to get the benefit. <a href="http://functionscopedev.wordpress.com/2012/02/12/comparing-client-side-mvc-frameworks-moving-beyond-shift-reload-and-html-templates/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
      <content:encoded><![CDATA[<p>Paul Hammant is a legend of a developer that I have followed back to my Enterprise Java days. We have often had a similar penchant for wacky front end development frameworks.</p>
<p>He has just posted about <a href="http://paulhammant.com/2012/02/13/client-side-mvc-frameworks-compared/">client side MVC frameworks</a> where he takes a part <a href="http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed">Gordon Hempton&#8217;s comparison</a> and instead zeros in on the markup:</p>
<blockquote><p>
His rating criteria were different to mine. One that really sticks out is that I like the logic not forcing the template HTML to migrate to &lt;script&gt; tags. Depending on the sophistication of the app, I like to be able to see the app in a browser or DreamWeaver when the framework is not running. It gives me a way of gauging the composition of the app. It appeals to a WYSIWYG leaning that I have. I like my UI frameworks to be built for designability if you like.
</p></blockquote>
<p>I remember thinking this way back in the day. One reason that I liked Tapestry was its use of bolting onto HTML instead of some zany XML nonsense, or some inline JSP-monstrosity.</p>
<p>The game has changed though. I love the power of &#8220;Shift-Reload&#8221; for Web development. No compile step FTW and all that jazz. However, we are finally at a point where I think that we can get that power without leaving everything else.</p>
<p>I favor stylus over CSS. I understand why people want to use CoffeeScript vs. just JS (I use both depending on the situation). There are enough tools out there that I have a deploy step. However, this doesn&#8217;t mean that shift-reload is lost&#8230; and in fact, we can have things even better. </p>
<p>I make changes to my code, and when I save the file it goes through the build steps and updates the browser with any changes that it needs. No need to reload the app. Awesome.</p>
<p>Paul Irish showed of some new Chrome Dev Tools that I hadn&#8217;t seen yet. Chrome Canary has them to play with now&#8230; including being able to make changes to the computed CSS and have those changes sent back to the original files. Now I just dream of the tools grokking stylus and I am happy as larry. Oh, and then mapping any DOM changes back to my handlebars templates ;)</p>
<p>Dreamweaver? Come on Paul&#8230;.. time for us to move on!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/functionscopedev.wordpress.com/1149/"><img border="0" alt="" src="http://feeds.wordpress.com/1.0/comments/functionscopedev.wordpress.com/1149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/functionscopedev.wordpress.com/1149/"><img border="0" alt="" src="http://feeds.wordpress.com/1.0/delicious/functionscopedev.wordpress.com/1149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/functionscopedev.wordpress.com/1149/"><img border="0" alt="" src="http://feeds.wordpress.com/1.0/facebook/functionscopedev.wordpress.com/1149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/functionscopedev.wordpress.com/1149/"><img border="0" alt="" src="http://feeds.wordpress.com/1.0/twitter/functionscopedev.wordpress.com/1149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/functionscopedev.wordpress.com/1149/"><img border="0" alt="" src="http://feeds.wordpress.com/1.0/stumble/functionscopedev.wordpress.com/1149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/functionscopedev.wordpress.com/1149/"><img border="0" alt="" src="http://feeds.wordpress.com/1.0/digg/functionscopedev.wordpress.com/1149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/functionscopedev.wordpress.com/1149/"><img border="0" alt="" src="http://feeds.wordpress.com/1.0/reddit/functionscopedev.wordpress.com/1149/" /></a> <img border="0" alt="" height="1" width="1" src="http://stats.wordpress.com/b.gif?host=functionscopedev.wordpress.com&amp;blog=19979274&amp;post=1149&amp;subd=functionscopedev&amp;ref=&amp;feed=1" />]]></content:encoded>
      
        <category><![CDATA[developer_tools]]></category>
      
      <comments>http://functionsource.com/post/comparing-client-side-mvc-frameworks-moving-beyond-shift-reload-and-html-templates#social</comments>
      <slash:comments>0</slash:comments>
    </item>
  
    <item>
      <guid isPermaLink="true">http://functionsource.com/post/sharejs</guid>
      <title>ShareJS; Etherpad in 4 lines</title>
      <link>http://functionsource.com/post/sharejs</link>
      <pubDate>Wed, 01 Feb 2012 13:12:19 +0000</pubDate>
      <dc:creator>Dion Almaer</dc:creator>
      <description><![CDATA[<a href="http://josephg.com/">Joseph Gentle</a> worked on Google Wave, and although the product itself never matched the hype, it was a technically impressive product with some ground breaking work.

One of the key pieces of technologies is that of the Operational Transform, and Joseph decided that the world needed an open source (MIT) OT library that can be used inside the browser, or over in server land via node.

Enter <a href="http://sharejs.org/">ShareJS</a>. <a href="http://functionscopedev.wordpress.com/2012/02/01/sharejs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
      <content:encoded><![CDATA[<p><a href="http://josephg.com/">Joseph Gentle</a> worked on Google Wave, and although the product itself never matched the hype, it was a technically impressive product with some ground breaking work.</p>
<p>One of the key pieces of technologies is that of the Operational Transform, and Joseph decided that the world needed an open source (MIT) OT library that can be used inside the browser, or over in server land via node.</p>
<p>Enter <a href="http://sharejs.org/">ShareJS</a>, and this is all it takes to create the basis of Etherpad (and a version that doesn&#8217;t require a massive JVM heap ;)</p>
<p><code>
<pre>sharejs.open('blag', 'text', function(error, doc) {
  var elem = document.getElementById('pad');
  doc.attach_textarea(elem);
});</pre>
<p></p></code></p>
<blockquote><p>
<b>How it works</b></p>
<p>As you edit the text area at the top of this page, ShareJS generates operations. Operations are like mini commits to the document. (Eg, insert:&#8217;hi&#8217;, position:50.)</p>
<p>Like subversion, the server has a version number. If multiple users submit an operation at the same version, one of the edits is applied directly and the other user&#8217;s edit is automatically transformed by the server and then applied. Transforming is a bit like a git rebase operation.</p>
<p>In your browser, your edits are visible immediately. Edits from other people get transformed on top of yours. Unlike normal SCM systems, the algorithm is very careful to make sure that everyone ends up with the same document, no matter what order the operations are actually applied in. This allows the whole update &amp; commit stuff to happen completely automatically, in realtime. There are no conflict markers or any of that jazz.
</p></blockquote>
<p>This is a great addition to the commons. Awesome.</p>
<br />  ]]></content:encoded>
      
        <category><![CDATA[node]]></category>
      
        <category><![CDATA[open_source]]></category>
      
        <category><![CDATA[ot]]></category>
      
      <comments>http://functionsource.com/post/sharejs#social</comments>
      <slash:comments>0</slash:comments>
    </item>
  
    <item>
      <guid isPermaLink="true">http://functionsource.com/post/firefox-developer-tools-biggest-upgrade-since-firebug</guid>
      <title>Firefox Developer Tools; Biggest Upgrade Since Firebug</title>
      <link>http://functionsource.com/post/firefox-developer-tools-biggest-upgrade-since-firebug</link>
      <pubDate>Wed, 01 Feb 2012 05:32:44 +0000</pubDate>
      <dc:creator>Dion Almaer</dc:creator>
      <description><![CDATA[It has been fun to see Firefox adding new and improved tools to bleeding edge Firefox, and <a href="http://blog.mozilla.com/blog/2012/01/31/firefox-adds-powerful-new-developer-tools/">now we get it in the world of the stable</a>. <a href="http://functionscopedev.wordpress.com/2012/01/31/firefox-developer-tools-biggest-upgrade-since-firebug/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
      <content:encoded><![CDATA[<p>It has been fun to see Firefox adding new and improved tools to bleeding edge Firefox, and <a href="http://blog.mozilla.com/blog/2012/01/31/firefox-adds-powerful-new-developer-tools/">now we get it in the world of the stable</a>.</p>
<p>I also enjoyed hearing Kevin Dangoor (who worked with Ben and I back in the day) give the walk through:</p>
<p><iframe width=560 height=315 src=http://www.youtube.com/embed/VcuQ2Bn5bTA frameborder=0 allowfullscreen></iframe></p>
<p>And we also get the fun fancy <a href="http://hacks.mozilla.org/2011/07/tilt-visualize-your-web-page-in-3d/">tilt-ness</a>, <a href="http://hacks.mozilla.org/2012/01/using-the-fullscreen-api-in-web-browsers/">full screen API</a>, and add-ons are now compatible by default, which is a big process change.</p>
<br />  ]]></content:encoded>
      
        <category><![CDATA[developer_tools]]></category>
      
        <category><![CDATA[firefox]]></category>
      
      <comments>http://functionsource.com/post/firefox-developer-tools-biggest-upgrade-since-firebug#social</comments>
      <slash:comments>0</slash:comments>
    </item>
  
  </channel>
</rss>
