(X)HTML5 validation results for http://intertwingly.net/blog/index.html5

Validator Input

The document is valid XHTML5 + ARIA + SVG 1.1 + MathML 2.0 (subject to the utter previewness of this service).

Source

  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  3. <head>
  4. <title>Sam Ruby</title>
  5. <link rel="alternate" type="application/atom+xml" title="It&#8217;s just data" href="http://intertwingly.net/blog/index.atom"/>
  6. <link rel="openid.server" href="http://intertwingly.net/id/"/>
  7. <link rel="openid2.provider" href="http://intertwingly.net/id/"/>
  8. <link rel="search" type="application/opensearchdescription+xml" href="http://intertwingly.net/search/" title="intertwingly blog search"/>
  9. <link rel="stylesheet" href="/css/blog5.css" type="text/css" media="screen"/>
  10. <link rel="stylesheet" href="/css/print.css" type="text/css" media="print"/>
  11. <link rel="shortcut icon" href="/favicon.ico"/>
  12. <meta name="ICBM" content="35.708298,-78.695515"/>
  13. <script type="text/javascript" src="/js/localize_dates.js"></script>
  14. </head>
  15. <body>
  16. <header>
  17. <h1><a href="http://intertwingly.net/blog/">intertwingly</a></h1>
  18. <form method="get" action="http://intertwingly.net/blog/">
  19. <div>
  20. <label for="q">Search</label>
  21. <input type="text" id="q" name="q" value=""/>
  22. </div>
  23. </form>
  24. <p>It&#8217;s just data</p>
  25. </header>
  26. <article>
  27. <header>
  28. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/09/16/The-URL-Mess">The URL Mess</a></h3>
  29. <hr/><div><time title="GMT" datetime="2014-09-16T18:49:07Z">Tue 16 Sep 2014 at 18:49</time></div>
  30. </header>
  31. <svg xmlns='http://www.w3.org/2000/svg' width="94" height="106" viewBox="0 0 94 106">
  32. <path d='M11,94l-9-91h90l-8,91l-37,10' fill='#E44D26'></path>
  33. <path d='M47,97l30-9l7-78h-37' fill='#F16529'></path>
  34. <path d='M47,44h-15l-1-11h16v-12h-28l3,34h25M47,73l-12.5-3l-1-9h-11l1.5,18l23,6' fill='#EBEBEB'></path>
  35. <path d='M47,44v11h14l-1,15l-13,3v12l23-6l3-35M47,21v12h27l1-12' fill='#FFF'></path>
  36. </svg>
  37. <p><b>tl;dr</b>: shipping is a feature; getting the URL feature well-defined should not block HTML5 given the nature of the HTML5 reference to the URL spec.</p>
  38. <p>&#8212;</p>
  39. <p>This is a subject desperately in need of an elevator pitch.&#160; From my&#160; perspective, here are the three top things that need to be understood:</p>
  40. <p>1) From an <a href="http://www.w3.org/TR/html5/">HTML5</a> specification point of view, there is no technical difference between <a href="https://www.whatwg.org/specs/url/2014-07-30/">any recent snapshot of the WHATWG specification</a> and anything that the <a href="http://www.w3.org/2014/06/webapps-charter.html">WebApps Working group</a> publishes in the upcoming weeks.</p>
  41. <p>2) The URL spec (from either source, per above it doesn&#8217;t matter) is as backwards compatible to <a href="http://www.ietf.org/rfc/rfc3986.txt">rfc3986</a> + <a href="http://www.ietf.org/rfc/rfc3987.txt">rfc3987</a> as HTML5 is to <a href="http://www.w3.org/TR/html401/">HTML4</a>; which is to say that it is not.&#160; There are things that are specified by the prior versions of the specs that were never implemented or are broken or don&#8217;t reflect current reality as implemented by contemporary web browsers.</p>
  42. <p>3) Some (<a href="http://lists.w3.org/Archives/Public/www-tag/2014Sep/0034.html">Roy Fielding in particular</a>) would prefer a more layered approach where an error correcting parsing specification was layered over a data format; much in the way that HTML5 is layered over <a href="http://www.w3.org/TR/dom/">DOM4</a>.</p>
  43. <p>&#8212;</p>
  44. <p>Analysis of points 1, 2, 3 above.</p>
  45. <p>1) What this means is that any choice between WHATWG and W3C specs is non-technical.&#160; Furthermore, any choice to wait until either of those reaches an arbitrary maturity level is also non-technical.&#160; It doesn&#8217;t make any sense to bring any of these discussions back to the HTML WG as these decisions will ultimately be made by <a href="http://www.w3.org/People/domain/W3M">W3C Management</a> based on input from the <a href="http://www.w3.org/2005/10/Process-20051014/organization.html#AC">AC</a>.</p>
  46. <p>2) In any case where the URL spec (either one, it matters not) differs from the relevant RFCs, from an HTML point of view the URL specification is the correct one.&#160; This may mean that tools other than browsers may parse URIs differently than web browsers do.&#160; While clearly unfortunate, this likely will take years, and possibly a decade or more, to resolve.</p>
  47. <p>3) If somebody were willing to do the work that Roy proposes, it could be evaluated; but to date there are quite a few parties that have good ideas in this space but haven&#8217;t delivered on them.</p>
  48. <p>&#8212;</p>
  49. <p>Background data:</p>
  50. <p>RFC 3986 provides for the <a href="http://tools.ietf.org/html/bcp35">ability to register new URI schemes</a>; the WHATWG/W3C URL specification does not.&#160; URIs that depend on schemes not defined by the URL specification would therefore not be compatible.&#160; <a href="https://annevankesteren.nl/">Anne</a> has indicated a willingness to incorporate specifications that others may develop for additional schemes, however he has also indicated that his personal interest lies in documenting what web browsers support.</p>
  51. <p>Meanwhile, this is a concrete counter example to the notion of the URL specification being a strict superset of rfc3986 + rfc3987.&#160; Producers of URLs that want to be conservative in what they send (in the <a href="http://en.wikipedia.org/wiki/Robustness_principle">Postel sense</a>), would be best served to restrict themselves to the as of yet undefined intersection between these sets of specifications.</p>
  52. <p>&#8212;</p>
  53. <p>Recommendations:</p>
  54. <p>While I am optimistic that at some point in the future the W3C will feel comfortable referencing stable and consensus driven specifications produced by the WHATWG, it is likely that some changes will be required to one or both organizations for this to occur; meanwhile I encourage the W3C to continue on the path of standardizing a snapshot version of the WHATWG URL specification, and for HTML5 to reference the W3C version of the specification.</p>
  55. <p>Furthermore, there has been talk of holding HTML5 until the W3C URL specification reaches the <a href="http://www.w3.org/2014/Process-20140801/#candidate-rec">Candidate Recommendation</a> status.&#160; I see no basis in the requirements for <a href="http://www.w3.org/2013/09/normative-references">Normative References</a> for this.&#160; HTML5&#8217;s dependence on the URL specification is weak, and an analysis of the open bugs has been made, and a determination has been made that those changes would not affect HTML5.&#160; Furthermore the value of a &#8220;CR&#8221; phase for a document which is meant to capture and catch up to implementations is questionable.&#160; Finally, waiting any small number of months won&#8217;t address the gap between URLs as implemented by web browsers and URIs as specified and used by formats such as <a href="http://www.w3.org/RDF/">RDF</a>.</p>
  56. <p>Should a more suitable (example: architecturally layered) specification become available in the HTML 5.1 time-frame, the HTML WG should evaluate its suitability.</p>
  57. <p>&#8212;</p>
  58. <p>References:</p>
  59. <ul>
  60. <li><a href="http://lists.w3.org/Archives/Public/www-tag/2014Sep/0010.html">Domenic Denicola&#8217;s Formal Objection</a></li>
  61. <li><a href="http://masinter.blogspot.com/2014/09/the-url-mess.html">Larry Masinter&#8217;s &#8220;The URL Mess&#8221;</a></li>
  62. <li><a href="http://lists.w3.org/Archives/Public/www-archive/2014Apr/0014.html">Larry Masinter&#8217;s &#8220;IDNA, IRIs, and ://..../ authority field&#8221;</a></li>
  63. <li><a href="http://en.wikipedia.org/wiki/Robustness_principle">Postel&#8217;s Law</a></li>
  64. <li><a href="http://lists.w3.org/Archives/Public/www-tag/2014Sep/0034.html">Roy Fielding&#8217;s &#8220;publishing new WD of URL spec&#8221;</a></li>
  65. <li><a href="http://www.w3.org/2013/09/normative-references">W3C&#8217;s &#8220;Normative References&#8221;</a></li>
  66. </ul>
  67. <footer>
  68. <a title="The URL Mess" href="http://intertwingly.net/blog/2014/09/16/The-URL-Mess#comments">5 comments</a>
  69. </footer>
  70. </article>
  71. <article>
  72. <header>
  73. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/06/16/New-Toy">New Toy</a></h3>
  74. <hr/><div><time title="GMT" datetime="2014-06-16T14:57:35Z">Mon 16 Jun 2014 at 14:57</time></div>
  75. </header>
  76. <svg xmlns='http://www.w3.org/2000/svg' width="90" height="100" viewBox="0 0 90 100">
  77. <path d='M62,0c2,10-9,24-20,24c-3-14,9-22,20-24M5,36c5-8,13-12,21-12c7,0,12,4,19,4c6,0,10-4,19-4c6,0,14,3,19,10c-16,4-15,35,3,39c-7,17-18,27-24,27c-7,0-8-5-17-5c-9,0-11,5-17,5c-7-1-13-7-17-13c-9-10-15-40-6-51' fill='#AAA'></path>
  78. </svg><p>New laptop for work: MBP 15.4/2.6/16GB/1TBFlash.&#160; First time I ever went the Apple route.&#160; I did so as I figured with those specs, I could run multiple operating systems simultaneously.&#160; So far, so good.&#160; I&#8217;m using VirtualBox to do so.</p>
  79. <p>Notes for Mac OS X 10.9, Ubuntu 14.04, Windows 8.1, and Red Hat Enterprise Linux 6.5.</p>
  80. <p><a href="http://intertwingly.net/blog/2014/06/16/New-Toy">...</a></p>
  81. <footer>
  82. <a title="New Toy" href="http://intertwingly.net/blog/2014/06/16/New-Toy#comments">5 comments</a>
  83. </footer>
  84. </article>
  85. <article>
  86. <header>
  87. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/06/06/Travisizing-My-Projects">Travisizing My Projects.</a></h3>
  88. <hr/><div><time title="GMT" datetime="2014-06-07T01:58:30Z">Sat 07 Jun 2014 at 01:58</time></div>
  89. </header>
  90. <svg xmlns='http://www.w3.org/2000/svg' width="100" height="100" viewBox="0 0 100 100">
  91. <defs>
  92. <linearGradient gradientUnits='userSpaceOnUse' id='travisGrad'
  93. x1='4' x2='4' y1='4' y2='96'>
  94. <stop offset='0' stop-color='#d8432f'></stop>
  95. <stop offset='1' stop-color='#c52127'></stop>
  96. </linearGradient>
  97. </defs>
  98. <rect fill='url(#travisGrad)' height='100' width='100' ry='7'></rect>
  99. <path d='M36,72h7v-45h-10v9h-15v-22h65v22h-15v-9h-10v45h6v13h-28z'
  100. fill-opacity='0' stroke='#FFF' stroke-miterlimit='4' stroke-width='2'></path>
  101. </svg>
  102. <p>Today, I got a <a href="https://github.com/rubys/nokogumbo/pull/7">pull request</a> from <a href="https://github.com/rgrove">Ryan Grove</a> to make <a href="https://github.com/rubys/nokogumbo/">nokogumbo</a> work on Ruby 2.1 and add <a href="https://travis-ci.org/rubys/nokogumbo">Travis support</a>.&#160; Very cool.&#160; I was surprised how easy it was to set up.</p>
  103. <p>A few hours later I got <a href="https://github.com/rubys/ruby2js/">ruby2js</a> to work on Ruby 2.0 and 2.1 and added <a href="https://travis-ci.org/rubys/ruby2js">Travis support</a>.&#160; <a href="https://github.com/rubys/wunderbar/">Wunderbar</a> <a href="https://travis-ci.org/rubys/wunderbar">worked</a> right out of the box.</p>
  104. <footer>
  105. <a title="Travisizing My Projects." href="http://intertwingly.net/blog/2014/06/06/Travisizing-My-Projects#comments">2 comments</a>
  106. </footer>
  107. </article>
  108. <article>
  109. <header>
  110. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/05/12/Frameworks-as-Stepping-Stones">Frameworks as Stepping Stones</a></h3>
  111. <hr/><div><time title="GMT" datetime="2014-05-12T23:12:16Z">Mon 12 May 2014 at 23:12</time></div>
  112. </header>
  113. <svg xmlns='http://www.w3.org/2000/svg' width="94" height="106" viewBox="0 0 94 106">
  114. <path d='M11,94l-9-91h90l-8,91l-37,10' fill='#E44D26'></path>
  115. <path d='M47,97l30-9l7-78h-37' fill='#F16529'></path>
  116. <path d='M47,44h-15l-1-11h16v-12h-28l3,34h25M47,73l-12.5-3l-1-9h-11l1.5,18l23,6' fill='#EBEBEB'></path>
  117. <path d='M47,44v11h14l-1,15l-13,3v12l23-6l3-35M47,21v12h27l1-12' fill='#FFF'></path>
  118. </svg><p><a href="http://bitworking.org/news/2014/05/zero_framework_manifesto">Joe Gregorio</a>: <em>But something else has happened over the past ten years; browsers got better. Their support for standards improved, and now there are evergreen browsers: automatically updating browsers, each version more capable and standards compliant than the last. With newer standards like <a href="http://w3c.github.io/webcomponents/spec/imports/">HTML Imports</a>, <a href="http://wiki.ecmascript.org/doku.php?id=harmony:observe">Object.observe</a>, <a href="http://www.html5rocks.com/en/tutorials/es6/promises/">Promises</a>, and <a href="http://www.w3.org/TR/html5/scripting-1.html#the-template-element">HTML Templates</a> I think it&#8217;s time to rethink the model of JS frameworks. There&#8217;s no need to invent yet another way to do something, just use HTML+CSS+JS.</em></p>
  119. <p>I&#8217;m curious as to where Joe believes that these features came from.</p>
  120. <p><a href="http://intertwingly.net/blog/2014/05/12/Frameworks-as-Stepping-Stones">...</a></p>
  121. <footer>
  122. <a title="Frameworks as Stepping Stones" href="http://intertwingly.net/blog/2014/05/12/Frameworks-as-Stepping-Stones#comments">3 comments</a>
  123. </footer>
  124. </article>
  125. <article>
  126. <header>
  127. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/04/07/Technology-behind-Whimsy-apache-org">Technology behind Whimsy.apache.org</a></h3>
  128. <hr/><div><time title="GMT" datetime="2014-04-07T17:14:17Z">Mon 07 Apr 2014 at 17:14</time></div>
  129. </header>
  130. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  131. <path d="M4,14h92" stroke="#4682b4" stroke-width="5"></path>
  132. <text x="50" y="90" font-size="90" fill="#5f9ea0" font-family="serif" text-anchor="middle"><![CDATA[W]]></text>
  133. </svg>
  134. <p><a href="http://intertwingly.net/slides/2014/apachecon-whimsy/">Slides</a> for my <a href="http://apacheconnorthamerica2014.sched.org/event/036138880bfec3a2a3b10101a158189b#.U0K-XabwDzo">ApacheCon talk</a>.&#160; Right/left goes to the next/previous section, up/down for navigating with a section.</p>
  135. <p>The demo is unfortunately only available to ASF committers (for privacy reasons, as it exposes email addresses).</p>
  136. <footer>
  137. <a title="Technology behind Whimsy.apache.org" href="http://intertwingly.net/blog/2014/04/07/Technology-behind-Whimsy-apache-org#comments">Add comment</a>
  138. </footer>
  139. </article>
  140. <article>
  141. <header>
  142. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/03/14/Angular-rb-example">Angular.rb example</a></h3>
  143. <hr/><div><time title="GMT" datetime="2014-03-14T12:49:42Z">Fri 14 Mar 2014 at 12:49</time></div>
  144. </header>
  145. <svg xmlns='http://www.w3.org/2000/svg' width="97" height="103" viewBox="0 0 97 103">
  146. <path d='M48,0l-48,17l8,63l40,23l41-23l8-63z' fill='#B2B2B2'></path>
  147. <path d='M92,20l-44-15v92l37-20z' fill='#B52E31'></path>
  148. <path d='M5,21l7,56l36,20v-92z' fill='#E23237'></path>
  149. <path d='M58,51l-10-21l-9,21zM62,60h-27l-6,15h-11l30-66l31,66h-10z' fill='#F2F2F2'></path>
  150. <path d='M48,9v21l10,21h-10v9h14l7,15h10z' fill='#B2B2B2'></path>
  151. </svg><p><a href="https://twitter.com/timbray/status/444375162167623681">Tim Bray</a>: <em>If hating this is wrong, I don&#8217;t want to be right.</em></p>
  152. <p>Perhaps you would like this better?&#160; :-)</p>
  153. <p><a href="http://intertwingly.net/blog/2014/03/14/Angular-rb-example">...</a></p>
  154. <footer>
  155. <a title="Angular.rb example" href="http://intertwingly.net/blog/2014/03/14/Angular-rb-example#comments">3 comments</a>
  156. </footer>
  157. </article>
  158. <article>
  159. <header>
  160. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/03/13/Time-Warner-Rate-Hike">Time Warner Rate Hike</a></h3>
  161. <hr/><div><time title="GMT" datetime="2014-03-13T23:48:45Z">Thu 13 Mar 2014 at 23:48</time></div>
  162. </header>
  163. <svg xmlns='http://www.w3.org/2000/svg' width="108" height="93" viewBox="0 0 108 93">
  164. <path d='M17,27c-3,3-5,6-10,11c-2,1-3,1-5,0c-4-4-2-7,8-17c11-11,24-19,36-20c13-2,30,1,43,11c7,6,15,14,19,21c-4,7-9,13-14,17c-5,5-11,8-16,10c-13,4-28,3-36-10c-2-4-2-8,0-12c2-5,8-9,13-9c4,0,9,2,11,7c1,2,1,6-1,8c-1,1-6,2-7-2c0-2-0-4-2-4c-4,0-7,3-6,8c1,3,4,6,11,7c3,0,7-1,11-6c3-4,3-11,0-15c-4-7-10-10-18-10c-9,0-17,5-21,14c-3,7-5,17,0,28c4,8,11,13,17,16c5,3,16,4,17,8c0,3-2,5-4,5c-17-3-31-11-37-25c-7-13-6-30,2-41c5-7,13-12,20-13c19-5,38,9,35,28c-1,3-2,6-4,8c0,1,0,1-1,1l2-1c7-4,13-10,17-17c-10-18-32-27-49-24c-14,2-23,10-31,18' fill='#0056a2'></path>
  165. </svg>
  166. <p>Backdrop: </p>
  167. <ul>
  168. <li>Google Fiber announces it is considering <a href="https://fiber.google.com/newcities/">new cities, including Raleigh</a>.</li>
  169. <li>RST announces <a href="http://www.newsobserver.com/2014/03/11/3693348/rst-fiber-hopes-to-beat-time-warner.html">gigabit service for Raleigh</a>, starting as early as May.</li>
  170. <li>My current service is &#8220;Standard Cable&#8221; (70+ channels, no premium ones) and &#8220;Standard Internet&#8221; (nominally 15 Mbps up, 1 Mbs down).&#160; At the end of the month, I will have had basic cable with Time Warner at the same location for 22 contiguous years, and standard Internet for more than half of that.</li>
  171. </ul>
  172. <p>With that context, today I got in the mail notification that my rates are set to go up by 60% as my &#8220;Promotional&#8221; rates (Seriously?&#160; A twenty two year long promotion?) will be expiring.&#160; After spoofing my User Agent as the chat function doesn&#8217;t recognize my browser/operating system combination, I verified this is indeed the plan with &#8220;Veronica&#8221;.&#160; I was then provided a transcript and directed to an online survey when promptly logged me off without submitting my feedback once I had completed it.</p>
  173. <p>I plan to follow up with @TWC_Help.</p>
  174. <footer>
  175. <a title="Time Warner Rate Hike" href="http://intertwingly.net/blog/2014/03/13/Time-Warner-Rate-Hike#comments">5 comments</a>
  176. </footer>
  177. </article>
  178. <article>
  179. <header>
  180. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/01/26/Wunderbar-JQuery-filter">Wunderbar JQuery filter</a></h3>
  181. <hr/><div><time title="GMT" datetime="2014-01-26T17:55:05Z">Sun 26 Jan 2014 at 17:55</time></div>
  182. </header>
  183. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  184. <path d="M4,14h92" stroke="#4682b4" stroke-width="5"></path>
  185. <text x="50" y="90" font-size="90" fill="#5f9ea0" font-family="serif" text-anchor="middle"><![CDATA[W]]></text>
  186. </svg>
  187. <p>I got a suggestion to look into <a href="http://facebook.github.io/react/">React.js</a>, a JavaScript library which is focused on the problemspace that Angular.js&#8217;s <a href="http://docs.angularjs.org/guide/directive">directive</a> addresses.</p>
  188. <p>One of the ways React.js facilitates the creation of web components is via <a href="http://facebook.github.io/react/docs/jsx-in-depth.html">JSX</a> which mixes &#8220;XML&#8221; with JavaScript.&#160; The &#8220;XML&#8221; is &#8220;desugared&#8221; into <code>React.DOM</code> calls.</p>
  189. <p>Based on this idea, I created a <a href="https://github.com/rubys/wunderbar/blob/master/lib/wunderbar/jquery/filter.rb">Wunderbar jquery filter</a> to &#8220;desugar&#8221; Wunderbar calls into JQuery calls.&#160; The <a href="https://github.com/rubys/wunderbar/blob/master/test/test_jquery_filter.rb">tests</a> show some of the conversions.&#160; I also updated my Bootstrap modal dialog directive to make use of this: <a href="https://svn.apache.org/repos/infra/infrastructure/trunk/projects/whimsy/www/test/board/agenda/js/directives._js?p=894265">before</a> =&gt; <a href="https://svn.apache.org/repos/infra/infrastructure/trunk/projects/whimsy/www/test/board/agenda/js/directives._js?p=895482">after</a>.</p>
  190. <footer>
  191. <a title="Wunderbar JQuery filter" href="http://intertwingly.net/blog/2014/01/26/Wunderbar-JQuery-filter#comments">Add comment</a>
  192. </footer>
  193. </article>
  194. <article>
  195. <header>
  196. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/01/23/Ruby2js-underscore-js">Ruby2js += underscore.js</a></h3>
  197. <hr/><div><time title="GMT" datetime="2014-01-23T14:52:24Z">Thu 23 Jan 2014 at 14:52</time></div>
  198. </header>
  199. <svg xmlns='http://www.w3.org/2000/svg' width="100" height="100" viewBox="0 0 100 100">
  200. <path d='M20,100l74-5l6-75zM61,35l37-2l-29-24z' fill='#b11'></path>
  201. <path d='M21,100l74-5l-47-4zM98,33c4-12,5-29-14-33l-15,9l29,24z' fill='#811'></path>
  202. <path d='M7,67l14,33l11-38z' fill='#d44'></path>
  203. <path d='M29,61l42,13l-10-42zM56,0h28l-16,10zM1,51l-1,29l7-13z' fill='#c22'></path>
  204. <path d='M32,61l39,13c-14,13-30,24-50,26z' fill='#a00'></path>
  205. <path d='M61,35l10,39l17-23zM32,61l16,30c9-5,16-11,23-17l-39-13z' fill='#900'></path>
  206. <path d='M61,35l27,17l10-20l-37,3z' fill='#800'></path>
  207. <path d='M71,74l23,21l-6-44zM0,80c1,19,15,20,21,20l-14-33l-7,13zM7,67l-2,26c4,6,9,7,15,6c-4-11-13-32-13-32zM69,9l30,4c-1-7-6-11-15-13l-15,9z' fill='#911'></path>
  208. <path
  209. d='M1,51l6,16l25-5l29-27l8-26l-13-9l-22,8c-6,7-20,19-20,19c-1,1-9,16-13,24z'
  210. fill='#f84'></path>
  211. <path d='M21,21c15-14,34-23,42-16c7,8-1,26-16,40c-14,15-33,24-41,17c-7-7,1-26,15-41z' fill='#F0DB4F'></path>
  212. <g transform="rotate(307,33,12),scale(0.45)">
  213. <path d='M26,84l8-5c1,3,3,5,6,5c3,0,5-1,5-6v-32h9v32c0,10-5,14-14,14c-7,0-11-4-14-8' id='j'></path>
  214. <path d='M60,83l7-5c2,3,5,6,9,6c4,0,7-2,7-5c0-3-3-4-7-6l-2-1c-7-3-12-7-12-14c0-7,6-13,14-13c6,0,10,2,13,8l-7,5c-1-3-3-4-6-4c-3,0-4,1-4,4c0,2,1,4,5,5l3,1c8,4,12,7,12,15c0,9-6,13-15,13c-9,0-15-4-17-9' id='s'></path>
  215. </g>
  216. </svg><p>When compared to Ruby, JavaScript doesn&#8217;t have as much functional support built in.&#160; <a href="http://underscorejs.org/">Underscore.js</a> fills that gap for many.&#160; Underscore.js, in turn, was inspired by Ruby&#8217;s <a href="http://ruby-doc.org/core/classes/Enumerable.html">Enumerable</a> module.&#160; A <a href="https://github.com/rubys/ruby2js/blob/master/lib/ruby2js/filter/underscore.rb">underscore filter</a> (<a href="https://github.com/rubys/ruby2js/blob/master/spec/underscore_spec.rb">tests</a>) completes the mapping.</p>
  217. <p>In many cases, the resulting JavaScript is formed by applying a number of filter rules.</p>
  218. <p><a href="http://intertwingly.net/blog/2014/01/23/Ruby2js-underscore-js">...</a></p>
  219. <footer>
  220. <a title="Ruby2js += underscore.js" href="http://intertwingly.net/blog/2014/01/23/Ruby2js-underscore-js#comments">Add comment</a>
  221. </footer>
  222. </article>
  223. <article>
  224. <header>
  225. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/01/18/Ruby2JS-Attribute-Property-support">Ruby2JS Attribute=&gt;Property support</a></h3>
  226. <hr/><div><time title="GMT" datetime="2014-01-18T15:58:05Z">Sat 18 Jan 2014 at 15:58</time></div>
  227. </header>
  228. <svg xmlns='http://www.w3.org/2000/svg' width="100" height="100" viewBox="0 0 100 100">
  229. <path d='M20,100l74-5l6-75zM61,35l37-2l-29-24z' fill='#b11'></path>
  230. <path d='M21,100l74-5l-47-4zM98,33c4-12,5-29-14-33l-15,9l29,24z' fill='#811'></path>
  231. <path d='M7,67l14,33l11-38z' fill='#d44'></path>
  232. <path d='M29,61l42,13l-10-42zM56,0h28l-16,10zM1,51l-1,29l7-13z' fill='#c22'></path>
  233. <path d='M32,61l39,13c-14,13-30,24-50,26z' fill='#a00'></path>
  234. <path d='M61,35l10,39l17-23zM32,61l16,30c9-5,16-11,23-17l-39-13z' fill='#900'></path>
  235. <path d='M61,35l27,17l10-20l-37,3z' fill='#800'></path>
  236. <path d='M71,74l23,21l-6-44zM0,80c1,19,15,20,21,20l-14-33l-7,13zM7,67l-2,26c4,6,9,7,15,6c-4-11-13-32-13-32zM69,9l30,4c-1-7-6-11-15-13l-15,9z' fill='#911'></path>
  237. <path
  238. d='M1,51l6,16l25-5l29-27l8-26l-13-9l-22,8c-6,7-20,19-20,19c-1,1-9,16-13,24z'
  239. fill='#f84'></path>
  240. <path d='M21,21c15-14,34-23,42-16c7,8-1,26-16,40c-14,15-33,24-41,17c-7-7,1-26,15-41z' fill='#F0DB4F'></path>
  241. <g transform="rotate(307,33,12),scale(0.45)">
  242. <path d='M26,84l8-5c1,3,3,5,6,5c3,0,5-1,5-6v-32h9v32c0,10-5,14-14,14c-7,0-11-4-14-8' id='j_2'></path>
  243. <path d='M60,83l7-5c2,3,5,6,9,6c4,0,7-2,7-5c0-3-3-4-7-6l-2-1c-7-3-12-7-12-14c0-7,6-13,14-13c6,0,10,2,13,8l-7,5c-1-3-3-4-6-4c-3,0-4,1-4,4c0,2,1,4,5,5l3,1c8,4,12,7,12,15c0,9-6,13-15,13c-9,0-15-4-17-9' id='s_2'></path>
  244. </g>
  245. </svg>
  246. <p><a href="http://rubygems.org/gems/ruby2js/">Ruby2JS</a> now maps Ruby attributes to JavaScript properties.</p>
  247. <p><a href="http://intertwingly.net/blog/2014/01/18/Ruby2JS-Attribute-Property-support">...</a></p>
  248. <footer>
  249. <a title="Ruby2JS Attribute=&gt;Property support" href="http://intertwingly.net/blog/2014/01/18/Ruby2JS-Attribute-Property-support#comments">Add comment</a>
  250. </footer>
  251. </article>
  252. <article>
  253. <header>
  254. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/01/13/HTML5-Mode-Links">HTML5 Mode Links</a></h3>
  255. <hr/><div><time title="GMT" datetime="2014-01-13T17:46:19Z">Mon 13 Jan 2014 at 17:46</time></div>
  256. </header>
  257. <svg xmlns='http://www.w3.org/2000/svg' width="97" height="103" viewBox="0 0 97 103">
  258. <path d='M48,0l-48,17l8,63l40,23l41-23l8-63z' fill='#B2B2B2'></path>
  259. <path d='M92,20l-44-15v92l37-20z' fill='#B52E31'></path>
  260. <path d='M5,21l7,56l36,20v-92z' fill='#E23237'></path>
  261. <path d='M58,51l-10-21l-9,21zM62,60h-27l-6,15h-11l30-66l31,66h-10z' fill='#F2F2F2'></path>
  262. <path d='M48,9v21l10,21h-10v9h14l7,15h10z' fill='#B2B2B2'></path>
  263. </svg>
  264. <p>Based on a suggestion by Tim Bray, I converted my board agenda Angular.js application to use <a href="http://docs.angularjs.org/guide/dev_guide.services.$location#hashbang-and-html5-modes">html5 mode</a>.&#160; The process was straightforward:</p>
  265. <p>1) add the following to your application configuration:</p>
  266. <pre class="code">$locationProvider.html5Mode(true).hashPrefix('!')</pre>
  267. <p>2) Add a <code>&lt;base&gt;</code> element to my generated HTML, indicating which part of my path was &#8220;owned&#8221; by the server.</p>
  268. <p>3) Convert my relative links.&#160; Based on how my application was structured:</p>
  269. <ul>
  270. <li><code>#/comments</code> became <code>comments</code></li>
  271. <li><code>#/</code> became <code>./</code></li>
  272. <li><code>js/app.js</code> became <code>../js/app.js</code></li>
  273. </ul>
  274. <p>I&#8217;ve not yet tested it with <a href="https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history#Browser_compatibility">Internet Explorer &lt;= 9</a>, but the <a href="http://docs.angularjs.org/guide/dev_guide.services.$location#hashbang-and-html5-modes_html5-mode_sending-links-among-different-browsers">Angular.js docs</a> indicate that it should work there too.</p>
  275. <footer>
  276. <a title="HTML5 Mode Links" href="http://intertwingly.net/blog/2014/01/13/HTML5-Mode-Links#comments">Add comment</a>
  277. </footer>
  278. </article>
  279. <article>
  280. <header>
  281. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/01/09/Software-in-2014">Software in 2014</a></h3>
  282. <hr/><div><time title="GMT" datetime="2014-01-10T07:45:05Z">Fri 10 Jan 2014 at 07:45</time></div>
  283. </header>
  284. <svg xmlns='http://www.w3.org/2000/svg' width="97" height="103" viewBox="0 0 97 103">
  285. <path d='M48,0l-48,17l8,63l40,23l41-23l8-63z' fill='#B2B2B2'></path>
  286. <path d='M92,20l-44-15v92l37-20z' fill='#B52E31'></path>
  287. <path d='M5,21l7,56l36,20v-92z' fill='#E23237'></path>
  288. <path d='M58,51l-10-21l-9,21zM62,60h-27l-6,15h-11l30-66l31,66h-10z' fill='#F2F2F2'></path>
  289. <path d='M48,9v21l10,21h-10v9h14l7,15h10z' fill='#B2B2B2'></path>
  290. </svg>
  291. <p><a href="http://www.tbray.org/ongoing/When/201x/2014/01/01/Software-in-2014">Tim Bray</a>:
  292. <em>We’re at an inflection point in the practice of constructing software. Our
  293. tools are good, our server developers are happy, but when it comes to building
  294. client-side software, we really don’t know where we’re going or how to get
  295. there.</em></p>
  296. <p>While I agree with much of this post, I really don’t think the conclusion
  297. is as bad as Tim portrays things. I agree that there are good server side
  298. frameworks, and doing things like MVC is the way to go.</p>
  299. <p>
  300. I just happen to believe that this is true on the client too – including MVC.
  301. Not perfect, perhaps, but more than workable. And full disclosure, I’m firmly
  302. on the
  303. <em>HTML5-rocks</em>
  304. side of the fence.
  305. </p>
  306. <p><a href="http://intertwingly.net/blog/2014/01/09/Software-in-2014">...</a></p>
  307. <footer>
  308. <a title="Software in 2014" href="http://intertwingly.net/blog/2014/01/09/Software-in-2014#comments">2 comments</a>
  309. </footer>
  310. </article>
  311. <article>
  312. <header>
  313. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/12/06/Wunderbar-Tutorial">Wunderbar Tutorial</a></h3>
  314. <hr/><div><time title="GMT" datetime="2013-12-07T02:10:14Z">Sat 07 Dec 2013 at 02:10</time></div>
  315. </header>
  316. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  317. <path d="M4,14h92" stroke="#4682b4" stroke-width="5"></path>
  318. <text x="50" y="90" font-size="90" fill="#5f9ea0" font-family="serif" text-anchor="middle"><![CDATA[W]]></text>
  319. </svg>
  320. <p>I&#8217;ve begun work on a <a href="https://github.com/rubys/wunderbar/blob/master/docs/Introduction1.md#introduction-part-1">Wunderbar tutorial</a>.</p>
  321. <p>Feedback welcome.</p>
  322. <footer>
  323. <a title="Wunderbar Tutorial" href="http://intertwingly.net/blog/2013/12/06/Wunderbar-Tutorial#comments">Add comment</a>
  324. </footer>
  325. </article>
  326. <article>
  327. <header>
  328. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/12/01/Angular-rb-update">Angular.rb update</a></h3>
  329. <hr/><div><time title="GMT" datetime="2013-12-01T15:26:09Z">Sun 01 Dec 2013 at 15:26</time></div>
  330. </header>
  331. <svg xmlns='http://www.w3.org/2000/svg' width="97" height="103" viewBox="0 0 97 103">
  332. <path d='M48,0l-48,17l8,63l40,23l41-23l8-63z' fill='#B2B2B2'></path>
  333. <path d='M92,20l-44-15v92l37-20z' fill='#B52E31'></path>
  334. <path d='M5,21l7,56l36,20v-92z' fill='#E23237'></path>
  335. <path d='M58,51l-10-21l-9,21zM62,60h-27l-6,15h-11l30-66l31,66h-10z' fill='#F2F2F2'></path>
  336. <path d='M48,9v21l10,21h-10v9h14l7,15h10z' fill='#B2B2B2'></path>
  337. </svg>
  338. <p>
  339. It does indeed turn out that <a href="https://github.com/rubys/ruby2js#filters">language macros</a> can reduce the amount of Angular.js <a href="https://github.com/angular/angular-phonecat/blob/step-11/app/js/services.js">boilerplate configuration</a> to a <a href="https://github.com/rubys/wunderbar/blob/master/demo/js/services._js">minimum</a>.&#160; In the process I&#8217;ve spun off <a href="https://github.com/rubys/ruby2js#ruby2js">ruby2js</a> is a standalone supporting library.</p>
  340. <footer>
  341. <a title="Angular.rb update" href="http://intertwingly.net/blog/2013/12/01/Angular-rb-update#comments">3 comments</a>
  342. </footer>
  343. </article>
  344. <article>
  345. <header>
  346. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/11/11/Angular-rb">Angular.rb</a></h3>
  347. <hr/><div><time title="GMT" datetime="2013-11-11T20:16:16Z">Mon 11 Nov 2013 at 20:16</time></div>
  348. </header>
  349. <svg xmlns='http://www.w3.org/2000/svg' width="97" height="103" viewBox="0 0 97 103">
  350. <path d='M48,0l-48,17l8,63l40,23l41-23l8-63z' fill='#B2B2B2'></path>
  351. <path d='M92,20l-44-15v92l37-20z' fill='#B52E31'></path>
  352. <path d='M5,21l7,56l36,20v-92z' fill='#E23237'></path>
  353. <path d='M58,51l-10-21l-9,21zM62,60h-27l-6,15h-11l30-66l31,66h-10z' fill='#F2F2F2'></path>
  354. <path d='M48,9v21l10,21h-10v9h14l7,15h10z' fill='#B2B2B2'></path>
  355. </svg>
  356. <p>I&#8217;m looking into what it would take to make it easier to produce <a href="http://angularjs.org/">Angular.JS</a> client applications using a server coded in Ruby.&#160; The approach I&#8217;m taking is to convert idiomatic Ruby into idiomatic AngularJS JavaScript.</p>
  357. <p><a href="https://github.com/rubys/wunderbar/blob/master/demo/angularjs.rb">Demo</a>.&#160; Corresponds roughly to <a href="http://docs.angularjs.org/tutorial/step_04">tutorial step 4</a>.&#160; <a href="http://intertwingly.net/stories/2013/11/11/angularjs.html">Example output</a>.&#160; <a href="https://github.com/rubys/ruby2js/blob/master/spec/angularrb_spec.rb">Specs</a>.</p>
  358. <footer>
  359. <a title="Angular.rb" href="http://intertwingly.net/blog/2013/11/11/Angular-rb#comments">Add comment</a>
  360. </footer>
  361. </article>
  362. <article>
  363. <header>
  364. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/11/04/Mavericks">Mavericks</a></h3>
  365. <hr/><div><time title="GMT" datetime="2013-11-04T16:33:35Z">Mon 04 Nov 2013 at 16:33</time></div>
  366. </header>
  367. <svg xmlns='http://www.w3.org/2000/svg' width="90" height="100" viewBox="0 0 90 100">
  368. <path d='M62,0c2,10-9,24-20,24c-3-14,9-22,20-24M5,36c5-8,13-12,21-12c7,0,12,4,19,4c6,0,10-4,19-4c6,0,14,3,19,10c-16,4-15,35,3,39c-7,17-18,27-24,27c-7,0-8-5-17-5c-9,0-11,5-17,5c-7-1-13-7-17-13c-9-10-15-40-6-51' fill='#AAA'></path>
  369. </svg>
  370. <p>Did a clean install of Mavericks on my test mac-mini.&#160; Things to be aware of for next time:</p>
  371. <pre class="code">xcode-select --install
  372. sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain
  373. sudo mkdir -p /usr/local/lib; sudo ln -s /usr/local/mysql/lib/libmysql* /usr/local/lib</pre>
  374. <footer>
  375. <a title="Mavericks" href="http://intertwingly.net/blog/2013/11/04/Mavericks#comments">1 comment</a>
  376. </footer>
  377. </article>
  378. <article>
  379. <header>
  380. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/10/22/The-Pile-of-Poo-Test">The Pile of Poo Test&#8482;</a></h3>
  381. <hr/><div><time title="GMT" datetime="2013-10-22T13:20:25Z">Tue 22 Oct 2013 at 13:20</time></div>
  382. </header>
  383. <svg xmlns="http://www.w3.org/2000/svg" width="115" height="87" viewBox="0 0 115 87">
  384. <path d="M0,1v83h26c-10,0-22-11-22-21v-62zM22,1v53c0,16,22,16,22,0v-53zM41,84c10,0,22-11,22-21v-22l27,43zM60,1h30v20h19v-20h5v84h-5v-56h-19v18z" fill="#C60025"></path>
  385. </svg>
  386. <p><a href="http://mathiasbynens.be/notes/javascript-unicode">Mathias Bynens</a>: <em>Whenever you&#8217;re working on a piece of JavaScript code that deals with strings or regular expressions in some way, just add a unit test that contains a pile of poo (&#128169;) in a string, and see if anything breaks. It&#8217;s a quick, fun, and easy way to see if your code supports astral symbols. Once you&#8217;ve found a Unicode-related bug in your code, all you need to do is apply the techniques discussed in this post to fix it.</em></p>
  387. <footer>
  388. <a title="The Pile of Poo Test&#8482;" href="http://intertwingly.net/blog/2013/10/22/The-Pile-of-Poo-Test#comments">5 comments</a>
  389. </footer>
  390. </article>
  391. <article>
  392. <header>
  393. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/10/04/Download-RESTful-Web-Services">Download RESTful Web Services</a></h3>
  394. <hr/><div><time title="GMT" datetime="2013-10-04T12:20:41Z">Fri 04 Oct 2013 at 12:20</time></div>
  395. </header>
  396. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  397. <path d="M10,90.1v-2h80V90.1zM10,70.1v-2h80V70.1zM10,50.1v-2h80V50.1zM10,30.1v-2h80V30.1zM10,10.1v-2h80V10.1z"></path>
  398. <path d="M44.4,20.8c1.5,1.6,13,15.7,13,15.7s-6.4,6.1-6.4,12.5c0,7.5,8.6,14.3,8.6,14.3l-0.9,1.1c-3.3-1.9-8.9-2.1-11.4,0.8c-3.1,3.6,3.9,9.1,3.9,9.1l-0.8,1.1c-2.4-1.8-12.6-11.4-8.3-16.1c2.6-2.9,5.8-3.8,10.3-1.4l-12.1-12.5c7-8.6,8.2-11.1,8.2-13.4c0-4.8-3.4-8.2-5.1-10.4c-0.6-0.9-1.7-1.6-1-2.2C43.1,18.9,43.5,19.7,44.4,20.8z" fill="#F33"></path>
  399. </svg>
  400. <p><a href="http://www.crummy.com/2013/10/03/0">Leonard Richardson</a>: <em>Hey, folks, I got some pretty exciting news. Now that RESTful Web APIs has come out, there&#8217;s really no reason to buy 2007&#8217;s <i>RESTful Web Services</i>. So Sam Ruby and I and O&#8217;Reilly have gotten together and started giving the old book away. You can get a PDF from <a href="http://restfulwebapis.org/rws.html">the RESTful Web APIs website</a> or from my now-ancient <a href="http://www.crummy.com/writing/RESTful-Web-Services/">RESTful Web Services</a> site. The license is <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">BY-NC-ND</a>.</em></p>
  401. <footer>
  402. <a title="Download RESTful Web Services" href="http://intertwingly.net/blog/2013/10/04/Download-RESTful-Web-Services#comments">1 comment</a>
  403. </footer>
  404. </article>
  405. <article>
  406. <header>
  407. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/09/22/Opal-looks-very-promising">Opal looks very promising</a></h3>
  408. <hr/><div><time title="GMT" datetime="2013-09-22T14:02:01Z">Sun 22 Sep 2013 at 14:02</time></div>
  409. </header>
  410. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  411. <path d="M4,14h92" stroke="#4682b4" stroke-width="5"></path>
  412. <text x="50" y="90" font-size="90" fill="#5f9ea0" font-family="serif" text-anchor="middle"><![CDATA[W]]></text>
  413. </svg>
  414. <p><a href="http://opalrb.org/">Opal</a> is a Ruby to JavaScript compiler.&#160; The team working on it are not only working to bring access to JavaScript libraries (like jquery) but also to replicate Ruby library interfaces.&#160; Walking through a <a href="https://gist.github.com/rubys/6660094">simple example</a>...</p>
  415. <p><a href="http://intertwingly.net/blog/2013/09/22/Opal-looks-very-promising">...</a></p>
  416. <footer>
  417. <a title="Opal looks very promising" href="http://intertwingly.net/blog/2013/09/22/Opal-looks-very-promising#comments">1 comment</a>
  418. </footer>
  419. </article>
  420. <article>
  421. <header>
  422. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/09/05/Time-Warner-Cable-Update">Time Warner Cable Update</a></h3>
  423. <hr/><div><time title="GMT" datetime="2013-09-06T00:45:50Z">Fri 06 Sep 2013 at 00:45</time></div>
  424. </header>
  425. <svg xmlns='http://www.w3.org/2000/svg' width="108" height="93" viewBox="0 0 108 93">
  426. <path d='M17,27c-3,3-5,6-10,11c-2,1-3,1-5,0c-4-4-2-7,8-17c11-11,24-19,36-20c13-2,30,1,43,11c7,6,15,14,19,21c-4,7-9,13-14,17c-5,5-11,8-16,10c-13,4-28,3-36-10c-2-4-2-8,0-12c2-5,8-9,13-9c4,0,9,2,11,7c1,2,1,6-1,8c-1,1-6,2-7-2c0-2-0-4-2-4c-4,0-7,3-6,8c1,3,4,6,11,7c3,0,7-1,11-6c3-4,3-11,0-15c-4-7-10-10-18-10c-9,0-17,5-21,14c-3,7-5,17,0,28c4,8,11,13,17,16c5,3,16,4,17,8c0,3-2,5-4,5c-17-3-31-11-37-25c-7-13-6-30,2-41c5-7,13-12,20-13c19-5,38,9,35,28c-1,3-2,6-4,8c0,1,0,1-1,1l2-1c7-4,13-10,17-17c-10-18-32-27-49-24c-14,2-23,10-31,18' fill='#0056a2'></path>
  427. </svg><p>I finally debugged why my <a href="http://intertwingly.net/blog/2012/12/05/Time-Warner-Cables-idea-of-service">cable service was so poor</a>.&#160; Long story short, an inexplicable 7dB drop in the incoming line, a bad arrangement of splitters, and another unexplained 7dB drop someplace in the house; , which leads to the following question:</p>
  428. <p>If Time Warner Cable is moving towards digital only service, shouldn&#8217;t they be providing enough signal strength to drive all of the devices in the house?</p>
  429. <p><a href="http://intertwingly.net/blog/2013/09/05/Time-Warner-Cable-Update">...</a></p>
  430. <footer>
  431. <a title="Time Warner Cable Update" href="http://intertwingly.net/blog/2013/09/05/Time-Warner-Cable-Update#comments">1 comment</a>
  432. </footer>
  433. </article>
  434. <aside>
  435. <h2>Nav Bar</h2>
  436. <nav>
  437. <ul>
  438. <li><a href="http://en.wikipedia.org/wiki/Sam_Ruby">About</a></li>
  439. <li><a href="http://twitter.com/samruby">Twitter</a></li>
  440. <li><a href="/blog/comments.html">Comments</a></li>
  441. <li><a id="navbar_register" href="/blog/registry/">Register</a></li>
  442. <li><a href="/stats/">Statistics</a></li>
  443. <li><a href="/blog/archives/">Archives</a></li>
  444. <li><a href="http://planet.intertwingly.net/">Planet</a></li>
  445. <li><a href="http://code.intertwingly.net/public/">Code</a></li>
  446. <li><a href="http://www.pragprog.com/titles/rails4/agile-web-development-with-rails-4th-edition">Rails</a></li>
  447. <li><a href="http://www.oreilly.com/catalog/9780596529260/">RESTful</a></li>
  448. <li><a href="/blog/2005/05/16/Disclaim-This">Disclaimer</a></li>
  449. </ul>
  450. </nav>
  451. </aside>
  452. </body>
  453. </html>

Total execution time 3614 milliseconds.


About this ServiceMore options