Toby Inkster
  • Open Source
  • Blog
  • Now
  • Contact
Home » Blog » Archive » X-Blog-Name

X-Blog-Name

09/01/2008

By Toby Inkster

Share this article

This is a very old article. It has been imported from older blogging software, and the formatting, images, etc may have been lost. Some links may be broken. Some of the information may no longer be correct. Opinions expressed in this article may no longer be held.

OK, so the Trackback specification includes the ability for a pinging page to specify its article title and blog name when it sends a trackback ping. However, these fields are optional. When not present, typically the recipient of the ping will then make an HTTP request back to the pinger to determine the article title from the page’s element. But there is no standardised way of determining the blog name — or more generically, because Trackback can be used by sites other than blogs — the name of the “collection of web pages”. </p> <p>The following informal specification suggests a method of determining the name of the collection of documents to which a given HTML document belongs. It also provides a clear way for you to mark your own HTML documents as being part of a particular collection.</p> <p>Determining the Collection for a Given Document</p> <p>Attempt to find the name of the collection in the following places. The first successful result should be considered the name of the collection.</p> <p>Check for the presence of an HTTP Header ‘X-Blog-Name’. If this exists, the value of the header is the name of the collection.<br /> Check for the presence of an HTTP Header ‘Link’, formatted to the specification for HTTP link headers, with a rel value of “blog-name” and with a non-empty “title” value. The name of the collection is the “title” value. Additionally the URL of the main page of the collection can be found in the “href” value.<br /> Check for the presence of an HTML <meta> element with the value of the “name” element of ‘Blog-Name’. If found, the name of the collection can be found in the “content” attribute.<br /> Treating HTML <meta> elements with an “http-equiv” attribute as being equivalent to real HTTP headers, repeat steps #1 and #2.<br /> Check for the presence of an HTML <link> element with a “rel” value of “blog-name” and if found, use the same semantics as #2.<br /> Repeat steps #1 to #5 looking for ‘index’ instead of ‘blog-name’. ‘x-index’ SHOULD NOT be accepted.<br /> Repeat steps #1 to #5 looking for ‘top’ instead of ‘blog-name’. ‘x-top’ SHOULD NOT be accepted.</p> <p>String comparisons for HTTP header names, HTML <meta> name and http-equiv values and Link rel values MUST be case-insensitive.</p> <p>Marking the Collection on your Documents</p> <p>Mark your document with the collection in a manner that can be found using the algorithm described above. Multiple methods MAY be employed, but in this case, note that only the first matching collection name will be used.</p> <p>It is advised that producers take advantage of the HTTP header methods to reduce bandwidth and parsing requirements on the part of the client.</p> <p>Although implementations are required to make string comparisons case-insensitive, producers SHOULD use the case specified in this document for output.</p> </div> <footer> </footer> <nav class="next-prev"> <span class="link">« <a href="https://toby.ink/blog/2008/01/08/recipes/" rel="prev">Recipes</a></span><span class="link"><a href="https://toby.ink/blog/2008/01/09/time-out/" rel="next">The Dan Brown Generator</a> »</span> </nav> <!-- You can start editing here. --> <!-- If comments are closed. --> <p class="nocomments">Comments are closed.</p> </article> </main> <aside class="sidebar col-md-4"> <section class="widget-odd widget-first widget-1 filler-widget widget search-2 widget_search"><form role="search" method="get" class="search-form" action="https://toby.ink/"> <label> <span class="sr-only"> Search for: </span> <input type="search" placeholder="Search …" value="" name="s" > </label> <button>Search</button> </form> </section><section class="widget-odd widget-3 filler-widget widget jal_widget-2 widget_archive widget_jaw_widget"><h3>Blog Archives</h3><ul class="jaw_widget preload" data-fx_in="slideDown" data-ex_sym="►" data-con_sym="▼" data-only_sym_link="0" data-accordion="0" ><li ><a class="jaw_year jaw_symbol_wrapper" title="2023" href="https://toby.ink/blog/2023/"><span class="jaw_symbol">▼</span> <span class="year">2023 (10)</span></a><ul class="jaw_months jal-slide-down" ><li class="expanded"><a class="jaw_month" href="https://toby.ink/blog/2023/04/" title="April"><span class="month">April (2)</span></a></li> <li class="expanded"><a class="jaw_month" href="https://toby.ink/blog/2023/03/" title="March"><span class="month">March (2)</span></a></li> <li class="expanded"><a class="jaw_month" href="https://toby.ink/blog/2023/02/" title="February"><span class="month">February (3)</span></a></li> <li class="expanded"><a class="jaw_month" href="https://toby.ink/blog/2023/01/" title="January"><span class="month">January (3)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2022" href="https://toby.ink/blog/2022/"><span class="jaw_symbol">►</span> <span class="year">2022 (4)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2022/12/" title="December"><span class="month">December (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2022/09/" title="September"><span class="month">September (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2022/08/" title="August"><span class="month">August (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2022/07/" title="July"><span class="month">July (1)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2021" href="https://toby.ink/blog/2021/"><span class="jaw_symbol">►</span> <span class="year">2021 (7)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2021/07/" title="July"><span class="month">July (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2021/05/" title="May"><span class="month">May (4)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2021/01/" title="January"><span class="month">January (2)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2020" href="https://toby.ink/blog/2020/"><span class="jaw_symbol">►</span> <span class="year">2020 (22)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2020/11/" title="November"><span class="month">November (3)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2020/10/" title="October"><span class="month">October (2)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2020/09/" title="September"><span class="month">September (3)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2020/08/" title="August"><span class="month">August (2)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2020/06/" title="June"><span class="month">June (3)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2020/05/" title="May"><span class="month">May (5)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2020/02/" title="February"><span class="month">February (3)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2020/01/" title="January"><span class="month">January (1)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2019" href="https://toby.ink/blog/2019/"><span class="jaw_symbol">►</span> <span class="year">2019 (5)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2019/12/" title="December"><span class="month">December (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2019/11/" title="November"><span class="month">November (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2019/10/" title="October"><span class="month">October (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2019/01/" title="January"><span class="month">January (2)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2018" href="https://toby.ink/blog/2018/"><span class="jaw_symbol">►</span> <span class="year">2018 (6)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2018/08/" title="August"><span class="month">August (4)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2018/07/" title="July"><span class="month">July (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2018/06/" title="June"><span class="month">June (1)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2017" href="https://toby.ink/blog/2017/"><span class="jaw_symbol">►</span> <span class="year">2017 (4)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2017/06/" title="June"><span class="month">June (2)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2017/05/" title="May"><span class="month">May (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2017/02/" title="February"><span class="month">February (1)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2014" href="https://toby.ink/blog/2014/"><span class="jaw_symbol">►</span> <span class="year">2014 (50)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2014/12/" title="December"><span class="month">December (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2014/11/" title="November"><span class="month">November (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2014/10/" title="October"><span class="month">October (3)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2014/09/" title="September"><span class="month">September (4)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2014/08/" title="August"><span class="month">August (11)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2014/07/" title="July"><span class="month">July (5)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2014/06/" title="June"><span class="month">June (2)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2014/05/" title="May"><span class="month">May (4)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2014/04/" title="April"><span class="month">April (2)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2014/03/" title="March"><span class="month">March (7)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2014/02/" title="February"><span class="month">February (6)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2014/01/" title="January"><span class="month">January (4)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2013" href="https://toby.ink/blog/2013/"><span class="jaw_symbol">►</span> <span class="year">2013 (30)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2013/12/" title="December"><span class="month">December (4)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2013/11/" title="November"><span class="month">November (4)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2013/10/" title="October"><span class="month">October (6)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2013/09/" title="September"><span class="month">September (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2013/08/" title="August"><span class="month">August (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2013/07/" title="July"><span class="month">July (2)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2013/05/" title="May"><span class="month">May (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2013/04/" title="April"><span class="month">April (2)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2013/03/" title="March"><span class="month">March (3)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2013/02/" title="February"><span class="month">February (3)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2013/01/" title="January"><span class="month">January (3)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2012" href="https://toby.ink/blog/2012/"><span class="jaw_symbol">►</span> <span class="year">2012 (28)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2012/12/" title="December"><span class="month">December (2)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2012/10/" title="October"><span class="month">October (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2012/09/" title="September"><span class="month">September (3)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2012/08/" title="August"><span class="month">August (2)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2012/07/" title="July"><span class="month">July (6)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2012/06/" title="June"><span class="month">June (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2012/05/" title="May"><span class="month">May (8)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2012/04/" title="April"><span class="month">April (5)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2009" href="https://toby.ink/blog/2009/"><span class="jaw_symbol">►</span> <span class="year">2009 (1)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2009/01/" title="January"><span class="month">January (1)</span></a></li> </ul></li><li class="expanded"><a class="jaw_year jaw_symbol_wrapper" title="2008" href="https://toby.ink/blog/2008/"><span class="jaw_symbol">▼</span> <span class="year">2008 (46)</span></a><ul class="jaw_months jal-slide-down" ><li class="expanded"><a class="jaw_month" href="https://toby.ink/blog/2008/12/" title="December"><span class="month">December (3)</span></a></li> <li class="expanded"><a class="jaw_month" href="https://toby.ink/blog/2008/11/" title="November"><span class="month">November (1)</span></a></li> <li class="expanded"><a class="jaw_month" href="https://toby.ink/blog/2008/10/" title="October"><span class="month">October (1)</span></a></li> <li class="expanded"><a class="jaw_month" href="https://toby.ink/blog/2008/08/" title="August"><span class="month">August (2)</span></a></li> <li class="expanded"><a class="jaw_month" href="https://toby.ink/blog/2008/07/" title="July"><span class="month">July (2)</span></a></li> <li class="expanded"><a class="jaw_month" href="https://toby.ink/blog/2008/05/" title="May"><span class="month">May (1)</span></a></li> <li class="expanded"><a class="jaw_month" href="https://toby.ink/blog/2008/04/" title="April"><span class="month">April (3)</span></a></li> <li class="expanded"><a class="jaw_month" href="https://toby.ink/blog/2008/03/" title="March"><span class="month">March (9)</span></a></li> <li class="expanded"><a class="jaw_month" href="https://toby.ink/blog/2008/02/" title="February"><span class="month">February (5)</span></a></li> <li class="expanded"><a class="jaw_month" href="https://toby.ink/blog/2008/01/" title="January"><span class="month">January (19)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2007" href="https://toby.ink/blog/2007/"><span class="jaw_symbol">►</span> <span class="year">2007 (69)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2007/11/" title="November"><span class="month">November (10)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2007/08/" title="August"><span class="month">August (8)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2007/07/" title="July"><span class="month">July (6)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2007/06/" title="June"><span class="month">June (9)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2007/05/" title="May"><span class="month">May (8)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2007/04/" title="April"><span class="month">April (16)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2007/03/" title="March"><span class="month">March (2)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2007/02/" title="February"><span class="month">February (9)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2007/01/" title="January"><span class="month">January (1)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2006" href="https://toby.ink/blog/2006/"><span class="jaw_symbol">►</span> <span class="year">2006 (2)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2006/12/" title="December"><span class="month">December (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2006/03/" title="March"><span class="month">March (1)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2005" href="https://toby.ink/blog/2005/"><span class="jaw_symbol">►</span> <span class="year">2005 (7)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2005/11/" title="November"><span class="month">November (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2005/09/" title="September"><span class="month">September (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2005/08/" title="August"><span class="month">August (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2005/06/" title="June"><span class="month">June (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2005/02/" title="February"><span class="month">February (3)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2004" href="https://toby.ink/blog/2004/"><span class="jaw_symbol">►</span> <span class="year">2004 (1)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2004/11/" title="November"><span class="month">November (1)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2003" href="https://toby.ink/blog/2003/"><span class="jaw_symbol">►</span> <span class="year">2003 (20)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2003/10/" title="October"><span class="month">October (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2003/09/" title="September"><span class="month">September (3)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2003/08/" title="August"><span class="month">August (16)</span></a></li> </ul></li><li ><a class="jaw_year jaw_symbol_wrapper" title="2002" href="https://toby.ink/blog/2002/"><span class="jaw_symbol">►</span> <span class="year">2002 (3)</span></a><ul class="jaw_months jal-slide-up" style="height:0;"><li ><a class="jaw_month" href="https://toby.ink/blog/2002/08/" title="August"><span class="month">August (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2002/07/" title="July"><span class="month">July (1)</span></a></li> <li ><a class="jaw_month" href="https://toby.ink/blog/2002/03/" title="March"><span class="month">March (1)</span></a></li> </ul></li></ul></section> <section class="widget-even widget-4 filler-widget widget recent-posts-2 widget_recent_entries"> <h3>Recent Blog Posts</h3> <ul> <li> <a href="https://toby.ink/blog/2023/04/05/increasing-perls-visibility-redux/">Increasing Perl’s Visibility, Redux</a> </li> <li> <a href="https://toby.ink/blog/2023/04/02/experiments-in-overloading/">Experiments in Overloading</a> </li> <li> <a href="https://toby.ink/blog/2023/03/25/introducing-exporteralmighty/">Introducing Exporter::Almighty</a> </li> <li> <a href="https://toby.ink/blog/2023/03/08/prosody-vs-synapse/">Prosody vs Synapse</a> </li> <li> <a href="https://toby.ink/blog/2023/02/24/top-five-disney-villain-songs/">Top Five Disney Villain Songs</a> </li> <li> <a href="https://toby.ink/blog/2023/02/17/using-typeparams-effectively/">Using Type::Params Effectively</a> </li> </ul> </section><section class="widget-odd widget-5 filler-widget widget rss_mastodon-2 widget_rss_mastodon"><h3><a class="rsswidget rss-widget-title" href="https://toots.toby.ink/@tobyink">Thoughts</a></h3><ul><li><a class='rsswidget' href='https://toots.toby.ink/@tobyink/110317042412282883'>05/05/2023 16:34</a><div class="rssSummary">Hot take: there should be an industry standard minimum heat level required for foods to market themselves as "hot and spicy".</div></li><li><a class='rsswidget' href='https://toots.toby.ink/@tobyink/110311907026678723'>04/05/2023 18:48</a><div class="rssSummary">I got my first spam message on Mastodon today.</div></li><li><a class='rsswidget' href='https://toots.toby.ink/@tobyink/110225522854761001'>19/04/2023 12:40</a><div class="rssSummary">Overflowing with cream #coffee</div></li><li><a class='rsswidget' href='https://toots.toby.ink/@tobyink/110216560639278428'>17/04/2023 22:40</a><div class="rssSummary">Batman: have a cookie.Robin: this is delicious. Can I have another?Batman: sure, I made a whole batch.Robin: what's a ch?</div></li><li><a class='rsswidget' href='https://toots.toby.ink/@tobyink/110213888835644272'>17/04/2023 11:21</a><div class="rssSummary">Using <a href="https://sh.toby.ink/t/ytscrb" rel="nofollow">https://sh.toby.ink/t/ytscrb</a> and <a href="https://github.com/waldner/Firefox-RunWith" rel="nofollow">https://github.com/waldner/Firefox-RunWith</a> to start logging a selection of the YouTube videos I watch to the Fediverse.</div></li></ul></section><section class="widget-even widget-last widget-6 filler-widget widget tag_cloud-2 widget_tag_cloud"><h3>Tags</h3><div class="tagcloud"><a href="https://toby.ink/tag/america/" class="tag-cloud-link tag-link-56 tag-link-position-1" style="font-size: 8.8pt;" aria-label="america (5 items)">america</a> <a href="https://toby.ink/tag/bbc/" class="tag-cloud-link tag-link-86 tag-link-position-2" style="font-size: 11pt;" aria-label="bbc (9 items)">bbc</a> <a href="https://toby.ink/tag/bbc-news/" class="tag-cloud-link tag-link-90 tag-link-position-3" style="font-size: 8.8pt;" aria-label="bbc-news (5 items)">bbc-news</a> <a href="https://toby.ink/tag/blogging/" class="tag-cloud-link tag-link-82 tag-link-position-4" style="font-size: 10pt;" aria-label="blogging (7 items)">blogging</a> <a href="https://toby.ink/tag/book/" class="tag-cloud-link tag-link-305 tag-link-position-5" style="font-size: 8.8pt;" aria-label="Book (5 items)">Book</a> <a href="https://toby.ink/tag/british/" class="tag-cloud-link tag-link-42 tag-link-position-6" style="font-size: 10.5pt;" aria-label="british (8 items)">british</a> <a href="https://toby.ink/tag/cbeebies/" class="tag-cloud-link tag-link-224 tag-link-position-7" style="font-size: 15.1pt;" aria-label="CBeebies (25 items)">CBeebies</a> <a href="https://toby.ink/tag/cheese/" class="tag-cloud-link tag-link-34 tag-link-position-8" style="font-size: 8.8pt;" aria-label="cheese (5 items)">cheese</a> <a href="https://toby.ink/tag/class-tiny/" class="tag-cloud-link tag-link-278 tag-link-position-9" style="font-size: 9.5pt;" aria-label="Class-Tiny (6 items)">Class-Tiny</a> <a href="https://toby.ink/tag/command-line/" class="tag-cloud-link tag-link-60 tag-link-position-10" style="font-size: 8pt;" aria-label="command-line (4 items)">command-line</a> <a href="https://toby.ink/tag/cpan/" class="tag-cloud-link tag-link-271 tag-link-position-11" style="font-size: 9.5pt;" aria-label="CPAN (6 items)">CPAN</a> <a href="https://toby.ink/tag/demiblog/" class="tag-cloud-link tag-link-77 tag-link-position-12" style="font-size: 11.4pt;" aria-label="demiblog (10 items)">demiblog</a> <a href="https://toby.ink/tag/dumb/" class="tag-cloud-link tag-link-84 tag-link-position-13" style="font-size: 8pt;" aria-label="dumb (4 items)">dumb</a> <a href="https://toby.ink/tag/future/" class="tag-cloud-link tag-link-184 tag-link-position-14" style="font-size: 10pt;" aria-label="future (7 items)">future</a> <a href="https://toby.ink/tag/html/" class="tag-cloud-link tag-link-47 tag-link-position-15" style="font-size: 13.6pt;" aria-label="html (17 items)">html</a> <a href="https://toby.ink/tag/italy/" class="tag-cloud-link tag-link-22 tag-link-position-16" style="font-size: 11pt;" aria-label="italy (9 items)">italy</a> <a href="https://toby.ink/tag/javascript/" class="tag-cloud-link tag-link-124 tag-link-position-17" style="font-size: 8.8pt;" aria-label="javascript (5 items)">javascript</a> <a href="https://toby.ink/tag/linux/" class="tag-cloud-link tag-link-10 tag-link-position-18" style="font-size: 11pt;" aria-label="linux (9 items)">linux</a> <a href="https://toby.ink/tag/moo/" class="tag-cloud-link tag-link-264 tag-link-position-19" style="font-size: 16.2pt;" aria-label="Moo (32 items)">Moo</a> <a href="https://toby.ink/tag/moose/" class="tag-cloud-link tag-link-261 tag-link-position-20" style="font-size: 16.8pt;" aria-label="Moose (37 items)">Moose</a> <a href="https://toby.ink/tag/moose/" class="tag-cloud-link tag-link-382 tag-link-position-21" style="font-size: 12.8pt;" aria-label="moose (14 items)">moose</a> <a href="https://toby.ink/tag/moox-press/" class="tag-cloud-link tag-link-266 tag-link-position-22" style="font-size: 8.8pt;" aria-label="MooX-Press (5 items)">MooX-Press</a> <a href="https://toby.ink/tag/mouse/" class="tag-cloud-link tag-link-284 tag-link-position-23" style="font-size: 11pt;" aria-label="Mouse (9 items)">Mouse</a> <a href="https://toby.ink/tag/oop/" class="tag-cloud-link tag-link-318 tag-link-position-24" style="font-size: 10.5pt;" aria-label="OOP (8 items)">OOP</a> <a href="https://toby.ink/tag/oop/" class="tag-cloud-link tag-link-62 tag-link-position-25" style="font-size: 8pt;" aria-label="oop (4 items)">oop</a> <a href="https://toby.ink/tag/p5-mop/" class="tag-cloud-link tag-link-279 tag-link-position-26" style="font-size: 9.5pt;" aria-label="p5-mop (6 items)">p5-mop</a> <a href="https://toby.ink/tag/pasta/" class="tag-cloud-link tag-link-20 tag-link-position-27" style="font-size: 8.8pt;" aria-label="pasta (5 items)">pasta</a> <a href="https://toby.ink/tag/perl/" class="tag-cloud-link tag-link-6 tag-link-position-28" style="font-size: 22pt;" aria-label="perl (126 items)">perl</a> <a href="https://toby.ink/tag/php/" class="tag-cloud-link tag-link-61 tag-link-position-29" style="font-size: 15.3pt;" aria-label="php (26 items)">php</a> <a href="https://toby.ink/tag/politics/" class="tag-cloud-link tag-link-57 tag-link-position-30" style="font-size: 11.4pt;" aria-label="politics (10 items)">politics</a> <a href="https://toby.ink/tag/programming/" class="tag-cloud-link tag-link-7 tag-link-position-31" style="font-size: 14.2pt;" aria-label="programming (20 items)">programming</a> <a href="https://toby.ink/tag/recipes/" class="tag-cloud-link tag-link-15 tag-link-position-32" style="font-size: 16.3pt;" aria-label="recipes (33 items)">recipes</a> <a href="https://toby.ink/tag/roles/" class="tag-cloud-link tag-link-265 tag-link-position-33" style="font-size: 8.8pt;" aria-label="roles (5 items)">roles</a> <a href="https://toby.ink/tag/science/" class="tag-cloud-link tag-link-8 tag-link-position-34" style="font-size: 10.5pt;" aria-label="science (8 items)">science</a> <a href="https://toby.ink/tag/security/" class="tag-cloud-link tag-link-79 tag-link-position-35" style="font-size: 9.5pt;" aria-label="security (6 items)">security</a> <a href="https://toby.ink/tag/spicy/" class="tag-cloud-link tag-link-13 tag-link-position-36" style="font-size: 10pt;" aria-label="spicy (7 items)">spicy</a> <a href="https://toby.ink/tag/testing/" class="tag-cloud-link tag-link-272 tag-link-position-37" style="font-size: 9.5pt;" aria-label="Testing (6 items)">Testing</a> <a href="https://toby.ink/tag/tomato/" class="tag-cloud-link tag-link-30 tag-link-position-38" style="font-size: 10pt;" aria-label="tomato (7 items)">tomato</a> <a href="https://toby.ink/tag/tricks/" class="tag-cloud-link tag-link-332 tag-link-position-39" style="font-size: 10pt;" aria-label="tricks (7 items)">tricks</a> <a href="https://toby.ink/tag/type-tiny/" class="tag-cloud-link tag-link-262 tag-link-position-40" style="font-size: 17.1pt;" aria-label="Type-Tiny (40 items)">Type-Tiny</a> <a href="https://toby.ink/tag/uncategorized/" class="tag-cloud-link tag-link-243 tag-link-position-41" style="font-size: 8.8pt;" aria-label="Uncategorized (5 items)">Uncategorized</a> <a href="https://toby.ink/tag/usability/" class="tag-cloud-link tag-link-53 tag-link-position-42" style="font-size: 8.8pt;" aria-label="usability (5 items)">usability</a> <a href="https://toby.ink/tag/web/" class="tag-cloud-link tag-link-49 tag-link-position-43" style="font-size: 14.4pt;" aria-label="web (21 items)">web</a> <a href="https://toby.ink/tag/wordpress/" class="tag-cloud-link tag-link-308 tag-link-position-44" style="font-size: 8.8pt;" aria-label="wordpress (5 items)">wordpress</a> <a href="https://toby.ink/tag/zydeco/" class="tag-cloud-link tag-link-269 tag-link-position-45" style="font-size: 8pt;" aria-label="Zydeco (4 items)">Zydeco</a></div> </section> </aside> </div> </div> <a href="#" id="return-to-top"><i class="fa fa-arrow-up"></i></a> <script type="text/javascript">jQuery('#return-to-top').hide();</script> <footer class="content-info"> <div class="container"> <section class="widget-odd widget-first widget-1 widget search-3 widget_search"><form role="search" method="get" class="search-form" action="https://toby.ink/"> <label> <span class="sr-only"> Search for: </span> <input type="search" placeholder="Search …" value="" name="s" > </label> <button>Search</button> </form> </section><section class="widget_text widget-even widget-last widget-2 widget custom_html-3 widget_custom_html"><div class="textwidget custom-html-widget"><p class="text-center">Copyright © 1999–2023 Toby Inkster. All rights reserved.<br /> <a href="/about/terms/">Terms of Service</a> · <a href="/about/privacy-policy/">Privacy Policy</a> · <a href="/about/terms/#no-ai-ml">No AI/ML Clause</a></p> <p class="text-center"><small class="text-muted">Toby Ink Ltd is a registered company in England and Wales with company number 12533297.</small></p> </div></section> </div> </footer> <img alt="Cleantalk Pixel" id="apbct_pixel" style="display: none;" src="https://moderate10.cleantalk.org/pixel/c0aa8703bb2e3dfaeeee9ad41a67a994.gif"><nav id="floating-icons" class="floating-icons-left"><h2><i class="fa fa-bars"></i><span>Quick Links</span></h2><div class="menu-quick-links-container"><ul><li><a href="https://toby.ink/" target="_self" title="About Toby Inkster" data-bs-content="No description." rel="me author" data-bs-trigger="hover" data-bs-toggle="popover"><i class="fa fa-address-card menu-item menu-item-type-post_type menu-item-object-page menu-item-home"></i> <span>Profile</span></a></li></li><li><a href="https://toby.ink/blog/" target="_self" title="Blog" data-bs-content="No description." rel="me index" data-bs-trigger="hover" data-bs-toggle="popover"><i class="fa fa-blog menu-item menu-item-type-post_type menu-item-object-page current_page_parent"></i> <span>Blog</span></a></li></li><li><a href="https://toots.toby.ink/@tobyink" target="_self" title="Mastodon" data-bs-content="No description." rel="me" data-bs-trigger="hover" data-bs-toggle="popover"><i class="fa-brands fa-mastodon menu-item menu-item-type-custom menu-item-object-custom"></i> <span>Mastodon</span></a></li></li><li><a href="https://github.com/tobyink" target="_self" title="GitHub" data-bs-content="No description." rel="me" data-bs-trigger="hover" data-bs-toggle="popover"><i class="fa fa-github menu-item menu-item-type-custom menu-item-object-custom"></i> <span>GitHub</span></a></li></li><li><a href="https://toby.ink/contact/" target="_self" title="Contact" data-bs-content="No description." rel="me" data-bs-trigger="hover" data-bs-toggle="popover"><i class="fa fa-envelope menu-item menu-item-type-post_type menu-item-object-page"></i> <span>Contact</span></a></li></li></ul></div></nav><script type='text/javascript' src='https://toby.ink/wp-content/plugins/ctrl-semicolon/js/hotkeys.min.js?ver=3.8.1' id='hotkeys-js'></script> <script type='text/javascript' src='https://toby.ink/wp-content/plugins/ctrl-semicolon/js/site.js?ver=1.0' id='ctrl-semicolon-js'></script> <script type='text/javascript' src='https://toby.ink/wp-content/plugins/jquery-archive-list-widget/assets/js/jal.js?ver=5.0.1' id='js-archive-list-js'></script> <script type='text/javascript' id='app/0-js-before'> (()=>{"use strict";var e,r={},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var a=o[e]={exports:{}};return r[e](a,a.exports,t),a.exports}t.m=r,e=[],t.O=(r,o,n,a)=>{if(!o){var l=1/0;for(s=0;s<e.length;s++){o=e[s][0],n=e[s][1],a=e[s][2];for(var i=!0,f=0;f<o.length;f++)(!1&a||l>=a)&&Object.keys(t.O).every((e=>t.O[e](o[f])))?o.splice(f--,1):(i=!1,a<l&&(l=a));if(i){e.splice(s--,1);var u=n();void 0!==u&&(r=u)}}return r}a=a||0;for(var s=e.length;s>0&&e[s-1][2]>a;s--)e[s]=e[s-1];e[s]=[o,n,a]},t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={666:0};t.O.j=r=>0===e[r];var r=(r,o)=>{var n,a,l=o[0],i=o[1],f=o[2],u=0;if(l.some((r=>0!==e[r]))){for(n in i)t.o(i,n)&&(t.m[n]=i[n]);if(f)var s=f(t)}for(r&&r(o);u<l.length;u++)a=l[u],t.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return t.O(s)},o=self.webpackChunksage=self.webpackChunksage||[];o.forEach(r.bind(null,0)),o.push=r.bind(null,o.push.bind(o))})()})(); </script> <script type='text/javascript' src='https://toby.ink/wp-content/themes/thyme/public/js/575.4b71f1.js' id='app/0-js'></script> <script type='text/javascript' src='https://toby.ink/wp-content/themes/thyme/public/js/138.888d33.js' id='app/1-js'></script> <script type='text/javascript' src='https://toby.ink/wp-content/themes/thyme/public/js/app.c027ea.js' id='app/2-js'></script> </body> </html>