1. 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.

  2. 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

  3. 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.

  4. I’m thinking the time might have come to write a wrapper around DOMDocument which actually makes it usable. Thoughts:

    • automatic conversion of various encodings to HTML entities to scoot round encoding issues
    • XPath queries still work but querySelector and querySelectorAll are implemented for both the document and individual elements via Symfony XPath → CSS converter and relative XPath queries
    • A DOMNodeList which actually implements ArrayAccess instead of acting like a fake array
    • Perhaps some javascript-inspired property names like innerText, innerHTML for consistency
    • Maybe some jQuery-influenced shortcut goodness for doing things like removing/replacing elements
  5. @benwerd loving your work on idno! Just had a look at the source, great that you’re using 2, I have some suggestions/corrections:

    • .h-entry is better off where you’ve got .idno-entry so then the author .h-card can be scoped into the entry
    • add .p-author to the .h-card for each .h-entry to explicitly declare authorship
    • put .h-as-* on the same element as .h-entry .idno-entry
    • put .u-url where you currently have .dt-published, move .dt-published to the time element

    Thanks to Aaron Parecki you can see how a page is parsed here, or use my php-mf2 demo sandbox for experimentation by hand.

  6. Emil Björklund: What is the equivalent of a unit test for HTML + CSS? (Yes, I know of Selenium, webdriver etc, but I'm fishing for other answers as well.)

    @thatemil I’ve always considered style guides/pattern libraries to be unit tests for HTML+CSS, and you could automate them with JS if they get too unwieldy.

  7. If you want to generate real PDFs from HTML (i.e. with page breaks and real text, not just vast screenshots inside a PDF) then wkpdf is the way to go. Super fast, installs easily, great output.

  8. Laura Kalbag: And <br/> tags used instead of <label>s in forms makes me downright stabby.

    Laura Kalbag my current pet peeve is a h1, then a h2 directly below it which is not a header, just a paragraph the author wanted to make look bigger (or a subheader, like bootstrap does with the downright weird h1 -> small). I saw it once a while ago, now I’m seeing it everywhere :/

  9. Cross-browser selection UI injection flow:

    1. Listen for mouseup on body
    2. When triggered, let s be window.getSelection()
    3. If s.isCollapsed === false, return
    4. Else, let r be s.getRangeAt(0)
    5. Create a new element e
    6. Call r.surroundContents(e)
    7. e.innerHTML and e.textContent now return useful values, and e’s coordinates can be used to inject UI into the page

    To resolve: what element should e be? Or more accurately, what display property should it have? Possibly inline-block (inline mucks up if selection is across block elements, block mucks up selections within text nodes)

    Turns out there are problems with r.surroundContent, namely that it does not handle partial element selections. See MDNs explanation and solution.