Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    R

    Rob Weir

    robweir.com · Personal blog · on HN since 2007

    Rob Weir, a former IBM engineer, writes about document formats like ODF, algorithms, and humor.

    Visit blogHN submissions
    ProgrammingOpen Source & Linux
    What HN says

    HN commenters cite his Microsoft browser ballot shuffle analysis as a bad, non-uniform shuffle, and quote his "Songs of the IBM" post.

    Stats for nerds
    30HN people shared it
    20linked in comments
    169story points
    Sep 2025last shared
    2009people per year2025

    Top posts on HN

    1. 1
      Songs of the IBM
      3 people · 72 points · first shared 2012 · 18 comments on HN
    2. 2
      Doing the Microsoft Shuffle: Algorithm Fail in Browser Ballot
      10 people · 63 points · first shared 2010 · 25 comments on HN
    3. 3
      Twitter Powers of Ten (2011)
      3 people · 7 points · first shared 2014 · Discussion on HN
    4. 4
      ODF enters the Semantic Web
      1 person · 4 points · first shared 2007 · Discussion on HN
    5. 5
      ODF conformance, but not interoperability, in MS Office 2007SP2
      2 people · 3 points · first shared 2009 · Discussion on HN
    6. 6
      The Versions of OpenDocument Format
      1 person · 3 points · first shared 2011 · Discussion on HN
    7. 7
      Mapping the Apache Software Foundation
      1 person · 2 points · first shared 2013 · Discussion on HN
    8. 8
      Jingle Bells, Batman Smells (2006)
      1 person · 2 points · first shared 2016 · Discussion on HN
    9. 9
      Beautiful Word Clouds
      1 person · 2 points · first shared 2008 · 1 comments on HN
    10. 10
      The Final OOXML Update: Part I
      1 person · 2 points · first shared 2009 · Discussion on HN

    What HN people wrote when they linked it

    • cbenApr 2019

      Exhibit A: MS Word "fast save" format: https://web.archive.org/web/20160308183811/http://1017.songtrellisopml.com/whatsbeenwroughtusingpiecetables
      https://www.joelonsoftware.com/2008/02/19/why-are-the-microsoft-office-file-formats-so-complicated-and-some-workarounds/

      From CS perspective, it's an impressive feat of engineering. They used persistent data structures to optimize in-memory operations, and essentially a write-ahead log of these same structures to optimize commits to disk.
      They also created "OLE" technology in the OS+libraries to support embedding live documents one in another - remarkably not unlike Phantom's goals.
      The trouble is, they did these in document interchange formats! Office succeeded, and the insane complexity of reverse-engineering its formats actually became a great business "moat".

      But decades later, after switching the surface structure from binary insanity to XML, it still contains attributes like `autoSpaceLikeWord95` and `footnoteLayoutLikeWW8` :-(
      http://www.robweir.com/blog/2007/01/how-to-hire-guillaume-portes.html

      A lot has been written assuming malice in OOXML, but you can also argue it'd require unbelievable competence to evolve their codebase to anything other than this!
      If you never needed pervasive dump/load abstractions, your formats map to 1:1 to your semantics, and the only way to evolve is keeping old semantics around, forever...

      EDIT: I can't help copy pasting more from the last link:

      - lineWrapLikeWord6 (Emulate Word 6.0…

    • berntbMay 2009

      Like running a criminal monopoly.

      The problem with monopolies in the technical area is that they have a business reason to be incompatible (otherwise, they'll be cloned). That means they build over complex systems which have finicky compatibility problems.

      For a typical example, see this:
      http://www.robweir.com/blog/2009/05/update-on-odf-spreadsheet.html

      The monopolist's need for obscurity and complexity doesn't just cost the developing company money, it hurts people trying to use their systems or interact with their systems.

      Also, it hurts the speed of technological change. When an area is owned by a monopolist, the development investments are moved to an area that isn't owned yet -- paid for by milking the safe income. That means the owned areas (like web browsers) languish.

      In short, unethical monopolies hurts my life quality in multiple ways, since I get to work with worse systems (well, not that I work with Windows any longer).

      Edit: Grammar, clarity.

    • reDec 2015

      It can be extremely biased, and the results can depend on the sort algorithm, because what you're randomizing is the comparison results, not the order. Consider insertion sort: https://en.wikipedia.org/wiki/Insertion_sort

      As the list is sorted, elements are inserted from the back by finding the first element that the new element is smaller than. The last element to be inserted is the one at the end of the unsorted array, and, with a random comparator, it has a 50% chance of being "larger" than the biggest of the rest of the elements, and thus remaining at the end of the list.

      Microsoft used this technique to "randomize" a list of browsers back in 2010, but, when viewing the page in IE, it ended up putting IE in the last position (out of a set of five browsers) 50% of the time: http://www.robweir.com/blog/2010/02/microsoft-random-browser-ballot.html

    • ChrisArchitectFeb 2024

      Fully respect the history, but often these days as the corp has waned/is nothing more than a bygone great, I can't help but think of Songs of the I.B.M. (https://www.robweir.com/blog/2011/06/songs-of-the-ibm.html)

      i.e

      Ever onward! ever onward! that's the spirit that has brought us fame. we're big but bigger we will be, we can't fail for all can see, that to serve humanity has been our aim. our products now are known in every zone. our reputation sparkles like a gem. we've fought our way through and new fields we're sure to conquer, too, for the ever onward IBM!

    • spdustinSep 2016

      The random return used in the comparison passed into an Array.sort() function would depend on the sort algorithm used by the JavaScript engine, since the comparisons being returned aren't "honest". Is it a merge sort, for example? Plus, it's kinda broken because if X > Y for one permutation, it should follow that Y < X if those same values are passed back in, and in this case, they' really not.

      MS took advantage of this when selecting a random browser for the browser ballot years ago.

      http://www.robweir.com/blog/2010/02/microsoft-random-browser-ballot.html

    • rhdunnSep 2025

      There are places where it says the equivalent of "Works the same as Word 95" [3], but does not specify in the specification what that means.

      It's essentially a serialization of the binary format to XML.

      ODF 1.4 is around 1,100 pages across all 4 parts whereas OOXML is over 6,000.

      [1] https://stephesblog.blogs.com/my_weblog/2007/08/microsofts-fail.html

      [2] https://ooxmlisdefectivebydesign.blogspot.com/2007/08/microsoft-office-xml-formats-defective.html

      [3] https://www.robweir.com/blog/2007/01/how-to-hire-guillaume-portes.html

    Related

    Tantetante.cc51 people

    The Third Web

    Tante
    Personal · last shared 2026
    Robert O'Callahanrobert.ocallahan.org149 people

    Choose Firefox Now, or Later You Won't Get a Choice (2014)

    Robert O'Callahan
    Personal · last shared 2025
    Random ASCIIrandomascii.wordpress.com274 people

    There are only four billion floats, so test them all (2014)

    Random ASCII
    Personal · last shared 2026
    Rob Pikecommandcenter.blogspot.com216 people

    Go: What we got right, what we got wrong

    Rob Pike
    Personal · last shared 2026
    Aphyraphyr.com551 people

    Hexing the technical interview (2017)

    Aphyr
    Personal · last shared 2026
    Music Machinerymusicmachinery.com62 people

    How to process a million songs in 20 minutes

    Music Machinery
    Personal · last shared 2026
    Matt Webbinterconnected.org128 people

    I wish my web server were in the corner of my room

    Matt Webb
    Personal · last shared 2026
    Brendan O'Connorbrenocon.com29 people

    Statistics vs. Machine Learning

    Brendan O'Connor
    Personal · last shared 2026