1. Tantek Çelik: new home page * 100 posts via flat bim files * <64KB HTML * <1s page load no DB XHR ∞scroll needed beat that, silos :)

    @t excellent minimal Like implementation! Whilst your homepage performance is admirable, I don’t think you can meaningfully compare it to silo infinite scroll untill there’s some sort of pagination :) Currently, without rel-prev[ious] links, there’s no way for crawlers (e.g. readers like Shrewdness, semi-hypothetical “your year in indieweb”) tools to find your old posts other than fetching each one individually, which for many cases takes too long to provide a good experience — e.g. crawling your years worth of content takes ≈162s, verifiable with the following bash+PHP code:

    curl -Ss https://getcomposer.org/installer | php
    ./composer.phar require taproot/subscriptions
    php -a  # Start an interactive shell, paste in following code (alternatively save into file):
    @(require 'vendor/autoload.php'); $start = microtime(1); echo "Starting crawl…\n"; Taproot\Subscriptions\crawl('http://tantek.com/2014/365/t1/indieweb-like-posts-2015-commitment-done', function ($r) { echo "."; if (substr($r['mf2']['items'][0]['properties']['published'][0], 0, 4) == '2013') { return false; } else { return true; } }); $total = microtime(1) - $start; echo "\nYear crawl for 2014 took {$total}s";
  2. Working on I’m coming to realise that there are at least two usefully distinct levels of semantic data on the web:

    There’s the basic “object” level at which microformats act, defining simple, basic-level objects like posts and people with properties like name, phone and content.

    Then there’s the level at which HTML works, marking up blocks of text and creating a tree of elements, each of which gives context to the text it contains, for example blockquote elements for containing content from another source, code elements for “computer code” (might be some space to make that more useful — who’s up for adding the type attribute to code?) and so on.

    So what? So these are the two sufficiently standardised levels at which content on the web can be made portable, and mutually understood by many parties. Any additional undefined semantics introduced by author-defined classnames and the meaning communicated by their default styling is unportable, and will be lost when that content is viewed elsewhere (for example shown in a reader or as a cross-site comment.

    So how can you tell if your content is sufficiently portable? For the object-level (microformats) a validator like indiewebify.me can be used. Strangely, there aren’t as many tools for the markup level, but one surefire way to check is to disabled CSS in your browser. Is your content still understandable using only the default styles? If so it’s probably pretty portable.

  3. Micah N Gorrell: @BarnabyWalters Those would work as well but would limit it's use to an actual browser. What is wrong with an HTTP header for this?

    @_minego links with the rel semantic can be used both in human-visible markup for improved back-compatibility and quick error-spotting (as well as layering on top of existing solution) and also in HTTP headers for machine-only use

  4. I thought I understood what the Shadow DOM was. Then I read w3.org/TR/shadow-dom

    Any element in a shadow tree can be a shadow host, thus producing nested shadow trees. A shadow tree is nested when its shadow host is itself a part of a shadow tree. Conversely, a shadow tree A is said to be nesting the shadow tree B if B is nested by A. If a shadow host is declared in the document, the document is the nesting tree of its shadow trees.


    One case that deserves special consideration is the situation when an insertion point is a child node of another shadow host. In such situations, the nodes distributed into that insertion point must appear as if they were child nodes of the shadow host in the context of distribution within the shadow tree, hosted by said shadow host. Thus, the nodes distributed to a shadow tree could have already been distributed by the nesting tree. The effect of a node being distributed into more than one insertion point is called reprojection.


    While pondering if his company should start looking for a new designer


    Well done, Bob! With the cup of coffee still half-full, the work is complete. Recognizing his awesomeness, Bob returns to teaching n00bs the ways of WoW.


    // TODO(alice): Check designer's desk for hallucinogens.


    takes the cake for using shadow tree composition in such a cool way.

  5. Joschi Kuphal 吉: @BarnabyWalters href attribute in https://github.com/sandeepshetty/authorship-test-cases/blob/master/h-entry_with_rel-author_pointing_to_h-card_with_u-url_equal_to_u-uid_equal_to_self.html …, testing fails atm. Should this be fixed in php-mf2 or the test file?

    @jkphl hm that’s an interesting case — href is technically a url-potentially-surrounded-by-spaces, question is whether or not it’s php-mf2’s responsibility to strip out the spaces in u- properties. I’d say it is, as those spaces are never going to be useful data which we’re throwing away, so opened an issue.

  6. The medium with which you choose to express a message shapes that message — be careful it doesn’t contradict it.

    Case in point: A Rational Web Platform (via @brucel)

    • hosted on google silo
    • long complex ugly URL
    • presentation tied to paged dead-tree media with ugly results: text breaks across artificial “pages”
    • no author URL, just corporate silo email, and email != web
    • javascript required
    • no microformats2 or even semantic HTML article markup — even js-generated markup is predictably disgusting with vast quantities of nested divs and spans with inline styles
    • Redirecting to different (non-canonical? difficult to tell due to ugliness) URL due to large amounts of traffic, likely indicative of infrastructural problems or incorrect medium
    • Broken on mobile devices:
      the body text is tiny and does not wrap, the high-traffic warning is truncated and unreadable

    Everything about this is anti-web, practically screaming “ignore me”.


    • Host on personal site or project commons with CC license
    • Short, consistent, readable URI
    • Static semantic HTML with microformats2 h-entry for easy citations, archival and replying, no JS required — this would also solve infrastructural problems as HTML is pretty easy to serve and much faster than JS-rendered DOM-heavy “documents”applications
    • Author attributed by name+personal (non-silo) URL, with profile photo/logo for quick human association
  7. Finally found official name enwp.org/False_dilemma for when people see N options when in fact there are at least N+1, of which the unconsidered options may be superior and considering only N options creates boxed-in thinking.

    Examples: ATOM vs RSS (unconsidered: HTML), Tíu Dropar multiple tipjars, where competing tipjars blot out the option of not tipping.

  8. From now on I am framing all web standards-type discussions with the question “what is it reasonable to demand that authors do”

    For example, it’s not reasonable to demand authors publish content in more than one format. It’s not reasonable to demand that authors learn how RDF works. It is reasonable to require authors to publish HTML. It is reasonable to require authors to add some simple microformats like rel-author, h-entry or h-card.

  9. I’m having trouble figuring out whether my complete inability to understand why RDF is useful is caused by my own stupidity, or if my brain has a built-in nonsenseguard which blocks out unproductive, overcomplicated technology

  10. Does @mozilla webapp installation actually work? In FF Nightly I see the install, confirmation check, confirmation notification and “launch” button on-page, but then I can’t actually launch anything. It’s also stated that I can launch the application from my Applications folder — but it’s not there.