<?xml version="1.0" encoding="UTF-8"?> 
<rss version="2.0"
        xmlns:content="http://purl.org/rss/1.0/modules/content/"
        xmlns:wfw="http://wellformedweb.org/CommentAPI/"
        xmlns:dc="http://purl.org/dc/elements/1.1/"
        xmlns:atom="http://www.w3.org/2005/Atom"
        xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
        xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
        >
<channel>
  <title>asgaard</title>
  <description></description>
  <link>https://blog.asgaard.co.uk/2013/1</link>
  <lastBuildDate>Tue, 12 May 26 17:32:26 +0000</lastBuildDate>
  <language>en</language>
  <count>4</count>
  <offset>0</offset>
      <item>
    <title>Ruby/Rails</title>
    <link>https://blog.asgaard.co.uk/2013/01/31/ruby-rails</link>
    <pubDate>Thu, 31 Jan 13 22:25:05 +0000</pubDate>
    <guid>https://blog.asgaard.co.uk/2013/01/31/ruby-rails</guid>
    <description><![CDATA[
<p>
The seemingly continual stream of Ruby and Rails security issues over the last year or so has been kind of entertaining in a bad way.
<p>
The Rails community didn&#039;t enamour themselves to many people early on when many of them made a lot of noise about how other languages were stupid and Ruby/Rails was the only true way forward, out of the security issues that plague(d) applications written in PHP.
<p>
The actual exploit concerned JSON parsing - the JSON parser didn&#039;t actually exist, and instead used the YAML parser. Writing a JSON parser is an afternoon&#039;s work. It&#039;s also fun, and as far as parsers go, pretty easy (the JSON spec is tiny). It seems weird to me that one wouldn&#039;t exist.
<p>
I think Ruby and Rails sort of became a victim of their own success as they allowed and encouraged people to be writing code who perhaps shouldn&#039;t have been.
<p>
<a href='http://news.ycombinator.com/item?id=5145631'>This post on HN</a> sums it up, albeit in a slightly inflammatory way:<blockquote><p>The &quot;everybody has bugs&quot; response is intellectually dishonest. Yes, ev</blockquote>[...]]]></description>
    <content:encoded><![CDATA[
<p>
The seemingly continual stream of Ruby and Rails security issues over the last year or so has been kind of entertaining in a bad way.
<p>
The Rails community didn&#039;t enamour themselves to many people early on when many of them made a lot of noise about how other languages were stupid and Ruby/Rails was the only true way forward, out of the security issues that plague(d) applications written in PHP.
<p>
The actual exploit concerned JSON parsing - the JSON parser didn&#039;t actually exist, and instead used the YAML parser. Writing a JSON parser is an afternoon&#039;s work. It&#039;s also fun, and as far as parsers go, pretty easy (the JSON spec is tiny). It seems weird to me that one wouldn&#039;t exist.
<p>
I think Ruby and Rails sort of became a victim of their own success as they allowed and encouraged people to be writing code who perhaps shouldn&#039;t have been.
<p>
<a href='http://news.ycombinator.com/item?id=5145631'>This post on HN</a> sums it up, albeit in a slightly inflammatory way:<blockquote><p>The &quot;everybody has bugs&quot; response is intellectually dishonest. Yes, everybody has bugs, but most people&#039;s bugs aren&#039;t an intentional feature that a trained monkey ought to have known was a bad idea.<ul><li>- Someone implemented a YAML parser that executed code. This should have been obviously wrong to them, but it wasn&#039;t.</li><li>- Thousands of ostensible developers used this parser, saw the fact that it could deserialize more than just data, and never said &quot;Oh dear, that&#039;s a massive red flag&quot;.</li><li>- The bug in the YAML parser was reported and the author of the YAML library genuinely couldn&#039;t figure out why this mattered or how it could be bad.</li><li>- The issue was reported to RubyGems multiple times and they did nothing.
<br>
This isn&#039;t the same thing as a complex and accidental bug that even careful engineers have difficulty avoiding, after they&#039;ve already taken steps to reduce the failure surface of their code through privilege separation, high-level languages/libraries, etc.</li></ul><p>
This is systemic engineering incompetence that apparently pervades an entire language community, and this is the tipping point where other people start looking for these issues.
</p></blockquote>]]></content:encoded>
  </item>
      <item>
    <title>The New Conglomerate are rubbish</title>
    <link>https://blog.asgaard.co.uk/2013/01/13/the-new-conglomerate-are-rubbish</link>
    <pubDate>Sun, 13 Jan 13 22:26:10 +0000</pubDate>
    <guid>https://blog.asgaard.co.uk/2013/01/13/the-new-conglomerate-are-rubbish</guid>
    <description><![CDATA[
<p>
Context: Planetside 2.
<p>
It would be nice if occasionally we could win. Just once. I don&#039;t know if NC is disadvantaged by the game rules or whether we just somehow attract more terrible players than the other factions. We seem to allow terrible players to get into leadership positions. I am sure other factions have this problem too, but since we&#039;re naturally a bit rubbish it hits us hard. 
<p>
This afternoon we spent 10 minutes doing nothing at the warpgate (leaderspeak: &quot;regrouping&quot;), then a bit later, the same leader had us spend 20 minutes respawning on the uphill road between Zurvan and The Crown. Any idiot can tell you that you can&#039;t capture The Crown from Zurvan unless your enemy is asleep. The only reason people listen to them is because they have microphones. There should be some kind of blacklist nomination system in place; &quot;this person is a disastrous leader, don&#039;t let them be in charge of anything for the next week&quot;.[...]]]></description>
    <content:encoded><![CDATA[
<p>
Context: Planetside 2.
<p>
It would be nice if occasionally we could win. Just once. I don&#039;t know if NC is disadvantaged by the game rules or whether we just somehow attract more terrible players than the other factions. We seem to allow terrible players to get into leadership positions. I am sure other factions have this problem too, but since we&#039;re naturally a bit rubbish it hits us hard. 
<p>
This afternoon we spent 10 minutes doing nothing at the warpgate (leaderspeak: &quot;regrouping&quot;), then a bit later, the same leader had us spend 20 minutes respawning on the uphill road between Zurvan and The Crown. Any idiot can tell you that you can&#039;t capture The Crown from Zurvan unless your enemy is asleep. The only reason people listen to them is because they have microphones. There should be some kind of blacklist nomination system in place; &quot;this person is a disastrous leader, don&#039;t let them be in charge of anything for the next week&quot;.]]></content:encoded>
  </item>
      <item>
    <title>Composer and Packagist</title>
    <link>https://blog.asgaard.co.uk/2013/01/12/composer-and-packagist</link>
    <pubDate>Sat, 12 Jan 13 23:28:25 +0000</pubDate>
    <guid>https://blog.asgaard.co.uk/2013/01/12/composer-and-packagist</guid>
    <description><![CDATA[
<p>
I&#039;ve now got Luminous set up to be a Composer package, and <a href='https://packagist.org/packages/luminous/luminous'>it&#039;s available</a> through Packagist (a PHP package repository).
<p>
I am a bit baffled by Composer in general. I understand the idea of having a package manager for a programming language/environment, and PHP is sorely missing any other kind of okay-quality repository (PHP classes, ha!). Node&#039;s npm is some form of black magic and I love it. Ruby&#039;s gem is nice for installing executables (I don&#039;t write Ruby, I tried once...). Python&#039;s easy_install seems to work. Composer, by contrast, is kind of baffling.
<p>
It&#039;s a command line program, but it&#039;s not a case of <code>composer install package</code>, instead you need a JSON file which defines your dependencies, then you just run composer on it. Which seems odd. Easier to move between machines, maybe, but not very convenient to just drop something into your project.
<p>
My second criticism is more frustrating to me as an author. I haven&#039;t used any of the other package managers as an a[...]]]></description>
    <content:encoded><![CDATA[
<p>
I&#039;ve now got Luminous set up to be a Composer package, and <a href='https://packagist.org/packages/luminous/luminous'>it&#039;s available</a> through Packagist (a PHP package repository).
<p>
I am a bit baffled by Composer in general. I understand the idea of having a package manager for a programming language/environment, and PHP is sorely missing any other kind of okay-quality repository (PHP classes, ha!). Node&#039;s npm is some form of black magic and I love it. Ruby&#039;s gem is nice for installing executables (I don&#039;t write Ruby, I tried once...). Python&#039;s easy_install seems to work. Composer, by contrast, is kind of baffling.
<p>
It&#039;s a command line program, but it&#039;s not a case of <code>composer install package</code>, instead you need a JSON file which defines your dependencies, then you just run composer on it. Which seems odd. Easier to move between machines, maybe, but not very convenient to just drop something into your project.
<p>
My second criticism is more frustrating to me as an author. I haven&#039;t used any of the other package managers as an author/publisher, so maybe the comparison is unfair, but here goes:
<p>
Composer integrates with Git, which is nice. When you pull luminous, it looks in my public Git repo at the tags and branches and tries to match that to the version you specified. That&#039;s nice. But it rather ignores the fact that a version control system isn&#039;t a software distribution method. It can be used as one, but many projects require additional steps to transform a revision into a distributable build.
<p>
In the case of Luminous, a revision contains several megabytes of testing code and some resource intensive testing scripts (fuzz tests). These are fine on a dev box, but you really really really shouldn&#039;t even have them on a production server; it&#039;s a trivial DoS vector, and it has other implications if your server is happy to execute those sample source code files. What really mystifies me is that although Composer allows you to specify post-install scripts/commands, *these don&#039;t execute for dependencies*, only for the root project. &quot;Great&quot;, you think, &quot;Luminous is the root project&quot;. Well, actually, it&#039;s not: the root project is whatever installed Luminous.
<p>
This means that when someone else installs Luminous, I cannot set up their copy.
<br>
This means that when I install someone else&#039;s library, I can set it up.
<p>
As a package provider, there is no situation that I could ever write a useful post install script, and as a package consumer, it shouldn&#039;t be my responsibility to set up other people&#039;s packages. Basically, I should be recommending that everyone writes in their composer.json:
<p>
<pre>{ 
  &quot;scripts&quot;: {
     &quot;post-install-cmd&quot; : &quot;rm -rf vendor/luminous/luminous/tests&quot;
  }
}</pre>
<p>
But I can&#039;t even do that, because there&#039;s no space for comments in the package!
<p>
Or to put it another way <code> git clone !== install </code>.
<p>
I&#039;ve locked down the testing directory as much as I can, but even so...
<p>
You could argue that I shouldn&#039;t be allowed to run arbitrary code on other people&#039;s computers, but then I would question why you want to install my libraries.]]></content:encoded>
  </item>
      <item>
    <title>Luminous 0.7.0 release</title>
    <link>https://blog.asgaard.co.uk/2013/01/12/luminous-0-7-0-release</link>
    <pubDate>Sat, 12 Jan 13 18:33:19 +0000</pubDate>
    <guid>https://blog.asgaard.co.uk/2013/01/12/luminous-0-7-0-release</guid>
    <description><![CDATA[
<p>
I finally got around to getting 0.7.0 out. 
<p>
Highlights (pun):<ul><li>SCSS (nested CSS) scanner</li><li>CSS and markup cleanup</li><li>Composer package</li><li>Licensing change, GPL =&gt; LGPL. In my eyes, using Luminous is akin to dynamic linking, and dynamic linking is okay by the GPL. But there is a certain amount of controversy around that. The LGPL is probably more appropriate in definite terms.</li></ul>
<p>
Download from the <a href='http://luminous.asgaard.co.uk/index.php/download' target='_blank'>normal place</a>.
<p>
Please note: the online demo will still use 0.6.7 for a while as I need to migrate the existing highlights to 0.7 (as the stylesheets are different).[...]]]></description>
    <content:encoded><![CDATA[
<p>
I finally got around to getting 0.7.0 out. 
<p>
Highlights (pun):<ul><li>SCSS (nested CSS) scanner</li><li>CSS and markup cleanup</li><li>Composer package</li><li>Licensing change, GPL =&gt; LGPL. In my eyes, using Luminous is akin to dynamic linking, and dynamic linking is okay by the GPL. But there is a certain amount of controversy around that. The LGPL is probably more appropriate in definite terms.</li></ul>
<p>
Download from the <a href='http://luminous.asgaard.co.uk/index.php/download' target='_blank'>normal place</a>.
<p>
Please note: the online demo will still use 0.6.7 for a while as I need to migrate the existing highlights to 0.7 (as the stylesheets are different).]]></content:encoded>
  </item>
  </channel>
</rss>