Sorry

This feed does not validate.

In addition, interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://davorg.theplanetarium.org/atom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <feed xmlns="http://www.w3.org/2005/Atom">
  3.  <title>planet davorg</title>
  4.  <link rel="alternate" href="http://davorg.theplanetarium.org/" type="text/html"/>
  5.  <subtitle>Aggregating Dave's stuff</subtitle>
  6.  <author>
  7.    <name>Dave Cross</name>
  8.    <email>dave@dave.org.uk</email>
  9.  </author>
  10.  <updated>2016-02-13T08:03:11Z</updated>
  11.  <link rel="self" href="http://davorg.theplanetarium.org/" type="application/atom+xml"/>
  12.  <id>http://davorg.theplanetarium.org/</id>
  13.  <entry>
  14.    
  15.    <link rel="alternate" href="https://twitter.com/davorg/status/698405605913006080" type="text/html"/>
  16.    <content type="xhtml">
  17.      <div xmlns="http://www.w3.org/1999/xhtml">Looking forward to this - "Neil Gaiman's Likely Stories brings tales of 'psychological cannibalism'" to TV https://t.co/XoyxIwyGYu</div>
  18.    </content>
  19.    <updated>2016-02-13T07:17:26Z</updated>
  20.  <title>twitter: Looking forward to this - "Neil Gaiman's Likely Stories brings tales of 'psychological cannibalism'" to TV https://t.co/XoyxIwyGYu</title></entry>
  21.  <entry>
  22.    
  23.    <link rel="alternate" href="https://twitter.com/davorg/status/698399411446091776" type="text/html"/>
  24.    <content type="xhtml">
  25.      <div xmlns="http://www.w3.org/1999/xhtml">Petition: Consider a vote of No Confidence in Jeremy Hunt, Health Secretary https://t.co/HMHC1Yj5MN You know it makes sense.</div>
  26.    </content>
  27.    <updated>2016-02-13T06:52:49Z</updated>
  28.  <title>twitter: Petition: Consider a vote of No Confidence in Jeremy Hunt, Health Secretary https://t.co/HMHC1Yj5MN You know it makes sense.</title></entry>
  29.  <entry>
  30.    
  31.    <link rel="alternate" href="https://twitter.com/davorg/status/698221662483963905" type="text/html"/>
  32.    <content type="xhtml">
  33.      <div xmlns="http://www.w3.org/1999/xhtml">BHA Darwin Day Lecture — I'm at Logan Hall in Russel Square, Greater London https://t.co/jF9OYYuFQg</div>
  34.    </content>
  35.    <updated>2016-02-12T19:06:31Z</updated>
  36.  <title>twitter: BHA Darwin Day Lecture — I'm at Logan Hall in Russel Square, Greater London https://t.co/jF9OYYuFQg</title></entry>
  37.  <entry>
  38.    
  39.    <link rel="alternate" href="https://twitter.com/davorg/status/698207209860308992" type="text/html"/>
  40.    <content type="xhtml">
  41.      <div xmlns="http://www.w3.org/1999/xhtml">Killing time before the Darwin Day Lecture. (@ British Museum in London, Greater London) https://t.co/DLJyNNkRF1</div>
  42.    </content>
  43.    <updated>2016-02-12T18:09:05Z</updated>
  44.  <title>twitter: Killing time before the Darwin Day Lecture. (@ British Museum in London, Greater London) https://t.co/DLJyNNkRF1</title></entry>
  45.  <entry>
  46.    
  47.    <link rel="alternate" href="https://twitter.com/davorg/status/698124643765460992" type="text/html"/>
  48.    <content type="xhtml">
  49.      <div xmlns="http://www.w3.org/1999/xhtml">Astonished by the scare quotes on misogynistic message. "New spat between Taylor Swift and Kanye West" https://t.co/hHUsAn8cbo via @BBCNews</div>
  50.    </content>
  51.    <updated>2016-02-12T12:41:00Z</updated>
  52.  <title>twitter: Astonished by the scare quotes on misogynistic message. "New spat between Taylor Swift and Kanye West" https://t.co/hHUsAn8cbo via @BBCNews</title></entry>
  53.  <entry>
  54.    <title>books read: Take Back the Skies (Take Back the Skies, #1)</title>
  55.    <link rel="alternate" href="http://www.goodreads.com/review/show/1538276661?utm_medium=api&amp;utm_source=rss" type="text/html"/>
  56.    <content type="xhtml">
  57.      <div xmlns="http://www.w3.org/1999/xhtml">
  58.      
  59.      <a href="http://www.goodreads.com/book/show/18594501-take-back-the-skies?utm_medium=api&amp;utm_source=rss"><img alt="Take Back the Skies (Take Back the Skies, #1)" src="http://d.gr-assets.com/books/1398438531s/18594501.jpg"/></a><br/>
  60.                                      author: Lucy Saxon<br/>
  61.                                      name: David<br/>
  62.                                      average rating: 3.47<br/>
  63.                                      book published: 2014<br/>
  64.                                      rating: 0<br/>
  65.                                      read at: <br/>
  66.                                      date added: 2016/02/05<br/>
  67.                                      shelves: currently-reading<br/>
  68.                                      review: <br/><br/>
  69.                                      
  70.    </div>
  71.    </content>
  72.    <id>http://www.goodreads.com/review/show/1538276661?utm_medium=api&amp;utm_source=rss</id>
  73.    <published>2016-02-05T06:55:17-08:00</published>
  74.    <updated>2016-02-05T06:55:17-08:00</updated>
  75.  </entry>
  76.  <entry>
  77.    <title>perl hacks: Why Learn Perl?</title>
  78.    <link rel="alternate" href="http://perlhacks.com/2016/01/why-learn-perl/" type="text/html"/>
  79.    <content type="html">&lt;p&gt;A couple of months ago &lt;a href="http://perlhacks.com/2015/11/public-training-in-london-february-2016/"&gt;I mentioned some public training courses&lt;/a&gt; that I’ll be running in London next month. The courses are being organised by &lt;a href="http://www.flossuk.org/"&gt;FlossUK&lt;/a&gt; and since the courses have been announced the FlossUK crew have been running a marketing campaign to ensure that as many people as possible know about the courses. As part of that campaign they’ve run some sponsored tweets, so information about the courses will have been displayed to people who previously didn’t know about them (that is, after all, the point of marketing).&lt;/p&gt;
  80. &lt;p&gt;And, in a couple of cases, the tweet was shown to people who apparently weren’t that interested in the courses.&lt;/p&gt;
  81. &lt;blockquote class="twitter-tweet" data-width="550"&gt;&lt;p lang="en" dir="ltr"&gt;"Modern Web programming" and "Perl" in the same sentence. That&amp;#39;s the first time I&amp;#39;ve seen that. &lt;a href="https://t.co/w3eFgx023j"&gt;https://t.co/w3eFgx023j&lt;/a&gt;&lt;/p&gt;
  82. &lt;p&gt;— Andy (@ely_peddler) &lt;a href="https://twitter.com/ely_peddler/status/688680738762440704"&gt;January 17, 2016&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
  83. &lt;p&gt;&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;&lt;/p&gt;
  84. &lt;blockquote class="twitter-tweet" data-width="550"&gt;&lt;p lang="en" dir="ltr"&gt;Perl training in 2016?! &lt;a href="https://t.co/eoJg1ZBQea"&gt;https://t.co/eoJg1ZBQea&lt;/a&gt;&lt;/p&gt;
  85. &lt;p&gt;— Julio (@juliocesarfort) &lt;a href="https://twitter.com/juliocesarfort/status/689043436905885696"&gt;January 18, 2016&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
  86. &lt;p&gt;&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;&lt;/p&gt;
  87. &lt;p&gt;As you’ll see, both tweets are based on the idea that Perl training is pointless in 2016. Presumably because Perl has no place in the world of modern software development. This idea is, of course, wrong and I thought I’d take some time to explain why it is so wrong.&lt;/p&gt;
  88. &lt;p&gt;In order for training to be relevant, I think that two things need to be true. Firstly the training has to be in a technology that people use and secondly there needs to be an expectation that some people who use that technology aren’t as expert in as they would like to be (or as their managers would like them to be). Let’s look at those two propositions individually.&lt;/p&gt;
  89. &lt;p&gt;Do people still use Perl? Seems strange that I even have to dignify that question with a response. Of course people still use Perl. I’m a freelance programmer who specialises in Perl and I’m never short of people wanting me to work for them. I won’t deny that the pool of Perl-using companies has got smaller in the last ten years, but they are still out there. And they are still running successful businesses based on Perl.&lt;/p&gt;
  90. &lt;p&gt;So there’s no question that Perl satisfies the first of our two points. You just have to look at the size of the Perl groups on Facebook or LinkedIn to see that plenty of people are still using Perl. Or come along to a YAPC and see how many companies are desperate to employ Perl programmers.&lt;/p&gt;
  91. &lt;p&gt;I think it’s the second part of the question that is more interesting. Because I think that reveals what is really behind the negative attitude that some people have towards Perl. Are there people using Perl who don’t know all they need to know about it?&lt;/p&gt;
  92. &lt;p&gt;Think back to Perl’s heyday in the second half of the 1990s. A huge majority of dotcoms were using Perl to power their web sites. And because web technologies were so new, most of the Perl behind those sites was of a terrible standard. They were horrible monolithic CGI programs with hard-coded HTML within the Perl code (thereby making it almost impossible for designers to improve the look of the web site). When they talked to databases, they used raw SQL that was also hard-coded into the source. The CGI technology itself meant that as soon as your site became popular, your web server was spawning hundreds of Perl processes every minute and response times ballooned. So we switched to mod_perl which meant rewriting all of the code and in many cases the second version was even more unmaintainable than the first.&lt;/p&gt;
  93. &lt;p&gt;It’s not surprising that many people got a bad impression of Perl. But any technology that was being used back then had exactly the same problems. We were all learning on the job.&lt;/p&gt;
  94. &lt;p&gt;Many people turned their backs on Perl at that point. And, crucially, stopped caring what was going on in Perl development. And like British ex-pats who think the UK still works the way it did when they left in the 1960s, these people think the state of the art in Perl web development is those balls of mud they worked on fifteen or twenty years ago.&lt;/p&gt;
  95. &lt;p&gt;And it’s not like that at all. Perl has moved on. Perl has all of the tools that you’d expect to see in any modern programming language. Moose is as good as, if not better than, the OO support in any other language. DBIx::Class is as flexible an ORM as you’ll find anywhere. Plack and PSGI make writing web apps in Perl as easy as it is in any other language. Perl has always been the magpie language – it would be crazy to assume that it hasn’t stolen all the good ideas that have emerged in other languages over the last fifteen years. It has stolen those ideas and in many cases it has improved on them.&lt;/p&gt;
  96. &lt;p&gt;All of which brings us back to my second question. Are there people out there who need to learn more about Perl? Absolutely there are. The two people whose tweets I quoted above are good examples. They appear to have bought into the common misconception that Perl hasn’t changed since Perl 5 was released over twenty years ago.&lt;/p&gt;
  97. &lt;p&gt;That’s often what I find when I run these courses. There are people out there with ten or fifteen years of Perl experience who haven’t been exposed to all of the great Modern Perl tools that have been developed in the last ten years. They think they know Perl, but their eyes are opened after a couple of hours on the course. They go away with long lists of tools that they want to investigate further.&lt;/p&gt;
  98. &lt;p&gt;I’m not saying that everyone should use Perl. If you’re comfortable using other technologies to get your job done, then that’s fine, of course. But if you haven’t followed Perl development for over ten years, then please don’t assume that you know the current state of the language. And please try to resist making snarky comments about things that you know nothing about.&lt;/p&gt;
  99. &lt;p&gt;If, on the other hand, you are interesting in seeing how Perl has changed in recent years and getting an overview of the Modern Perl toolset, then we’d love to see you on &lt;a href="http://www.flossuk.org/events/perl-tutorials-2016/"&gt;the courses&lt;/a&gt;.&lt;/p&gt;
  100. &lt;p&gt;The post &lt;a rel="nofollow" href="http://perlhacks.com/2016/01/why-learn-perl/"&gt;Why Learn Perl?&lt;/a&gt; appeared first on &lt;a rel="nofollow" href="http://perlhacks.com"&gt;Perl Hacks&lt;/a&gt;.&lt;/p&gt;
  101. </content>
  102.    <summary type="xhtml">
  103.      <div xmlns="http://www.w3.org/1999/xhtml"><p>A couple of months ago I mentioned some public training courses that I’ll be running in London next month. The courses are being organised by FlossUK and since the courses have been announced the FlossUK crew have been running a marketing campaign to ensure that as many people as possible know about the courses. As … <a href="http://perlhacks.com/2016/01/why-learn-perl/" class="more-link">Continue reading<span class="screen-reader-text"> "Why Learn Perl?"</span></a></p>
  104. <p>The post <a rel="nofollow" href="http://perlhacks.com/2016/01/why-learn-perl/">Why Learn Perl?</a> appeared first on <a rel="nofollow" href="http://perlhacks.com">Perl Hacks</a>.</p>
  105. </div>
  106.    </summary>
  107.    <author>
  108.      <name>Dave Cross</name>
  109.    </author>
  110.    <id>http://perlhacks.com/?p=1260</id>
  111.    <published>2016-01-24T17:48:35Z</published>
  112.    <updated>2016-01-24T17:48:35Z</updated>
  113.    <category term="Miscellaneous"/>
  114.  </entry>
  115.  <entry>
  116.    <title>davblog: 2015 in Gigs</title>
  117.    <link rel="alternate" href="http://feedproxy.google.com/~r/realdavblog/~3/p_7J4_aQpPQ/2015-in-gigs.html" type="text/html"/>
  118.    <content type="xhtml">
  119.      <div xmlns="http://www.w3.org/1999/xhtml"><p>As has become traditional round these parts, it’s time for my annual review of the gigs I saw last year.</p>
  120. <p>I saw 48 gigs in 2015. That’s up on 2014’s 45, but still short of my all time high of 60 in 2013. I saw <a href="http://gigs.dave.org.uk/tag/chvrches/">Chvrches</a>, <a href="http://gigs.dave.org.uk/tag/stealing-sheep/">Stealing Sheep</a> and <a href="http://gigs.dave.org.uk/tag/paper-aeroplanes/">Paper Aeroplanes</a> twice. I was supposed to see a couple of other artists twice, but <a href="http://gigs.dave.org.uk/tag/natalie-prass/">Natalie Prass</a> cancelled the second show and I couldn’t get to the second <a href="http://gigs.dave.org.uk/tag/soak/">Soak</a> show as I was ill.</p>
  121. <p>As always, there were some disappointments. <a href="http://gigs.dave.org.uk/2015/04/renaissance-union-chapel/">Renaissance</a> really weren’t very good (I waited to hear “Northern Lights” and then buggered off) and <a href="http://gigs.dave.org.uk/2015/02/elbow-hammersmith-apollo/">Elbow</a> weren’t as good as I’d seen them before. But the biggest disappointment this year has to be <a href="http://gigs.dave.org.uk/2015/10/bob-dylan-royal-albert-hall/">Bob Dylan</a>. He was terrible. I left at the interval.</p>
  122. <p>About half-way through the year, I stopped writing reviews on my <a href="http://gigs.dave.org.uk/">gig site</a>. I’ve put up posts with just the data about the shows and I hope to back-fill some of the reviews at some point, but I can’t see it happening soon. Hopefully I’ll keep the site more up to date this year.</p>
  123. <p>So here (in chronological order) are my favourite gigs of the year:</p>
  124. <ul>
  125. <li><a href="http://gigs.dave.org.uk/2015/02/stealing-sheep-chats-palace/">Stealing Sheep</a> – It’s been far too long since I saw Stealing Sheep, but the release of a new album brought them to London a couple of times. I’m going to do with the Chat’s Palace show as my favourite as I like smaller venues.</li>
  126. <li><a href="http://gigs.dave.org.uk/2015/04/laura-marling-queen-elizabeth-hall/">Laura Marling</a> – This was simply astonishing in every way. I was completely spellbound thoughout this show. Almost certainly gig of the year.</li>
  127. <li><a href="http://gigs.dave.org.uk/2015/06/soak-bush-hall/">Soak</a> – If there’s any justice in the world, Soak is going to be huge. See her in intimate venues while you can.</li>
  128. <li><a href="http://gigs.dave.org.uk/2015/06/amanda-palmer-union-chapel/">Amanda Palmer</a> – There always has to be an Amanda Palmer gig on the list. It’s the law.</li>
  129. <li><a href="http://gigs.dave.org.uk/2015/09/chvrches-the-dome/">Chvrches</a> – Another act I saw twice. The small album launch show at the Tufnell Park Dome just pipped the huge extravaganza at Alexandra Palace.</li>
  130. <li><a href="http://gigs.dave.org.uk/2015/10/heaven-17-the-garage/">Heaven 17</a> – Another band I’ve started seeing whenever I can.</li>
  131. <li><a href="http://gigs.dave.org.uk/2015/11/garbage-brixton-academy/">Garbage</a> – Sometimes, seeing bands decades after their peak can be a little disappointing. That certainly wasn’t the case for Garbage.</li>
  132. <li><a href="http://gigs.dave.org.uk/2015/11/john-grant-hammersmith-apollo/">John Grant</a> – First time I’d seen John Grant. I hope it won’t be the last.</li>
  133. <li><a href="http://gigs.dave.org.uk/2015/11/fuzzbox-100-club/">Fuzzbox</a> – Another act from my youth who made an impressive return.</li>
  134. <li><a href="http://gigs.dave.org.uk/2015/12/the-unthanks-union-chapel/">The Unthanks</a> – I’ve been meaning to get round to see the Unthanks for years. I’m glad I did. I’ll be seeing them again as soon as possible.</li>
  135. </ul>
  136. <p>Gigs that fell just outside of the top ten included <a href="http://gigs.dave.org.uk/2015/01/julian-cope-village-underground/">Julian Cope</a>, <a href="http://gigs.dave.org.uk/2015/06/suzanne-vega-union-chapel-2/">Suzanne Vega</a>, <a href="http://gigs.dave.org.uk/2015/05/paper-planes-oslo-hackney/">Paper Aeroplanes</a> and <a href="http://gigs.dave.org.uk/2015/12/smoke-fairies-lexington/">Smoke Fairies</a>. Oh, and the <a href="http://gigs.dave.org.uk/2015/10/indie-daze-the-forum/">Indie Daze Festival</a> was great too.</p>
  137. <p>I already have tickets for a dozen shows in 2016. I’m particularly looking forward to ELO in April and seeing the Cure for the first time for far too many years in December.</p>
  138. <p>The post <a rel="nofollow" href="http://blog.dave.org.uk/2016/01/2015-in-gigs.html">2015 in Gigs</a> appeared first on <a rel="nofollow" href="http://blog.dave.org.uk">Davblog</a>.</p>
  139. <img src="http://feeds.feedburner.com/~r/realdavblog/~4/p_7J4_aQpPQ" height="1" width="1" alt=""/></div>
  140.    </content>
  141.    <summary type="xhtml">
  142.      <div xmlns="http://www.w3.org/1999/xhtml"><p>As has become traditional round these parts, it’s time for my annual review of the gigs I saw last year. I saw 48 gigs in 2015. That’s up on 2014’s 45, but still short of my all time high of 60 in 2013. I saw Chvrches, Stealing Sheep and Paper Aeroplanes twice. I was supposed … <a href="http://blog.dave.org.uk/2016/01/2015-in-gigs.html" class="more-link">Continue reading<span class="screen-reader-text"> "2015 in Gigs"</span></a></p>
  143. <p>The post <a rel="nofollow" href="http://blog.dave.org.uk/2016/01/2015-in-gigs.html">2015 in Gigs</a> appeared first on <a rel="nofollow" href="http://blog.dave.org.uk">Davblog</a>.</p>
  144. </div>
  145.    </summary>
  146.    <author>
  147.      <name>Dave Cross</name>
  148.    </author>
  149.    <id>http://blog.dave.org.uk/?p=3500</id>
  150.    <published>2016-01-02T11:48:42Z</published>
  151.    <updated>2016-01-02T11:48:42Z</updated>
  152.    <category term="music"/>
  153.    <category term="review"/>
  154.    <category term="gigs"/>
  155.    <category term="2015"/>
  156.    <category term="year in gigs"/>
  157.  </entry>
  158.  <entry>
  159.    <title>perl hacks: Easy PSGI</title>
  160.    <link rel="alternate" href="http://perlhacks.com/2016/01/easy-psgi/" type="text/html"/>
  161.    <content type="xhtml">
  162.      <div xmlns="http://www.w3.org/1999/xhtml"><p>When I write replies to questions on StackOverflow and places like that recommending that people abandon CGI programs in favour of something that uses PSGI, I often get some push-back from people claiming that PSGI makes things far too complicated.</p>
  163. <p>I don’t believe that’s true. But I think I know why they say it. I think they say it because most of the time when we say “you should really port that code to PSGI” we follow up with links to Dancer, Catalyst or Mojolicious tutorials.</p>
  164. <p>I know why we do that. I know that a web framework is usually going to make writing a web app far simpler. And, yes, I know that in the <a href="https://metacpan.org/pod/Plack::Request">Plack::Request documentation</a>, Miyagawa explicitly says:</p>
  165. <blockquote><p>Note that this module is intended to be used by Plack middleware developers and web application framework developers rather than application developers (end users).</p>
  166. <p>Writing your web application directly using Plack::Request is certainly possible but not recommended: it’s like doing so with mod_perl’s Apache::Request: yet too low level.</p>
  167. <p>If you’re writing a web application, not a framework, then you’re encouraged to use one of the web application frameworks that support PSGI (<a href="http://plackperl.org/#frameworks">http://plackperl.org/#frameworks</a>), or see modules like <a href="https://metacpan.org/pod/HTTP::Engine">HTTP::Engine</a> to provide higher level Request and Response API on top of PSGI.</p></blockquote>
  168. <p>And, in general, I agree with him wholeheartedly. But I think that when we’re trying to persuade people to switch to PSGI, these suggestions can get in the way. <span class="pullquote">People see switching their grungy old CGI programs to a web framework as a big job</span>. I don’t think it’s as scary as they might think, but I agree it’s often a non-trivial task.</p>
  169. <p>Even without using a web framework, I think that you can get benefits from moving software to PSGI. When I’m running training courses on PSGI, I emphasise three advantages that PSGI gives you over other Perl web development environments.</p>
  170. <ol>
  171. <li>PSGI applications are easier to debug and test.</li>
  172. <li>PSGI applications can be deployed in any environment you want without changing a line of code.</li>
  173. <li>Plack Middleware</li>
  174. </ol>
  175. <p>And I think that you can benefit from all of these features pretty easily, without moving to a framework. I’ve been thinking about the best way to do this and I think I’ve come up with a simple plan:</p>
  176. <ul>
  177. <li>Change your shebang line to <tt>/usr/bin/plackup</tt> (or equivalent)</li>
  178. <li>Put all of your code inside <tt>my $app = sub { ... }</tt></li>
  179. <li>Switch to using Plack::Request to access all of your input parameters</li>
  180. <li>Build up your response output in a variable</li>
  181. <li>At the end of the code, create and return the required Plack response (either using <a href="https://metacpan.org/pod/Plack::Response">Plack::Response</a> or just creating the correct array reference).</li>
  182. </ul>
  183. <p>That’s all you need. You can drop your new program into your cgi-bin directory and it will just start working. You can immediately benefit from easier testing and later on, you can easily deploy your application in a different environment or start adding in middleware.</p>
  184. <p>As an experiment to find how easy this was, I’ve been porting some old CGI programs. Back in 2000, I wrote <a href="http://perlhacks.com/articles/cgi-programming/">three articles introducing CGI programming</a> for <em>Linux Format</em>. I’ve gone back to those articles and converted the CGI programs to PSGI (well, so far I’ve done the programs from the first two articles – I’ll finish the last one in the next day or so, I hope).</p>
  185. <p>It’s not the nicest of code. I was still using the CGI’s HTML generation functions back then. I’ve replaced those calls with <a href="https://metacpan.org/pod/HTML::Tiny">HTML::Tiny</a>. And they aren’t very complicated programs at all (they were aimed at complete beginners). But I hope they’ll be a useful guide to how easy it is to start using PSGI.</p>
  186. <p>My <a href="https://github.com/davorg/easy-psgi">programs are on Github</a>. Please let me know what you think.</p>
  187. <p>If you’re interested in modern Perl Web Development Techniques, you might find it useful to attend my <a href="http://learnperl.co.uk/upcoming/">upcoming two-day course</a> on the subject.</p>
  188. <p><strong>Update:</strong> On Twitter, Miyagawa <a href="https://twitter.com/miyagawa/status/683019308402782208">reminds</a> <a href="https://twitter.com/miyagawa/status/683019624451969024">me</a> that you can use <a href="https://metacpan.org/pod/CGI::Emulate::PSGI">CGI::Emulate::PSGI</a> or <a href="https://metacpan.org/pod/CGI::PSGI">CGI::PSGI</a> to run CGI programs under PSGI without changing them at all (or, at least, changing them a lot less than I’m suggesting here). And that’s what I’d probably do if I had a large amount of CGI code that I wanted to to move to PSGI quickly. But I still think it’s worth showing people that simple PSGI programs really aren’t any more complicated than simple CGI programs.</p>
  189. <p>The post <a rel="nofollow" href="http://perlhacks.com/2016/01/easy-psgi/">Easy PSGI</a> appeared first on <a rel="nofollow" href="http://perlhacks.com">Perl Hacks</a>.</p>
  190. </div>
  191.    </content>
  192.    <summary type="xhtml">
  193.      <div xmlns="http://www.w3.org/1999/xhtml"><p>When I write replies to questions on StackOverflow and places like that recommending that people abandon CGI programs in favour of something that uses PSGI, I often get some push-back from people claiming that PSGI makes things far too complicated. I don’t believe that’s true. But I think I know why they say it. I … <a href="http://perlhacks.com/2016/01/easy-psgi/" class="more-link">Continue reading<span class="screen-reader-text"> "Easy PSGI"</span></a></p>
  194. <p>The post <a rel="nofollow" href="http://perlhacks.com/2016/01/easy-psgi/">Easy PSGI</a> appeared first on <a rel="nofollow" href="http://perlhacks.com">Perl Hacks</a>.</p>
  195. </div>
  196.    </summary>
  197.    <author>
  198.      <name>Dave Cross</name>
  199.    </author>
  200.    <id>http://perlhacks.com/?p=1249</id>
  201.    <published>2016-01-01T17:21:43Z</published>
  202.    <updated>2016-01-01T17:21:43Z</updated>
  203.    <category term="Programming"/>
  204.    <category term="cgi"/>
  205.    <category term="psgi"/>
  206.    <category term="web"/>
  207.  </entry>
  208.  <entry>
  209.    <title>perl hacks: London Perl Workshop Review</title>
  210.    <link rel="alternate" href="http://perlhacks.com/2015/12/london-perl-workshop-review-2/" type="text/html"/>
  211.    <content type="xhtml">
  212.      <div xmlns="http://www.w3.org/1999/xhtml"><p><a href="https://twitter.com/shadowcat_mdk/status/675612296794755072">(Photo by Mark Keating)</a></p>
  213. <p>Last Saturday was the annual London Perl Workshop. And, as always, it was a great opportunity to soak up the generosity, good humour and all-round-awesomeness of the European Perl community. I say “European” as the LPW doesn’t just get visitors from London or the UK. There are many people who attend regularly from all over Europe. And, actually, from further afield – there are usually two or three Americans there.</p>
  214. <p>I arrived at about twenty to nine, which gave me just enough time to register and say hello to a couple of people before heading to the main room for Mark Keating’s welcome. Mark hinted that with next year’s workshop being the tenth that he will have organised, he is starting to wonder if it’s time for someone else to take over. More on that later.</p>
  215. <p>I then had a quick dash back down to the basement where I was running a course on <a href="http://www.slideshare.net/davorg/modern-web-development-with-perl">Modern Web Development with Perl</a>. It seemed to go well, people seemed engaged and asked some interesting questions. Oh, and my timing was spot on to let my class out two minutes early so that they were at the front of the queue for the free cakes (courtesy of <a href="http://www.exonetric.com/">Exonetric</a>). That’s just my little trick for getting slightly higher marks in the feedback survey.</p>
  216. <p>After the coffee break I was in the smaller lecture theatre for three interesting talks – Neil Bowers on <a href="http://act.yapc.eu/lpw2015/talk/6358"><b>‎</b>Boosting community engagement with CPAN‎</a> (and, yes, I’ve finally got round to signing up for the <a href="http://cpan-prc.org/">CPAN Pull Request Challenge</a>), Smylers on <a href="http://act.yapc.eu/lpw2015/talk/6479">Code Interface Mistakes to Avoid‎</a> and Neil Bowers (again) on <a href="http://act.yapc.eu/lpw2015/talk/6354">‎Dependencies and the River of CPAN‎ </a>which was an interesting discussion on how the way you maintain a CPAN module should change as it becomes more important to more people.</p>
  217. <p>Then it was lunch, which I spent in the University cafeteria catching up with friends.</p>
  218. <p>After lunch, I saw Léon Brocard on <a href="http://act.yapc.eu/lpw2015/talk/6474">Making your website seem faster<b>‎</b></a>, followed by Steve’s <a href="http://act.yapc.eu/lpw2015/talk/6489">Man Publishing Pint<b>‎</b></a>, which turned out to be about publishing ebooks to Amazon easily – something which I’ve been very interested in recently.</p>
  219. <p>The schedule was in a bit of a state of flux, so I missed Andrew Solomon’s talk on <a href="http://act.yapc.eu/lpw2015/talk/6475">How to grow a Perl team‎</a> and instead saw Steve Mynott talking about <a href="http://act.yapc.eu/lpw2015/talk/6470">Perl 6 Grammars<b>‎</b></a>. Following that, I gave my talk on <a href="http://www.slideshare.net/davorg/conference-driven-publishing-56093858">Conference Driven Publishing</a> (which is part apology for not writing the book I promised to write at the last LPW and part attempt to get more people writing and publishing ebooks about Perl).</p>
  220. <p>Then there was another coffee break which I spent getting all the latest gossip from some former colleagues. We got so caught up in it that I was slightly late for Theo van Hoesel’s talk <a href="http://act.yapc.eu/lpw2015/talk/6469">Dancer2 REST assured<b>‎</b></a>. I like Theo’s ideas but (as I’ve told him face to face) I would like to see a far simpler interface.</p>
  221. <p>Next up was the <a href="http://act.yapc.eu/lpw2015/talk/6481">keynote</a>. Liz Mattijsen stood in for Jonathan Worthington (who had to cancel at the last minute) and she explained the history of her involvement in Perl and how she was drawn to working on Perl 6. She finished with a brief overview of some interesting Perl 6 features.</p>
  222. <p>Then there were the lightning talks which were their usual mixture of useful, thought-provoking and insane.</p>
  223. <p>Mark Keating closed the conference by thanking everyone for their work, their sponsorship and their attendance. He returned to the theme of perhaps passing on the organisation of the workshop to someone new. No-one, I think, can fail to be incredibly grateful for the effort that Mark has put into organising the last nine workshops and it makes complete sense to me that he can’t maintain that level of effort forever. So it makes sense to start looking for someone else to take over organising the workshop in the future. And, given the complexity of the task, it would be sensible if that person got involved as soon as possible so that we could have a smooth transition during the organisation of next year’s event.</p>
  224. <p>If you’re interested in becoming a major hero to the European Perl community, then please <a href="https://twitter.com/shadowcat_mdk">get in touch with Mark</a>.</p>
  225. <p>There was no planned post-workshop event this year. So we broke up into smaller groups and probably colonised most of central London. Personally, I gathered a few friends and wandered off to <a href="http://newworldlondon.com/">my favourite restaurant in Chinatown</a>.</p>
  226. <p>I can only repeat what Mark said as he closed the workshop and give my thanks to all of the organisers, volunteers, speakers, sponsors and attendees. There’s little doubt in my mind that the LPW is, year after year, one of the best grass-roots-organised events in the European geek calendar. And this year’s was as good as any.</p>
  227. <p>The post <a rel="nofollow" href="http://perlhacks.com/2015/12/london-perl-workshop-review-2/">London Perl Workshop Review</a> appeared first on <a rel="nofollow" href="http://perlhacks.com">Perl Hacks</a>.</p>
  228. </div>
  229.    </content>
  230.    <summary type="xhtml">
  231.      <div xmlns="http://www.w3.org/1999/xhtml"><p>(Photo by Mark Keating) Last Saturday was the annual London Perl Workshop. And, as always, it was a great opportunity to soak up the generosity, good humour and all-round-awesomeness of the European Perl community. I say “European” as the LPW doesn’t just get visitors from London or the UK. There are many people who attend … <a href="http://perlhacks.com/2015/12/london-perl-workshop-review-2/" class="more-link">Continue reading<span class="screen-reader-text"> "London Perl Workshop Review"</span></a></p>
  232. <p>The post <a rel="nofollow" href="http://perlhacks.com/2015/12/london-perl-workshop-review-2/">London Perl Workshop Review</a> appeared first on <a rel="nofollow" href="http://perlhacks.com">Perl Hacks</a>.</p>
  233. </div>
  234.    </summary>
  235.    <author>
  236.      <name>Dave Cross</name>
  237.    </author>
  238.    <id>http://perlhacks.com/?p=1185</id>
  239.    <published>2015-12-20T11:02:46Z</published>
  240.    <updated>2015-12-20T11:02:46Z</updated>
  241.    <category term="Conferences"/>
  242.    <category term="conferences"/>
  243.    <category term="london"/>
  244.    <category term="london perl workshop"/>
  245.    <category term="lpw"/>
  246.    <category term="lpw2015"/>
  247.  </entry>
  248.  <entry>
  249.    <title>perl hacks: The Long Death of CGI.pm</title>
  250.    <link rel="alternate" href="http://perlhacks.com/2015/12/long-death-cgi-pm/" type="text/html"/>
  251.    <content type="xhtml">
  252.      <div xmlns="http://www.w3.org/1999/xhtml"><p>CGI.pm has been removed from the core Perl distribution. From 5.22, it is no longer included in a standard Perl installation.</p>
  253. <p>There are good technical reasons for this. CGI is a dying technology. In 2015, there are far better ways to write web applications in Perl. We don’t want to be seen to encourage the use of a technology which no-one should be using.</p>
  254. <p>This does lead to a small problem for us though. There are plenty of web hosting providers out there who don’t have particularly strong Perl support. They will advertise that they support Perl, but that’s just because they know that Perl comes as a standard part of the operating system that they run on their servers. They won’t do anything to change their installation in any way. Neither you nor I would use a hosting company that works like that – but plenty of people do.</p>
  255. <p>The problem comes when these companies start to deploy an operating system that includes Perl 5.22. All of a sudden, those companies will stop including CGI.pm on their servers. And while we don’t want to encourage people to use CGI.pm (or, indeed, the CGI protocol itself) we need to accept that there are thousands of sites out there that have been happily using software based on CGI.pm for years and the owners of these sites will at some point change hosting providers or upgrade their service plan and end up on a server that has Perl 5.22 and doesn’t have CGI.pm. And their software will break.</p>
  256. <p>I’ve always assumed that this problem is some time in the future. As far as I can see, the only mainstream Linux distribution that currently includes Perl 5.22 is Fedora 23. And you’d need to be pretty stupid to run a web hosting business on any version of Fedora. Fedora is a cutting edge distribution with no long term support. Versions of Fedora are only supported for about a year after their release.</p>
  257. <p>So the problem is in the future, but it is coming. At some point Perl 5.22 or one of its successors will make it into Red Hat Enterprise Linux. And at that point we have a problem.</p>
  258. <p>Or so I thought. But that’s not the case. The problem is here already. Not because of Perl 5.22 (that’s still a year or two in the future for most of these web hosting companies) but because of Red Hat.</p>
  259. <p>Red Hat, like pretty much everyone, include Perl in their standard installation. If you install any Linux distribution based on Red Hat, then the out of the box installation includes an RPM called “perl”. But it’s not really what you would recognise as Perl. It’s a cut down version of Perl. They have stripped out many parts of Perl that they consider non-essential. And those parts include CGI.pm.</p>
  260. <p>This change in the way they package Perl started with RHEL 6 – which comes with Perl 5.10. And remember it’s not just RHEL that is affected. There are plenty of other distributions that use RHEL as a base – Centos, Scientific Linux, Cloud Linux and many, many more.</p>
  261. <p>So if someone uses a server running RHEL 6 or greater (or another OS that is based on RHEL 6 or greater) and the hosting company have not taken appropriate action, then that server will not have CGI.pm installed.</p>
  262. <p>What is the “appropriate action” you ask. Well it’s pretty simple. Red Hat also make another RPM available that contains the whole Perl distribution. So bringing the Perl up to scratch on a RHEL host is as simple as running:</p>
  263. <blockquote><p>yum install perl-core</p></blockquote>
  264. <p>That will work on a server running RHEL 6 (which has Perl 5.10) and RHEL 7 (which has Perl 5.16). On a future version of RHEL which includes Perl 5.22 or later, that obviously won’t work as CGI.pm won’t be part of the standard Perl installation and therefore won’t be included in “perl-core”. At that point it will still be a good idea to install “perl-core” (to get the rest of the installation that you are missing) but to get CGI.pm, you’ll need to run:</p>
  265. <blockquote><p>yum install perl-CGI</p></blockquote>
  266. <p>So this is a plea to people who are running web hosting services using Red Hat style Linux distributions. Please ensure that your servers are running a complete Perl installation by running the “yum” command above.</p>
  267. <p>All of which brings me to <a href="http://blog.schmorp.de/2015-12-15-tidbits-cgipm-a-data-point.html">this blog post</a> that Marc Lehmann wrote a couple of days ago. Marc found <a href="http://www.gamebox64.com/">a web site</a> which no longer worked because it had been moved to a new server which had a newer version of Perl – one that didn’t include CGI.pm. Marc thinks that the Perl 5 Porters have adopted a cavalier approach to backward compatibility and that the removal of CGI.pm is a good example of the problems they are causing. He therefore chose to interpret the problems this site was having as being caused by p5p’s approach to backward compatibility and the removal of CGI.pm.</p>
  268. <p>This sounded unlikely to me. As I said above, it would be surprising if any web hosting company was using 5.22 at this point. So, I did a little digging. I found that the site was hosted by BlackNight solutions and that <a href="https://www.blacknight.com/minimus-hosting.html">their web says that their servers run Perl 5.8</a>. At the same time, <a href="https://metacpan.org/author/LEEJO">Lee Johnson</a>, the current maintainer of CGI.pm, got in touch with the web site’s owner who confirmed what I had worked out was correct.</p>
  269. <p>Later yesterday I had a conversation with <a href="https://twitter.com/blacknight">@BlackNight</a> on Twitter. They told me that their hosts all ran Cloud Linux (which is based on RHEL) and that new servers were being provisioned using Cloud Linux 6 (which is based on RHEL 6).</p>
  270. <p>So it seems clear what has happened here. The site was running on an older server which was running Cloud Linux 5. That includes Perl 5.8 and predates Red Hat removing CGI.pm from the “perl” RPM. It then moved to a new host running Cloud Linux 6 which is based on RHEL 6 and doesn’t include CGI.pm in the default installation. So what the site’s owner said is true, he moved to a new host with a newer version of Perl (that new version of Perl was 5.10!) but it wasn’t the new version of Perl that caused the problems, it was the new version of the operating system or, more specifically, the change in  the way that Red Hat (and its derivatives) packaged Perl.</p>
  271. <p>Marc is right that when Perl 5.22 hits the web hosting industry we’ll lose CGI.pm from a lot a web servers. You can make your own mind up on how important that is and whether or not you share Marc’s other opinions on how p5p is steering Perl. But he’s wrong to assume that, in this instance, the problem was caused by anything that p5p have done. In this instance, the problem was caused by Red Hat’s Perl packaging policy and was compounded by a hosting company who didn’t know that upgrading their servers to Cloud Linux 6 would remove CGI.pm.</p>
  272. <p>RHEL 6 was released five years ago. I suspect it’s pretty mainstream in the web hosting industry by now. So CGI.pm will already have disappeared from a large number of web servers. I wonder why we haven’t seen a tsunami of complaints?</p>
  273. <p><strong>Update:</strong> More discussion on <a href="https://www.reddit.com/r/perl/comments/3x730u/the_long_death_of_cgipm/">Reddit</a> and <a href="https://news.ycombinator.com/item?id=10750809">Hacker News</a>.</p>
  274. <p>The post <a rel="nofollow" href="http://perlhacks.com/2015/12/long-death-cgi-pm/">The Long Death of CGI.pm</a> appeared first on <a rel="nofollow" href="http://perlhacks.com">Perl Hacks</a>.</p>
  275. </div>
  276.    </content>
  277.    <summary type="xhtml">
  278.      <div xmlns="http://www.w3.org/1999/xhtml"><p>CGI.pm has been removed from the core Perl distribution. From 5.22, it is no longer included in a standard Perl installation. There are good technical reasons for this. CGI is a dying technology. In 2015, there are far better ways to write web applications in Perl. We don’t want to be seen to encourage the … <a href="http://perlhacks.com/2015/12/long-death-cgi-pm/" class="more-link">Continue reading<span class="screen-reader-text"> "The Long Death of CGI.pm"</span></a></p>
  279. <p>The post <a rel="nofollow" href="http://perlhacks.com/2015/12/long-death-cgi-pm/">The Long Death of CGI.pm</a> appeared first on <a rel="nofollow" href="http://perlhacks.com">Perl Hacks</a>.</p>
  280. </div>
  281.    </summary>
  282.    <author>
  283.      <name>Dave Cross</name>
  284.    </author>
  285.    <id>http://perlhacks.com/?p=1174</id>
  286.    <published>2015-12-17T09:39:39Z</published>
  287.    <updated>2015-12-17T09:39:39Z</updated>
  288.    <category term="Packaging"/>
  289.    <category term="cgi"/>
  290.    <category term="packaging"/>
  291.    <category term="red hat"/>
  292.    <category term="web hosting"/>
  293.  </entry>
  294.  <entry>
  295. <id>tag:search.cpan.org,2015-12-15:DAVECROSS:WWW-Shorten-3.08</id>
  296.  
  297. <link rel="alternate" type="text/html" href="http://search.cpan.org/~davecross/WWW-Shorten-3.08/"/>
  298. <updated>2015-12-15T13:57:43Z</updated>
  299. <author>
  300. <name>Dave Cross</name>
  301. <uri>http://search.cpan.org/~davecross/</uri>
  302. </author>
  303. <content>
  304. Interface to URL shortening sites.
  305. </content>
  306. <title>cpan: WWW-Shorten-3.08</title></entry>
  307.  <entry>
  308. <id>tag:search.cpan.org,2015-12-14:DAVECROSS:XML-Feed-0.53</id>
  309.  
  310. <link rel="alternate" type="text/html" href="http://search.cpan.org/~davecross/XML-Feed-0.53/"/>
  311. <updated>2015-12-14T13:21:27Z</updated>
  312. <author>
  313. <name>Dave Cross</name>
  314. <uri>http://search.cpan.org/~davecross/</uri>
  315. </author>
  316. <content>
  317. XML Syndication Feed Support
  318. </content>
  319. <title>cpan: XML-Feed-0.53</title></entry>
  320.  <entry>
  321.    <title>perl hacks: LPW Slides</title>
  322.    <link rel="alternate" href="http://perlhacks.com/2015/12/lpw-slides/" type="text/html"/>
  323.    <content type="html">&lt;p&gt;A more detailed write-up of the LPW will follow in the next few days. But in the meantime, here are the slides to the three talks I gave.&lt;/p&gt;
  324. &lt;p&gt;&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/8wqpgm4HDPwHbO" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt;
  325. &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="https://www.slideshare.net/davorg/modern-web-development-with-perl" title="Modern Web Development with Perl" target="_blank"&gt;Modern Web Development with Perl&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/davorg" target="_blank"&gt;Dave Cross&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
  326. &lt;p&gt;&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/ZctDIhBVIvWFm" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt;
  327. &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="https://www.slideshare.net/davorg/conference-driven-publishing-56093858" title="Conference Driven Publishing" target="_blank"&gt;Conference Driven Publishing&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/davorg" target="_blank"&gt;Dave Cross&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
  328. &lt;p&gt;&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/BhcTUsO2bP5kP6" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt;
  329. &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="https://www.slideshare.net/davorg/improving-dev-assistant" title="Improving Dev Assistant" target="_blank"&gt;Improving Dev Assistant&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/davorg" target="_blank"&gt;Dave Cross&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
  330. &lt;p&gt; &lt;/p&gt;
  331. &lt;p&gt; &lt;/p&gt;
  332. &lt;p&gt;The post &lt;a rel="nofollow" href="http://perlhacks.com/2015/12/lpw-slides/"&gt;LPW Slides&lt;/a&gt; appeared first on &lt;a rel="nofollow" href="http://perlhacks.com"&gt;Perl Hacks&lt;/a&gt;.&lt;/p&gt;
  333. </content>
  334.    <summary type="xhtml">
  335.      <div xmlns="http://www.w3.org/1999/xhtml"><p>A more detailed write-up of the LPW will follow in the next few days. But in the meantime, here are the slides to the three talks I gave. Modern Web Development with Perl from Dave Cross Conference Driven Publishing from Dave Cross Improving Dev Assistant from Dave Cross    </p>
  336. <p>The post <a rel="nofollow" href="http://perlhacks.com/2015/12/lpw-slides/">LPW Slides</a> appeared first on <a rel="nofollow" href="http://perlhacks.com">Perl Hacks</a>.</p>
  337. </div>
  338.    </summary>
  339.    <author>
  340.      <name>Dave Cross</name>
  341.    </author>
  342.    <id>http://perlhacks.com/?p=1169</id>
  343.    <published>2015-12-13T13:06:13Z</published>
  344.    <updated>2015-12-13T13:06:13Z</updated>
  345.    <category term="Conferences"/>
  346.    <category term="devassistant"/>
  347.    <category term="ebooks"/>
  348.    <category term="lpw2015"/>
  349.    <category term="web developm"/>
  350.  </entry>
  351.  <entry>
  352.    <title>slideshare: Modern Web Development with Perl</title>
  353.    <link rel="alternate" href="http://www.slideshare.net/davorg/modern-web-development-with-perl" type="text/html"/>
  354.    <content type="html">
  355.        &lt;img src="//cdn.slidesharecdn.com/ss_thumbnails/web-copy-151213095749-thumbnail-2.jpg?cb=1450000716" alt ="" style="border:1px solid #C3E6D8;float:right;" /&gt;&lt;br&gt; The training course I ran at the 2015 London Perl Workshop
  356.      </content>
  357.    <summary type="html">
  358.        &lt;img src="//cdn.slidesharecdn.com/ss_thumbnails/web-copy-151213095749-thumbnail-2.jpg?cb=1450000716" alt ="" style="border:1px solid #C3E6D8;float:right;" /&gt;&lt;br&gt; The training course I ran at the 2015 London Perl Workshop
  359.      </summary>
  360.    <author>
  361.      <name>davorg@slideshare.net(davorg)</name>
  362.    </author>
  363.    <id>http://www.slideshare.net/davorg/modern-web-development-with-perl</id>
  364.    <published>2015-12-13T09:57:49Z</published>
  365.    <updated>2015-12-13T09:57:49Z</updated>
  366.  </entry>
  367.  <entry>
  368.    <title>slideshare: Improving Dev Assistant</title>
  369.    <link rel="alternate" href="http://www.slideshare.net/davorg/improving-dev-assistant" type="text/html"/>
  370.    <content type="html">
  371.        &lt;img src="//cdn.slidesharecdn.com/ss_thumbnails/dev-ass-151213095543-thumbnail-2.jpg?cb=1450000587" alt ="" style="border:1px solid #C3E6D8;float:right;" /&gt;&lt;br&gt; My lightning talk from the 2015 London Perl Workshop
  372.      </content>
  373.    <summary type="html">
  374.        &lt;img src="//cdn.slidesharecdn.com/ss_thumbnails/dev-ass-151213095543-thumbnail-2.jpg?cb=1450000587" alt ="" style="border:1px solid #C3E6D8;float:right;" /&gt;&lt;br&gt; My lightning talk from the 2015 London Perl Workshop
  375.      </summary>
  376.    <author>
  377.      <name>davorg@slideshare.net(davorg)</name>
  378.    </author>
  379.    <id>http://www.slideshare.net/davorg/improving-dev-assistant</id>
  380.    <published>2015-12-13T09:55:42Z</published>
  381.    <updated>2015-12-13T09:55:42Z</updated>
  382.  </entry>
  383.  <entry>
  384.    <title>slideshare: Conference Driven Publishing</title>
  385.    <link rel="alternate" href="http://www.slideshare.net/davorg/conference-driven-publishing-56093858" type="text/html"/>
  386.    <content type="html">
  387.        &lt;img src="//cdn.slidesharecdn.com/ss_thumbnails/conference-driven-publishing-151213095417-thumbnail-2.jpg?cb=1450000515" alt ="" style="border:1px solid #C3E6D8;float:right;" /&gt;&lt;br&gt; My talk from the 2015 London Perl Workshop
  388.      </content>
  389.    <summary type="html">
  390.        &lt;img src="//cdn.slidesharecdn.com/ss_thumbnails/conference-driven-publishing-151213095417-thumbnail-2.jpg?cb=1450000515" alt ="" style="border:1px solid #C3E6D8;float:right;" /&gt;&lt;br&gt; My talk from the 2015 London Perl Workshop
  391.      </summary>
  392.    <author>
  393.      <name>davorg@slideshare.net(davorg)</name>
  394.    </author>
  395.    <id>http://www.slideshare.net/davorg/conference-driven-publishing-56093858</id>
  396.    <published>2015-12-13T09:54:17Z</published>
  397.    <updated>2015-12-13T09:54:17Z</updated>
  398.  </entry>
  399.  <entry>
  400.    <title>davblog: Doctor Who Festival</title>
  401.    <link rel="alternate" href="http://feedproxy.google.com/~r/realdavblog/~3/QOQpZjkG-FQ/doctor-who-festival.html" type="text/html"/>
  402.    <content type="xhtml">
  403.      <div xmlns="http://www.w3.org/1999/xhtml"><p>In 2013, to celebrate the 50th anniversary of <em>Doctor Who</em>, the BBC put on <a href="http://www.doctorwho.tv/events/doctor-who-celebration/">a big celebration</a> at the Excel centre in London’s Docklands. They must have thought that it went well as this year they decided to do it all over again at the <a href="http://www.doctorwho.tv/events/doctor-who-festival/">Doctor Who Festival</a> which took place last weekend. Being the biggest <em>Doctor Who</em> fan I know, I was at both events and I thought it might be interesting to compare them.</p>
  404. <p>Each event ran over three days (Friday to Sunday). I visited both events on the Sunday on the basis that there would be one more episode of the show to talk about. This was particularly important in 2013 when the 50th anniversary special was broadcast on the Saturday night.</p>
  405. <h2><strong>Price</strong></h2>
  406. <p>Let’s start with the basics. This years event was more expensive than the 2013 one. And the price increases were both large and seemingly random. Here’s a table comparing the prices.</p>
  407. <table dir="ltr" border="1" cellspacing="0" cellpadding="0">
  408. <colgroup>
  409. <col width="100"/>
  410. <col width="100"/>
  411. <col width="100"/>
  412. <col width="100"/>
  413. <col width="100"/>
  414. <col width="100"/>
  415. <col width="100"/></colgroup>
  416. <tbody>
  417. <tr>
  418. <td/>
  419. <td colspan="3">Standard</td>
  420. <td colspan="3">Tardis</td>
  421. </tr>
  422. <tr>
  423. <td/>
  424. <td>Adult</td>
  425. <td>Child</td>
  426. <td>Family</td>
  427. <td>Adult</td>
  428. <td>Child</td>
  429. <td>Family</td>
  430. </tr>
  431. <tr>
  432. <td data-sheets-value="[null,3,null,2013]">2013</td>
  433. <td data-sheets-value="[null,3,null,45]" data-sheets-numberformat="[null,4,">£45.00</td>
  434. <td data-sheets-value="[null,3,null,20]" data-sheets-numberformat="[null,4,">£20.00</td>
  435. <td data-sheets-value="[null,3,null,104]" data-sheets-numberformat="[null,4,">£104.00</td>
  436. <td data-sheets-value="[null,3,null,95.5]" data-sheets-numberformat="[null,4,">£95.50</td>
  437. <td data-sheets-value="[null,3,null,44.25]" data-sheets-numberformat="[null,4,">£44.25</td>
  438. <td data-sheets-value="[null,3,null,218]" data-sheets-numberformat="[null,4,">£218.00</td>
  439. </tr>
  440. <tr>
  441. <td data-sheets-value="[null,3,null,2015]">2015</td>
  442. <td data-sheets-value="[null,3,null,68]" data-sheets-numberformat="[null,4,">£68.00</td>
  443. <td data-sheets-value="[null,3,null,32.35]" data-sheets-numberformat="[null,4,">£32.35</td>
  444. <td data-sheets-value="[null,3,null,171]" data-sheets-numberformat="[null,4,">£171.00</td>
  445. <td data-sheets-value="[null,3,null,116]" data-sheets-numberformat="[null,4,">£116.00</td>
  446. <td data-sheets-value="[null,3,null,52.75]" data-sheets-numberformat="[null,4,">£52.75</td>
  447. <td data-sheets-value="[null,3,null,293]" data-sheets-numberformat="[null,4,">£293.00</td>
  448. </tr>
  449. <tr>
  450. <td data-sheets-value="[null,2,">Increase</td>
  451. <td data-sheets-value="[null,3,null,0.5111111111111111]" data-sheets-numberformat="[null,3,">51.11%</td>
  452. <td data-sheets-value="[null,3,null,0.6175]" data-sheets-numberformat="[null,3,">61.75%</td>
  453. <td data-sheets-value="[null,3,null,0.6442307692307693]" data-sheets-numberformat="[null,3,">64.42%</td>
  454. <td data-sheets-value="[null,3,null,0.21465968586387435]" data-sheets-numberformat="[null,3,">21.47%</td>
  455. <td data-sheets-value="[null,3,null,0.192090395480226]" data-sheets-numberformat="[null,3,">19.21%</td>
  456. <td data-sheets-value="[null,3,null,0.3440366972477064]" data-sheets-numberformat="[null,3,">34.40%</td>
  457. </tr>
  458. </tbody>
  459. </table>
  460. <p>You’ll see that some prices “only” went up by about 20% while others increased by an eye-watering 65%. There’s obviously money to be made in these events. And, equally obviously, <em>Doctor Who</em> fans are happy to pay any price for entrance to these events. I don’t know about you, but those increases over two years where inflation has hovered around 0% scream “rip-off” to me.</p>
  461. <p>You’ll notice that I’ve quoted prices for two different types of ticket. There are standard tickets and “Tardis” tickets. Tardis tickets give you certain extras. We’ll look at those next.</p>
  462. <h2><strong>Tardis Tickets</strong></h2>
  463. <p>I’ll admit here that I went for the Tardis ticket both times. The big advantage that this ticket gives you is that in the big panels (and we’ll see later how those panels are the main part of the days) the front eight or so tickets are reserved for Tardis ticket holders. So if you have a Tardis ticket you are guaranteed to be close enough to see the people on  the stage. Without a Tardis ticket you can be at the far end of the huge hall where you might be able to make out that some people are on the stage, but you’ll be relying on the big video screens to see what is going on.</p>
  464. <p>To me, that’s the big advantage of the Tardis ticket. Does it justify paying almost double the standard ticket price? I’m not sure. But you get a couple of other advantages. You get a free goodie bag. In 2013, that contained a load of tat (postcards, stickers, a keyfob, stuff like that) that I ended up giving away. This year we got the show book (which was pretty interesting and very nearly worth the £10 they were charging for it) and a t-shirt (which was being sold on the day for £25). So the 2015 goodie bag was a massive improvement on the 2013 one.</p>
  465. <p>Tardis ticket-holders also got access to a special lounge were you could relax and partake of free tea, coffee and biscuits. In 2013 this was in a private area away from the rest of the show. This year it was a cordoned off corner of the main exhibition hall which didn’t seem like quite so much of a haven of calm.</p>
  466. <h2>Main Panels</h2>
  467. <p>The main structure of the day is made up of three big discussion panels that are held in a huge room. Each panel is run twice during the day, but when you buy your ticket you know which time you’ll be seeing each panel.</p>
  468. <p>Each panel has people who are deeply involved in the show. In 2013 we had the following panels:</p>
  469. <ul>
  470. <li>Danny Hargreaves of Real SFX talking about the special effects on the show.</li>
  471. <li>Peter Davison, Colin Baker and Sylvester McCoy talking about playing the Doctor. I think Tom Baker also came to this panel on one of the three days.</li>
  472. <li>Matt Smith, Jenna Coleman and Stephen Moffat talking about the show.</li>
  473. </ul>
  474. <p>This year we had:</p>
  475. <ul>
  476. <li>Kate Walsh of Millennium FX (who make a lot of the prosthetics for the show) talking to Mark Gatiss.</li>
  477. <li>Stephen Moffat, Toby Whithouse and Jamie Mathieson talking about writing for the show. This panel had different writers on each of the three days.</li>
  478. <li>Peter Capaldi, Jenna Coleman, Michelle Gomez, Ingrid Oliver and Stephen Moffat talking about the show. Jenna Coleman was only on this panel on Sunday.</li>
  479. </ul>
  480. <p>Both sets of panels were equally interesting. Having the former Doctors taking apart in the 50th anniversary year made a lot of sense.</p>
  481. <h2>Exhibition Hall</h2>
  482. <p>The other main part of the event was an exhibition hall where various things were taking place. I think this was disappointing this year. Here are some comparisons:</p>
  483. <p><strong>Sets from the show</strong></p>
  484. <p>As far as I can remember, in 2013 there was only the entrance to Totter’s Yard and the outside of a Tardis. This year there was Davros’ hospital room, Clara’s living room and the outside of a Tardis (although this clearly wasn’t a “real” Tardis – the font on the door sign was terrible). So there were more sets this year, but I rather questioned their description of Clara’s living room as an “iconic” set.</p>
  485. <p><strong>Merchandise</strong></p>
  486. <p>There were a lot of opportunities to buy stuff, but it seemed to me that there were rather fewer stalls there this year. Merchandise seemed to fall into two categories. There was stuff that you would have been better off buying from Amazon (DVDs, board games, books, stuff like that). And there was really expensive stuff. I really can’t justify spending £60 or £80 for incredibly intricate replicas of props from the show or £200(!) for a copy of one of the Doctor’s coats.</p>
  487. <p>There was one big exception to the “cheaper on Amazon” rule. The BBC shop had a load of classic DVDs on sale for £6 each.</p>
  488. <p>In 2013 I bought a couple of postcards. This year I managed to resist buying anything. But I appeared to be rather unusual in that – there were a lot of people carrying many large bags of stuff.</p>
  489. <p><strong>Other Stages</strong></p>
  490. <p>Both years, around the edge of the main hall there were areas where other talks and workshops were taking place. This years seemed slightly disappointing. For example, on one stage in 2013 I saw Dick Maggs giving an interesting talk about working with Delia Derbyshire to create the original theme tune. The equivalent area this year had a group of assistant directors giving a list of the people who work on set when an episode of the show is being made.</p>
  491. <p>In 2013, the centre of this room was given over to an area where many cast members from the show’s history were available for autographs and photos. This year, that’s where Clara’s living room was set up. In fact the four cast members who were in the panel I mentioned above were the only cast members who were involved in this event at all. I realise that it makes more sense for there to be lots of cast members involved in the 50th anniversary celebrations, but surely there were some other current cast members who could have turned up and met their fans.</p>
  492. <p>Also in this hall was an area where the Horror Channel (who are the current home of Classic <em>Doctor Who</em> in the UK) were showing old episodes. There was something similar in 2013, but (like the Tardis lounge) it was away from the main hall. Moving this and the Tardis lounge to the main hall made me think that they were struggling a bit to fill the space.</p>
  493. <p><strong>In Summary</strong></p>
  494. <p>This year’s event was clearly a lot more expensive than the one in 2013 and I think attendees got rather less for their money. All in all I think it was slightly disappointing.</p>
  495. <p>The big panels are clearly the centrepiece of the event and they are well worth seeing. But I think you need a Tardis ticket in order to guarantee getting a decent view. Oh, yes you can get in the ninth row without a Tardis ticket, but you’d be competing with a lot of people for those seats. You’d spend the whole day queuing to stand a chance of getting near the front.</p>
  496. <p>I don’t know what the BBC’s plans for this event are, but it’s clearly a good money-spinner for them and I’d be surprised if they didn’t do it again either next year or in 2017. And the fans don’t really seem to mind how much they pay to attend, so it’ll be interesting to see how the next one is priced.</p>
  497. <p>I think that the big panels still make the event worth attending, but there’s really not much else that I’m interested in. So I’m undecided as to whether I’d bother going again in the future.</p>
  498. <p>Were you are the event? What did you think of it? How much money did you spend in total?</p>
  499. <p>The post <a rel="nofollow" href="http://blog.dave.org.uk/2015/11/doctor-who-festival.html">Doctor Who Festival</a> appeared first on <a rel="nofollow" href="http://blog.dave.org.uk">Davblog</a>.</p>
  500. <img src="http://feeds.feedburner.com/~r/realdavblog/~4/QOQpZjkG-FQ" height="1" width="1" alt=""/></div>
  501.    </content>
  502.    <summary type="xhtml">
  503.      <div xmlns="http://www.w3.org/1999/xhtml"><p>In 2013, to celebrate the 50th anniversary of Doctor Who, the BBC put on a big celebration at the Excel centre in London’s Docklands. They must have thought that it went well as this year they decided to do it all over again at the Doctor Who Festival which took place last weekend. Being the … <a href="http://blog.dave.org.uk/2015/11/doctor-who-festival.html" class="more-link">Continue reading<span class="screen-reader-text"> "Doctor Who Festival"</span></a></p>
  504. <p>The post <a rel="nofollow" href="http://blog.dave.org.uk/2015/11/doctor-who-festival.html">Doctor Who Festival</a> appeared first on <a rel="nofollow" href="http://blog.dave.org.uk">Davblog</a>.</p>
  505. </div>
  506.    </summary>
  507.    <author>
  508.      <name>Dave Cross</name>
  509.    </author>
  510.    <id>http://blog.dave.org.uk/?p=3485</id>
  511.    <published>2015-11-22T17:16:34Z</published>
  512.    <updated>2015-11-22T17:16:34Z</updated>
  513.    <category term="media"/>
  514.    <category term="tv"/>
  515.    <category term="doctor who"/>
  516.  </entry>
  517.  <entry>
  518.    <title>davblog: Eighteen Classic Albums</title>
  519.    <link rel="alternate" href="http://feedproxy.google.com/~r/realdavblog/~3/yt5fzpsFxoY/eighteen-classic-albums.html" type="text/html"/>
  520.    <content type="html">&lt;p&gt;&lt;iframe style="width: 120px; height: 240px; float: left; margin: 0 10px 10px 0;" src="//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=GB&amp;source=ss&amp;ref=ss_til&amp;ad_type=product_link&amp;tracking_id=davblog-21&amp;marketplace=amazon&amp;region=GB&amp;placement=B017KUM88Y&amp;asins=B017KUM88Y&amp;linkId=&amp;show_border=true&amp;link_opens_in_new_window=true" width="300" height="150" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;br /&gt;
  521. &lt;/iframe&gt;A couple of months ago, I wrote a &lt;a href="http://blog.dave.org.uk/2015/08/writing-books-the-easy-bit.html"&gt;post about a process I had developed for producing ebooks&lt;/a&gt;. While dabbling in a few projects (none of which are anywhere near being finished) I established that the process worked and I was able to produce ebooks in various different formats.&lt;/p&gt;
  522. &lt;p&gt;But what I really needed was a complete book to try the process on, so that I could push it right through the pipeline so it was for sale on Amazon. I didn’t have the time to write a new book, so I looked around for some existing text that I could reuse.&lt;/p&gt;
  523. &lt;p&gt;Long-time readers might remember the record club that I was a member of back in 2012. It was a Facebook group where each week we would listen to a classic album and then discuss it with the rest of the group. I took it a little further and wrote up &lt;a href="http://blog.dave.org.uk/tag/classic-album"&gt;a blog post for each album&lt;/a&gt;. That sounded like a good set of posts to use for this project.&lt;/p&gt;
  524. &lt;p&gt;So I grabbed the posts, massaged them a bit, added a few other files and, hey presto, &lt;a href="http://www.amazon.co.uk/gp/product/B017KUM88Y/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B017KUM88Y&amp;linkCode=as2&amp;tag=davblog-21"&gt;we have a book&lt;/a&gt;. All in all it took about two or three hours of work. And a lot of that was my amateur attempts at creating a cover image. If you’re interested in the technical stuff, then you can find &lt;a href="https://github.com/davorg/albumbook/"&gt;all the input files on Github&lt;/a&gt;.&lt;/p&gt;
  525. &lt;p&gt;There has been some confusion over the title of the book. Originally, I thought there were seventeen reviews in the series. But that was because I had mis-tagged one. And, of course, you only find problems like that after you create the book and upload it to Amazon. So there are rare “first printing” versions available with only seventeen reviews and a different title. Currently the book page on Amazon is still showing the old cover. I hope that will be sorted out soon. I’ll be interesting to see how quickly the fixed version is pushed out to people who have already bought the older edition.&lt;/p&gt;
  526. &lt;p&gt;My process for creating ebooks is working well. And the next step of the process (uploading the book to Amazon) was pretty painless too. You just need to set up a &lt;a href="https://kdp.amazon.com/"&gt;Kindle Direct Publishing&lt;/a&gt; account and then upload a few files and fill in some details of the book. I’ve priced it at $2.99 (which is £1.99) as that’s the cheapest rate at which I can get 70% of the money. The only slight annoyance in the process is that once you’ve uploaded a book and given all the details, you can’t upload a new version or change any of the information (like fixing the obvious problems in the current description) until the current version has been published across all Amazon sites. And that takes hours. And, of course, as soon as you submit one version you notice something else that needs to be fixed. So you wait. And wait.&lt;/p&gt;
  527. &lt;p&gt;But I’m happy with the way it has all gone and I’ll certainly be producing more books in the future using this process.&lt;/p&gt;
  528. &lt;p&gt;Currently three people have bought copies. &lt;a href="http://www.amazon.co.uk/gp/product/B017KUM88Y/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B017KUM88Y&amp;linkCode=as2&amp;tag=davblog-21"&gt;Why not join them.&lt;/a&gt; It only costs a couple of quid. And please leave a review.&lt;/p&gt;
  529. &lt;p&gt;The post &lt;a rel="nofollow" href="http://blog.dave.org.uk/2015/11/eighteen-classic-albums.html"&gt;Eighteen Classic Albums&lt;/a&gt; appeared first on &lt;a rel="nofollow" href="http://blog.dave.org.uk"&gt;Davblog&lt;/a&gt;.&lt;/p&gt;
  530. &lt;img src="http://feeds.feedburner.com/~r/realdavblog/~4/yt5fzpsFxoY" height="1" width="1" alt=""/&gt;</content>
  531.    <summary type="xhtml">
  532.      <div xmlns="http://www.w3.org/1999/xhtml"><p>A couple of months ago, I wrote a post about a process I had developed for producing ebooks. While dabbling in a few projects (none of which are anywhere near being finished) I established that the process worked and I was able to produce ebooks in various different formats. But what I really needed was … <a href="http://blog.dave.org.uk/2015/11/eighteen-classic-albums.html" class="more-link">Continue reading<span class="screen-reader-text"> "Eighteen Classic Albums"</span></a></p>
  533. <p>The post <a rel="nofollow" href="http://blog.dave.org.uk/2015/11/eighteen-classic-albums.html">Eighteen Classic Albums</a> appeared first on <a rel="nofollow" href="http://blog.dave.org.uk">Davblog</a>.</p>
  534. </div>
  535.    </summary>
  536.    <author>
  537.      <name>Dave Cross</name>
  538.    </author>
  539.    <id>http://blog.dave.org.uk/?p=3478</id>
  540.    <published>2015-11-05T13:22:15Z</published>
  541.    <updated>2015-11-05T13:22:15Z</updated>
  542.    <category term="books"/>
  543.    <category term="amazon"/>
  544.    <category term="kindle"/>
  545.    <category term="ebook"/>
  546.    <category term="kdp"/>
  547.    <category term="eighteen classic albums"/>
  548.  </entry>
  549.  <entry>
  550.    <title>davblog: How To Travel From London To Paris</title>
  551.    <link rel="alternate" href="http://feedproxy.google.com/~r/realdavblog/~3/belzQywgCjA/how-to-travel-from-london-to-paris.html" type="text/html"/>
  552.    <content type="xhtml">
  553.      <div xmlns="http://www.w3.org/1999/xhtml"><p>Imagine that you want to travel from London to Paris. Ok, so that’s probably not too hard to imagine. But also imagine that you have absolutely no idea how to do that and neither does anyone that you know. In that situation you would probably go to Amazon and look for a book on the subject.</p>
  554. <p>Very quickly you find one called “Teach Yourself How To Travel From London To Paris In Twenty-One Days”. You look at the reviews and are impressed.</p>
  555. <blockquote><p>I had no idea how to get from London to Paris, but my family and I followed the instructions in this book. I’m writing this from the top of the Eiffel Tower – five stars.
  556. </p></blockquote>
  557. <p>And</p>
  558. <blockquote><p>I really thought it would be impossible to get from London to Paris, but this book really breaks it down and explains how it’s done – five stars.</p></blockquote>
  559. <p>There are plenty more along the same lines.</p>
  560. <p>That all looks promising, so you buy the book. Seconds later, it appears on your Kindle and you start to read.</p>
  561. <p>Section one is about getting from London to Dover. Chapter one starts by ensuring that all readers are starting from the same place in London and suggests a particular tavern in Southwark where you might meet other travellers with the same destination. Chapter two suggests a walking route that you might follow from Southwark to Canterbury. It’s written in slightly old-fashioned English and details of the second half of the route are rather sketchy.</p>
  562. <p>Chapter two contains a route to walk from Canterbury to Dover. The language has reverted to modern English and the information is very detailed. There are reviews of many places to stay on the way – many of which mention something called “Trip Advisor”.</p>
  563. <p>Section two is about crossing the channel. Chapter three talks about the best places in Dover to find the materials you are going to need to make your boat and chapter four contains detailed instructions on how to construct a simple but seaworthy vessel. The end of the chapter has lots of advice on how to judge the best weather conditions for the crossing. Chapter five is a beginner’s guide to navigating the English Channel and chapter six has a list of things that might go wrong and how to deal with them.</p>
  564. <p>Section three is about the journey from Calais to Paris. Once again there is a suggested walking route and plenty of recommendations of places to stay.</p>
  565. <p>If you follow the instructions in the book you will, eventually, get to Paris. But you’re very likely to come away thinking that it was all rather more effort than you expected it to be and that next time you’ll choose a destination that it easier to get to.</p>
  566. <p>You realise that you have misunderstood the title of the book. You thought it would take twenty-one days to learn how to make the journey, when actually it will take twenty-one days (at least!) to complete the journey. Surely there is a better way?</p>
  567. <p>And, of course, there is. Reading further in the book’s many reviews you come across the only one-star review:</p>
  568. <blockquote><p>If you follow the instructions in this book you will waste far too much time. Take your passport to St. Pancras and buy a ticket for the Eurostar. You can be in Paris in less than four hours.</p></blockquote>
  569. <p>The reviewer claims to be the travel correspondent for BBC Radio Kent. The other reviewers were all people with no knowledge of travel who just happened to come across the book in the same way that you did. Who are you going to trust?</p>
  570. <p>I exaggerate, of course, for comic effect. But reviews of technical books on Amazon are a lot like this. You can’t trust them because in most cases the reviewers are the very people who are least likely to be able to give an accurate assessment of the technical material in the book.</p>
  571. <p>When you are choosing a technical book you are looking for two things:</p>
  572. <ul>
  573. <li>You want the information in the book to be as easy to understand as possible</li>
  574. <li>You want the information in the book to be as accurate and up to date as possible</li>
  575. </ul>
  576. <p>Most people pick up a technical book because they want to learn about the subject that it covers. That means that, by definition, they are unable to judge that second point. They know how easily they understood the material in the book. They also know whether or not they managed to use that information to achieve their goals. But, as my overstretched metaphor above hopefully shows, it’s quite possible to follow terrible advice and still achieve your goals.</p>
  577. <p>I first came aware of this phenomena in the late 1990s. At the time a large amount of dynamic web pages were built using Perl and CGI. This meant that a lot of publishers saw this as a very lucrative market and dozens of books on the subject were published many of which covered the Perl equivalent of walking from London to Paris. And because people read these books and managed to get to Paris (albeit in a ridiculously roundabout manner) they thought the books were great and gave them five-star reviews. Much to the chagrin of Perl experts who were standing on the kerbside on the A2 shouting “but there’s a far easier way to do that!”</p>
  578. <p>This is still a problem today. Earlier this year I <a href="http://perlhacks.com/2015/02/penetration-testing-perl/">reviewed a book</a> about penetration testing using Perl. I have to assume that the author knew what he was doing when talking about pen testing, but his Perl code was positively Chaucerian.</p>
  579. <p>It’s not just book reviews that are affected. Any kind of technical knowledge transfer mechanism is open to the same problems. A couple of months ago I wrote a <a href="https://blog.udemy.com/learn-perl-a-tutorial-to-get-you-started/">Perl tutorial for Udemy</a>. It only covered the very basics, so they included a link to one of their other Perl courses. But having sat through the first few lessons of this course, I know that it’s really not very good. How did the people at Udemy choose which one to link to? Well it’s the one with the highest student satisfaction ratings, of course. It teaches the Perl equivalent of boat-building. A friend has <a href="https://www.udemy.com/beginner-perl-maven/">a much better Perl course</a> on Udemy, but they wouldn’t use that as it didn’t have enough positive feedback.</p>
  580. <p>Can we blame anyone for this? Well, we certainly can’t blame the reviewers. They don’t know that they are giving good reviews to bad material. I’m not even sure that we can blame the authors in many cases. It’s very likely that they don’t know how much they don’t know (obligatory link to the <a href="https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect">Dunning–Kruger effect</a>). I think that in some cases the authors must know that they are chancing their arm by putting themselves forward as an expert, but most of them probably believe that they are giving good advice (because they learned from an expert who taught them how to walk from London to Paris and so the chain goes back to the dawn of time).</p>
  581. <p>I think a lot of the blame must be placed with the publishers. They need to take more responsibility for the material they publish. If you’re publishing in a technical arena then you need to build up contacts in that technical community so that you have people you can trust who can give opinions on your books. If you’re publishing a book on travelling from London to Paris then see if you can find a travel correspondent to verify the information in it before you publish it and embarrass yourselves. In fact, get these experts involved in the process of commissioning process. If you what to publish a travel book then ask your travel correspondent friends if they know anyone who could write it. If someone approaches you with a proposal for a travel book then run the idea past a travel correspondent or two before signing the contract.</p>
  582. <p>I know that identifying genuine experts in a field can be hard. And I know that genuine experts would probably like to be compensated for any time they spend helping you, but I think it’s time and money well-spent. You will end up with better books.</p>
  583. <p>Or, perhaps some publishers don’t care about the quality of their books. If bad books can be published quickly and cheaply and people still buy them, then what business sense does it make to make the books better.</p>
  584. <p>If you take any advice away from this piece, then don’t trust reviews and ratings of technical material.</p>
  585. <p>And never try to walk from London to Paris (unless it’s for charity).</p>
  586. <p>The post <a rel="nofollow" href="http://blog.dave.org.uk/2015/10/how-to-travel-from-london-to-paris.html">How To Travel From London To Paris</a> appeared first on <a rel="nofollow" href="http://blog.dave.org.uk">Davblog</a>.</p>
  587. <img src="http://feeds.feedburner.com/~r/realdavblog/~4/belzQywgCjA" height="1" width="1" alt=""/></div>
  588.    </content>
  589.    <summary type="xhtml">
  590.      <div xmlns="http://www.w3.org/1999/xhtml"><p>Imagine that you want to travel from London to Paris. Ok, so that’s probably not too hard to imagine. But also imagine that you have absolutely no idea how to do that and neither does anyone that you know. In that situation you would probably go to Amazon and look for a book on the … <a href="http://blog.dave.org.uk/2015/10/how-to-travel-from-london-to-paris.html" class="more-link">Continue reading<span class="screen-reader-text"> "How To Travel From London To Paris"</span></a></p>
  591. <p>The post <a rel="nofollow" href="http://blog.dave.org.uk/2015/10/how-to-travel-from-london-to-paris.html">How To Travel From London To Paris</a> appeared first on <a rel="nofollow" href="http://blog.dave.org.uk">Davblog</a>.</p>
  592. </div>
  593.    </summary>
  594.    <author>
  595.      <name>Dave Cross</name>
  596.    </author>
  597.    <id>http://blog.dave.org.uk/?p=3466</id>
  598.    <published>2015-10-04T10:15:08Z</published>
  599.    <updated>2015-10-04T10:15:08Z</updated>
  600.    <category term="writing"/>
  601.    <category term="books"/>
  602.    <category term="amazon"/>
  603.    <category term="ratings"/>
  604.    <category term="reviews"/>
  605.    <category term="technical"/>
  606.    <category term="publishing"/>
  607.  </entry>
  608.  <entry>
  609.    <title>slideshare: Conference Driven Publishing</title>
  610.    <link rel="alternate" href="http://www.slideshare.net/davorg/conference-driven-publishing" type="text/html"/>
  611.    <content type="html">
  612.        &lt;img src="//cdn.slidesharecdn.com/ss_thumbnails/conference-driven-publishing-150814150345-lva1-app6891-thumbnail-2.jpg?cb=1439564729" alt ="" style="border:1px solid #C3E6D8;float:right;" /&gt;&lt;br&gt; A talk I gave at the London Perl Mongers Technical Meeting on 13th August 2015
  613.      </content>
  614.    <summary type="html">
  615.        &lt;img src="//cdn.slidesharecdn.com/ss_thumbnails/conference-driven-publishing-150814150345-lva1-app6891-thumbnail-2.jpg?cb=1439564729" alt ="" style="border:1px solid #C3E6D8;float:right;" /&gt;&lt;br&gt; A talk I gave at the London Perl Mongers Technical Meeting on 13th August 2015
  616.      </summary>
  617.    <author>
  618.      <name>davorg@slideshare.net(davorg)</name>
  619.    </author>
  620.    <id>http://www.slideshare.net/davorg/conference-driven-publishing</id>
  621.    <published>2015-08-14T15:03:45Z</published>
  622.    <updated>2015-08-14T15:03:45Z</updated>
  623.  </entry>
  624.  <entry>
  625.    <title>davblog: Writing Books (The Easy Bit)</title>
  626.    <link rel="alternate" href="http://feedproxy.google.com/~r/realdavblog/~3/_LLgSAnV5-4/writing-books-the-easy-bit.html" type="text/html"/>
  627.    <content type="xhtml">
  628.      <div xmlns="http://www.w3.org/1999/xhtml"><p>Last night I spoke at a <a href="http://london.pm.org/">London Perl Mongers</a> meeting. As part of the talk I spoke about a toolchain that I have been using for creating ebooks. In this article I’ll go into a little more detail about the process.</p>
  629. <p>Basically, we’re talking about a process that takes one or more files in some input format and (as easily as possible) turns them into one or more output formats which can be described as “ebooks”. So before we can decided which tools we need, we should decide what those various file formats should be.</p>
  630. <p>For my input format I chose <a href="http://daringfireball.net/projects/markdown/">Markdown</a>. This is a text-based format that has become popular amongst geeks over the last few years. Geeks tend to like text-based formats more than the proprietary binary formats like those produced by word processors. This is for a number of reasons. You can read them without any specialised tools. You’re not tied down to using specific tools to create them. And it’s generally easier to store them in a revision management system like <a href="https://github.com/">Github</a>.</p>
  631. <p>For my output formats, I wanted <a href="https://en.wikipedia.org/wiki/EPUB">EPUB</a> and <a href="https://en.wikipedia.org/wiki/Mobipocket">Mobipocket</a>. EPUB is the generally accepted standard for ebooks and Mobipocket is the ebook format that Amazon use. And I also wanted to produce <a href="https://en.wikipedia.org/wiki/Portable_Document_Format">PDFs</a>, just because they are easy to read on just about any platform.</p>
  632. <p>(As an aside, you’ll notice that I said nothing in that previous paragraph about <a href="https://en.wikipedia.org/wiki/Digital_rights_management">DRM</a>. That’s simply because nice people don’t do that.)</p>
  633. <p>Ok, so we know what file formats we’ll be working with. Now we need to know a) how we create the input format and b) how we convert between the various formats. Creating the Markdown files is easy enough. It’s just a text file, so any text editor would do the job (it would be interesting to find out if any word processor can be made to save text as Markdown).</p>
  634. <p>To convert our Markdown into EPUB, we’ll need a new tool. <a href="http://pandoc.org/">Pandoc</a> describes itself as “a universal document converter”. It’s not quite universal (otherwise that would be the only tool that we would need), but it is certainly great for this job. Once you have installed Pandoc, the conversion is simple:</p>
  635. <pre>pandoc -o your_book.epub title.txt your_book.md --epub-metadata=metadata.xml --toc --toc-depth=2</pre>
  636. <p>There are two extra files you need here (I’m not sure why it can’t all be in the same file, but that’s just the way it seems to be). The first (which I’ve called “title.txt”), contains two lines. The first line has the title of your book and the second has the author’s name. Each line needs to start with a “%” character. So it might look like this:</p>
  637. <pre>% Your title
  638. % Your name</pre>
  639. <p>The second file (which I’ve called “metadata.xml”) contains various pieces of information about the book. It’s (ew!) XML and looks like this:</p>
  640. <pre>&lt;metadata xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;
  641. &lt;dc:title id="main"&gt;Your Title&lt;/dc:title&gt;
  642. &lt;meta refines="#main" property="title-type"&gt;main&lt;/meta&gt;
  643. &lt;dc:language&gt;en-GB&lt;/dc:language&gt;
  644. &lt;dc:creator opf:file-as="Surname, Forename" opf:role="aut"&gt;Forename Surname&lt;/dc:creator&gt;
  645. &lt;dc:publisher&gt;Your name&lt;/dc:publisher&gt;
  646. &lt;dc:date opf:event="publication"&gt;2015-08-14&lt;/dc:date&gt;
  647. &lt;dc:rights&gt;Copyright ©2015 by Your Name&lt;/dc:rights&gt; &lt;/metadata&gt;</pre>
  648. <p>So after creating those files and running that command, you’ll have an EPUB file. Next we want to convert that to a Mobipocket file so that we can distribute our book through Amazon. Unsurprisingly, the easiest way to do that is to use a piece of software that you get from Amazon. It’s called Kindlegen and you can <a href="http://www.amazon.com/gp/feature.html?docId=1000765211">download it from their site</a>. Once it is installed, the conversion is as simple as:</p>
  649. <pre>kindlegen perlwebbook.epub</pre>
  650. <p>This will leave you with a file called “your_book.mobi” which you can upload to Amazon.</p>
  651. <p>There’s one last conversion that you might need. And that’s converting the EPUB to PDF. Pandoc will make that conversion for you. But it does it using a piece of software called LaTeX which I’ve never had much luck with. So I looked for an alternative solution and found it in <a href="http://calibre-ebook.com/">Calibre</a>. Calibre is mainly an ebook management tool, but it also converts between many ebook formats. It’s pretty famous for having a really complex user interface but, luckily for us, there’s a command line program called “ebook-convert” – which we can use.</p>
  652. <pre>ebook-convert perlwebbook.epub perlwebbook.pdf</pre>
  653. <p>And that’s it. We start with a Markdown file and end up with an ebook in three formats. Easy.</p>
  654. <p>Of course, that really is the easy part. There’s a bit that comes before (actually writing the book) and a bit that comes after (marketing the book) and they are both far harder. Last year I read a book called <em><a href="http://apethebook.com/">Author, Publisher, Entrepreneur</a></em> which covered these three steps to a very useful level of detail. Their step two is rather different to mind (they use Microsoft Word if I recall correctly) but what they had to say about the other steps was very interesting. You might find it interesting if you’re thinking of writing (and self-publishing) a book.</p>
  655. <p>I love the way that ebooks have democratised the publishing industry. Anyone can write and publish a book and make it available to everyone through <a href="http://amazon.co.uk/">the world’s largest book distribution web site</a>.</p>
  656. <p>So what are you waiting for? Get writing. If you find my toolchain interesting (or if you have any comments on it) then please let me know.</p>
  657. <p>And let me know what you’ve written.</p>
  658. <p>The post <a rel="nofollow" href="http://blog.dave.org.uk/2015/08/writing-books-the-easy-bit.html">Writing Books (The Easy Bit)</a> appeared first on <a rel="nofollow" href="http://blog.dave.org.uk">Davblog</a>.</p>
  659. <img src="http://feeds.feedburner.com/~r/realdavblog/~4/_LLgSAnV5-4" height="1" width="1" alt=""/></div>
  660.    </content>
  661.    <summary type="xhtml">
  662.      <div xmlns="http://www.w3.org/1999/xhtml"><p>Last night I spoke at a London Perl Mongers meeting. As part of the talk I spoke about a toolchain that I have been using for creating ebooks. In this article I’ll go into a little more detail about the process. Basically, we’re talking about a process that takes one or more files in some … <a href="http://blog.dave.org.uk/2015/08/writing-books-the-easy-bit.html" class="more-link">Continue reading<span class="screen-reader-text"> "Writing Books (The Easy Bit)"</span></a></p>
  663. <p>The post <a rel="nofollow" href="http://blog.dave.org.uk/2015/08/writing-books-the-easy-bit.html">Writing Books (The Easy Bit)</a> appeared first on <a rel="nofollow" href="http://blog.dave.org.uk">Davblog</a>.</p>
  664. </div>
  665.    </summary>
  666.    <author>
  667.      <name>Dave Cross</name>
  668.    </author>
  669.    <id>http://blog.dave.org.uk/?p=3446</id>
  670.    <published>2015-08-14T13:02:05Z</published>
  671.    <updated>2015-08-14T13:02:05Z</updated>
  672.    <category term="tech"/>
  673.    <category term="amazon"/>
  674.    <category term="ebook"/>
  675.    <category term="pandoc"/>
  676.    <category term="calibre"/>
  677.    <category term="kindlegen"/>
  678.  </entry>
  679.  <entry>
  680. <id>tag:search.cpan.org,2015-07-19:DAVECROSS:WWW-Shorten-OneShortLink-9.99</id>
  681.  
  682. <link rel="alternate" type="text/html" href="http://search.cpan.org/~davecross/WWW-Shorten-OneShortLink-9.99/"/>
  683. <updated>2015-07-19T15:05:11Z</updated>
  684. <author>
  685. <name>Dave Cross</name>
  686. <uri>http://search.cpan.org/~davecross/</uri>
  687. </author>
  688. <content>
  689. Perl interface to 1sl.net
  690. </content>
  691. <title>cpan: WWW-Shorten-OneShortLink-9.99</title></entry>
  692.  <entry>
  693. <id>tag:search.cpan.org,2015-07-19:DAVECROSS:WWW-Shorten-NotLong-9.99</id>
  694.  
  695. <link rel="alternate" type="text/html" href="http://search.cpan.org/~davecross/WWW-Shorten-NotLong-9.99/"/>
  696. <updated>2015-07-19T14:54:29Z</updated>
  697. <author>
  698. <name>Dave Cross</name>
  699. <uri>http://search.cpan.org/~davecross/</uri>
  700. </author>
  701. <content>
  702. Perl interface to notlong.com
  703. </content>
  704. <title>cpan: WWW-Shorten-NotLong-9.99</title></entry>
  705.  <entry>
  706. <id>tag:search.cpan.org,2015-07-18:DAVECROSS:WWW-Shorten-Shorl-1.93</id>
  707.  
  708. <link rel="alternate" type="text/html" href="http://search.cpan.org/~davecross/WWW-Shorten-Shorl-1.93/"/>
  709. <updated>2015-07-18T20:35:11Z</updated>
  710. <author>
  711. <name>Dave Cross</name>
  712. <uri>http://search.cpan.org/~davecross/</uri>
  713. </author>
  714. <content>
  715. Perl interface to shorl.com
  716. </content>
  717. <title>cpan: WWW-Shorten-Shorl-1.93</title></entry>
  718.  <entry>
  719.    <title>slideshare: TwittElection</title>
  720.    <link rel="alternate" href="http://www.slideshare.net/davorg/twittelection-49363746" type="text/html"/>
  721.    <content type="html">
  722.        &lt;img src="//cdn.slidesharecdn.com/ss_thumbnails/twittelection-150614061809-lva1-app6891-thumbnail-2.jpg?cb=1434262781" alt ="" style="border:1px solid #C3E6D8;float:right;" /&gt;&lt;br&gt; A Talk from OpenTech 2015 about a tool I wrote for monitoring parliamentary candidates on Twitter during the 2015 UK general election.
  723.      </content>
  724.    <summary type="html">
  725.        &lt;img src="//cdn.slidesharecdn.com/ss_thumbnails/twittelection-150614061809-lva1-app6891-thumbnail-2.jpg?cb=1434262781" alt ="" style="border:1px solid #C3E6D8;float:right;" /&gt;&lt;br&gt; A Talk from OpenTech 2015 about a tool I wrote for monitoring parliamentary candidates on Twitter during the 2015 UK general election.
  726.      </summary>
  727.    <author>
  728.      <name>davorg@slideshare.net(davorg)</name>
  729.    </author>
  730.    <id>http://www.slideshare.net/davorg/twittelection-49363746</id>
  731.    <published>2015-06-14T06:18:09Z</published>
  732.    <updated>2015-06-14T06:18:09Z</updated>
  733.  </entry>
  734.  <entry xmlns:flickr="urn:flickr:user" xmlns:dc="http://purl.org/dc/elements/1.1/">
  735.    
  736.    <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/davorg/16755429775/"/>
  737.    <id>tag:flickr.com,2005:/photo/16755429775</id>
  738.    <published>2015-03-08T17:51:15Z</published>
  739.    <updated>2015-03-08T17:51:15Z</updated>
  740.    <flickr:date_taken>2014-12-31T12:31:53-08:00</flickr:date_taken>
  741.    <dc:date.Taken>2014-12-31T12:31:53-08:00</dc:date.Taken>
  742.    <content type="html"> &lt;p&gt;&lt;a href="http://www.flickr.com/people/davorg/"&gt;Dave Cross&lt;/a&gt; posted a photo:&lt;/p&gt;
  743. &lt;p&gt;&lt;a href="http://www.flickr.com/photos/davorg/16755429775/" title="Antsiranana"&gt;&lt;img src="http://farm8.staticflickr.com/7653/16755429775_6d7866fa82_m.jpg" width="240" height="159" alt="Antsiranana" /&gt;&lt;/a&gt;&lt;/p&gt;
  744.  
  745. </content>
  746.    <author>
  747.      <name>Dave Cross</name>
  748.      <uri>http://www.flickr.com/people/davorg/</uri>
  749.      <flickr:nsid>39021241@N00</flickr:nsid>
  750.      <flickr:buddyicon>http://farm4.staticflickr.com/3678/buddyicons/39021241@N00.jpg?1372610206#39021241@N00</flickr:buddyicon>
  751.    </author>
  752.    <link rel="license" type="text/html" href="https://creativecommons.org/licenses/by-nc-sa/2.0/deed.en"/>
  753.    <link rel="enclosure" type="image/jpeg" href="http://farm8.staticflickr.com/7653/16755429775_6d7866fa82_b.jpg"/>
  754.    <category term="madagascar" scheme="http://www.flickr.com/photos/tags/"/>
  755.    <category term="antisiranana" scheme="http://www.flickr.com/photos/tags/"/>
  756.    <displaycategories>
  757.            </displaycategories>
  758.    <title>flickr: Antsiranana</title></entry>
  759.  <entry xmlns:flickr="urn:flickr:user" xmlns:dc="http://purl.org/dc/elements/1.1/">
  760.    
  761.    <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/davorg/16133117834/"/>
  762.    <id>tag:flickr.com,2005:/photo/16133117834</id>
  763.    <published>2015-03-08T17:50:46Z</published>
  764.    <updated>2015-03-08T17:50:46Z</updated>
  765.    <flickr:date_taken>2014-12-31T12:31:47-08:00</flickr:date_taken>
  766.    <dc:date.Taken>2014-12-31T12:31:47-08:00</dc:date.Taken>
  767.    <content type="html"> &lt;p&gt;&lt;a href="http://www.flickr.com/people/davorg/"&gt;Dave Cross&lt;/a&gt; posted a photo:&lt;/p&gt;
  768. &lt;p&gt;&lt;a href="http://www.flickr.com/photos/davorg/16133117834/" title="Antisiranana"&gt;&lt;img src="http://farm9.staticflickr.com/8728/16133117834_64dba44267_m.jpg" width="240" height="159" alt="Antisiranana" /&gt;&lt;/a&gt;&lt;/p&gt;
  769.  
  770. </content>
  771.    <author>
  772.      <name>Dave Cross</name>
  773.      <uri>http://www.flickr.com/people/davorg/</uri>
  774.      <flickr:nsid>39021241@N00</flickr:nsid>
  775.      <flickr:buddyicon>http://farm4.staticflickr.com/3678/buddyicons/39021241@N00.jpg?1372610206#39021241@N00</flickr:buddyicon>
  776.    </author>
  777.    <link rel="license" type="text/html" href="https://creativecommons.org/licenses/by-nc-sa/2.0/deed.en"/>
  778.    <link rel="enclosure" type="image/jpeg" href="http://farm9.staticflickr.com/8728/16133117834_64dba44267_b.jpg"/>
  779.    <category term="madagascar" scheme="http://www.flickr.com/photos/tags/"/>
  780.    <category term="antisiranana" scheme="http://www.flickr.com/photos/tags/"/>
  781.    <displaycategories>
  782.            </displaycategories>
  783.    <title>flickr: Antisiranana</title></entry>
  784.  <entry xmlns:flickr="urn:flickr:user" xmlns:dc="http://purl.org/dc/elements/1.1/">
  785.    
  786.    <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/davorg/16568031850/"/>
  787.    <id>tag:flickr.com,2005:/photo/16568031850</id>
  788.    <published>2015-03-08T17:50:16Z</published>
  789.    <updated>2015-03-08T17:50:16Z</updated>
  790.    <flickr:date_taken>2014-12-31T11:14:01-08:00</flickr:date_taken>
  791.    <dc:date.Taken>2014-12-31T11:14:01-08:00</dc:date.Taken>
  792.    <content type="html"> &lt;p&gt;&lt;a href="http://www.flickr.com/people/davorg/"&gt;Dave Cross&lt;/a&gt; posted a photo:&lt;/p&gt;
  793. &lt;p&gt;&lt;a href="http://www.flickr.com/photos/davorg/16568031850/" title="Stray Dog in Antisiranana"&gt;&lt;img src="http://farm9.staticflickr.com/8577/16568031850_0f7648e58d_m.jpg" width="240" height="159" alt="Stray Dog in Antisiranana" /&gt;&lt;/a&gt;&lt;/p&gt;
  794.  
  795. </content>
  796.    <author>
  797.      <name>Dave Cross</name>
  798.      <uri>http://www.flickr.com/people/davorg/</uri>
  799.      <flickr:nsid>39021241@N00</flickr:nsid>
  800.      <flickr:buddyicon>http://farm4.staticflickr.com/3678/buddyicons/39021241@N00.jpg?1372610206#39021241@N00</flickr:buddyicon>
  801.    </author>
  802.    <link rel="license" type="text/html" href="https://creativecommons.org/licenses/by-nc-sa/2.0/deed.en"/>
  803.    <link rel="enclosure" type="image/jpeg" href="http://farm9.staticflickr.com/8577/16568031850_0f7648e58d_b.jpg"/>
  804.    <category term="madagascar" scheme="http://www.flickr.com/photos/tags/"/>
  805.    <category term="antisiranana" scheme="http://www.flickr.com/photos/tags/"/>
  806.    <displaycategories>
  807.            </displaycategories>
  808.    <title>flickr: Stray Dog in Antisiranana</title></entry>
  809.  <entry xmlns:flickr="urn:flickr:user" xmlns:dc="http://purl.org/dc/elements/1.1/">
  810.    
  811.    <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/davorg/16568026910/"/>
  812.    <id>tag:flickr.com,2005:/photo/16568026910</id>
  813.    <published>2015-03-08T17:49:46Z</published>
  814.    <updated>2015-03-08T17:49:46Z</updated>
  815.    <flickr:date_taken>2014-12-31T11:06:23-08:00</flickr:date_taken>
  816.    <dc:date.Taken>2014-12-31T11:06:23-08:00</dc:date.Taken>
  817.    <content type="html"> &lt;p&gt;&lt;a href="http://www.flickr.com/people/davorg/"&gt;Dave Cross&lt;/a&gt; posted a photo:&lt;/p&gt;
  818. &lt;p&gt;&lt;a href="http://www.flickr.com/photos/davorg/16568026910/" title="Antisiranana"&gt;&lt;img src="http://farm9.staticflickr.com/8702/16568026910_3958ea06c2_m.jpg" width="240" height="159" alt="Antisiranana" /&gt;&lt;/a&gt;&lt;/p&gt;
  819.  
  820. </content>
  821.    <author>
  822.      <name>Dave Cross</name>
  823.      <uri>http://www.flickr.com/people/davorg/</uri>
  824.      <flickr:nsid>39021241@N00</flickr:nsid>
  825.      <flickr:buddyicon>http://farm4.staticflickr.com/3678/buddyicons/39021241@N00.jpg?1372610206#39021241@N00</flickr:buddyicon>
  826.    </author>
  827.    <link rel="license" type="text/html" href="https://creativecommons.org/licenses/by-nc-sa/2.0/deed.en"/>
  828.    <link rel="enclosure" type="image/jpeg" href="http://farm9.staticflickr.com/8702/16568026910_3958ea06c2_b.jpg"/>
  829.    <category term="madagascar" scheme="http://www.flickr.com/photos/tags/"/>
  830.    <category term="antisiranana" scheme="http://www.flickr.com/photos/tags/"/>
  831.    <displaycategories>
  832.            </displaycategories>
  833.    <title>flickr: Antisiranana</title></entry>
  834. </feed>
  835.  
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda