<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: mark-pilgrim</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/mark-pilgrim.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2026-03-05T16:49:33+00:00</updated><author><name>Simon Willison</name></author><entry><title>Can coding agents relicense open source through a “clean room” implementation of code?</title><link href="https://simonwillison.net/2026/Mar/5/chardet/#atom-tag" rel="alternate"/><published>2026-03-05T16:49:33+00:00</published><updated>2026-03-05T16:49:33+00:00</updated><id>https://simonwillison.net/2026/Mar/5/chardet/#atom-tag</id><summary type="html">
    &lt;p&gt;Over the past few months it's become clear that coding agents are extraordinarily good at building a weird version of a "clean room" implementation of code.&lt;/p&gt;
&lt;p&gt;The most famous version of this pattern is when Compaq created a clean-room clone of the IBM BIOS back &lt;a href="https://en.wikipedia.org/wiki/Compaq#Introduction_of_Compaq_Portable"&gt;in 1982&lt;/a&gt;. They had one team of engineers reverse engineer the BIOS to create a specification, then handed that specification to another team to build a new ground-up version.&lt;/p&gt;
&lt;p&gt;This process used to take multiple teams of engineers weeks or months to complete. Coding agents can do a version of this in hours - I experimented with a variant of this pattern against &lt;a href="https://simonwillison.net/2025/Dec/15/porting-justhtml/"&gt;JustHTML&lt;/a&gt; back in December.&lt;/p&gt;
&lt;p&gt;There are a &lt;em&gt;lot&lt;/em&gt; of open questions about this, both ethically and legally. These appear to be coming to a head in the venerable &lt;a href="https://github.com/chardet/chardet"&gt;chardet&lt;/a&gt; Python library.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;chardet&lt;/code&gt; was created by Mark Pilgrim &lt;a href="https://pypi.org/project/chardet/1.0/"&gt;back in 2006&lt;/a&gt; and released under the LGPL. Mark retired from public internet life in 2011 and chardet's maintenance was taken over by others, most notably Dan Blanchard who has been responsible for every release since &lt;a href="https://pypi.org/project/chardet/1.1/"&gt;1.1 in July 2012&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Two days ago Dan released &lt;a href="https://github.com/chardet/chardet/releases/tag/7.0.0"&gt;chardet 7.0.0&lt;/a&gt; with the following note in the release notes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ground-up, MIT-licensed rewrite of chardet. Same package name, same public API — drop-in replacement for chardet 5.x/6.x. Just way faster and more accurate!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yesterday Mark Pilgrim opened &lt;a href="https://github.com/chardet/chardet/issues/327"&gt;#327: No right to relicense this project&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[...] First off, I would like to thank the current maintainers and everyone who has contributed to and improved this project over the years. Truly a Free Software success story.&lt;/p&gt;
&lt;p&gt;However, it has been brought to my attention that, in the release &lt;a href="https://github.com/chardet/chardet/releases/tag/7.0.0"&gt;7.0.0&lt;/a&gt;, the maintainers claim to have the right to "relicense" the project. They have no such right; doing so is an explicit violation of the LGPL. Licensed code, when modified, must be released under the same LGPL license. Their claim that it is a "complete rewrite" is irrelevant, since they had ample exposure to the originally licensed code (i.e. this is not a "clean room" implementation). Adding a fancy code generator into the mix does not somehow grant them any additional rights.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dan's &lt;a href="https://github.com/chardet/chardet/issues/327#issuecomment-4005195078"&gt;lengthy reply&lt;/a&gt; included:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You're right that I have had extensive exposure to the original codebase: I've been maintaining it for over a decade. A traditional clean-room approach involves a strict separation between people with knowledge of the original and people writing the new implementation, and that separation did not exist here.&lt;/p&gt;
&lt;p&gt;However, the purpose of clean-room methodology is to ensure the resulting code is not a derivative work of the original. It is a means to an end, not the end itself. In this case, I can demonstrate that the end result is the same — the new code is structurally independent of the old code — through direct measurement rather than process guarantees alone.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dan goes on to present results from the &lt;a href="https://github.com/jplag/JPlag"&gt;JPlag&lt;/a&gt; tool - which describes itself as  "State-of-the-Art Source Code Plagiarism &amp;amp; Collusion Detection" - showing that the new 7.0.0 release has a max similarity of 1.29% with the previous release and 0.64% with the 1.1 version. Other release versions had similarities more in the 80-93% range.&lt;/p&gt;
&lt;p&gt;He then shares critical details about his process, highlights mine:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For full transparency, here's how the rewrite was conducted. I used the &lt;a href="https://github.com/obra/superpowers"&gt;superpowers&lt;/a&gt; brainstorming skill to create a &lt;a href="https://github.com/chardet/chardet/commit/f51f523506a73f89f0f9538fd31be458d007ab93"&gt;design document&lt;/a&gt; specifying the architecture and approach I wanted based on the following requirements I had for the rewrite [...]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I then started in an empty repository with no access to the old source tree, and explicitly instructed Claude not to base anything on LGPL/GPL-licensed code&lt;/strong&gt;. I then reviewed, tested, and iterated on every piece of the result using Claude. [...]&lt;/p&gt;
&lt;p&gt;I understand this is a new and uncomfortable area, and that using AI tools in the rewrite of a long-standing open source project raises legitimate questions. But the evidence here is clear: 7.0 is an independent work, not a derivative of the LGPL-licensed codebase. The MIT license applies to it legitimately.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Since the rewrite was conducted using Claude Code there are a whole lot of interesting artifacts available in the repo. &lt;a href="https://github.com/chardet/chardet/blob/925bccbc85d1b13292e7dc782254fd44cc1e7856/docs/plans/2026-02-25-chardet-rewrite-plan.md"&gt;2026-02-25-chardet-rewrite-plan.md&lt;/a&gt; is particularly detailed, stepping through each stage of the rewrite process in turn - starting with the tests, then fleshing out the planned replacement code.&lt;/p&gt;
&lt;p&gt;There are several twists that make this case particularly hard to confidently resolve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dan has been immersed in chardet for over a decade, and has clearly been strongly influenced by the original codebase.&lt;/li&gt;
&lt;li&gt;There is one example where Claude Code referenced parts of the codebase while it worked, as shown in &lt;a href="https://github.com/chardet/chardet/blob/925bccbc85d1b13292e7dc782254fd44cc1e7856/docs/plans/2026-02-25-chardet-rewrite-plan.md#task-3-encoding-registry"&gt;the plan&lt;/a&gt; - it looked at &lt;a href="https://github.com/chardet/chardet/blob/f0676c0d6a4263827924b78a62957547fca40052/chardet/metadata/charsets.py"&gt;metadata/charsets.py&lt;/a&gt;, a file that lists charsets and their properties expressed as a dictionary of dataclasses.&lt;/li&gt;
&lt;li&gt;More complicated: Claude itself was very likely trained on chardet as part of its enormous quantity of training data - though we have no way of confirming this for sure. Can a model trained on a codebase produce a morally or legally defensible clean-room implementation?&lt;/li&gt;
&lt;li&gt;As discussed in &lt;a href="https://github.com/chardet/chardet/issues/36"&gt;this issue from 2014&lt;/a&gt; (where Dan first openly contemplated a license change) Mark Pilgrim's original code was a manual port from C to Python of Mozilla's MPL-licensed character detection library.&lt;/li&gt;
&lt;li&gt;How significant is the fact that the new release of chardet used the same PyPI package name as the old one? Would a fresh release under a new name have been more defensible?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have no idea how this one is going to play out. I'm personally leaning towards the idea that the rewrite is legitimate, but the arguments on both sides of this are entirely credible.&lt;/p&gt;
&lt;p&gt;I see this as a microcosm of the larger question around coding agents for fresh implementations of existing, mature code. This question is hitting the open source world first, but I expect it will soon start showing up in Compaq-like scenarios in the commercial world.&lt;/p&gt;
&lt;p&gt;Once commercial companies see that their closely held IP is under threat I expect we'll see some well-funded litigation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update 6th March 2026&lt;/strong&gt;: A detail that's worth emphasizing is that Dan does &lt;em&gt;not&lt;/em&gt; claim that the new implementation is a pure "clean room" rewrite. Quoting &lt;a href="https://github.com/chardet/chardet/issues/327#issuecomment-4005195078"&gt;his comment&lt;/a&gt; again:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A traditional clean-room approach involves a strict separation between people with knowledge of the original and people writing the new implementation, and that separation did not exist here.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I can't find it now, but I saw a comment somewhere that pointed out the absurdity of Dan being blocked from working on a new implementation of character detection as a result of the volunteer effort he put into helping to maintain an existing open source library in that domain.&lt;/p&gt;
&lt;p&gt;I enjoyed Armin's take on this situation in &lt;a href="https://lucumr.pocoo.org/2026/3/5/theseus/"&gt;AI And The Ship of Theseus&lt;/a&gt;, in particular:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There are huge consequences to this. When the cost of generating code goes down that much, and we can re-implement it from test suites alone, what does that mean for the future of software? Will we see a lot of software re-emerging under more permissive licenses? Will we see a lot of proprietary software re-emerging as open source? Will we see a lot of software re-emerging as proprietary?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p id="march-27th"&gt;&lt;strong&gt;Update 27th March 2026&lt;/strong&gt;: Here's &lt;a href="https://github.com/chardet/chardet/issues/334#issuecomment-4098524555"&gt;a comment&lt;/a&gt; from &lt;a href="https://en.wikipedia.org/wiki/Richard_Fontana"&gt;Richard Fontana&lt;/a&gt;, one of the authors of the GPLv3 and LGPLv3 licenses, providing his own TINLA ("This Is Not Legal Advice") take on the situation:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;[...] FWIW, IANDBL, TINLA, etc., I don't currently see any basis for concluding that chardet 7.0.0 is required to be released under the LGPL. AFAIK no one including Mark Pilgrim has identified persistence of copyrightable expressive material from earlier versions in 7.0.0 nor has anyone articulated some viable alternate theory of license violation. I don't think I personally would have used the MIT license here, even if I somehow rewrote everything from scratch without the use of AI in a way that didn't implicate obligations flowing from earlier versions of chardet, but that's irrelevant.&lt;/p&gt;&lt;/blockquote&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/licensing"&gt;licensing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vibe-porting"&gt;vibe-porting&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="licensing"/><category term="mark-pilgrim"/><category term="open-source"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="ai-ethics"/><category term="coding-agents"/><category term="vibe-porting"/></entry><entry><title>SpatiaLite — Datasette documentation</title><link href="https://simonwillison.net/2018/May/30/spatialite-datasette-docs/#atom-tag" rel="alternate"/><published>2018-05-30T04:34:06+00:00</published><updated>2018-05-30T04:34:06+00:00</updated><id>https://simonwillison.net/2018/May/30/spatialite-datasette-docs/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://datasette.readthedocs.io/en/latest/spatialite.html"&gt;SpatiaLite — Datasette documentation&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Datasette’s documentation now includes extensive coverage of the SpatiaLite extension for SQLite: how to install it, how to import latitude/longitude points, shapefiles and GeoJSON data into SpatiaLite tables, and how to run SQL queries against it that take advantage of spatial indexes. I’m learning SpatiaLite at the moment and filling out the documentation with each new trick I learn as I go—as Mark Pilgrim once taught me, the best way to learn a new technology is to write about it.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/documentation"&gt;documentation&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/spatialite"&gt;spatialite&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sqlite"&gt;sqlite&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;&lt;/p&gt;



</summary><category term="documentation"/><category term="mark-pilgrim"/><category term="spatialite"/><category term="sqlite"/><category term="datasette"/></entry><entry><title>An implausibly illustrated introduction to HTML5 Web Workers</title><link href="https://simonwillison.net/2010/Aug/15/workers/#atom-tag" rel="alternate"/><published>2010-08-15T23:14:00+00:00</published><updated>2010-08-15T23:14:00+00:00</updated><id>https://simonwillison.net/2010/Aug/15/workers/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://wearehugh.com/public/2010/08/html5-web-workers/"&gt;An implausibly illustrated introduction to HTML5 Web Workers&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
By Mark Pilgrim.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webworkers"&gt;webworkers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;&lt;/p&gt;



</summary><category term="html5"/><category term="mark-pilgrim"/><category term="webworkers"/><category term="recovered"/></entry><entry><title>Quoting Mark Pilgrim</title><link href="https://simonwillison.net/2010/Jun/8/html5/#atom-tag" rel="alternate"/><published>2010-06-08T20:48:00+00:00</published><updated>2010-06-08T20:48:00+00:00</updated><id>https://simonwillison.net/2010/Jun/8/html5/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://hg.diveintohtml5.org/hgweb.cgi/rev/31e07449843a7982c119bc7fe2c69b595a7e46f5"&gt;&lt;p&gt;I’m renaming the book to “Dive Into HTML 5” for better SEO. This is not a joke. The book is the #5 search result for “HTML5” (no space) but #13 for “HTML 5” (with a space). I get 514 visitors a day searching Google for “HTML5” but only 53 visitors a day searching for “HTML 5”.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://hg.diveintohtml5.org/hgweb.cgi/rev/31e07449843a7982c119bc7fe2c69b595a7e46f5"&gt;Mark Pilgrim&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/diveintohtml5"&gt;diveintohtml5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/seo"&gt;seo&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;&lt;/p&gt;



</summary><category term="diveintohtml5"/><category term="html5"/><category term="mark-pilgrim"/><category term="seo"/><category term="recovered"/></entry><entry><title>The All-In-One Almost-Alphabetical No-Bullshit Guide to Detecting Everything</title><link href="https://simonwillison.net/2010/May/14/everything/#atom-tag" rel="alternate"/><published>2010-05-14T14:17:00+00:00</published><updated>2010-05-14T14:17:00+00:00</updated><id>https://simonwillison.net/2010/May/14/everything/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://diveintohtml5.org/everything.html"&gt;The All-In-One Almost-Alphabetical No-Bullshit Guide to Detecting Everything&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Appendix A of Dive Into HTML5.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/detecting"&gt;detecting&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/diveintohtml5"&gt;diveintohtml5&lt;/a&gt;&lt;/p&gt;



</summary><category term="html5"/><category term="javascript"/><category term="mark-pilgrim"/><category term="recovered"/><category term="detecting"/><category term="diveintohtml5"/></entry><entry><title>Video on the Web - Dive Into HTML5</title><link href="https://simonwillison.net/2010/Mar/24/video/#atom-tag" rel="alternate"/><published>2010-03-24T00:50:39+00:00</published><updated>2010-03-24T00:50:39+00:00</updated><id>https://simonwillison.net/2010/Mar/24/video/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://diveintohtml5.org/video.html"&gt;Video on the Web - Dive Into HTML5&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Everything a web developer needs to know about video containers, video codecs, adio containers, audio codecs, h.264, theora, vorbis, licensing, encoding, batch encoding and the html5 video element.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/audio"&gt;audio&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/h264"&gt;h264&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/theora"&gt;theora&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/video"&gt;video&lt;/a&gt;&lt;/p&gt;



</summary><category term="audio"/><category term="h264"/><category term="html5"/><category term="mark-pilgrim"/><category term="theora"/><category term="video"/></entry><entry><title>flashblockdetector</title><link href="https://simonwillison.net/2010/Mar/13/flashblockdetector/#atom-tag" rel="alternate"/><published>2010-03-13T10:44:58+00:00</published><updated>2010-03-13T10:44:58+00:00</updated><id>https://simonwillison.net/2010/Mar/13/flashblockdetector/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.google.com/p/flashblockdetector/"&gt;flashblockdetector&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Mark Pilgrim’s JavaScript library for detecting if the user has a Flash blocker enabled, such as FlashBlock for Firefox and Chrome or ClickToFlash for Safari. One good use of this would be to inform users that they need to opt-in to Flash for unobtrusive Flash enhancements (such as invisible audio players) to work on that page.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/clicktoflash"&gt;clicktoflash&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/flash"&gt;flash&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/flashblock"&gt;flashblock&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;&lt;/p&gt;



</summary><category term="clicktoflash"/><category term="flash"/><category term="flashblock"/><category term="javascript"/><category term="mark-pilgrim"/></entry><entry><title>Quoting Mark Pilgrim</title><link href="https://simonwillison.net/2009/Nov/3/conversation/#atom-tag" rel="alternate"/><published>2009-11-03T07:20:26+00:00</published><updated>2009-11-03T07:20:26+00:00</updated><id>https://simonwillison.net/2009/Nov/3/conversation/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://diveintomark.org/archives/2009/11/02/why-do-we-have-an-img-element"&gt;&lt;p&gt;HTML has always been a conversation between browser makers, authors, standards wonks, and other people who just showed up and liked to talk about angle brackets. Most of the successful versions of HTML have been “retro-specs,” catching up to the world while simultaneously trying to nudge it in the right direction. Anyone who tells you that HTML should be kept “pure” (presumably by ignoring browser makers, or ignoring authors, or both) is simply misinformed. HTML has never been pure, and all attempts to purify it have been spectacular failures, matched only by the attempts to replace it.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://diveintomark.org/archives/2009/11/02/why-do-we-have-an-img-element"&gt;Mark Pilgrim&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/html"&gt;html&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/standards"&gt;standards&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;&lt;/p&gt;



</summary><category term="html"/><category term="html5"/><category term="standards"/><category term="mark-pilgrim"/></entry><entry><title>Quoting Mark Pilgrim</title><link href="https://simonwillison.net/2009/Oct/21/value/#atom-tag" rel="alternate"/><published>2009-10-21T09:59:50+00:00</published><updated>2009-10-21T09:59:50+00:00</updated><id>https://simonwillison.net/2009/Oct/21/value/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://diveintomark.org/archives/2009/10/19/the-point#comment-13446"&gt;&lt;p&gt;You count the "value" that is lost by people who would have made money selling rival goods, but can't now because they can't compete with free. But you don't count the value that is created by people who build upon the freely given goods. [...] In other words, you only look at the first-order effects. It's the same mistake a lot of people make when they accuse open source developers of "dumping" and ruining the market for competing software. That's true, in a very narrow sense, but it ignores all the other people who took that software and used it to create something else of value.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://diveintomark.org/archives/2009/10/19/the-point#comment-13446"&gt;Mark Pilgrim&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/free"&gt;free&lt;/a&gt;&lt;/p&gt;



</summary><category term="mark-pilgrim"/><category term="open-source"/><category term="free"/></entry><entry><title>Dive Into HTML 5</title><link href="https://simonwillison.net/2009/Aug/20/diveintohtml5/#atom-tag" rel="alternate"/><published>2009-08-20T14:40:23+00:00</published><updated>2009-08-20T14:40:23+00:00</updated><id>https://simonwillison.net/2009/Aug/20/diveintohtml5/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://diveintohtml5.org/"&gt;Dive Into HTML 5&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Mark Pilgrim’s free online book on HTML 5—currently just one chapter on canvas (which neatly illustrates the coordinate system using a diagram rendered using canvas itself) but certain to become an invaluable resource for anyone looking to take advantage of HTML 5.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/books"&gt;books&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/canvas"&gt;canvas&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-standards"&gt;web-standards&lt;/a&gt;&lt;/p&gt;



</summary><category term="books"/><category term="canvas"/><category term="html5"/><category term="mark-pilgrim"/><category term="web-standards"/></entry><entry><title>Quoting Alan Storm</title><link href="https://simonwillison.net/2009/Jul/4/alan/#atom-tag" rel="alternate"/><published>2009-07-04T12:51:15+00:00</published><updated>2009-07-04T12:51:15+00:00</updated><id>https://simonwillison.net/2009/Jul/4/alan/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://simonwillison.net/2009/Jul/4/xhtml/#c47024"&gt;&lt;p&gt;Yes, it'd be nice if everyone kept up to date on the progress of the various W3C working groups. They don't. There are a lot of people who asked what professional markup looked like and were told (right or wrong) that XHTML was the future. So they went ahead and learned XHTML, built their websites and chose watching a DVD or spending time with their kids over watching Mark Pilgrim and Sam Ruby do battle over Postel's Law. Now all of a sudden they're told XHTML is dead. Some wailing and gnashing of teeth is to be expected. What's needed is less "boy aren't I smarter than them" snideness, and more Hey, here's what's up.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://simonwillison.net/2009/Jul/4/xhtml/#c47024"&gt;Alan Storm&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/xhtml"&gt;xhtml&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/postelslaw"&gt;postelslaw&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xhtml2"&gt;xhtml2&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-standards"&gt;web-standards&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/w3c"&gt;w3c&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/alan-storm"&gt;alan-storm&lt;/a&gt;&lt;/p&gt;



</summary><category term="xhtml"/><category term="html5"/><category term="mark-pilgrim"/><category term="sam-ruby"/><category term="postelslaw"/><category term="xhtml2"/><category term="web-standards"/><category term="w3c"/><category term="alan-storm"/></entry><entry><title>Magic properties make Firefox synchronously load the Java plugin</title><link href="https://simonwillison.net/2009/Feb/27/articleherecomesthesun/#atom-tag" rel="alternate"/><published>2009-02-27T16:03:13+00:00</published><updated>2009-02-27T16:03:13+00:00</updated><id>https://simonwillison.net/2009/Feb/27/articleherecomesthesun/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.google.com/p/doctype/wiki/ArticleHereComesTheSun"&gt;Magic properties make Firefox synchronously load the Java plugin&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Even defining a function called sun() (or several other symbols) will trigger the Java VM to be loaded, dramatically hurting the performance of your page.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/firefox"&gt;firefox&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/java"&gt;java&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/performance"&gt;performance&lt;/a&gt;&lt;/p&gt;



</summary><category term="firefox"/><category term="java"/><category term="javascript"/><category term="mark-pilgrim"/><category term="performance"/></entry><entry><title>Quoting Mark Pilgrim</title><link href="https://simonwillison.net/2009/Feb/25/twoproblems/#atom-tag" rel="alternate"/><published>2009-02-25T22:06:07+00:00</published><updated>2009-02-25T22:06:07+00:00</updated><id>https://simonwillison.net/2009/Feb/25/twoproblems/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://twitter.com/diveintomark/statuses/1249729494"&gt;&lt;p&gt;Some people, when confronted with a problem, think "I know, I'll quote Jamie Zawinski." Now they have two problems.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://twitter.com/diveintomark/statuses/1249729494"&gt;Mark Pilgrim&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/funny"&gt;funny&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jamie-zawinski"&gt;jamie-zawinski&lt;/a&gt;&lt;/p&gt;



</summary><category term="mark-pilgrim"/><category term="funny"/><category term="jamie-zawinski"/></entry><entry><title>Dive into Python 3</title><link href="https://simonwillison.net/2009/Jan/26/hooray/#atom-tag" rel="alternate"/><published>2009-01-26T18:10:13+00:00</published><updated>2009-01-26T18:10:13+00:00</updated><id>https://simonwillison.net/2009/Jan/26/hooray/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://diveintopython3.org/"&gt;Dive into Python 3&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Mark Pilgrim’s seminal work taught me Python nearly eight years ago. Now he’s updating it to cover Python 3. It’s just a table of contents at the moment, but the chapter on “Packaging Python libraries” has me very excited.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/diveintopython"&gt;diveintopython&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/packaging"&gt;packaging&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python3"&gt;python3&lt;/a&gt;&lt;/p&gt;



</summary><category term="diveintopython"/><category term="mark-pilgrim"/><category term="packaging"/><category term="python"/><category term="python3"/></entry><entry><title>Quoting Mark Pilgrim</title><link href="https://simonwillison.net/2008/Dec/13/backups/#atom-tag" rel="alternate"/><published>2008-12-13T23:36:20+00:00</published><updated>2008-12-13T23:36:20+00:00</updated><id>https://simonwillison.net/2008/Dec/13/backups/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://delicious.com/wearehugh"&gt;&lt;p&gt;There. Is. No. Long-Term. Data. Storage. Solution. There is only a series of short-term solutions punctuated by data migration from one medium to the next.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://delicious.com/wearehugh"&gt;Mark Pilgrim&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/backups"&gt;backups&lt;/a&gt;&lt;/p&gt;



</summary><category term="mark-pilgrim"/><category term="backups"/></entry><entry><title>This Week in HTML 5 - Episode 7: Clickjacking</title><link href="https://simonwillison.net/2008/Oct/1/whatwg/#atom-tag" rel="alternate"/><published>2008-10-01T01:48:15+00:00</published><updated>2008-10-01T01:48:15+00:00</updated><id>https://simonwillison.net/2008/Oct/1/whatwg/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.whatwg.org/this-week-in-html-5-episode-7"&gt;This Week in HTML 5 - Episode 7: Clickjacking&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Clickjacking is when a third party site is embedded in an iframe with opacity 0 and positioned such that a click on the page actually hits a button on the now invisible third party site. Mark Pilgrim explains how the NoScript site uses this in a non malicious way to for the “install now!” button.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/clickjacking"&gt;clickjacking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/iframes"&gt;iframes&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/noscript"&gt;noscript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/opacity"&gt;opacity&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/phishing"&gt;phishing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;&lt;/p&gt;



</summary><category term="clickjacking"/><category term="html5"/><category term="iframes"/><category term="mark-pilgrim"/><category term="noscript"/><category term="opacity"/><category term="phishing"/><category term="security"/></entry><entry><title>This Week in HTML 5 - Episode 1</title><link href="https://simonwillison.net/2008/Aug/7/whatwg/#atom-tag" rel="alternate"/><published>2008-08-07T07:57:11+00:00</published><updated>2008-08-07T07:57:11+00:00</updated><id>https://simonwillison.net/2008/Aug/7/whatwg/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.whatwg.org/this-week-in-html5-episode-1"&gt;This Week in HTML 5 - Episode 1&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
It looks like the most controversial aspect of the HTML 5 spec has been addressed - now, instead of omitting the alt attribute for user generated content that has no relevant information available, sites are advised to provide an indication of the kind of image expected surrounded by braces, for example &lt;code&gt;alt="{uploaded photo}"&lt;/code&gt;.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/accessibility"&gt;accessibility&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/alt-text"&gt;alt-text&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/whatwg"&gt;whatwg&lt;/a&gt;&lt;/p&gt;



</summary><category term="accessibility"/><category term="alt-text"/><category term="html5"/><category term="mark-pilgrim"/><category term="whatwg"/></entry><entry><title>Quoting Mark Pilgrim</title><link href="https://simonwillison.net/2008/Aug/5/weapon/#atom-tag" rel="alternate"/><published>2008-08-05T22:52:05+00:00</published><updated>2008-08-05T22:52:05+00:00</updated><id>https://simonwillison.net/2008/Aug/5/weapon/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://diveintomark.org/archives/2008/08/05/placating"&gt;&lt;p&gt;My Universal Feed Parser was conceived as a weapon against what I considered the gravest error of XML: draconian error handling. Recently, someone asked me to implement a switch that makes it not fall back on lax parsing in the case of an XML wellformedness error. I said no, not because it would be difficult to implement, but because that defeats its entire reason for being.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://diveintomark.org/archives/2008/08/05/placating"&gt;Mark Pilgrim&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/xml"&gt;xml&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/universalfeedparser"&gt;universalfeedparser&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/feeds"&gt;feeds&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/draconian"&gt;draconian&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wellformedness"&gt;wellformedness&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;&lt;/p&gt;



</summary><category term="xml"/><category term="mark-pilgrim"/><category term="universalfeedparser"/><category term="feeds"/><category term="draconian"/><category term="wellformedness"/><category term="python"/></entry><entry><title>Microformats and accessibility: the soap opera that never ends</title><link href="https://simonwillison.net/2008/Jun/29/microformats/#atom-tag" rel="alternate"/><published>2008-06-29T08:44:46+00:00</published><updated>2008-06-29T08:44:46+00:00</updated><id>https://simonwillison.net/2008/Jun/29/microformats/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://diveintomark.org/archives/2008/06/29/microformats-accessibility"&gt;Microformats and accessibility: the soap opera that never ends&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
“Be sure to tune in next week, when we’ll drown a leading accessibility expert to see if she’s a witch.”


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/accessibility"&gt;accessibility&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/funny"&gt;funny&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/microformats"&gt;microformats&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/witch"&gt;witch&lt;/a&gt;&lt;/p&gt;



</summary><category term="accessibility"/><category term="funny"/><category term="mark-pilgrim"/><category term="microformats"/><category term="witch"/></entry><entry><title>goog/useragent/iphoto.js</title><link href="https://simonwillison.net/2008/May/14/iphoto/#atom-tag" rel="alternate"/><published>2008-05-14T21:21:51+00:00</published><updated>2008-05-14T21:21:51+00:00</updated><id>https://simonwillison.net/2008/May/14/iphoto/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://doctype.googlecode.com/svn/trunk/goog/useragent/iphoto.js"&gt;goog/useragent/iphoto.js&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The Goog library includes code to detect the user’s installed version of iPhoto, based on reverse engineering the Mac.com Gallery RSS feeds. This has Mark Pilgrim written all over it.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/goog"&gt;goog&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/googledoctyp"&gt;googledoctyp&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/iphoto"&gt;iphoto&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;&lt;/p&gt;



</summary><category term="goog"/><category term="googledoctyp"/><category term="iphoto"/><category term="javascript"/><category term="mark-pilgrim"/></entry><entry><title>Google Doctype</title><link href="https://simonwillison.net/2008/May/14/doctype/#atom-tag" rel="alternate"/><published>2008-05-14T20:30:27+00:00</published><updated>2008-05-14T20:30:27+00:00</updated><id>https://simonwillison.net/2008/May/14/doctype/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.google.com/doctype/"&gt;Google Doctype&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
So now we know what Mark Pilgrim’s been doing at Google... heading up a project to create an encyclopaedia of web development. The JavaScript UI for browsing it is a bit weird (though you do at least get real pages if you disable JavaScript in your browser).


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/documentation"&gt;documentation&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/googledoctype"&gt;googledoctype&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;&lt;/p&gt;



</summary><category term="documentation"/><category term="google"/><category term="googledoctype"/><category term="mark-pilgrim"/></entry><entry><title>Quoting Mark Pilgrim</title><link href="https://simonwillison.net/2008/Apr/1/wearehughs/#atom-tag" rel="alternate"/><published>2008-04-01T22:58:52+00:00</published><updated>2008-04-01T22:58:52+00:00</updated><id>https://simonwillison.net/2008/Apr/1/wearehughs/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://del.icio.us/wearehugh"&gt;&lt;p&gt;NOTE TO INTERNATIONAL DEVELOPERS: PLEASE DO NOT MAKE SERIOUS ANNOUNCEMENTS ON INTERNET JACKASS DAY.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://del.icio.us/wearehugh"&gt;Mark Pilgrim&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/aprilfools"&gt;aprilfools&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;&lt;/p&gt;



</summary><category term="aprilfools"/><category term="mark-pilgrim"/></entry><entry><title>Quoting Mark Pilgrim</title><link href="https://simonwillison.net/2008/Mar/10/draconian/#atom-tag" rel="alternate"/><published>2008-03-10T14:01:28+00:00</published><updated>2008-03-10T14:01:28+00:00</updated><id>https://simonwillison.net/2008/Mar/10/draconian/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://diveintomark.org/archives/2008/03/09/no-fury-like-dracon-scorned"&gt;&lt;p&gt;For the record, my site is valid HTML 5, except the parts that aren't. My therapist says I shouldn't rely so much on external validation.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://diveintomark.org/archives/2008/03/09/no-fury-like-dracon-scorned"&gt;Mark Pilgrim&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/validation"&gt;validation&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/standards"&gt;standards&lt;/a&gt;&lt;/p&gt;



</summary><category term="mark-pilgrim"/><category term="validation"/><category term="html5"/><category term="standards"/></entry><entry><title>Gmail Greasemonkey API</title><link href="https://simonwillison.net/2007/Nov/7/gmail/#atom-tag" rel="alternate"/><published>2007-11-07T10:38:38+00:00</published><updated>2007-11-07T10:38:38+00:00</updated><id>https://simonwillison.net/2007/Nov/7/gmail/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.google.com/p/gmail-greasemonkey/wiki/GmailGreasemonkey10API"&gt;Gmail Greasemonkey API&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The new version of Gmail includes API hooks for Greasemonkey script authors. The documentation is by Mark Pilgrim, author of Greasemonkey Hacks.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://blog.persistent.info/2007/11/macros-for-new-version-of-gmail.html"&gt;Mihai Parparita&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/gmail"&gt;gmail&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/greasemonkey"&gt;greasemonkey&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mihai-parparita"&gt;mihai-parparita&lt;/a&gt;&lt;/p&gt;



</summary><category term="gmail"/><category term="google"/><category term="greasemonkey"/><category term="javascript"/><category term="mark-pilgrim"/><category term="mihai-parparita"/></entry><entry><title>Quoting Mark Pilgrim</title><link href="https://simonwillison.net/2007/Oct/5/apple/#atom-tag" rel="alternate"/><published>2007-10-05T16:32:49+00:00</published><updated>2007-10-05T16:32:49+00:00</updated><id>https://simonwillison.net/2007/Oct/5/apple/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://diveintomark.org/archives/2007/10/04/if-wishes-were-iphones?retitled"&gt;&lt;p&gt;I thought the big draw for Apple hardware was that "It Just Works."  By breaking it, you must know you’re giving up the "Just Works" factor, so what’s left?  Rounded corners?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://diveintomark.org/archives/2007/10/04/if-wishes-were-iphones?retitled"&gt;Mark Pilgrim&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/apple"&gt;apple&lt;/a&gt;&lt;/p&gt;



</summary><category term="mark-pilgrim"/><category term="apple"/></entry><entry><title>The longdesc lottery</title><link href="https://simonwillison.net/2007/Sep/14/whatwg/#atom-tag" rel="alternate"/><published>2007-09-14T11:44:42+00:00</published><updated>2007-09-14T11:44:42+00:00</updated><id>https://simonwillison.net/2007/Sep/14/whatwg/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.whatwg.org/the-longdesc-lottery"&gt;The longdesc lottery&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Mark Pilgrim is now writing for the WHATWG blog. Here he makes the case for replacing the longdesc attribute with a better solution, based on ten years of developer ignorance and misuse. As always with that site, check the comments for a microcosm of the larger debate.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/accessibility"&gt;accessibility&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html"&gt;html&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/longdesc"&gt;longdesc&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/whatwg"&gt;whatwg&lt;/a&gt;&lt;/p&gt;



</summary><category term="accessibility"/><category term="html"/><category term="html5"/><category term="longdesc"/><category term="mark-pilgrim"/><category term="whatwg"/></entry><entry><title>Silly season</title><link href="https://simonwillison.net/2007/May/2/silly/#atom-tag" rel="alternate"/><published>2007-05-02T20:29:53+00:00</published><updated>2007-05-02T20:29:53+00:00</updated><id>https://simonwillison.net/2007/May/2/silly/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://diveintomark.org/archives/2007/05/02/silly-season"&gt;Silly season&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Mark expresses exactly what I’ve been thinking. The fawning over Silverlight and Apollo is incredibly short sighted.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/apollo"&gt;apollo&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/silverlight"&gt;silverlight&lt;/a&gt;&lt;/p&gt;



</summary><category term="apollo"/><category term="mark-pilgrim"/><category term="silverlight"/></entry><entry><title>Two visions</title><link href="https://simonwillison.net/2007/Mar/20/two/#atom-tag" rel="alternate"/><published>2007-03-20T08:32:03+00:00</published><updated>2007-03-20T08:32:03+00:00</updated><id>https://simonwillison.net/2007/Mar/20/two/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://diveintomark.org/archives/2007/03/19/two-visions"&gt;Two visions&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
It looks like Mark Pilgrim is going to be joining Hixie at Google.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ian-hickson"&gt;ian-hickson&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;&lt;/p&gt;



</summary><category term="google"/><category term="ian-hickson"/><category term="mark-pilgrim"/></entry><entry><title>IE and 2-letter domain-names</title><link href="https://simonwillison.net/2007/Feb/15/ie/#atom-tag" rel="alternate"/><published>2007-02-15T00:33:13+00:00</published><updated>2007-02-15T00:33:13+00:00</updated><id>https://simonwillison.net/2007/Feb/15/ie/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://therealcrisp.xs4all.nl/blog/2007/02/12/ie-and-2-letter-domain-names/"&gt;IE and 2-letter domain-names&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
IE won’t let you set a cookie on XX.YY, where YY is anything other than .pl or .gr. Other browsers have better exception lists.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://diveintomark.org/archives/2007/02/14/links-for-2007-02-14"&gt;Mark Pilgrim&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/cookies"&gt;cookies&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/dns"&gt;dns&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/internet-explorer"&gt;internet-explorer&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;&lt;/p&gt;



</summary><category term="cookies"/><category term="dns"/><category term="internet-explorer"/><category term="mark-pilgrim"/></entry><entry><title>Quoting Mark Pilgrim</title><link href="https://simonwillison.net/2007/Jan/12/sharecroppers/#atom-tag" rel="alternate"/><published>2007-01-12T09:51:00+00:00</published><updated>2007-01-12T09:51:00+00:00</updated><id>https://simonwillison.net/2007/Jan/12/sharecroppers/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://diveintomark.org/archives/2007/01/12/sharecroppers"&gt;&lt;p&gt;Apple doesn't give a damn. Steve Jobs doesn't build platforms, except by accident. He doesn't care about your thriving metropolis. All you independent Mac developers: you're all sharecroppers, and your rent just went up. Way up.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://diveintomark.org/archives/2007/01/12/sharecroppers"&gt;Mark Pilgrim&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/iphone"&gt;iphone&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sharecropping"&gt;sharecropping&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/steve-jobs"&gt;steve-jobs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/apple"&gt;apple&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/macos"&gt;macos&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="iphone"/><category term="sharecropping"/><category term="steve-jobs"/><category term="apple"/><category term="mark-pilgrim"/><category term="macos"/></entry></feed>