Welcome to the subsite!

This part of the site contains assorted articles and other works in progress.

If you want to track changes to this subsite, there’s an RSS feed listing all recent changes.

For more stuff, check the Python Standard Library, Python Imaging Handbook, and An Introduction to Tkinter subsites.


Overviews (15)

The aggdraw Module [aggdraw-index]
Windows Console Driver [console-index]
ElementTree Overview [element-index]
Selected IronPython Articles [iron-index]
(the eff-bot guide to) The Standard Python Library [librarybook-index]
Python Imaging Library [pil-index]
The PythonDoc Documentation Tool [pythondoc-index]
Selected Python Articles [python-index]
Web Services [rpc-index]
The Sgmlop Parser/Tokenizer [sgmlop-index]
Top-Down Operator Precedence Parsing [tdop-index]
Tkinter, Tkinter 3000, and the Widget Construction Kit [tkinter-index]
Vroom! [vroom-index]
The Widget Construction Kit [wck-index]
Selected XML Articles and Tools [xml-index]

Articles (317)



About the Zone [about]
The Asyncore Module [asyncore]
Building An Asynchronous FTP Client [asyncore-ftp-client]
Asyncore and Generators [asyncore-generators]
An Asynchronous HTTP Client [asyncore-http-client]
Asyncore and Signals [asyncore-signals]


A Simple BitTorrent "bencode" Decoder [bencode]
Ett orealistiskt problem [big-brother-2010]
Books [books]
Tkinter BWidgets Library [bwidgets]


Caching [caching]
Call By Object [call-by-object]
The cElementTree Module [celementtree]
Using Non-Standard Encodings in cElementTree [celementtree-encoding]
Posting to a CGI script [cgi-post]
Cheetah [cheetah]
Cleaning up HTML snippets [cleaning-html]
Closures in Python [closure]
Source Code Repositories [code]
Statistics for comp.lang.python [comp-lang-python]
The Console Module [console-handbook]
The Consumer Interface [consumer]
Gzip Consumer Class [consumer-gzip]
Copyright [copyright]
Creating Palette Images [creating-palette-images]


The Damage/Repair Model [damage-repair]
Default Parameter Values in Python [default-values]
Grabbing posts with Python [delicious-json]
Grabbing posts with Python and RSS [delicious-rss]
Django [django]
Some Notes on a Simple Django Application [django-announcement-blog]
Including Element Trees in Django Templates [django-element]
A Cache Status View for Django [django-memcached-view]
Serving Multiple Hosts from a Single Django Instance [django-multihost]
The Django PageView Application [django-pageview]
Using PIL with Django [django-pil]
Simple Django-like Templating [django-simple-template]
DrawBot [drawbot]
The DrawBot Graphics API [drawbot-graphics]
Drawing Interface for the Tkinter Canvas [draw-tkinter-canvas]


Editing Canvas Text Items [editing-canvas-text-items]
The EffNews Project: Building an RSS Newsreader [effnews]
EffNews Part 1: Fetching RSS Files [effnews-1]
EffNews Part 2: Fetching and Parsing RSS Data [effnews-2]
EffNews Part 3: Displaying RSS Data [effnews-3]
EffNews Part 4: Parsing More RSS Files [effnews-4]
In Progress: EffNews Part 5: Odds and Ends [effnews-5]
In Progress: EffNews Part 6: Using the ElementTree Module to Parse RSS Files [effnews-6]
EffNews Addendas, Frequently Asked Questions, and Other Assorted Notes [effnews-notes]
Elements and Element Trees [element]
ElementTree: Bits and Pieces [element-bits-and-pieces]
An ElementTree Builder [element-builder]
Incremental Parsing Using the Consumer API [element-consumer]
Elements and DTD:s [element-dtd]
Using the ElementTree Module to Generate Google Requests [element-google]
Element Tree Infosets [element-infoset]
XML Infosets [element-infoset-dom]
The ElementTree iterparse Function [element-iterparse]
Element Library Functions [element-lib]
ElementTree: Working with Namespaces and Qualified Names [element-namespaces]
Reading processing instructions and comments with ElementTree [element-pi]
Using ElementTrees for Pull-Style Parsing [element-pull]
ElementTree: Working with Qualified Names [element-qnames]
Using Element Trees to Parse RSS Files [element-rss]
Parsing RSS Files with ElementTree [element-rss-wrapper]
The ElementRXP module [element-rxp]
Using the ElementTree Module to Generate SOAP Messages [element-soap]
Using the ElementTree Module to Generate SOAP Messages, Part 1: Talking to a Stock Quote Server [elementsoap-1]
Using the ElementTree Module to Generate SOAP Messages, Part 2: Talking to Google [elementsoap-2]
Using the ElementTree Module to Generate SOAP Messages, Part 3: Dealing with Qualified Names [elementsoap-3]
Using the ElementTree Module to Generate SOAP Messages, Part 4: Automatically Decoding Responses [elementsoap-4]
Using the ElementTree Module to Generate SOAP Messages, Part 5: Parsing WSDL Descriptions [elementsoap-5]
Sorting XML Records with ElementTree [element-sort]
The ElementSoup Module [element-soup]
A Simple Technorati Client [element-technorati]
ElementTree Tidy HTML Tree Builder [element-tidylib]
Generating Tkinter User Interfaces from XML [element-tkinter]
The ElementTree Module [elementtree]
Introducing ElementTree 1.3 [elementtree-13-intro]
Changes in ElementTree 1.3 (preliminary) [elementtree-changes-13]
Using Element Trees to Parse WSDL Files [element-wsdl]
Using Element Trees to Parse XBEL Files [element-xbel]
XInclude support in ElementTree 1.2 [element-xinclude]
Using ElementTrees to Generate XML-RPC Messages [element-xmlrpc]
XPath Support in ElementTree [element-xpath]
The Envelope Type (In Progress) [envelope]
The ExeMaker Tool [exemaker]


The 2003 Frank Willison Award [frank-willison-award]


GDI+ [gdiplus]
Generating RFC 822-style Date Strings [generating-rfc822-dates]
A Stupid Google Suggest Hack [google-suggest]


A Simple XML-Over-HTTP Class [http-xml]
You Can Never Have Too Many Stock Tickers! [http-xml-stockticker]


Idea: Replacing the Exceptions Module [idea-exceptions]
Idea: For From [idea-for-from]
Idea: Adding a Money Base Type [idea-money-type]
Idea In Progress: Dynamic Creation of Type Descriptors [idea-register-type]
The SeeAlso Markup Language [idea-seealso]
Idea: Static Expressions [idea-static]
Idea: Switch Statement [idea-switch]
Idea: Adding a Time Base Type [idea-time-type]
Idea: A Unified String Type [idea-unified-string-type]
Idea: XML Literals For Python [idea-xml-literal]
An Optimization Anecdote [image-histogram-optimization]
Importing Python Modules [import-confusion]
Some Notes on Importing Modules by Name [import-string]
Information Sets [infoset]
IronPIL (Work In Progress) [ironpil]
IronPython [ironpython]
IronWCK [ironwck]


Kid [kid]


Evaluating Python expressions [librarybook-core-eval]
The Python Standard Library [librarybook-ora]
(the eff-bot guide to) The Standard Python Library [librarybook-order]
The Standard Python Library: New Modules in Python 2.1 [librarybook-py21]
The Standard Python Library: New Modules in Python 2.2 [librarybook-py22]
The Standard Python Library: New Modules in Python 2.3 [librarybook-py23]
The Standard Python Library: New Modules in Python 2.4 [librarybook-py24]
The Standard Python Library: New Modules in Python 2.5 [librarybook-py25]
The Standard Python Library: New Modules in Python 2.6 [librarybook-py26]
The listmodules CGI Script [listmodules-cgi]


Using Metaclasses to Create Self-Registering Plugins [metaclass-plugins]
Metakit [metakit]
Model, View, Controller [model-view-controller]


Networks [networks]


OpenID [openid]


Google for PHP. Or, why I moved to another server. [php]
Changes in Python Imaging Library 1.1.1 [pil-changes-111]
Changes in Python Imaging Library 1.1.2 [pil-changes-112]
Changes in Python Imaging Library 1.1.3 [pil-changes-113]
Changes in Python Imaging Library 1.1.4 [pil-changes-114]
Changes in Python Imaging Library 1.1.5 [pil-changes-115]
Changes in Python Imaging Library 1.1.6 [pil-changes-116]
Comparing Two Images [pil-comparing-images]
"decoder jpeg not available" [pil-decoder-jpeg-not-available]
Drawing WCK Graphics in a PIL Image Memory [pil-draw-wck]
Errata for Python Imaging Library 1.1.4 [pil-errata-114]
Extending PIL [pil-extending]
Histogram Equalization [pil-histogram-equalization]
Getting HSL Values [pil-hsl]
Getting the Size of an Image on a Web Page [pil-image-size]
"The _imaging C module is not installed" [pil-imaging-not-installed]
Using PIL On Large Images [pil-large-images]
Convert Between Numerical Arrays and PIL Image Objects [pil-numpy]
Pixel Access Objects [pil-pixel-access]
Adding a pseudocolor palette to a PIL Image object [pil-pseudocolor]
Notes on Using PIL With PythonWin [pil-pythonwin]
Sepia Toning with PIL [pil-sepia]
Speeding up Initialization [pil-speeding-up-initialization]
OMG Ponies! In Python! In Colour! [ponies]
The Subversion Server ( [public-svn]
An Alternative Python.Org Content Management System [pydotorg]
Step 1: Using Django as Front-End Cache [pydotorg-cache]
An Alternative Python FAQ [pyfaq]
The PyFAQ Process [pyfaq-process]
An Alternative Python Reference [pyref]
An Alternative Python Reference: Markup [pyref-markup]
An Alternative Python Reference: Sections [pyref-sections]
An Alternative Python Reference: Style [pyref-style]
An Alternative Python Reference: Targets [pyref-targets]
Pyrex [pyrex]
Bits and Pieces of Python [python-bits-and-pieces]
Python's C API: Working with Sequences [python-capi-sequences]
A Python Code Generator [python-code-generator]
Compiling Python Code [python-compile]
PythonDoc [pythondoc]
PythonDoc Example: The Image Module [pythondoc-compact]
The PythonDoc Infoset (In Progress) [pythondoc-infoset]
An Alternative Python Reference: Using PythonDoc-style Markup for the Library Reference [pythondoc-lib]
Generating PythonDoc Pages for Virtual Modules [pythondoc-merge]
Writing PythonDoc Plugins [pythondoc-plugins]
Getting Information About a File [python-fileinfo]
Understanding Python's "for" statement [python-for-statement]
Adding GC Support to an Existing Python Type [python-gc]
The Python getattr Function [python-getattr]
Python Hash Algorithms [python-hash]
An Introduction to Python Lists [python-list]
Python Objects [python-objects]
Adding Python Information to the Windows Registry [python-register]
Searching and Replacing [python-replace]
The urllib.RequestBody Class [python-urllib-requestbody]
Understanding Python's "with" statement [python-with-statement]
Pytte [pytte]
Combining Pyrex and the Pytte Runtime (Work In Progress) [pytte-pyrex]
PyZone Archive Files [pyzone-archive]


Reading Text Files [readline-performance]
Common Log Format [re-common-log-format]
re.findall Patterns [re-findall]
The Regular Expression Engine is not a Parser [re-parse]
REST vs XML-RPC vs SOAP [rest-vs-rpc]
re.sub Patterns [re-sub]
RSS Feeds [rss]


A Safe Read Function [safe-read]
Sandbox: The MiniWCK Library (In Progress) [sandbox-miniwck]
Sandbox: SourceForge Tools (In Progress) [sandbox-sourceforge]
Search [search]
Generating SeeAlso Indexes for the Python Library Reference [seealso-python-library]
The Sgmlop Module Handbook [sgmlop-handbook]
Sgmlop Patterns [sgmlop-patterns]
Simple Deque Class [simple-deque]
A Simple Image Viewer [simple-image-viewer]
Simple Iterator-based Parsing [simple-iterator-parser]
Simple Observer [simple-observer]
Simple Queue Class [simple-queue]
Simple Stack [simple-stack]
Simple Top-Down Parsing in Python [simple-top-down-parsing]
Smithy Code [smithy-code]
Sockets [socket-intro]
Sockets: Using Mail [socket-intro-mail]
Sockets: Usenet Support [socket-intro-nntp]
Want to sponsor [sponsor]
SQLite [sqlite]
Storing BLOB Data in SQLITE [sqlite-blob]
Squeeze [squeeze]
Server Status [status]
The stringlib Library [stringlib]
Stupid Python Tricks: The KeyboardInterrupt Exception [stupid-exceptions-keyboardinterrupt]
Subversion [subversion] [support]
Publishing SVN Backups as Trac Attachments [svn-trac-hotcopy]
SyntaxWarning: name 'spam' is assigned to before global declaration [syntaxwarning-name-assigned-to-before-global-declaration]


More Top-Down Parsing: JSON [tdop-json]
Extracting plain text from HTML [textify]
Thread Synchronization Mechanisms in Python [thread-synchronization]
The tkController Module [tkcontroller]
Tkinter 3000 Clock Widget [tkinter3000-demo-clock]
The Tkinter 3000 RightArrow Widget [tkinter3000-demo-rightarrow]
The Tkinter 3000 SimplePlot Widget [tkinter3000-demo-simpleplot]
Tkinter 3000 SimpleRightArrow Widget [tkinter3000-demo-simplerightarrow]
Adding Custom C/C++ Drawing Code to Tkinter [tkinter3000-embed]
In Progress: Tkinter 3000 Form Library [tkinter3000-formlib]
Design Notes for the new Tkinter C Interface [tkinter3000-glue]
The Widget Construction Kit [tkinter3000-wck]
The Tkinter 3000 WCK Drawing Interface [tkinter3000-wck-draw]
Tkinter 3000 Windows Widgets for Tkinter [tkinter3000-wintk]
Drawing Anti-Aliased Graphics Under Tkinter/Windows [tkinter-aggdraw]
A Simple Animation Engine [tkinter-animation]
Autohiding Scrollbars [tkinter-autoscrollbar]
Displaying a Busy Cursor [tkinter-busy]
Tkinter Callbacks [tkinter-callbacks]
Tracking Mouse Actions for Many Canvas Objects [tkinter-canvas-find-withtag]
Tkinter Tricks: Using Complex Numbers to Rotate Canvas Items [tkinter-complex-canvas]
Tkinter Tricks: Using WCK-Style Controllers in Tkinter [tkinter-controller]
A Directory Chooser for Tkinter [tkinter-directory-chooser]
Tkinter Editor Bindings [tkinter-editor-bindings]
Adding File Completion to the Entry Widget [tkinter-entry-completion]
A Validating Entry Widget [tkinter-entry-validate]
Using generators to sleep without blocking [tkinter-generator-polyline]
Tkinter Geometry Managers [tkinter-geometry]
Tkinter Tricks: Using ImageWin to Display Images on Windows [tkinter-imagewin]
Some Tkinter Links [tkinter-links]
Creating Tkinter Menubars [tkinter-menubar]
Changing the Default Font via the Option Database [tkinter-option-database]
Notes on Tkinter Performance [tkinter-performance]
Creating a Grayscale Ramp in Tkinter [tkinter-photoimage-grayscale-ramp]
Plotting Stuff Using PIL and Tkinter [tkinter-plot]
Tkinter Popup Menus [tkinter-popup-menu]
Tkinter Scrollbar Patterns [tkinter-scrollbar-patterns]
Adding bind_insert, bind_delete methods to the Text widget [tkinter-text-bind-insert-delete]
Tkinter Text Widget Hyperlink Manager [tkinter-text-hyperlink]
Find Visible Region in a Text Widget [tkinter-text-visible]
Tkinter and Threads [tkinter-threads]
Making a Toplevel Cover the Full Screen [tkinter-toplevel-fullscreen]
Tkinter: Catching Window Deletion [tkinter-window-destroy]
Catching the Expose Event [tkinter-window-expose]
Track Window Size Changes [tkinter-window-size]
The tkList Widget Wrapper [tklist]
Usenet Troll Checker (TrollKoll) [trollchecker]


Converting Unicode Strings to 8-bit Strings [unicode-convert]
Mapping Windows CP1252 Gremlins to Unicode [unicode-gremlins]
Using Unicode characters in HTML [unicode-in-html]
Python Unicode Objects [unicode-objects]


Vroom! - A Simple DarkRoom/WriteRoom Remake in Tkinter [vroom]


Wave Hello [wave]
The Widget Construction Kit [wck]
Your First Widget (Writing Widgets in Python, Part 1) [wck-1]
Creating a Button Widget (Writing Widgets in Python, Part 2) [wck-2]
The Drawing Interface (Writing Widgets in Python, Part 3) [wck-3]
Displaying Large Amounts of Data (Writing Widgets in Python, Part 4) [wck-4]
In Progress: Displaying Formatted Text (Writing Widgets in Python, Part 5) [wck-5]
In Progress: Writing Widgets in Python, Part 6: Building a Drawing Tool [wck-6]
An AggDraw-based WCK View [wck-aggview]
The WCK Module [wck-api]
The WCK DrawBot Widget [wck-drawbot]
The WCK Gauge Widget [wck-gauge]
The WCK Graph Package [wckgraph]
The wckgraph Module [wckgraph-api]
The WCK HexView Widget [wck-hexview]
The WCK ImageView Widget [wck-imageview]
The wckCalendar Widget [wcklib-calendar]
The wckToolTips Module [wcklib-tooltips]
In Progress: Tkinter 3000 WCK MiniViews [wck-miniview]
The WCK PixelCanvas Widget [wck-pixelcanvas]
The WCK ProgressBar Widget [wck-progressbar]
The BlockView Widget [wck-simpleblockview]
Implementing A Simple Text Display Widget [wck-simpletext]
The WCK TextEdit Widget [wck-textedit]
Using Event Trackers to Simplify Tool Implementation [wck-trackers]
Webdriver Torso [webdriver-torso]
Using the websucker Tool [websucker]
Some Notes on Tim Bray's Wide Finder Benchmark [wide-finder]
This Is Not A Wiki [wiki]
WCK for Windows [winwck-notes]


Implementing Pull-Style XML Parsers [xml-pull]
XML-RPC and the ASCII limitation [xmlrpc-ascii]
Providing XML-RPC Services via CGI [xmlrpc-cgi]
Unofficial XML-RPC Errata [xmlrpc-errata]
XML-RPC vs. SOAP [xmlrpc-vs-soap]
Using Regular Expressions for Lexical Analysis [xml-scanner]
XML vs. HTML [xml-vs-html]
SimpleXMLWriter [xml-writer]


['term', 'extraction'] [yahoo-term-extraction]
A Simple YENC Decoder Module [yenc-decoder]


Converting ZIP archives to TAR archives [zip2tar]
Some Notes on Moving the Zone to Django [zone-django-notes]
The Zone Intermediate Format [zone-intermediate]
The Zone Source Formats [zone-source]

A Django site. rendered by a django application. hosted by webfaction.