(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/06/16/New-Toy">New Toy</a></h3>
  29. <hr/><div><time title="GMT" datetime="2014-06-16T14:57:35Z">Mon 16 Jun 2014 at 14:57</time></div>
  30. </header>
  31. <svg xmlns='http://www.w3.org/2000/svg' width="90" height="100" viewBox="0 0 90 100">
  32. <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>
  33. </svg>
  34. <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>
  35. <p>Notes:</p>
  36. <p>First, Mac OS X 10.9.&#160; My biggest problem with previous versions of this operating system is that they always appeared to me to be fairly hostile to installing open source scripting languages and tools.&#160; For example, each time I updated my <a href="http://pragprog.com/book/rails4/agile-web-development-with-rails-4">Rails book</a>, I would update the instructions on how to install the necessary software.&#160; This now appears to be a thing of the past.&#160; In fact, the only problem I&#8217;ve encountered so far is with <a href="https://github.com/Homebrew/homebrew-apache/issues/28">mod_suexec</a>.&#160; That problem looks easy to address, and if it isn&#8217;t addressed by the team managing the brew recipe, I&#8217;ll simply compile the suexec bin myself.</p>
  37. <p>Overall, much improved.&#160; This is also my first experience with Apple&#8217;s trackpad; and I must say I&#8217;m a fan.</p>
  38. <p>Next up, Ubuntu 14.04.&#160; Installation was straightforward.&#160; One only needs to be mindful to <a href="https://www.virtualbox.org/manual/ch04.html#idp55339888">install dkms</a>.&#160; Enabling 3D acceleration is also worthwhile, but doesn&#8217;t quite get you to native graphics speeds on lesser hardware.&#160; The end result is fully functional, though it is worth while to do most web browsing on the host operating system.</p>
  39. <p>Then Windows 8.1.&#160; This was by far the easiest as Microsoft provides <a href="https://www.modern.ie/en-us/virtualization-tools#downloads">time bombed VMs</a> which you can easily import and use for up to 90 days.&#160; When the 90 days are up, you can import again and start over.&#160; I&#8217;ve now done this with both Ubuntu and Mac hosts.</p>
  40. <p>Finally, Red Hat Enterprise Linux 6.5.&#160; There were a <a href="https://www.virtualbox.org/manual/ch04.html#idp56080608">few more steps</a> to get this running, and even after doing so the result wasn&#8217;t fully functional in that it would not use the full display even after installing guest additions.&#160; The solution ended up being to delete (or simply move elsewhere) the following files in the <code>/etc/X11</code> directory: <code>xorg.conf xorg.conf.d xorg.conf-vm</code>.&#160; I use this VM to access the IBM VPN and to run Lotus Notes.</p>
  41. <footer>
  42. <a title="New Toy" href="http://intertwingly.net/blog/2014/06/16/New-Toy#comments">5 comments</a>
  43. </footer>
  44. </article>
  45. <article>
  46. <header>
  47. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/06/06/Travisizing-My-Projects">Travisizing My Projects.</a></h3>
  48. <hr/><div><time title="GMT" datetime="2014-06-07T01:58:30Z">Sat 07 Jun 2014 at 01:58</time></div>
  49. </header>
  50. <svg xmlns='http://www.w3.org/2000/svg' width="100" height="100" viewBox="0 0 100 100">
  51. <defs>
  52. <linearGradient gradientUnits='userSpaceOnUse' id='travisGrad'
  53. x1='4' x2='4' y1='4' y2='96'>
  54. <stop offset='0' stop-color='#d8432f'></stop>
  55. <stop offset='1' stop-color='#c52127'></stop>
  56. </linearGradient>
  57. </defs>
  58. <rect fill='url(#travisGrad)' height='100' width='100' ry='7'></rect>
  59. <path d='M36,72h7v-45h-10v9h-15v-22h65v22h-15v-9h-10v45h6v13h-28z'
  60. fill-opacity='0' stroke='#FFF' stroke-miterlimit='4' stroke-width='2'></path>
  61. </svg>
  62. <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>
  63. <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>
  64. <footer>
  65. <a title="Travisizing My Projects." href="http://intertwingly.net/blog/2014/06/06/Travisizing-My-Projects#comments">2 comments</a>
  66. </footer>
  67. </article>
  68. <article>
  69. <header>
  70. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/05/12/Frameworks-as-Stepping-Stones">Frameworks as Stepping Stones</a></h3>
  71. <hr/><div><time title="GMT" datetime="2014-05-12T23:12:16Z">Mon 12 May 2014 at 23:12</time></div>
  72. </header>
  73. <svg xmlns='http://www.w3.org/2000/svg' width="94" height="106" viewBox="0 0 94 106">
  74. <path d='M11,94l-9-91h90l-8,91l-37,10' fill='#E44D26'></path>
  75. <path d='M47,97l30-9l7-78h-37' fill='#F16529'></path>
  76. <path d='M47,44h-15l-1-11h16v-12h-28l3,34h25M47,73l-12.5-3l-1-9h-11l1.5,18l23,6' fill='#EBEBEB'></path>
  77. <path d='M47,44v11h14l-1,15l-13,3v12l23-6l3-35M47,21v12h27l1-12' fill='#FFF'></path>
  78. </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>
  79. <p>I&#8217;m curious as to where Joe believes that these features came from.</p>
  80. <p><a href="http://intertwingly.net/blog/2014/05/12/Frameworks-as-Stepping-Stones">...</a></p>
  81. <footer>
  82. <a title="Frameworks as Stepping Stones" href="http://intertwingly.net/blog/2014/05/12/Frameworks-as-Stepping-Stones#comments">3 comments</a>
  83. </footer>
  84. </article>
  85. <article>
  86. <header>
  87. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/04/07/Technology-behind-Whimsy-apache-org">Technology behind Whimsy.apache.org</a></h3>
  88. <hr/><div><time title="GMT" datetime="2014-04-07T17:14:17Z">Mon 07 Apr 2014 at 17:14</time></div>
  89. </header>
  90. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  91. <path d="M4,14h92" stroke="#4682b4" stroke-width="5"></path>
  92. <text x="50" y="90" font-size="90" fill="#5f9ea0" font-family="serif" text-anchor="middle"><![CDATA[W]]></text>
  93. </svg>
  94. <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>
  95. <p>The demo is unfortunately only available to ASF committers (for privacy reasons, as it exposes email addresses).</p>
  96. <footer>
  97. <a title="Technology behind Whimsy.apache.org" href="http://intertwingly.net/blog/2014/04/07/Technology-behind-Whimsy-apache-org#comments">Add comment</a>
  98. </footer>
  99. </article>
  100. <article>
  101. <header>
  102. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/03/14/Angular-rb-example">Angular.rb example</a></h3>
  103. <hr/><div><time title="GMT" datetime="2014-03-14T12:49:42Z">Fri 14 Mar 2014 at 12:49</time></div>
  104. </header>
  105. <svg xmlns='http://www.w3.org/2000/svg' width="97" height="103" viewBox="0 0 97 103">
  106. <path d='M48,0l-48,17l8,63l40,23l41-23l8-63z' fill='#B2B2B2'></path>
  107. <path d='M92,20l-44-15v92l37-20z' fill='#B52E31'></path>
  108. <path d='M5,21l7,56l36,20v-92z' fill='#E23237'></path>
  109. <path d='M58,51l-10-21l-9,21zM62,60h-27l-6,15h-11l30-66l31,66h-10z' fill='#F2F2F2'></path>
  110. <path d='M48,9v21l10,21h-10v9h14l7,15h10z' fill='#B2B2B2'></path>
  111. </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>
  112. <p>Perhaps you would like this better?&#160; :-)</p>
  113. <p><a href="http://intertwingly.net/blog/2014/03/14/Angular-rb-example">...</a></p>
  114. <footer>
  115. <a title="Angular.rb example" href="http://intertwingly.net/blog/2014/03/14/Angular-rb-example#comments">3 comments</a>
  116. </footer>
  117. </article>
  118. <article>
  119. <header>
  120. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/03/13/Time-Warner-Rate-Hike">Time Warner Rate Hike</a></h3>
  121. <hr/><div><time title="GMT" datetime="2014-03-13T23:48:45Z">Thu 13 Mar 2014 at 23:48</time></div>
  122. </header>
  123. <svg xmlns='http://www.w3.org/2000/svg' width="108" height="93" viewBox="0 0 108 93">
  124. <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>
  125. </svg>
  126. <p>Backdrop: </p>
  127. <ul>
  128. <li>Google Fiber announces it is considering <a href="https://fiber.google.com/newcities/">new cities, including Raleigh</a>.</li>
  129. <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>
  130. <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>
  131. </ul>
  132. <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>
  133. <p>I plan to follow up with @TWC_Help.</p>
  134. <footer>
  135. <a title="Time Warner Rate Hike" href="http://intertwingly.net/blog/2014/03/13/Time-Warner-Rate-Hike#comments">5 comments</a>
  136. </footer>
  137. </article>
  138. <article>
  139. <header>
  140. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/01/26/Wunderbar-JQuery-filter">Wunderbar JQuery filter</a></h3>
  141. <hr/><div><time title="GMT" datetime="2014-01-26T17:55:05Z">Sun 26 Jan 2014 at 17:55</time></div>
  142. </header>
  143. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  144. <path d="M4,14h92" stroke="#4682b4" stroke-width="5"></path>
  145. <text x="50" y="90" font-size="90" fill="#5f9ea0" font-family="serif" text-anchor="middle"><![CDATA[W]]></text>
  146. </svg>
  147. <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>
  148. <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>
  149. <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>
  150. <footer>
  151. <a title="Wunderbar JQuery filter" href="http://intertwingly.net/blog/2014/01/26/Wunderbar-JQuery-filter#comments">Add comment</a>
  152. </footer>
  153. </article>
  154. <article>
  155. <header>
  156. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/01/23/Ruby2js-underscore-js">Ruby2js += underscore.js</a></h3>
  157. <hr/><div><time title="GMT" datetime="2014-01-23T14:52:24Z">Thu 23 Jan 2014 at 14:52</time></div>
  158. </header>
  159. <svg xmlns='http://www.w3.org/2000/svg' width="100" height="100" viewBox="0 0 100 100">
  160. <path d='M20,100l74-5l6-75zM61,35l37-2l-29-24z' fill='#b11'></path>
  161. <path d='M21,100l74-5l-47-4zM98,33c4-12,5-29-14-33l-15,9l29,24z' fill='#811'></path>
  162. <path d='M7,67l14,33l11-38z' fill='#d44'></path>
  163. <path d='M29,61l42,13l-10-42zM56,0h28l-16,10zM1,51l-1,29l7-13z' fill='#c22'></path>
  164. <path d='M32,61l39,13c-14,13-30,24-50,26z' fill='#a00'></path>
  165. <path d='M61,35l10,39l17-23zM32,61l16,30c9-5,16-11,23-17l-39-13z' fill='#900'></path>
  166. <path d='M61,35l27,17l10-20l-37,3z' fill='#800'></path>
  167. <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>
  168. <path
  169. d='M1,51l6,16l25-5l29-27l8-26l-13-9l-22,8c-6,7-20,19-20,19c-1,1-9,16-13,24z'
  170. fill='#f84'></path>
  171. <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>
  172. <g transform="rotate(307,33,12),scale(0.45)">
  173. <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>
  174. <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>
  175. </g>
  176. </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>
  177. <p>In many cases, the resulting JavaScript is formed by applying a number of filter rules.</p>
  178. <p><a href="http://intertwingly.net/blog/2014/01/23/Ruby2js-underscore-js">...</a></p>
  179. <footer>
  180. <a title="Ruby2js += underscore.js" href="http://intertwingly.net/blog/2014/01/23/Ruby2js-underscore-js#comments">Add comment</a>
  181. </footer>
  182. </article>
  183. <article>
  184. <header>
  185. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/01/18/Ruby2JS-Attribute-Property-support">Ruby2JS Attribute=&gt;Property support</a></h3>
  186. <hr/><div><time title="GMT" datetime="2014-01-18T15:58:05Z">Sat 18 Jan 2014 at 15:58</time></div>
  187. </header>
  188. <svg xmlns='http://www.w3.org/2000/svg' width="100" height="100" viewBox="0 0 100 100">
  189. <path d='M20,100l74-5l6-75zM61,35l37-2l-29-24z' fill='#b11'></path>
  190. <path d='M21,100l74-5l-47-4zM98,33c4-12,5-29-14-33l-15,9l29,24z' fill='#811'></path>
  191. <path d='M7,67l14,33l11-38z' fill='#d44'></path>
  192. <path d='M29,61l42,13l-10-42zM56,0h28l-16,10zM1,51l-1,29l7-13z' fill='#c22'></path>
  193. <path d='M32,61l39,13c-14,13-30,24-50,26z' fill='#a00'></path>
  194. <path d='M61,35l10,39l17-23zM32,61l16,30c9-5,16-11,23-17l-39-13z' fill='#900'></path>
  195. <path d='M61,35l27,17l10-20l-37,3z' fill='#800'></path>
  196. <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>
  197. <path
  198. d='M1,51l6,16l25-5l29-27l8-26l-13-9l-22,8c-6,7-20,19-20,19c-1,1-9,16-13,24z'
  199. fill='#f84'></path>
  200. <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>
  201. <g transform="rotate(307,33,12),scale(0.45)">
  202. <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>
  203. <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>
  204. </g>
  205. </svg>
  206. <p><a href="http://rubygems.org/gems/ruby2js/">Ruby2JS</a> now maps Ruby attributes to JavaScript properties.</p>
  207. <p><a href="http://intertwingly.net/blog/2014/01/18/Ruby2JS-Attribute-Property-support">...</a></p>
  208. <footer>
  209. <a title="Ruby2JS Attribute=&gt;Property support" href="http://intertwingly.net/blog/2014/01/18/Ruby2JS-Attribute-Property-support#comments">Add comment</a>
  210. </footer>
  211. </article>
  212. <article>
  213. <header>
  214. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/01/13/HTML5-Mode-Links">HTML5 Mode Links</a></h3>
  215. <hr/><div><time title="GMT" datetime="2014-01-13T17:46:19Z">Mon 13 Jan 2014 at 17:46</time></div>
  216. </header>
  217. <svg xmlns='http://www.w3.org/2000/svg' width="97" height="103" viewBox="0 0 97 103">
  218. <path d='M48,0l-48,17l8,63l40,23l41-23l8-63z' fill='#B2B2B2'></path>
  219. <path d='M92,20l-44-15v92l37-20z' fill='#B52E31'></path>
  220. <path d='M5,21l7,56l36,20v-92z' fill='#E23237'></path>
  221. <path d='M58,51l-10-21l-9,21zM62,60h-27l-6,15h-11l30-66l31,66h-10z' fill='#F2F2F2'></path>
  222. <path d='M48,9v21l10,21h-10v9h14l7,15h10z' fill='#B2B2B2'></path>
  223. </svg>
  224. <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>
  225. <p>1) add the following to your application configuration:</p>
  226. <pre class="code">$locationProvider.html5Mode(true).hashPrefix('!')</pre>
  227. <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>
  228. <p>3) Convert my relative links.&#160; Based on how my application was structured:</p>
  229. <ul>
  230. <li><code>#/comments</code> became <code>comments</code></li>
  231. <li><code>#/</code> became <code>./</code></li>
  232. <li><code>js/app.js</code> became <code>../js/app.js</code></li>
  233. </ul>
  234. <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>
  235. <footer>
  236. <a title="HTML5 Mode Links" href="http://intertwingly.net/blog/2014/01/13/HTML5-Mode-Links#comments">Add comment</a>
  237. </footer>
  238. </article>
  239. <article>
  240. <header>
  241. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/01/09/Software-in-2014">Software in 2014</a></h3>
  242. <hr/><div><time title="GMT" datetime="2014-01-10T07:45:05Z">Fri 10 Jan 2014 at 07:45</time></div>
  243. </header>
  244. <svg xmlns='http://www.w3.org/2000/svg' width="97" height="103" viewBox="0 0 97 103">
  245. <path d='M48,0l-48,17l8,63l40,23l41-23l8-63z' fill='#B2B2B2'></path>
  246. <path d='M92,20l-44-15v92l37-20z' fill='#B52E31'></path>
  247. <path d='M5,21l7,56l36,20v-92z' fill='#E23237'></path>
  248. <path d='M58,51l-10-21l-9,21zM62,60h-27l-6,15h-11l30-66l31,66h-10z' fill='#F2F2F2'></path>
  249. <path d='M48,9v21l10,21h-10v9h14l7,15h10z' fill='#B2B2B2'></path>
  250. </svg>
  251. <p><a href="http://www.tbray.org/ongoing/When/201x/2014/01/01/Software-in-2014">Tim Bray</a>:
  252. <em>We’re at an inflection point in the practice of constructing software. Our
  253. tools are good, our server developers are happy, but when it comes to building
  254. client-side software, we really don’t know where we’re going or how to get
  255. there.</em></p>
  256. <p>While I agree with much of this post, I really don’t think the conclusion
  257. is as bad as Tim portrays things. I agree that there are good server side
  258. frameworks, and doing things like MVC is the way to go.</p>
  259. <p>
  260. I just happen to believe that this is true on the client too – including MVC.
  261. Not perfect, perhaps, but more than workable. And full disclosure, I’m firmly
  262. on the
  263. <em>HTML5-rocks</em>
  264. side of the fence.
  265. </p>
  266. <p><a href="http://intertwingly.net/blog/2014/01/09/Software-in-2014">...</a></p>
  267. <footer>
  268. <a title="Software in 2014" href="http://intertwingly.net/blog/2014/01/09/Software-in-2014#comments">2 comments</a>
  269. </footer>
  270. </article>
  271. <article>
  272. <header>
  273. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/12/06/Wunderbar-Tutorial">Wunderbar Tutorial</a></h3>
  274. <hr/><div><time title="GMT" datetime="2013-12-07T02:10:14Z">Sat 07 Dec 2013 at 02:10</time></div>
  275. </header>
  276. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  277. <path d="M4,14h92" stroke="#4682b4" stroke-width="5"></path>
  278. <text x="50" y="90" font-size="90" fill="#5f9ea0" font-family="serif" text-anchor="middle"><![CDATA[W]]></text>
  279. </svg>
  280. <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>
  281. <p>Feedback welcome.</p>
  282. <footer>
  283. <a title="Wunderbar Tutorial" href="http://intertwingly.net/blog/2013/12/06/Wunderbar-Tutorial#comments">Add comment</a>
  284. </footer>
  285. </article>
  286. <article>
  287. <header>
  288. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/12/01/Angular-rb-update">Angular.rb update</a></h3>
  289. <hr/><div><time title="GMT" datetime="2013-12-01T15:26:09Z">Sun 01 Dec 2013 at 15:26</time></div>
  290. </header>
  291. <svg xmlns='http://www.w3.org/2000/svg' width="97" height="103" viewBox="0 0 97 103">
  292. <path d='M48,0l-48,17l8,63l40,23l41-23l8-63z' fill='#B2B2B2'></path>
  293. <path d='M92,20l-44-15v92l37-20z' fill='#B52E31'></path>
  294. <path d='M5,21l7,56l36,20v-92z' fill='#E23237'></path>
  295. <path d='M58,51l-10-21l-9,21zM62,60h-27l-6,15h-11l30-66l31,66h-10z' fill='#F2F2F2'></path>
  296. <path d='M48,9v21l10,21h-10v9h14l7,15h10z' fill='#B2B2B2'></path>
  297. </svg>
  298. <p>
  299. 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>
  300. <footer>
  301. <a title="Angular.rb update" href="http://intertwingly.net/blog/2013/12/01/Angular-rb-update#comments">3 comments</a>
  302. </footer>
  303. </article>
  304. <article>
  305. <header>
  306. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/11/11/Angular-rb">Angular.rb</a></h3>
  307. <hr/><div><time title="GMT" datetime="2013-11-11T20:16:16Z">Mon 11 Nov 2013 at 20:16</time></div>
  308. </header>
  309. <svg xmlns='http://www.w3.org/2000/svg' width="97" height="103" viewBox="0 0 97 103">
  310. <path d='M48,0l-48,17l8,63l40,23l41-23l8-63z' fill='#B2B2B2'></path>
  311. <path d='M92,20l-44-15v92l37-20z' fill='#B52E31'></path>
  312. <path d='M5,21l7,56l36,20v-92z' fill='#E23237'></path>
  313. <path d='M58,51l-10-21l-9,21zM62,60h-27l-6,15h-11l30-66l31,66h-10z' fill='#F2F2F2'></path>
  314. <path d='M48,9v21l10,21h-10v9h14l7,15h10z' fill='#B2B2B2'></path>
  315. </svg>
  316. <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>
  317. <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>
  318. <footer>
  319. <a title="Angular.rb" href="http://intertwingly.net/blog/2013/11/11/Angular-rb#comments">Add comment</a>
  320. </footer>
  321. </article>
  322. <article>
  323. <header>
  324. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/11/04/Mavericks">Mavericks</a></h3>
  325. <hr/><div><time title="GMT" datetime="2013-11-04T16:33:35Z">Mon 04 Nov 2013 at 16:33</time></div>
  326. </header>
  327. <svg xmlns='http://www.w3.org/2000/svg' width="90" height="100" viewBox="0 0 90 100">
  328. <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>
  329. </svg>
  330. <p>Did a clean install of Mavericks on my test mac-mini.&#160; Things to be aware of for next time:</p>
  331. <pre class="code">xcode-select --install
  332. sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain
  333. sudo mkdir -p /usr/local/lib; sudo ln -s /usr/local/mysql/lib/libmysql* /usr/local/lib</pre>
  334. <footer>
  335. <a title="Mavericks" href="http://intertwingly.net/blog/2013/11/04/Mavericks#comments">1 comment</a>
  336. </footer>
  337. </article>
  338. <article>
  339. <header>
  340. <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>
  341. <hr/><div><time title="GMT" datetime="2013-10-22T13:20:25Z">Tue 22 Oct 2013 at 13:20</time></div>
  342. </header>
  343. <svg xmlns="http://www.w3.org/2000/svg" width="115" height="87" viewBox="0 0 115 87">
  344. <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>
  345. </svg>
  346. <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>
  347. <footer>
  348. <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>
  349. </footer>
  350. </article>
  351. <article>
  352. <header>
  353. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/10/04/Download-RESTful-Web-Services">Download RESTful Web Services</a></h3>
  354. <hr/><div><time title="GMT" datetime="2013-10-04T12:20:41Z">Fri 04 Oct 2013 at 12:20</time></div>
  355. </header>
  356. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  357. <path d="M10,90.1v-2h80V90.1zM10,70.1v-2h80V70.1zM10,50.1v-2h80V50.1zM10,30.1v-2h80V30.1zM10,10.1v-2h80V10.1z"></path>
  358. <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>
  359. </svg>
  360. <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>
  361. <footer>
  362. <a title="Download RESTful Web Services" href="http://intertwingly.net/blog/2013/10/04/Download-RESTful-Web-Services#comments">1 comment</a>
  363. </footer>
  364. </article>
  365. <article>
  366. <header>
  367. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/09/22/Opal-looks-very-promising">Opal looks very promising</a></h3>
  368. <hr/><div><time title="GMT" datetime="2013-09-22T14:02:01Z">Sun 22 Sep 2013 at 14:02</time></div>
  369. </header>
  370. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  371. <path d="M4,14h92" stroke="#4682b4" stroke-width="5"></path>
  372. <text x="50" y="90" font-size="90" fill="#5f9ea0" font-family="serif" text-anchor="middle"><![CDATA[W]]></text>
  373. </svg>
  374. <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>
  375. <p><a href="http://intertwingly.net/blog/2013/09/22/Opal-looks-very-promising">...</a></p>
  376. <footer>
  377. <a title="Opal looks very promising" href="http://intertwingly.net/blog/2013/09/22/Opal-looks-very-promising#comments">1 comment</a>
  378. </footer>
  379. </article>
  380. <article>
  381. <header>
  382. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/09/05/Time-Warner-Cable-Update">Time Warner Cable Update</a></h3>
  383. <hr/><div><time title="GMT" datetime="2013-09-06T00:45:50Z">Fri 06 Sep 2013 at 00:45</time></div>
  384. </header>
  385. <svg xmlns='http://www.w3.org/2000/svg' width="108" height="93" viewBox="0 0 108 93">
  386. <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>
  387. </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>
  388. <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>
  389. <p><a href="http://intertwingly.net/blog/2013/09/05/Time-Warner-Cable-Update">...</a></p>
  390. <footer>
  391. <a title="Time Warner Cable Update" href="http://intertwingly.net/blog/2013/09/05/Time-Warner-Cable-Update#comments">1 comment</a>
  392. </footer>
  393. </article>
  394. <article>
  395. <header>
  396. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/08/15/Ruby-bindings-for-Gumbo-HTML5-parser">Ruby bindings for Gumbo HTML5 parser</a></h3>
  397. <hr/><div><time title="GMT" datetime="2013-08-15T18:06:47Z">Thu 15 Aug 2013 at 18:06</time></div>
  398. </header>
  399. <svg xmlns='http://www.w3.org/2000/svg' width="94" height="106" viewBox="0 0 94 106">
  400. <path d='M11,94l-9-91h90l-8,91l-37,10' fill='#E44D26'></path>
  401. <path d='M47,97l30-9l7-78h-37' fill='#F16529'></path>
  402. <path d='M47,44h-15l-1-11h16v-12h-28l3,34h25M47,73l-12.5-3l-1-9h-11l1.5,18l23,6' fill='#EBEBEB'></path>
  403. <path d='M47,44v11h14l-1,15l-13,3v12l23-6l3-35M47,21v12h27l1-12' fill='#FFF'></path>
  404. </svg>
  405. <p><a href="http://google-opensource.blogspot.com/2013/08/gumbo-c-library-for-parsing-html.html">Jonathan Tang</a>: <em>We&#8217;re pleased to announce the open source release of the <a href="https://github.com/google/gumbo-parser">Gumbo HTML parser</a>, a C implementation of the <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#parsing">HTML5 parsing algorithm</a>.</em></p>
  406. <p>I&#8217;ve <a href="https://github.com/rubys/gumbo-parser/tree/master/ruby#readme">posted</a> a proof of concept Ruby binding to github.</p>
  407. <footer>
  408. <a title="Ruby bindings for Gumbo HTML5 parser" href="http://intertwingly.net/blog/2013/08/15/Ruby-bindings-for-Gumbo-HTML5-parser#comments">3 comments</a>
  409. </footer>
  410. </article>
  411. <aside>
  412. <h2>Nav Bar</h2>
  413. <nav>
  414. <ul>
  415. <li><a href="http://en.wikipedia.org/wiki/Sam_Ruby">About</a></li>
  416. <li><a href="http://twitter.com/samruby">Twitter</a></li>
  417. <li><a href="/blog/comments.html">Comments</a></li>
  418. <li><a id="navbar_register" href="/blog/registry/">Register</a></li>
  419. <li><a href="/stats/">Statistics</a></li>
  420. <li><a href="/blog/archives/">Archives</a></li>
  421. <li><a href="http://planet.intertwingly.net/">Planet</a></li>
  422. <li><a href="http://code.intertwingly.net/public/">Code</a></li>
  423. <li><a href="http://www.pragprog.com/titles/rails4/agile-web-development-with-rails-4th-edition">Rails</a></li>
  424. <li><a href="http://www.oreilly.com/catalog/9780596529260/">RESTful</a></li>
  425. <li><a href="/blog/2005/05/16/Disclaim-This">Disclaimer</a></li>
  426. </ul>
  427. </nav>
  428. </aside>
  429. </body>
  430. </html>

Total execution time 891 milliseconds.


About this ServiceMore options