<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: tutorial</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/tutorial.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2018-05-08T17:22:52+00:00</updated><author><name>Simon Willison</name></author><entry><title>mendoza-trees-workshop</title><link href="https://simonwillison.net/2018/May/8/mendoza-trees-workshop/#atom-tag" rel="alternate"/><published>2018-05-08T17:22:52+00:00</published><updated>2018-05-08T17:22:52+00:00</updated><id>https://simonwillison.net/2018/May/8/mendoza-trees-workshop/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/simonw/mendoza-trees-workshop"&gt;mendoza-trees-workshop&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Eventbrite Argentina has an academy program to train new Python/Django developers. I presented a workshop there this morning showing how Django and Jupyter can be used together to iterate on a project. Since the session was primarily about demonstrating Jupyter it was mostly live-coding, but the joy of Jupyter is that at the end of a workshop you can go back and add inline commentary to the notebooks that you used. In putting together the workshop I learned about the django_extensions “/manage.py shell_plus --notebook” command—it’s brilliant! It launches Jupyter in a way that lets you directly import your Django models without having to mess around with DJANGO_SETTINGS_MODULE.

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


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/speaking"&gt;speaking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/my-talks"&gt;my-talks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/eventbrite"&gt;eventbrite&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jupyter"&gt;jupyter&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="speaking"/><category term="my-talks"/><category term="tutorial"/><category term="eventbrite"/><category term="jupyter"/></entry><entry><title>How to Get Sharp Telephoto Images</title><link href="https://simonwillison.net/2009/Aug/26/telephoto/#atom-tag" rel="alternate"/><published>2009-08-26T08:43:50+00:00</published><updated>2009-08-26T08:43:50+00:00</updated><id>https://simonwillison.net/2009/Aug/26/telephoto/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.lensrentals.com/news/view?permalink=how-to-get-sharp-telephoto-images"&gt;How to Get Sharp Telephoto Images&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Excellent tutorial.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/photography"&gt;photography&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/telephoto"&gt;telephoto&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;&lt;/p&gt;



</summary><category term="photography"/><category term="telephoto"/><category term="tutorial"/></entry><entry><title>Rabbits and warrens</title><link href="https://simonwillison.net/2009/Apr/7/rabbits/#atom-tag" rel="alternate"/><published>2009-04-07T09:13:39+00:00</published><updated>2009-04-07T09:13:39+00:00</updated><id>https://simonwillison.net/2009/Apr/7/rabbits/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blogs.digitar.com/jjww/2009/01/rabbits-and-warrens/"&gt;Rabbits and warrens&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Handy tutorial introduction to using RabbitMQ and AMQP with Python.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/amqp"&gt;amqp&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/message-queues"&gt;message-queues&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/queues"&gt;queues&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rabbitmq"&gt;rabbitmq&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;&lt;/p&gt;



</summary><category term="amqp"/><category term="message-queues"/><category term="python"/><category term="queues"/><category term="rabbitmq"/><category term="tutorial"/></entry><entry><title>Blob Sallad - canvas tag and JavaScript physics simulation experiment</title><link href="https://simonwillison.net/2008/Jan/26/blob/#atom-tag" rel="alternate"/><published>2008-01-26T12:25:06+00:00</published><updated>2008-01-26T12:25:06+00:00</updated><id>https://simonwillison.net/2008/Jan/26/blob/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://dev.opera.com/articles/view/blob-sallad-canvas-tag-and-javascrip/"&gt;Blob Sallad - canvas tag and JavaScript physics simulation experiment&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Björn Lindberg provides a detailed code walkthrough of his brilliant canvas demo, inspired by Loco Rocco.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/bjornlindberg"&gt;bjornlindberg&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/canvas"&gt;canvas&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/locorocco"&gt;locorocco&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/opera"&gt;opera&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/physics"&gt;physics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;&lt;/p&gt;



</summary><category term="bjornlindberg"/><category term="canvas"/><category term="javascript"/><category term="locorocco"/><category term="opera"/><category term="physics"/><category term="tutorial"/></entry><entry><title>Two-Faced Django</title><link href="https://simonwillison.net/2007/Dec/14/irrational/#atom-tag" rel="alternate"/><published>2007-12-14T14:44:42+00:00</published><updated>2007-12-14T14:44:42+00:00</updated><id>https://simonwillison.net/2007/Dec/14/irrational/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.lethain.com/entry/2007/dec/04/two-faced-django-part-1-building-project-exists-si/"&gt;Two-Faced Django&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Excellent Django tutorial by Will Larson that shows how to build a polling application with an interface both on the Web and in Facebook. Also touches on unit testing and Ajax using jQuery.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ajax"&gt;ajax&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/facebook"&gt;facebook&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jquery"&gt;jquery&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pyfacebook"&gt;pyfacebook&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;&lt;/p&gt;



</summary><category term="ajax"/><category term="django"/><category term="facebook"/><category term="javascript"/><category term="jquery"/><category term="pyfacebook"/><category term="python"/><category term="tutorial"/></entry><entry><title>How to make Ajax work for you</title><link href="https://simonwillison.net/2007/Nov/7/ajax/#atom-tag" rel="alternate"/><published>2007-11-07T10:35:21+00:00</published><updated>2007-11-07T10:35:21+00:00</updated><id>https://simonwillison.net/2007/Nov/7/ajax/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.slideshare.net/simon/how-to-make-ajax-work-for-you/"&gt;How to make Ajax work for you&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Slides from my three hour Ajax tutorial, presented at Web 2.0 Expo Berlin on Monday.


    &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/speaking"&gt;speaking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/my-talks"&gt;my-talks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web2expoberlin"&gt;web2expoberlin&lt;/a&gt;&lt;/p&gt;



</summary><category term="ajax"/><category term="javascript"/><category term="speaking"/><category term="my-talks"/><category term="tutorial"/><category term="web2expoberlin"/></entry><entry><title>Advanced Django</title><link href="https://simonwillison.net/2007/Sep/8/advanced/#atom-tag" rel="alternate"/><published>2007-09-08T13:00:06+00:00</published><updated>2007-09-08T13:00:06+00:00</updated><id>https://simonwillison.net/2007/Sep/8/advanced/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.slideshare.net/simon/advanced-django/"&gt;Advanced Django&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Slides from my hour long tutorial at PyCon UK this morning. Most of the material was adapted from OSCON, but I also added a new section covering newforms.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/newforms"&gt;newforms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pyconuk"&gt;pyconuk&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pyconuk2007"&gt;pyconuk2007&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/slides"&gt;slides&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/slideshare"&gt;slideshare&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/my-talks"&gt;my-talks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="newforms"/><category term="pyconuk"/><category term="pyconuk2007"/><category term="python"/><category term="slides"/><category term="slideshare"/><category term="my-talks"/><category term="tutorial"/></entry><entry><title>Amazon EC2 Basics For Python Programmers</title><link href="https://simonwillison.net/2007/Sep/3/james/#atom-tag" rel="alternate"/><published>2007-09-03T18:20:25+00:00</published><updated>2007-09-03T18:20:25+00:00</updated><id>https://simonwillison.net/2007/Sep/3/james/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://jimmyg.org/2007/09/01/amazon-ec2-for-people-who-prefer-debian-and-python-over-fedora-and-java/"&gt;Amazon EC2 Basics For Python Programmers&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Detailed introduction and tutorial from James Gardner.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/amazon"&gt;amazon&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ec2"&gt;ec2&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/james-gardner"&gt;james-gardner&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;&lt;/p&gt;



</summary><category term="amazon"/><category term="ec2"/><category term="james-gardner"/><category term="python"/><category term="tutorial"/></entry><entry><title>Django and the iPhone tutorial</title><link href="https://simonwillison.net/2007/Aug/21/django/#atom-tag" rel="alternate"/><published>2007-08-21T11:34:34+00:00</published><updated>2007-08-21T11:34:34+00:00</updated><id>https://simonwillison.net/2007/Aug/21/django/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://livinghardknox.com/2007/08/20/django-and-the-iphone/"&gt;Django and the iPhone tutorial&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
How to install SSH, Python and Django on your iPhone and get Django running against the call database. Less complicated than I expected.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/iphone"&gt;iphone&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jay-baird"&gt;jay-baird&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="iphone"/><category term="jay-baird"/><category term="tutorial"/></entry><entry><title>Thread Synchronization Mechanisms in Python</title><link href="https://simonwillison.net/2007/Jul/29/thread/#atom-tag" rel="alternate"/><published>2007-07-29T21:32:01+00:00</published><updated>2007-07-29T21:32:01+00:00</updated><id>https://simonwillison.net/2007/Jul/29/thread/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://effbot.org/zone/thread-synchronization.htm"&gt;Thread Synchronization Mechanisms in Python&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Locks, RLocks, Semaphores, Events and Conditions as explained by Fredrik Lundh.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/conditions"&gt;conditions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/effbot"&gt;effbot&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/events"&gt;events&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/fredrik-lundh"&gt;fredrik-lundh&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/locks"&gt;locks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rlocks"&gt;rlocks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/semaphores"&gt;semaphores&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/threads"&gt;threads&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;&lt;/p&gt;



</summary><category term="conditions"/><category term="effbot"/><category term="events"/><category term="fredrik-lundh"/><category term="locks"/><category term="python"/><category term="rlocks"/><category term="semaphores"/><category term="threads"/><category term="tutorial"/></entry><entry><title>Django Master Class</title><link href="https://simonwillison.net/2007/Jul/24/django/#atom-tag" rel="alternate"/><published>2007-07-24T15:20:44+00:00</published><updated>2007-07-24T15:20:44+00:00</updated><id>https://simonwillison.net/2007/Jul/24/django/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://toys.jacobian.org/presentations/2007/oscon/tutorial/"&gt;Django Master Class&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Notes and slides from the OSCON tutorial I gave yesterday with Jacob Kaplan-Moss and Jeremy Dunck.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jacob-kaplan-moss"&gt;jacob-kaplan-moss&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeremy-dunck"&gt;jeremy-dunck&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/oscon"&gt;oscon&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/oscon07"&gt;oscon07&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/speaking"&gt;speaking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/my-talks"&gt;my-talks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="jacob-kaplan-moss"/><category term="jeremy-dunck"/><category term="oscon"/><category term="oscon07"/><category term="python"/><category term="speaking"/><category term="my-talks"/><category term="tutorial"/></entry><entry><title>Building Brickslayer</title><link href="https://simonwillison.net/2007/Jul/22/building/#atom-tag" rel="alternate"/><published>2007-07-22T21:28:23+00:00</published><updated>2007-07-22T21:28:23+00:00</updated><id>https://simonwillison.net/2007/Jul/22/building/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://javascriptgamer.com/brickslayer/"&gt;Building Brickslayer&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
New tutorial from Michal Wallace on building games in JavaScript using Prototype.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/brickslayer"&gt;brickslayer&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/michal-wallace"&gt;michal-wallace&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/prototype-js"&gt;prototype-js&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;&lt;/p&gt;



</summary><category term="brickslayer"/><category term="javascript"/><category term="michal-wallace"/><category term="prototype-js"/><category term="tutorial"/></entry><entry><title>A Recipe for OpenID-Enabling Your Site</title><link href="https://simonwillison.net/2007/Jul/18/recipe/#atom-tag" rel="alternate"/><published>2007-07-18T07:50:04+00:00</published><updated>2007-07-18T07:50:04+00:00</updated><id>https://simonwillison.net/2007/Jul/18/recipe/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.plaxo.com/api/openid_recipe"&gt;A Recipe for OpenID-Enabling Your Site&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Detailed guide to setting your site up as an OpenID consumer from Plaxo, who just launched their OpenID implementation. It basically describes the design I’m using for the next release of django-openid.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/djangoopenid"&gt;djangoopenid&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openid"&gt;openid&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/plaxo"&gt;plaxo&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="djangoopenid"/><category term="openid"/><category term="plaxo"/><category term="tutorial"/></entry><entry><title>More Django (likely more than is healthy)</title><link href="https://simonwillison.net/2007/Mar/1/jacob/#atom-tag" rel="alternate"/><published>2007-03-01T23:08:39+00:00</published><updated>2007-03-01T23:08:39+00:00</updated><id>https://simonwillison.net/2007/Mar/1/jacob/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://toys.jacobian.org/presentations/2007/pycon/tutorials/advanced/"&gt;More Django (likely more than is healthy)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Jacob’s advanced Django tutorial from PyCon. I really like the template he’s using to present the slides and notes.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jacob-kaplan-moss"&gt;jacob-kaplan-moss&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/keynote"&gt;keynote&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pycon"&gt;pycon&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="jacob-kaplan-moss"/><category term="keynote"/><category term="pycon"/><category term="tutorial"/></entry><entry><title>Tutorials on Microformats</title><link href="https://simonwillison.net/2007/Feb/14/tutorials/#atom-tag" rel="alternate"/><published>2007-02-14T16:45:32+00:00</published><updated>2007-02-14T16:45:32+00:00</updated><id>https://simonwillison.net/2007/Feb/14/tutorials/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.xfront.com/microformats/"&gt;Tutorials on Microformats&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Roger Costello’s 11 tutorials on microformats, covering hCard, hCalendar, hReview and more.


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



</summary><category term="microformats"/><category term="tutorial"/></entry><entry><title>XForms in Firefox</title><link href="https://simonwillison.net/2007/Jan/26/xforms/#atom-tag" rel="alternate"/><published>2007-01-26T09:59:45+00:00</published><updated>2007-01-26T09:59:45+00:00</updated><id>https://simonwillison.net/2007/Jan/26/xforms/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www-128.ibm.com/developerworks/xml/library/x-xformsfirefox/"&gt;XForms in Firefox&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Practical tutorial on taking advantage of the Firefox XForms plugin, sadly not yet bundled with the browser itself.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://www.dehora.net/journal/2007/01/xforms_in_firefox.html"&gt;Bill de hÓra&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/firefox"&gt;firefox&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xforms"&gt;xforms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xml"&gt;xml&lt;/a&gt;&lt;/p&gt;



</summary><category term="firefox"/><category term="tutorial"/><category term="xforms"/><category term="xml"/></entry><entry><title>AJAX Debugging with Firebug</title><link href="https://simonwillison.net/2007/Jan/12/firebug/#atom-tag" rel="alternate"/><published>2007-01-12T11:21:13+00:00</published><updated>2007-01-12T11:21:13+00:00</updated><id>https://simonwillison.net/2007/Jan/12/firebug/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.ddj.com/dept/debug/196802787"&gt;AJAX Debugging with Firebug&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Great Firebug tutorial from creator Joe Hewitt himself. I didn’t know you could trigger profiling from your own code using console.profile() / console.profileEnd().


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ajax"&gt;ajax&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/drdobbs"&gt;drdobbs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/firebug"&gt;firebug&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/joe-hewitt"&gt;joe-hewitt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;&lt;/p&gt;



</summary><category term="ajax"/><category term="drdobbs"/><category term="firebug"/><category term="javascript"/><category term="joe-hewitt"/><category term="tutorial"/></entry><entry><title>Greasemonkey: Hacking the Web with JavaScript</title><link href="https://simonwillison.net/2005/Jan/8/greasemonkey-tutorial/#atom-tag" rel="alternate"/><published>2005-01-08T12:38:21+00:00</published><updated>2005-01-08T12:38:21+00:00</updated><id>https://simonwillison.net/2005/Jan/8/greasemonkey-tutorial/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://javascript.weblogsinc.com/entry/1234000273026520/"&gt;Greasemonkey: Hacking the Web with JavaScript&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Greasemonkey rocks! Here’s a simple tutorial from Michael Moncur.


    &lt;p&gt;Tags: &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/michael-moncur"&gt;michael-moncur&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorial"&gt;tutorial&lt;/a&gt;&lt;/p&gt;



</summary><category term="greasemonkey"/><category term="javascript"/><category term="michael-moncur"/><category term="tutorial"/></entry></feed>