<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: jeremy-keith</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/jeremy-keith.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2025-04-07T19:06:16+00:00</updated><author><name>Simon Willison</name></author><entry><title>Note on 7th April 2025</title><link href="https://simonwillison.net/2025/Apr/7/crawlers/#atom-tag" rel="alternate"/><published>2025-04-07T19:06:16+00:00</published><updated>2025-04-07T19:06:16+00:00</updated><id>https://simonwillison.net/2025/Apr/7/crawlers/#atom-tag</id><summary type="html">
    &lt;p&gt;If you're a startup running your own crawlers to gather data for whatever purpose, you should try &lt;em&gt;really hard&lt;/em&gt; not to make the world &lt;a href="https://adactio.com/journal/21831"&gt;a worse place&lt;/a&gt; by driving up costs for the sites you are scraping.&lt;/p&gt;
&lt;p&gt;There's really no excuse for &lt;a href="https://diff.wikimedia.org/2025/04/01/how-crawlers-impact-the-operations-of-the-wikimedia-projects/"&gt;crawling Wikipedia&lt;/a&gt; ("65% of our most expensive traffic comes from bots") when they offer a comprehensive collection &lt;a href="https://dumps.wikimedia.org/"&gt;of bulk download options&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Do better!&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/crawling"&gt;crawling&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeremy-keith"&gt;jeremy-keith&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wikipedia"&gt;wikipedia&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;&lt;/p&gt;



</summary><category term="crawling"/><category term="jeremy-keith"/><category term="wikipedia"/><category term="ai"/><category term="ai-ethics"/></entry><entry><title>Quoting Jeremy Keith</title><link href="https://simonwillison.net/2024/Sep/17/jeremy-keith/#atom-tag" rel="alternate"/><published>2024-09-17T18:15:52+00:00</published><updated>2024-09-17T18:15:52+00:00</updated><id>https://simonwillison.net/2024/Sep/17/jeremy-keith/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://adactio.com/journal/21421"&gt;&lt;p&gt;Something that I confirmed that other conference organisers are also experiencing is last-minute ticket sales. This is something that happened with UX London this year. For most of the year, ticket sales were trickling along. Then in the last few weeks before the event we sold more tickets than we had sold in the six months previously. […]&lt;/p&gt;
&lt;p&gt;When I was in Ireland I had a chat with a friend of mine who works at the Everyman Theatre in Cork. They’re experiencing something similar. So maybe it’s not related to the tech industry specifically.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://adactio.com/journal/21421"&gt;Jeremy Keith&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/conferences"&gt;conferences&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/events"&gt;events&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeremy-keith"&gt;jeremy-keith&lt;/a&gt;&lt;/p&gt;



</summary><category term="conferences"/><category term="events"/><category term="jeremy-keith"/></entry><entry><title>Quoting Jeremy Keith</title><link href="https://simonwillison.net/2024/May/29/jeremy-keith/#atom-tag" rel="alternate"/><published>2024-05-29T11:06:14+00:00</published><updated>2024-05-29T11:06:14+00:00</updated><id>https://simonwillison.net/2024/May/29/jeremy-keith/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://adactio.com/journal/21160"&gt;&lt;p&gt;In their rush to cram in “AI” “features”, it seems to me that many companies don’t actually understand why people use their products. [...] Trust is a precious commodity. It takes a long time to build trust. It takes a short time to destroy it.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://adactio.com/journal/21160"&gt;Jeremy Keith&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/jeremy-keith"&gt;jeremy-keith&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;&lt;/p&gt;



</summary><category term="jeremy-keith"/><category term="ai"/></entry><entry><title>My approach to HTML web components</title><link href="https://simonwillison.net/2024/Apr/30/approach-to-html-web-components/#atom-tag" rel="alternate"/><published>2024-04-30T11:02:48+00:00</published><updated>2024-04-30T11:02:48+00:00</updated><id>https://simonwillison.net/2024/Apr/30/approach-to-html-web-components/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://adactio.com/journal/21078"&gt;My approach to HTML web components&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Some neat patterns here from Jeremy Keith, who is using Web Components extensively for progressive enhancement of existing markup.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The reactivity you get with full-on frameworks [like React and Vue] isn’t something that web components offer. But I do think web components can replace jQuery and other approaches to scripting the DOM.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jeremy likes naming components with their element as a prefix (since all element names must contain at least one hyphen), and suggests building components under the single responsibility principle - so you can do things like &lt;code&gt;&amp;lt;button-confirm&amp;gt;&amp;lt;button-clipboard&amp;gt;&amp;lt;button&amp;gt;...&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;He configures these buttons with &lt;code&gt;data-&lt;/code&gt; attributes and has them communicate with each other using custom events.&lt;/p&gt;
&lt;p&gt;Something I hadn't realized is that since the &lt;code&gt;connectedCallback&lt;/code&gt; function on a custom element is fired any time that element is attached to a page you can &lt;code&gt;fetch()&lt;/code&gt; and then &lt;code&gt;insertHTML&lt;/code&gt; content that includes elements and know that they will initialize themselves without needing any extra logic - great for the kind of pattern encourages by systems such as &lt;a href="https://htmx.org/"&gt;HTMX&lt;/a&gt;.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeremy-keith"&gt;jeremy-keith&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/progressive-enhancement"&gt;progressive-enhancement&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-components"&gt;web-components&lt;/a&gt;&lt;/p&gt;



</summary><category term="javascript"/><category term="jeremy-keith"/><category term="progressive-enhancement"/><category term="web-components"/></entry><entry><title>Supporting logical properties</title><link href="https://simonwillison.net/2022/Oct/1/supporting-logical-properties/#atom-tag" rel="alternate"/><published>2022-10-01T01:03:21+00:00</published><updated>2022-10-01T01:03:21+00:00</updated><id>https://simonwillison.net/2022/Oct/1/supporting-logical-properties/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://adactio.com/journal/19487"&gt;Supporting logical properties&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
A frustrating reminder from Jeremy Keith that Safari is not an evergreen browser: older iOS devices (1st gen iPad Air for example) get stuck on the last iOS version that supports them, which also sticks them with an old version of Safari, which means they will never get support for newer CSS properties such as inline-start and block-end. Jeremy shows how to use the @supports rule to hide this new syntax from those older browsers.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeremy-keith"&gt;jeremy-keith&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/safari"&gt;safari&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/ios"&gt;ios&lt;/a&gt;&lt;/p&gt;



</summary><category term="css"/><category term="jeremy-keith"/><category term="safari"/><category term="web-standards"/><category term="ios"/></entry><entry><title>Going Postel</title><link href="https://simonwillison.net/2011/Feb/9/adactio/#atom-tag" rel="alternate"/><published>2011-02-09T02:18:00+00:00</published><updated>2011-02-09T02:18:00+00:00</updated><id>https://simonwillison.net/2011/Feb/9/adactio/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://adactio.com/journal/4346/"&gt;Going Postel&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Jeremy points out that one of the many disadvantages of publishing JavaScript dependent content on the Web is that a single typo can render your entire site unusable.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ajax"&gt;ajax&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeremy-keith"&gt;jeremy-keith&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/urls"&gt;urls&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gawker"&gt;gawker&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/hashbanghell"&gt;hashbanghell&lt;/a&gt;&lt;/p&gt;



</summary><category term="ajax"/><category term="jeremy-keith"/><category term="urls"/><category term="recovered"/><category term="gawker"/><category term="hashbanghell"/></entry><entry><title>Quoting Jared Spool</title><link href="https://simonwillison.net/2009/Jun/22/amazon/#atom-tag" rel="alternate"/><published>2009-06-22T17:13:43+00:00</published><updated>2009-06-22T17:13:43+00:00</updated><id>https://simonwillison.net/2009/Jun/22/amazon/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://adactio.com/journal/1586"&gt;&lt;p&gt;You can buy an iPod nano on Apple, Best Buy, etc. for about $149. Amazon sells it for $134. That’s probably cost price. It turns out that Amazon can sell almost everything at cost price and still make a product because of volume. It’s all down to the Negative Operating Cycle. Amazon turns over its inventory every 20 days whereas Best Buy takes 74 days. Standard retail term payments take 45 days. So Best Buy is in debt between day 45 and day 74. Amazon, on the other hand, are sitting on cash between day 20 and day 45. In that time, they can invest that money. That’s where their profit comes from.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://adactio.com/journal/1586"&gt;Jared Spool&lt;/a&gt;, via Jeremy Keith&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/amazon"&gt;amazon&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/aneventapart"&gt;aneventapart&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/bestbuy"&gt;bestbuy&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/investing"&gt;investing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jared-spool"&gt;jared-spool&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeremy-keith"&gt;jeremy-keith&lt;/a&gt;&lt;/p&gt;



</summary><category term="amazon"/><category term="aneventapart"/><category term="bestbuy"/><category term="investing"/><category term="jared-spool"/><category term="jeremy-keith"/></entry><entry><title>Revving up</title><link href="https://simonwillison.net/2009/Apr/12/adactio/#atom-tag" rel="alternate"/><published>2009-04-12T12:29:25+00:00</published><updated>2009-04-12T12:29:25+00:00</updated><id>https://simonwillison.net/2009/Apr/12/adactio/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://adactio.com/journal/1568"&gt;Revving up&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Jeremy Keith advocates adding the revcanonical attribute to regular A elements as well as / instead of hiding it in the head of the document, following the microformats design principle that invisible metadata is less valuable than augmenting visible links. I’ve updated my shorten bookmarklet to handle this case.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/jeremy-keith"&gt;jeremy-keith&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/metadata"&gt;metadata&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/microformats"&gt;microformats&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/revcanonical"&gt;revcanonical&lt;/a&gt;&lt;/p&gt;



</summary><category term="jeremy-keith"/><category term="metadata"/><category term="microformats"/><category term="revcanonical"/></entry><entry><title>Antipatterns for sale</title><link href="https://simonwillison.net/2009/Jan/2/adactio/#atom-tag" rel="alternate"/><published>2009-01-02T10:48:17+00:00</published><updated>2009-01-02T10:48:17+00:00</updated><id>https://simonwillison.net/2009/Jan/2/adactio/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://adactio.com/journal/1538"&gt;Antipatterns for sale&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Twply collected over 800 Twitter usernames and passwords (OAuth can’t arrive soon enough) and was promptly auctioned off on SitePoint to the highest bidder.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/jeremy-keith"&gt;jeremy-keith&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/oauth"&gt;oauth&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/passwordantipattern"&gt;passwordantipattern&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/passwords"&gt;passwords&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sitepoint"&gt;sitepoint&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/twitter"&gt;twitter&lt;/a&gt;&lt;/p&gt;



</summary><category term="jeremy-keith"/><category term="oauth"/><category term="passwordantipattern"/><category term="passwords"/><category term="security"/><category term="sitepoint"/><category term="twitter"/></entry><entry><title>Broken</title><link href="https://simonwillison.net/2008/Jan/22/adactio/#atom-tag" rel="alternate"/><published>2008-01-22T18:42:37+00:00</published><updated>2008-01-22T18:42:37+00:00</updated><id>https://simonwillison.net/2008/Jan/22/adactio/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://adactio.com/journal/1402/"&gt;Broken&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Jeremy highlights the fly in the ointment: if you want IE 8 to behave like IE 8 (and not pretend to be IE 7), you HAVE to include the X-UA-Compatible header.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ie8"&gt;ie8&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeremy-keith"&gt;jeremy-keith&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/xuacompatible"&gt;xuacompatible&lt;/a&gt;&lt;/p&gt;



</summary><category term="ie8"/><category term="jeremy-keith"/><category term="web-standards"/><category term="xuacompatible"/></entry><entry><title>Hacky holidays on OS X</title><link href="https://simonwillison.net/2007/Dec/29/adactio/#atom-tag" rel="alternate"/><published>2007-12-29T11:49:15+00:00</published><updated>2007-12-29T11:49:15+00:00</updated><id>https://simonwillison.net/2007/Dec/29/adactio/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://adactio.com/journal/1395"&gt;Hacky holidays on OS X&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Jeremy Keith documents how to get PHP 5 and Apache 2 virtual hosts running on Leopard.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/apache"&gt;apache&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/apache2"&gt;apache2&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeremy-keith"&gt;jeremy-keith&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/leopard"&gt;leopard&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/macos"&gt;macos&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/php"&gt;php&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/php5"&gt;php5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/virtualhosts"&gt;virtualhosts&lt;/a&gt;&lt;/p&gt;



</summary><category term="apache"/><category term="apache2"/><category term="jeremy-keith"/><category term="leopard"/><category term="macos"/><category term="php"/><category term="php5"/><category term="virtualhosts"/></entry><entry><title>Ignorance and inspiration</title><link href="https://simonwillison.net/2007/Oct/15/adactio/#atom-tag" rel="alternate"/><published>2007-10-15T22:47:11+00:00</published><updated>2007-10-15T22:47:11+00:00</updated><id>https://simonwillison.net/2007/Oct/15/adactio/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://adactio.com/journal/1359/"&gt;Ignorance and inspiration&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I’m pretty gobsmacked at the levels of ignorance about web accessibility out there—it’s not that hard people! I’m obviously more out of touch with mainstream developers than I thought; I was under the impression that people had generally got the message.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/accessibility"&gt;accessibility&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ignorance"&gt;ignorance&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeremy-keith"&gt;jeremy-keith&lt;/a&gt;&lt;/p&gt;



</summary><category term="accessibility"/><category term="ignorance"/><category term="jeremy-keith"/></entry><entry><title>The password anti-pattern</title><link href="https://simonwillison.net/2007/Oct/12/adactio/#atom-tag" rel="alternate"/><published>2007-10-12T09:25:25+00:00</published><updated>2007-10-12T09:25:25+00:00</updated><id>https://simonwillison.net/2007/Oct/12/adactio/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://adactio.com/journal/1357"&gt;The password anti-pattern&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
What I don’t understand is why Google / Yahoo! / other webmail providers haven’t just deployed a simple OAuth-style API for accessing the address book. Sites have been scraping them for years anyway; surely it’s better to offer an official API than continue to see users hand out their passwords?


    &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/jeremy-keith"&gt;jeremy-keith&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/oauth"&gt;oauth&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/passwords"&gt;passwords&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/phishing"&gt;phishing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/yahoo"&gt;yahoo&lt;/a&gt;&lt;/p&gt;



</summary><category term="gmail"/><category term="google"/><category term="jeremy-keith"/><category term="oauth"/><category term="passwords"/><category term="phishing"/><category term="yahoo"/></entry><entry><title>Microformats in Google Maps</title><link href="https://simonwillison.net/2007/Jul/31/official/#atom-tag" rel="alternate"/><published>2007-07-31T23:36:17+00:00</published><updated>2007-07-31T23:36:17+00:00</updated><id>https://simonwillison.net/2007/Jul/31/official/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://googlemapsapi.blogspot.com/2007/06/microformats-in-google-maps.html"&gt;Microformats in Google Maps&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
No doubt thanks to the influence of Kevin Marks.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://adactio.com/journal/1325"&gt;Jeremy Keith&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google-maps"&gt;google-maps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeremy-keith"&gt;jeremy-keith&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/kevin-marks"&gt;kevin-marks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/microformats"&gt;microformats&lt;/a&gt;&lt;/p&gt;



</summary><category term="google"/><category term="google-maps"/><category term="jeremy-keith"/><category term="kevin-marks"/><category term="microformats"/></entry><entry><title>The sliding scale</title><link href="https://simonwillison.net/2007/Apr/25/dom/#atom-tag" rel="alternate"/><published>2007-04-25T19:09:44+00:00</published><updated>2007-04-25T19:09:44+00:00</updated><id>https://simonwillison.net/2007/Apr/25/dom/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://domscripting.com/blog/display/104"&gt;The sliding scale&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Jeremy’s write-up of my panel at the Web 2.0 Expo, with illustrative photograph.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ajax"&gt;ajax&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeremy-keith"&gt;jeremy-keith&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/speaking"&gt;speaking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web2expo"&gt;web2expo&lt;/a&gt;&lt;/p&gt;



</summary><category term="ajax"/><category term="javascript"/><category term="jeremy-keith"/><category term="speaking"/><category term="web2expo"/></entry><entry><title>The website to web application gradient</title><link href="https://simonwillison.net/2007/Apr/20/frameworkers/#atom-tag" rel="alternate"/><published>2007-04-20T00:30:45+00:00</published><updated>2007-04-20T00:30:45+00:00</updated><id>https://simonwillison.net/2007/Apr/20/frameworkers/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.flickr.com/photos/74105777@N00/464449077/"&gt;The website to web application gradient&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Jeremy snapped this cunning illustration at my JavaScript Libraries panel at the Web 2.0 Expo.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/alex-russell"&gt;alex-russell&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/bret-taylor"&gt;bret-taylor&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/dojo"&gt;dojo&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/flickr"&gt;flickr&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gwt"&gt;gwt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeremy-keith"&gt;jeremy-keith&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/john-resig"&gt;john-resig&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jquery"&gt;jquery&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/matt-sweeney"&gt;matt-sweeney&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web2expo"&gt;web2expo&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web2expo07"&gt;web2expo07&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/yui"&gt;yui&lt;/a&gt;&lt;/p&gt;



</summary><category term="alex-russell"/><category term="bret-taylor"/><category term="dojo"/><category term="flickr"/><category term="gwt"/><category term="javascript"/><category term="jeremy-keith"/><category term="john-resig"/><category term="jquery"/><category term="matt-sweeney"/><category term="web2expo"/><category term="web2expo07"/><category term="yui"/></entry></feed>