<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: forms</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/forms.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2024-04-22T22:01:22+00:00</updated><author><name>Simon Willison</name></author><entry><title>timpaul/form-extractor-prototype</title><link href="https://simonwillison.net/2024/Apr/22/form-extractor-prototype/#atom-tag" rel="alternate"/><published>2024-04-22T22:01:22+00:00</published><updated>2024-04-22T22:01:22+00:00</updated><id>https://simonwillison.net/2024/Apr/22/form-extractor-prototype/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/timpaul/form-extractor-prototype"&gt;timpaul/form-extractor-prototype&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Tim Paul, Head of Interaction Design at the UK's Government Digital Service, published this brilliant prototype built on top of Claude 3 Opus.&lt;/p&gt;
&lt;p&gt;The video shows what it can do. Give it an image of a form and it will extract the form fields and use them to create a GDS-style multi-page interactive form, using their &lt;a href="https://design-system.service.gov.uk/"&gt;GOV.UK design system&lt;/a&gt; and &lt;a href="https://www.npmjs.com/package/govuk-frontend"&gt;govuk-frontend&lt;/a&gt; npm package.&lt;/p&gt;
&lt;p&gt;It works for both hand-drawn napkin illustrations and images of existing paper forms.&lt;/p&gt;
&lt;p&gt;The bulk of the prompting logic is the schema definition in &lt;a href="https://github.com/timpaul/form-extractor-prototype/blob/5984b5ae629e20222c3e7e6f08c1e033ecaec79f/data/extract-form-questions-anthropic.json"&gt;data/extract-form-questions.json&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I'm always excited to see applications built on LLMs that go beyond the chatbot UI. This is a great example of exactly that.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/timpaul/status/1781184488485056777"&gt;@timpaul&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/forms"&gt;forms&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/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gov-uk"&gt;gov-uk&lt;/a&gt;&lt;/p&gt;



</summary><category term="forms"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="claude"/><category term="gov-uk"/></entry><entry><title>react-jsonschema-form</title><link href="https://simonwillison.net/2018/Apr/23/react-jsonschema-form/#atom-tag" rel="alternate"/><published>2018-04-23T21:38:10+00:00</published><updated>2018-04-23T21:38:10+00:00</updated><id>https://simonwillison.net/2018/Apr/23/react-jsonschema-form/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/mozilla-services/react-jsonschema-form"&gt;react-jsonschema-form&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Exciting library from the Mozilla Services team: given a JSON Schema definition, react-jsonschema-form can produce a cleanly designed React-powered form for adding and editing data that matches that schema. Includes support for adding multiple items in a nested array, re-ordering them, custom form widgets and more.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/cms"&gt;cms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/forms"&gt;forms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/json"&gt;json&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jsonschema"&gt;jsonschema&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mozilla"&gt;mozilla&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/react"&gt;react&lt;/a&gt;&lt;/p&gt;



</summary><category term="cms"/><category term="forms"/><category term="json"/><category term="jsonschema"/><category term="mozilla"/><category term="react"/></entry><entry><title>Instapaper requiring email and passwords for new accounts</title><link href="https://simonwillison.net/2010/Dec/15/instapaper/#atom-tag" rel="alternate"/><published>2010-12-15T20:35:00+00:00</published><updated>2010-12-15T20:35:00+00:00</updated><id>https://simonwillison.net/2010/Dec/15/instapaper/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.instapaper.com/post/2318776738"&gt;Instapaper requiring email and passwords for new accounts&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Instapaper are changing from their novel “enter a username or email address, only enter a password if you really want one” registration scheme to a more traditional email and password required model. Messing with registration forms is a risky business—in this case, the non-obvious support issues that resulted were a net negative.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/forms"&gt;forms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/instapaper"&gt;instapaper&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/registration"&gt;registration&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/usability"&gt;usability&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;&lt;/p&gt;



</summary><category term="forms"/><category term="instapaper"/><category term="registration"/><category term="usability"/><category term="recovered"/></entry><entry><title>Styling buttons to look like links</title><link href="https://simonwillison.net/2009/Jun/10/styling/#atom-tag" rel="alternate"/><published>2009-06-10T02:11:30+00:00</published><updated>2009-06-10T02:11:30+00:00</updated><id>https://simonwillison.net/2009/Jun/10/styling/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://natbat.net/2009/Jun/10/styling-buttons-as-links/"&gt;Styling buttons to look like links&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Nat has a neat trick for styling submit buttons to look like regular links—so there’s absolutely no excuse for using a “delete” link when you should be using a POST request.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/buttons"&gt;buttons&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/forms"&gt;forms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/getpost"&gt;getpost&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/http"&gt;http&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/links"&gt;links&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/natalie-downe"&gt;natalie-downe&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/post"&gt;post&lt;/a&gt;&lt;/p&gt;



</summary><category term="buttons"/><category term="css"/><category term="forms"/><category term="getpost"/><category term="http"/><category term="links"/><category term="natalie-downe"/><category term="post"/></entry><entry><title>newforms-admin branch has been merged into trunk</title><link href="https://simonwillison.net/2008/Jul/20/merge/#atom-tag" rel="alternate"/><published>2008-07-20T23:17:11+00:00</published><updated>2008-07-20T23:17:11+00:00</updated><id>https://simonwillison.net/2008/Jul/20/merge/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://groups.google.com/group/django-users/browse_thread/thread/53ace41d27dfa7d9"&gt;newforms-admin branch has been merged into trunk&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Congrats to Brian Rosner for the merge. django.newforms has been renamed to django.forms as well—1.0 grows ever closer.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/brian-rosner"&gt;brian-rosner&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django-admin"&gt;django-admin&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/forms"&gt;forms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/merge"&gt;merge&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/newformsadmin"&gt;newformsadmin&lt;/a&gt;&lt;/p&gt;



</summary><category term="brian-rosner"/><category term="django"/><category term="django-admin"/><category term="forms"/><category term="merge"/><category term="newformsadmin"/></entry><entry><title>Browser Uploads to S3 using HTML POST Forms</title><link href="https://simonwillison.net/2008/Jun/27/amazon/#atom-tag" rel="alternate"/><published>2008-06-27T12:11:28+00:00</published><updated>2008-06-27T12:11:28+00:00</updated><id>https://simonwillison.net/2008/Jun/27/amazon/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1434"&gt;Browser Uploads to S3 using HTML POST Forms&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I didn’t know you could do this: create a regular HTML form that gives people permission to upload direct to your own S3 bucket, using a signed JSON policy statement in a hidden form field to prevent third parties from abusing your S3 account.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/amazon"&gt;amazon&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/aws"&gt;aws&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/forms"&gt;forms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/json"&gt;json&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/post"&gt;post&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/s3"&gt;s3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/signing"&gt;signing&lt;/a&gt;&lt;/p&gt;



</summary><category term="amazon"/><category term="aws"/><category term="forms"/><category term="json"/><category term="post"/><category term="s3"/><category term="signing"/></entry><entry><title>Primary &amp; Secondary Actions in Web Forms</title><link href="https://simonwillison.net/2007/Sep/4/lukew/#atom-tag" rel="alternate"/><published>2007-09-04T02:52:39+00:00</published><updated>2007-09-04T02:52:39+00:00</updated><id>https://simonwillison.net/2007/Sep/4/lukew/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.lukew.com/resources/articles/PSactions.asp"&gt;Primary &amp;amp; Secondary Actions in Web Forms&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Fascinating results from an eye tracking study on the placement of “Submit” and “Cancel” buttons—one layout was a whole six seconds slower than the others. Luke Wroblewski’s “Web Form Design Best Practices” book looks like it will be excellent.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/design"&gt;design&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/eyetracking"&gt;eyetracking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/formdesign"&gt;formdesign&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/forms"&gt;forms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/luke-wroblewski"&gt;luke-wroblewski&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/usability"&gt;usability&lt;/a&gt;&lt;/p&gt;



</summary><category term="design"/><category term="eyetracking"/><category term="formdesign"/><category term="forms"/><category term="luke-wroblewski"/><category term="usability"/></entry><entry><title>Dynamic Help in Web Forms</title><link href="https://simonwillison.net/2007/Aug/7/dynamic/#atom-tag" rel="alternate"/><published>2007-08-07T16:01:04+00:00</published><updated>2007-08-07T16:01:04+00:00</updated><id>https://simonwillison.net/2007/Aug/7/dynamic/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.uxmatters.com/MT/archives/000191.php"&gt;Dynamic Help in Web Forms&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Luke Wroblewski catalogues patterns for providing contextual help.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/forms"&gt;forms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/help"&gt;help&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/luke-wroblewski"&gt;luke-wroblewski&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/usability"&gt;usability&lt;/a&gt;&lt;/p&gt;



</summary><category term="forms"/><category term="help"/><category term="luke-wroblewski"/><category term="usability"/></entry><entry><title>Personal names around the world</title><link href="https://simonwillison.net/2007/Jul/19/ishida/#atom-tag" rel="alternate"/><published>2007-07-19T12:54:46+00:00</published><updated>2007-07-19T12:54:46+00:00</updated><id>https://simonwillison.net/2007/Jul/19/ishida/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://people.w3.org/rishida/blog/?p=100"&gt;Personal names around the world&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I’ve always felt slightly uncomfortable about firstname/lastname fields in forms. Now I know why.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/forms"&gt;forms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/richard-ishida"&gt;richard-ishida&lt;/a&gt;&lt;/p&gt;



</summary><category term="forms"/><category term="i18n"/><category term="richard-ishida"/></entry><entry><title>Form Hijack</title><link href="https://simonwillison.net/2006/Mar/21/form/#atom-tag" rel="alternate"/><published>2006-03-21T10:43:55+00:00</published><updated>2006-03-21T10:43:55+00:00</updated><id>https://simonwillison.net/2006/Mar/21/form/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.hedgerwow.com/360/dhtml/form_hijack/demo.php"&gt;Form Hijack&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Neat unobtrusive JavaScript trick—use document.onclick to catch events before page has loaded.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://blog.360.yahoo.com/hedgerwow?p=167"&gt;HedgerWow&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/forms"&gt;forms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;&lt;/p&gt;



</summary><category term="forms"/><category term="javascript"/></entry></feed>