(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/04/07/Technology-behind-Whimsy-apache-org">Technology behind Whimsy.apache.org</a></h3>
  29. <hr/><div><time title="GMT" datetime="2014-04-07T17:14:17Z">Mon 07 Apr 2014 at 17:14</time></div>
  30. </header>
  31. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  32. <path d="M4,14h92" stroke="#4682b4" stroke-width="5"></path>
  33. <text x="50" y="90" font-size="90" fill="#5f9ea0" font-family="serif" text-anchor="middle"><![CDATA[W]]></text>
  34. </svg>
  35. <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>
  36. <p>The demo is unfortunately only available to ASF committers (for privacy reasons, as it exposes email addresses).</p>
  37. <footer>
  38. <a title="Technology behind Whimsy.apache.org" href="http://intertwingly.net/blog/2014/04/07/Technology-behind-Whimsy-apache-org#comments">Add comment</a>
  39. </footer>
  40. </article>
  41. <article>
  42. <header>
  43. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/03/14/Angular-rb-example">Angular.rb example</a></h3>
  44. <hr/><div><time title="GMT" datetime="2014-03-14T12:49:42Z">Fri 14 Mar 2014 at 12:49</time></div>
  45. </header>
  46. <svg xmlns='http://www.w3.org/2000/svg' width="97" height="103" viewBox="0 0 97 103">
  47. <path d='M48,0l-48,17l8,63l40,23l41-23l8-63z' fill='#B2B2B2'></path>
  48. <path d='M92,20l-44-15v92l37-20z' fill='#B52E31'></path>
  49. <path d='M5,21l7,56l36,20v-92z' fill='#E23237'></path>
  50. <path d='M58,51l-10-21l-9,21zM62,60h-27l-6,15h-11l30-66l31,66h-10z' fill='#F2F2F2'></path>
  51. <path d='M48,9v21l10,21h-10v9h14l7,15h10z' fill='#B2B2B2'></path>
  52. </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>
  53. <p>Perhaps you would like this better?&#160; :-)</p>
  54. <p><a href="http://intertwingly.net/blog/2014/03/14/Angular-rb-example">...</a></p>
  55. <footer>
  56. <a title="Angular.rb example" href="http://intertwingly.net/blog/2014/03/14/Angular-rb-example#comments">3 comments</a>
  57. </footer>
  58. </article>
  59. <article>
  60. <header>
  61. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/03/13/Time-Warner-Rate-Hike">Time Warner Rate Hike</a></h3>
  62. <hr/><div><time title="GMT" datetime="2014-03-13T23:48:45Z">Thu 13 Mar 2014 at 23:48</time></div>
  63. </header>
  64. <svg xmlns='http://www.w3.org/2000/svg' width="108" height="93" viewBox="0 0 108 93">
  65. <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>
  66. </svg>
  67. <p>Backdrop: </p>
  68. <ul>
  69. <li>Google Fiber announces it is considering <a href="https://fiber.google.com/newcities/">new cities, including Raleigh</a>.</li>
  70. <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>
  71. <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>
  72. </ul>
  73. <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>
  74. <p>I plan to follow up with @TWC_Help.</p>
  75. <footer>
  76. <a title="Time Warner Rate Hike" href="http://intertwingly.net/blog/2014/03/13/Time-Warner-Rate-Hike#comments">5 comments</a>
  77. </footer>
  78. </article>
  79. <article>
  80. <header>
  81. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/01/26/Wunderbar-JQuery-filter">Wunderbar JQuery filter</a></h3>
  82. <hr/><div><time title="GMT" datetime="2014-01-26T17:55:05Z">Sun 26 Jan 2014 at 17:55</time></div>
  83. </header>
  84. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  85. <path d="M4,14h92" stroke="#4682b4" stroke-width="5"></path>
  86. <text x="50" y="90" font-size="90" fill="#5f9ea0" font-family="serif" text-anchor="middle"><![CDATA[W]]></text>
  87. </svg>
  88. <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>
  89. <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>
  90. <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>
  91. <footer>
  92. <a title="Wunderbar JQuery filter" href="http://intertwingly.net/blog/2014/01/26/Wunderbar-JQuery-filter#comments">Add comment</a>
  93. </footer>
  94. </article>
  95. <article>
  96. <header>
  97. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/01/23/Ruby2js-underscore-js">Ruby2js += underscore.js</a></h3>
  98. <hr/><div><time title="GMT" datetime="2014-01-23T14:52:24Z">Thu 23 Jan 2014 at 14:52</time></div>
  99. </header>
  100. <svg xmlns='http://www.w3.org/2000/svg' width="100" height="100" viewBox="0 0 100 100">
  101. <path d='M20,100l74-5l6-75zM61,35l37-2l-29-24z' fill='#b11'></path>
  102. <path d='M21,100l74-5l-47-4zM98,33c4-12,5-29-14-33l-15,9l29,24z' fill='#811'></path>
  103. <path d='M7,67l14,33l11-38z' fill='#d44'></path>
  104. <path d='M29,61l42,13l-10-42zM56,0h28l-16,10zM1,51l-1,29l7-13z' fill='#c22'></path>
  105. <path d='M32,61l39,13c-14,13-30,24-50,26z' fill='#a00'></path>
  106. <path d='M61,35l10,39l17-23zM32,61l16,30c9-5,16-11,23-17l-39-13z' fill='#900'></path>
  107. <path d='M61,35l27,17l10-20l-37,3z' fill='#800'></path>
  108. <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>
  109. <path
  110. d='M1,51l6,16l25-5l29-27l8-26l-13-9l-22,8c-6,7-20,19-20,19c-1,1-9,16-13,24z'
  111. fill='#f84'></path>
  112. <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>
  113. <g transform="rotate(307,33,12),scale(0.45)">
  114. <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>
  115. <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>
  116. </g>
  117. </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>
  118. <p>In many cases, the resulting JavaScript is formed by applying a number of filter rules.</p>
  119. <p><a href="http://intertwingly.net/blog/2014/01/23/Ruby2js-underscore-js">...</a></p>
  120. <footer>
  121. <a title="Ruby2js += underscore.js" href="http://intertwingly.net/blog/2014/01/23/Ruby2js-underscore-js#comments">Add comment</a>
  122. </footer>
  123. </article>
  124. <article>
  125. <header>
  126. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/01/18/Ruby2JS-Attribute-Property-support">Ruby2JS Attribute=&gt;Property support</a></h3>
  127. <hr/><div><time title="GMT" datetime="2014-01-18T15:58:05Z">Sat 18 Jan 2014 at 15:58</time></div>
  128. </header>
  129. <svg xmlns='http://www.w3.org/2000/svg' width="100" height="100" viewBox="0 0 100 100">
  130. <path d='M20,100l74-5l6-75zM61,35l37-2l-29-24z' fill='#b11'></path>
  131. <path d='M21,100l74-5l-47-4zM98,33c4-12,5-29-14-33l-15,9l29,24z' fill='#811'></path>
  132. <path d='M7,67l14,33l11-38z' fill='#d44'></path>
  133. <path d='M29,61l42,13l-10-42zM56,0h28l-16,10zM1,51l-1,29l7-13z' fill='#c22'></path>
  134. <path d='M32,61l39,13c-14,13-30,24-50,26z' fill='#a00'></path>
  135. <path d='M61,35l10,39l17-23zM32,61l16,30c9-5,16-11,23-17l-39-13z' fill='#900'></path>
  136. <path d='M61,35l27,17l10-20l-37,3z' fill='#800'></path>
  137. <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>
  138. <path
  139. d='M1,51l6,16l25-5l29-27l8-26l-13-9l-22,8c-6,7-20,19-20,19c-1,1-9,16-13,24z'
  140. fill='#f84'></path>
  141. <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>
  142. <g transform="rotate(307,33,12),scale(0.45)">
  143. <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>
  144. <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>
  145. </g>
  146. </svg>
  147. <p><a href="http://rubygems.org/gems/ruby2js/">Ruby2JS</a> now maps Ruby attributes to JavaScript properties.</p>
  148. <p><a href="http://intertwingly.net/blog/2014/01/18/Ruby2JS-Attribute-Property-support">...</a></p>
  149. <footer>
  150. <a title="Ruby2JS Attribute=&gt;Property support" href="http://intertwingly.net/blog/2014/01/18/Ruby2JS-Attribute-Property-support#comments">Add comment</a>
  151. </footer>
  152. </article>
  153. <article>
  154. <header>
  155. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/01/13/HTML5-Mode-Links">HTML5 Mode Links</a></h3>
  156. <hr/><div><time title="GMT" datetime="2014-01-13T17:46:19Z">Mon 13 Jan 2014 at 17:46</time></div>
  157. </header>
  158. <svg xmlns='http://www.w3.org/2000/svg' width="97" height="103" viewBox="0 0 97 103">
  159. <path d='M48,0l-48,17l8,63l40,23l41-23l8-63z' fill='#B2B2B2'></path>
  160. <path d='M92,20l-44-15v92l37-20z' fill='#B52E31'></path>
  161. <path d='M5,21l7,56l36,20v-92z' fill='#E23237'></path>
  162. <path d='M58,51l-10-21l-9,21zM62,60h-27l-6,15h-11l30-66l31,66h-10z' fill='#F2F2F2'></path>
  163. <path d='M48,9v21l10,21h-10v9h14l7,15h10z' fill='#B2B2B2'></path>
  164. </svg>
  165. <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>
  166. <p>1) add the following to your application configuration:</p>
  167. <pre class="code">$locationProvider.html5Mode(true).hashPrefix('!')</pre>
  168. <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>
  169. <p>3) Convert my relative links.&#160; Based on how my application was structured:</p>
  170. <ul>
  171. <li><code>#/comments</code> became <code>comments</code></li>
  172. <li><code>#/</code> became <code>./</code></li>
  173. <li><code>js/app.js</code> became <code>../js/app.js</code></li>
  174. </ul>
  175. <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>
  176. <footer>
  177. <a title="HTML5 Mode Links" href="http://intertwingly.net/blog/2014/01/13/HTML5-Mode-Links#comments">Add comment</a>
  178. </footer>
  179. </article>
  180. <article>
  181. <header>
  182. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2014/01/09/Software-in-2014">Software in 2014</a></h3>
  183. <hr/><div><time title="GMT" datetime="2014-01-10T07:45:05Z">Fri 10 Jan 2014 at 07:45</time></div>
  184. </header>
  185. <svg xmlns='http://www.w3.org/2000/svg' width="97" height="103" viewBox="0 0 97 103">
  186. <path d='M48,0l-48,17l8,63l40,23l41-23l8-63z' fill='#B2B2B2'></path>
  187. <path d='M92,20l-44-15v92l37-20z' fill='#B52E31'></path>
  188. <path d='M5,21l7,56l36,20v-92z' fill='#E23237'></path>
  189. <path d='M58,51l-10-21l-9,21zM62,60h-27l-6,15h-11l30-66l31,66h-10z' fill='#F2F2F2'></path>
  190. <path d='M48,9v21l10,21h-10v9h14l7,15h10z' fill='#B2B2B2'></path>
  191. </svg>
  192. <p><a href="http://www.tbray.org/ongoing/When/201x/2014/01/01/Software-in-2014">Tim Bray</a>:
  193. <em>We’re at an inflection point in the practice of constructing software. Our
  194. tools are good, our server developers are happy, but when it comes to building
  195. client-side software, we really don’t know where we’re going or how to get
  196. there.</em></p>
  197. <p>While I agree with much of this post, I really don’t think the conclusion
  198. is as bad as Tim portrays things. I agree that there are good server side
  199. frameworks, and doing things like MVC is the way to go.</p>
  200. <p>
  201. I just happen to believe that this is true on the client too – including MVC.
  202. Not perfect, perhaps, but more than workable. And full disclosure, I’m firmly
  203. on the
  204. <em>HTML5-rocks</em>
  205. side of the fence.
  206. </p>
  207. <p><a href="http://intertwingly.net/blog/2014/01/09/Software-in-2014">...</a></p>
  208. <footer>
  209. <a title="Software in 2014" href="http://intertwingly.net/blog/2014/01/09/Software-in-2014#comments">2 comments</a>
  210. </footer>
  211. </article>
  212. <article>
  213. <header>
  214. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/12/06/Wunderbar-Tutorial">Wunderbar Tutorial</a></h3>
  215. <hr/><div><time title="GMT" datetime="2013-12-07T02:10:14Z">Sat 07 Dec 2013 at 02:10</time></div>
  216. </header>
  217. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  218. <path d="M4,14h92" stroke="#4682b4" stroke-width="5"></path>
  219. <text x="50" y="90" font-size="90" fill="#5f9ea0" font-family="serif" text-anchor="middle"><![CDATA[W]]></text>
  220. </svg>
  221. <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>
  222. <p>Feedback welcome.</p>
  223. <footer>
  224. <a title="Wunderbar Tutorial" href="http://intertwingly.net/blog/2013/12/06/Wunderbar-Tutorial#comments">Add comment</a>
  225. </footer>
  226. </article>
  227. <article>
  228. <header>
  229. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/12/01/Angular-rb-update">Angular.rb update</a></h3>
  230. <hr/><div><time title="GMT" datetime="2013-12-01T15:26:09Z">Sun 01 Dec 2013 at 15:26</time></div>
  231. </header>
  232. <svg xmlns='http://www.w3.org/2000/svg' width="97" height="103" viewBox="0 0 97 103">
  233. <path d='M48,0l-48,17l8,63l40,23l41-23l8-63z' fill='#B2B2B2'></path>
  234. <path d='M92,20l-44-15v92l37-20z' fill='#B52E31'></path>
  235. <path d='M5,21l7,56l36,20v-92z' fill='#E23237'></path>
  236. <path d='M58,51l-10-21l-9,21zM62,60h-27l-6,15h-11l30-66l31,66h-10z' fill='#F2F2F2'></path>
  237. <path d='M48,9v21l10,21h-10v9h14l7,15h10z' fill='#B2B2B2'></path>
  238. </svg>
  239. <p>
  240. 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>
  241. <footer>
  242. <a title="Angular.rb update" href="http://intertwingly.net/blog/2013/12/01/Angular-rb-update#comments">3 comments</a>
  243. </footer>
  244. </article>
  245. <article>
  246. <header>
  247. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/11/11/Angular-rb">Angular.rb</a></h3>
  248. <hr/><div><time title="GMT" datetime="2013-11-11T20:16:16Z">Mon 11 Nov 2013 at 20:16</time></div>
  249. </header>
  250. <svg xmlns='http://www.w3.org/2000/svg' width="97" height="103" viewBox="0 0 97 103">
  251. <path d='M48,0l-48,17l8,63l40,23l41-23l8-63z' fill='#B2B2B2'></path>
  252. <path d='M92,20l-44-15v92l37-20z' fill='#B52E31'></path>
  253. <path d='M5,21l7,56l36,20v-92z' fill='#E23237'></path>
  254. <path d='M58,51l-10-21l-9,21zM62,60h-27l-6,15h-11l30-66l31,66h-10z' fill='#F2F2F2'></path>
  255. <path d='M48,9v21l10,21h-10v9h14l7,15h10z' fill='#B2B2B2'></path>
  256. </svg>
  257. <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>
  258. <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>
  259. <footer>
  260. <a title="Angular.rb" href="http://intertwingly.net/blog/2013/11/11/Angular-rb#comments">Add comment</a>
  261. </footer>
  262. </article>
  263. <article>
  264. <header>
  265. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/11/04/Mavericks">Mavericks</a></h3>
  266. <hr/><div><time title="GMT" datetime="2013-11-04T16:33:35Z">Mon 04 Nov 2013 at 16:33</time></div>
  267. </header>
  268. <svg xmlns='http://www.w3.org/2000/svg' width="90" height="100" viewBox="0 0 90 100">
  269. <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>
  270. </svg>
  271. <p>Did a clean install of Mavericks on my test mac-mini.&#160; Things to be aware of for next time:</p>
  272. <pre class="code">xcode-select --install
  273. sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain
  274. sudo mkdir -p /usr/local/lib; sudo ln -s /usr/local/mysql/lib/libmysql* /usr/local/lib</pre>
  275. <footer>
  276. <a title="Mavericks" href="http://intertwingly.net/blog/2013/11/04/Mavericks#comments">1 comment</a>
  277. </footer>
  278. </article>
  279. <article>
  280. <header>
  281. <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>
  282. <hr/><div><time title="GMT" datetime="2013-10-22T13:20:25Z">Tue 22 Oct 2013 at 13:20</time></div>
  283. </header>
  284. <svg xmlns="http://www.w3.org/2000/svg" width="115" height="87" viewBox="0 0 115 87">
  285. <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>
  286. </svg>
  287. <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>
  288. <footer>
  289. <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>
  290. </footer>
  291. </article>
  292. <article>
  293. <header>
  294. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/10/04/Download-RESTful-Web-Services">Download RESTful Web Services</a></h3>
  295. <hr/><div><time title="GMT" datetime="2013-10-04T12:20:41Z">Fri 04 Oct 2013 at 12:20</time></div>
  296. </header>
  297. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  298. <path d="M10,90.1v-2h80V90.1zM10,70.1v-2h80V70.1zM10,50.1v-2h80V50.1zM10,30.1v-2h80V30.1zM10,10.1v-2h80V10.1z"></path>
  299. <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>
  300. </svg>
  301. <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>
  302. <footer>
  303. <a title="Download RESTful Web Services" href="http://intertwingly.net/blog/2013/10/04/Download-RESTful-Web-Services#comments">1 comment</a>
  304. </footer>
  305. </article>
  306. <article>
  307. <header>
  308. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/09/22/Opal-looks-very-promising">Opal looks very promising</a></h3>
  309. <hr/><div><time title="GMT" datetime="2013-09-22T14:02:01Z">Sun 22 Sep 2013 at 14:02</time></div>
  310. </header>
  311. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  312. <path d="M4,14h92" stroke="#4682b4" stroke-width="5"></path>
  313. <text x="50" y="90" font-size="90" fill="#5f9ea0" font-family="serif" text-anchor="middle"><![CDATA[W]]></text>
  314. </svg>
  315. <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>
  316. <p><a href="http://intertwingly.net/blog/2013/09/22/Opal-looks-very-promising">...</a></p>
  317. <footer>
  318. <a title="Opal looks very promising" href="http://intertwingly.net/blog/2013/09/22/Opal-looks-very-promising#comments">1 comment</a>
  319. </footer>
  320. </article>
  321. <article>
  322. <header>
  323. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/09/05/Time-Warner-Cable-Update">Time Warner Cable Update</a></h3>
  324. <hr/><div><time title="GMT" datetime="2013-09-06T00:45:50Z">Fri 06 Sep 2013 at 00:45</time></div>
  325. </header>
  326. <svg xmlns='http://www.w3.org/2000/svg' width="108" height="93" viewBox="0 0 108 93">
  327. <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>
  328. </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>
  329. <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>
  330. <p><a href="http://intertwingly.net/blog/2013/09/05/Time-Warner-Cable-Update">...</a></p>
  331. <footer>
  332. <a title="Time Warner Cable Update" href="http://intertwingly.net/blog/2013/09/05/Time-Warner-Cable-Update#comments">1 comment</a>
  333. </footer>
  334. </article>
  335. <article>
  336. <header>
  337. <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>
  338. <hr/><div><time title="GMT" datetime="2013-08-15T18:06:47Z">Thu 15 Aug 2013 at 18:06</time></div>
  339. </header>
  340. <svg xmlns='http://www.w3.org/2000/svg' width="94" height="106" viewBox="0 0 94 106">
  341. <path d='M11,94l-9-91h90l-8,91l-37,10' fill='#E44D26'></path>
  342. <path d='M47,97l30-9l7-78h-37' fill='#F16529'></path>
  343. <path d='M47,44h-15l-1-11h16v-12h-28l3,34h25M47,73l-12.5-3l-1-9h-11l1.5,18l23,6' fill='#EBEBEB'></path>
  344. <path d='M47,44v11h14l-1,15l-13,3v12l23-6l3-35M47,21v12h27l1-12' fill='#FFF'></path>
  345. </svg>
  346. <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>
  347. <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>
  348. <footer>
  349. <a title="Ruby bindings for Gumbo HTML5 parser" href="http://intertwingly.net/blog/2013/08/15/Ruby-bindings-for-Gumbo-HTML5-parser#comments">2 comments</a>
  350. </footer>
  351. </article>
  352. <article>
  353. <header>
  354. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/05/20/Prosody-as-a-personal-xmpp-server">Prosody as a personal xmpp server</a></h3>
  355. <hr/><div><time title="GMT" datetime="2013-05-20T17:29:35Z">Mon 20 May 2013 at 17:29</time></div>
  356. </header>
  357. <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
  358. <rect height='49' width='49' x='0' y='0' rx="13" fill='#6197df'></rect>
  359. <rect height='49' width='49' x='0' y='51' rx="13" fill='#f29b00'></rect>
  360. <rect height='49' width='49' x='51' y='0' rx="13" fill='#f29b00'></rect>
  361. <rect height='49' width='49' x='51' y='51' rx="13" fill='#6197df'></rect>
  362. </svg>
  363. <p>Nearly six years ago, I set up a <a href="http://intertwingly.net/blog/2007/08/07/Personal-Jabber-Server">personal Jabber server</a> using ejabberd.&#160; This setup survived the server migration to Ubuntu 8.04 and 10.04.&#160; This past weekend, I attempted to migrate that to a server running 12.04 and all I could get out of it was an erlang crash dump.</p>
  364. <p>A quick scan for successors turned up <a href="http://prosody.im/">prosody</a>. Configuration was as simple as adding a <code>VirtualHost</code> and setting <code>allow_registration</code> to <code>true</code>.</p>
  365. <footer>
  366. <a title="Prosody as a personal xmpp server" href="http://intertwingly.net/blog/2013/05/20/Prosody-as-a-personal-xmpp-server#comments">7 comments</a>
  367. </footer>
  368. </article>
  369. <article>
  370. <header>
  371. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/03/29/Cooking-with-Chef">Cooking with Chef</a></h3>
  372. <hr/><div><time title="GMT" datetime="2013-03-29T19:03:52Z">Fri 29 Mar 2013 at 19:03</time></div>
  373. </header>
  374. <svg xmlns="http://www.w3.org/2000/svg"
  375. xmlns:xlink="http://www.w3.org/1999/xlink" width="105" height="95" viewBox="0 0 105 95">
  376. <path d="M29,34s6-2,6,5l8-12s-7,1,-6-5" fill="#f7681a"></path>
  377. <rect x="35" y="27" width="68" height="67" fill="#f7681a" rx="8"></rect>
  378. <circle cx="20" cy="19" r="12" stroke="#f7681a" fill="none" stroke-width="11"></circle>
  379. <ellipse cx="70" cy="61" rx="20" ry="21" stroke="#FFF" fill="none" stroke-width="12"></ellipse>
  380. <path d="M97,37l-23,23l23,24z" fill="#f7681a"></path>
  381. </svg>
  382. <p>It didn&#8217;t take long for me to outgrow using <a href="https://github.com/rubys/awdwr/blob/072a9888a80979dc4793bfd058544e72c55ebdbd/vagrant/bootstrap.sh">a shell script</a> for deployment.&#160; The new chef solo <a href="https://github.com/rubys/awdwr/tree/master/vagrant/cookbooks/awdwr/recipes">recipes</a> are considerably more verbose, but can be updated and rerun many times.</p>
  383. <p>My usage is undoubtedly more idiomatic Ruby than idiomatic Chef, and I&#8217;m not tapping into the vast <a href="http://docs.opscode.com/essentials_cookbooks.html">Chef ecosystem</a>, but I can now provision a new virtual machine for running tests in under 3 minutes.</p>
  384. <footer>
  385. <a title="Cooking with Chef" href="http://intertwingly.net/blog/2013/03/29/Cooking-with-Chef#comments">Add comment</a>
  386. </footer>
  387. </article>
  388. <article>
  389. <header>
  390. <h3><a rel="bookmark" href="http://intertwingly.net/blog/2013/03/27/Vagrant-Rocks">Vagrant Rocks</a></h3>
  391. <hr/><div><time title="GMT" datetime="2013-03-27T15:07:21Z">Wed 27 Mar 2013 at 15:07</time></div>
  392. </header>
  393. <svg xmlns='http://www.w3.org/2000/svg' width="99" height="101" viewBox="0 0 99 101">
  394. <path d='M0,7l7,4l-1,7l7,4l-1-8l13,7v8l18,46l13,8v14l-6-4v-7l-7,4l7,3v7l-18-10zM50,72v-18l2-5l4-2v-10l6-15v-8l7,4v8l5-4l1-7l6,3v14l-6-4l-7,4l6,4l1,8l-5-4l-2,5v16l-5-3l-7,17zM87,0v7l6-3z' fill='#2891cc' stroke='none'></path>
  395. <path d='M7,11l-1,7l6-4zM19,54l6-4l-6-3zM31,75v8l6-4zM50,100l6-3l-6-4zM25,21l12-6v7l13,32v18l-7,3l-18-46zM69,18l6-3l-1,7l-5,4zM81,18l18-11v7l-31,76l-12,7v-14l-7-4l7-4l4-10l8-4v-16l2-5l4,3v-7l7-4z' fill='#62b0e2' stroke='none'></path>
  396. <path d='M19,54l6,3l6-4l-6-3zM31,26v6l-6-3l6-4zM62,78v8l7-4z' fill='#FFFFFF' stroke='none'></path>
  397. <path d='M88,14l5,4v-7zM74,50l7-3v7zM62,78l7-3v7zM31,32l6,4v-7l-6-4z' fill='#2891cc' stroke='none'></path>
  398. </svg>
  399. <p>Yesterday, I used <a href="http://www.vagrantup.com/">vagrant</a> for the first time.&#160; Within a few hours, I had a <a href="https://github.com/rubys/awdwr/tree/master/vagrant">reproducible bootstrap</a> that can run my <a href="http://intertwingly.net/projects/dashboard.html">Agile Web Development with Rails tests</a>.&#160; For the short term, this is useful for regression testing the Installation chapter.&#160; Longer term, hopefully it will make it easier for the rails-core team to <a href="https://github.com/rails/rails/blob/master/RELEASING_RAILS.rdoc#is-sam-ruby-happy--if-not-make-him-happy">reproduce problems</a>.</p>
  400. <footer>
  401. <a title="Vagrant Rocks" href="http://intertwingly.net/blog/2013/03/27/Vagrant-Rocks#comments">1 comment</a>
  402. </footer>
  403. </article>
  404. <aside>
  405. <h2>Nav Bar</h2>
  406. <nav>
  407. <ul>
  408. <li><a href="http://en.wikipedia.org/wiki/Sam_Ruby">About</a></li>
  409. <li><a href="http://twitter.com/samruby">Twitter</a></li>
  410. <li><a href="/blog/comments.html">Comments</a></li>
  411. <li><a id="navbar_register" href="/blog/registry/">Register</a></li>
  412. <li><a href="/stats/">Statistics</a></li>
  413. <li><a href="/blog/archives/">Archives</a></li>
  414. <li><a href="http://planet.intertwingly.net/">Planet</a></li>
  415. <li><a href="http://code.intertwingly.net/public/">Code</a></li>
  416. <li><a href="http://www.pragprog.com/titles/rails4/agile-web-development-with-rails-4th-edition">Rails</a></li>
  417. <li><a href="http://www.oreilly.com/catalog/9780596529260/">RESTful</a></li>
  418. <li><a href="/blog/2005/05/16/Disclaim-This">Disclaimer</a></li>
  419. </ul>
  420. </nav>
  421. </aside>
  422. </body>
  423. </html>

Total execution time 2357 milliseconds.


About this ServiceMore options