<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://www.rpatterson.net/</id>
  <title>Ross Patterson's Blog - Posts tagged Pyramid</title>
  <updated>2025-07-14T00:00:48.764845+00:00</updated>
  <link href="https://www.rpatterson.net/"/>
  <link href="https://www.rpatterson.net/blog/tag/pyramid/atom.xml" rel="self"/>
  <generator uri="https://ablog.readthedocs.io/" version="0.11.12">ABlog</generator>
  <entry>
    <id>https://www.rpatterson.net/blog/looking-for-projects-and-or-a-team/</id>
    <title>Looking for Projects and/or a Team</title>
    <updated>2012-11-09T00:00:00+00:00</updated>
    <author>
      <name>Ross Patterson</name>
    </author>
    <content type="html">&lt;section id="looking-for-projects-and-or-a-team"&gt;

&lt;blockquote&gt;
&lt;div&gt;&lt;p&gt;I’m available for work and am interested in contract/consultant projects or a position with a team.&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;I’m available and looking for new opportunities.  My strengths are
&lt;a class="reference external" href="http://www.python.org/"&gt;Python&lt;/a&gt; web programming, particularly &lt;a class="reference external" href="http://plone.org"&gt;Plone&lt;/a&gt; and &lt;a class="reference external" href="http://zope.org"&gt;Zope&lt;/a&gt; with
strong testing skills and habits.  See &lt;a class="reference external" href="http://www.linkedin.com/in/rossp"&gt;my LinkedIn profile&lt;/a&gt; or &lt;a class="reference external" href="http://careers.stackoverflow.com/rpatterson"&gt;my
Careers 2.0 profile&lt;/a&gt; for more details.  I’m interested in the
following:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Pyramid or Plone are preferred technologies&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;open to any Python web work&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;would be nice to work on social justice or other activism projects&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;open to work with a good team on any kind of project&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;working from remote most of the time is preferred&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;open to on-site opportunities in San Francisco&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please contact me if you’re looking for anyone or know of anyone who is.&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;dl class="field-list simple"&gt;
&lt;dt class="field-odd"&gt;Name&lt;span class="colon"&gt;:&lt;/span&gt;&lt;/dt&gt;
&lt;dd class="field-odd"&gt;&lt;p&gt;Ross Patterson&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class="field-even"&gt;Resume&lt;span class="colon"&gt;:&lt;/span&gt;&lt;/dt&gt;
&lt;dd class="field-even"&gt;&lt;p&gt;&lt;a class="reference external" href="http://www.linkedin.com/in/rossp"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class="field-odd"&gt;Resume&lt;span class="colon"&gt;:&lt;/span&gt;&lt;/dt&gt;
&lt;dd class="field-odd"&gt;&lt;p&gt;&lt;a class="reference external" href="http://careers.stackoverflow.com/rpatterson"&gt;Careers 2.0&lt;/a&gt;&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class="field-even"&gt;GitHub&lt;span class="colon"&gt;:&lt;/span&gt;&lt;/dt&gt;
&lt;dd class="field-even"&gt;&lt;p&gt;&lt;a class="reference external" href="https://github.com/rpatterson?tab=activity"&gt;rpatterson&lt;/a&gt;&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class="field-odd"&gt;Email&lt;span class="colon"&gt;:&lt;/span&gt;&lt;/dt&gt;
&lt;dd class="field-odd"&gt;&lt;p&gt;&lt;a class="reference external" href="mailto:me&amp;#37;&amp;#52;&amp;#48;rpatterson&amp;#46;net"&gt;me&lt;span&gt;&amp;#64;&lt;/span&gt;rpatterson&lt;span&gt;&amp;#46;&lt;/span&gt;net&lt;/a&gt;&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class="field-even"&gt;Phone&lt;span class="colon"&gt;:&lt;/span&gt;&lt;/dt&gt;
&lt;dd class="field-even"&gt;&lt;p&gt;+1 (415) 894-5323&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class="field-odd"&gt;IRC&lt;span class="colon"&gt;:&lt;/span&gt;&lt;/dt&gt;
&lt;dd class="field-odd"&gt;&lt;p&gt;&lt;a class="reference external" href="mailto:zenwryly&amp;#37;&amp;#52;&amp;#48;irc&amp;#46;freenode&amp;#46;net"&gt;zenwryly&lt;span&gt;&amp;#64;&lt;/span&gt;irc&lt;span&gt;&amp;#46;&lt;/span&gt;freenode&lt;span&gt;&amp;#46;&lt;/span&gt;net&lt;/a&gt;&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class="field-even"&gt;plone.org&lt;span class="colon"&gt;:&lt;/span&gt;&lt;/dt&gt;
&lt;dd class="field-even"&gt;&lt;p&gt;&lt;a class="reference external" href="http://plone.org/author/rossp"&gt;rossp&lt;/a&gt;&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class="field-odd"&gt;GTalk&lt;span class="colon"&gt;:&lt;/span&gt;&lt;/dt&gt;
&lt;dd class="field-odd"&gt;&lt;p&gt;&lt;a class="reference external" href="mailto:merpattersonnet&amp;#37;&amp;#52;&amp;#48;gmail&amp;#46;com"&gt;merpattersonnet&lt;span&gt;&amp;#64;&lt;/span&gt;gmail&lt;span&gt;&amp;#46;&lt;/span&gt;com&lt;/a&gt;&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class="field-even"&gt;Yahoo IM&lt;span class="colon"&gt;:&lt;/span&gt;&lt;/dt&gt;
&lt;dd class="field-even"&gt;&lt;p&gt;patterson_ross&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class="field-odd"&gt;AIM&lt;span class="colon"&gt;:&lt;/span&gt;&lt;/dt&gt;
&lt;dd class="field-odd"&gt;&lt;p&gt;rosspatters&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class="field-even"&gt;MSN&lt;span class="colon"&gt;:&lt;/span&gt;&lt;/dt&gt;
&lt;dd class="field-even"&gt;&lt;p&gt;&lt;a class="reference external" href="mailto:me&amp;#37;&amp;#52;&amp;#48;rpatterson&amp;#46;net"&gt;me&lt;span&gt;&amp;#64;&lt;/span&gt;rpatterson&lt;span&gt;&amp;#46;&lt;/span&gt;net&lt;/a&gt;&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class="field-odd"&gt;Skype&lt;span class="colon"&gt;:&lt;/span&gt;&lt;/dt&gt;
&lt;dd class="field-odd"&gt;&lt;p&gt;merpattersonnet&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;div class="note update admonition"&gt;
&lt;p class="admonition-title"&gt;Updated on 09 November 2012&lt;/p&gt;
&lt;p&gt;Imported from Plone on Mar 15, 2021.  The date for this update is the last
modified date in Plone.&lt;/p&gt;
&lt;/div&gt;
&lt;/section&gt;
</content>
    <link href="https://www.rpatterson.net/blog/looking-for-projects-and-or-a-team/"/>
    <summary>I’m available for work and am interested in contract/consultant projects or a position with a team.</summary>
    <category term="Plone" label="Plone"/>
    <category term="Pyramid" label="Pyramid"/>
    <category term="Python" label="Python"/>
    <category term="TDD" label="TDD"/>
    <category term="Testing" label="Testing"/>
    <category term="Zope" label="Zope"/>
    <published>2012-10-30T00:00:00+00:00</published>
  </entry>
  <entry>
    <id>https://www.rpatterson.net/blog/announcing-plone-on-webpi/</id>
    <title>Plone lands on IIS!</title>
    <updated>2012-10-30T00:00:00+00:00</updated>
    <author>
      <name>Ross Patterson</name>
    </author>
    <content type="html">&lt;section id="plone-lands-on-iis"&gt;

&lt;blockquote&gt;
&lt;div&gt;&lt;p&gt;Help me test a new GUI Plone install on Windows and IIS.&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;Just in time for the scariest night of the year, my Windows installer
work based on the &lt;a class="reference external" href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;Web Platform Installer&lt;/a&gt; (WebPI) is finally ready
to test.  So &lt;em&gt;PLEASE&lt;/em&gt; fire up your Windows VMs, try the &lt;a class="reference internal" href="#quick-start"&gt;Quick Start&lt;/a&gt;
below and report what your experience is.  Then take a look at the
&lt;a class="reference external" href="https://github.com/rpatterson/iiswsgi#known-issues"&gt;Known Issues&lt;/a&gt; and help with any of them if you can.  In particular,
any assistance getting the FCGI gateway to work under full IIS, not
just IIS Express would be &lt;em&gt;very&lt;/em&gt; helpful.  You may also want to try the &lt;a class="reference external" href="https://github.com/rpatterson/iiswsgi#quick-start"&gt;Quick Start from iiswsgi&lt;/a&gt; to install a &lt;a class="reference external" href="docs.pylonsproject.org/projects/pyramid"&gt;Pyramid&lt;/a&gt; project under IIS.&lt;/p&gt;
&lt;p&gt;Wanting to do things the right way, most of my work has been on a
&lt;a class="reference external" href="https://github.com/rpatterson/iiswsgi#iiswsgi-fcgi-gateway"&gt;generalized WSGI server&lt;/a&gt; which acts as an FCGI gateway to IIS and a
&lt;a class="reference external" href="https://github.com/rpatterson/iiswsgi#the-msdeploy-package"&gt;set of distutils commands&lt;/a&gt; for building and distributing Web Deploy
packages.  See my &lt;a class="reference external" href="./python-web-apps-on-iis"&gt;previous post on WebPI&lt;/a&gt; for more of the history
and the &lt;a class="reference external" href="https://github.com/rpatterson/iiswsgi#iiswsgi"&gt;iiswsgi&lt;/a&gt; &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;README.rst&lt;/span&gt;&lt;/code&gt; for more details.  In the meantime,
&lt;em&gt;please&lt;/em&gt; test this stuff!&lt;/p&gt;
&lt;p&gt;Between my last post and now, I’ve overcome most of the hurdles to a
sufficient degree that I think that the solutions, workarounds, or
hacks involved are good enough to use as our Windows story.  In
particular, the hacks I have to use to &lt;a class="reference external" href="https://github.com/rpatterson/iiswsgi#msdeploy-install-bootstrap"&gt;find the right
APPL_PHYSICAL_PATH&lt;/a&gt; after install and the workaround I use to
&lt;a class="reference external" href="https://github.com/rpatterson/iiswsgi#id26"&gt;register the IIS FCGI application&lt;/a&gt; I think are robust enough to rely
upon even if it’s horrible that we have to use them.&lt;/p&gt;
&lt;p&gt;Those of you who have offered help with this Windows stuff, I’m so
sorry about my delays in following up with y’all.  There’s just been
an endless number of points between the state of things at the time
and where I had to get things in order to provide you specific things
to test and a way to test them.  At any rate, the time is &lt;em&gt;now&lt;/em&gt;, so
please all of you who contacted me or who I was put in touch with,
test it now and look at the &lt;a class="reference external" href="https://github.com/rpatterson/iiswsgi#known-issues"&gt;Known Issues&lt;/a&gt; for stuff you might be
able to help with.  And if you have a MS suppport contract, please
submit support requests as I’ve described there.&lt;/p&gt;
&lt;p&gt;I have one last note I hope isn’t in poor tastes.  I have put way too
much of my own time into this thing, so recouping anything would be a
help.  Here’s &lt;a class="reference external" href="https://www.gittip.com/rpatterson/"&gt;my gittip&lt;/a&gt; page, &lt;a class="reference external" href="mailto:me&amp;#37;&amp;#52;&amp;#48;rpatterson&amp;#46;net"&gt;my PayPal is my email&lt;/a&gt; and I’m open
to any other suggestions as to how I might get some compensation for
this.  All that said, it has been a labor of… well, not love for the
work, but certtainly love for the community.  :-) You know what I mean
so it’s fine if nothing comes of it.&lt;/p&gt;
&lt;p&gt;Onward!&lt;/p&gt;
&lt;section id="quick-start"&gt;
&lt;h2&gt;Quick Start&lt;/h2&gt;
&lt;p&gt;The &lt;a class="reference external" href="https://github.com/rpatterson/iiswsgi#iiswsgi"&gt;iiswsgi&lt;/a&gt; distribution includes two sample IIS apps which can be
installed through WebPI once the custom feed has been added:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;p&gt;ATM, requires a machine with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;svn.exe&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;git.exe&lt;/span&gt;&lt;/code&gt; on the
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PATH&lt;/span&gt;&lt;/code&gt; since it requires a couple of unreleased fixes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install and Launch &lt;a class="reference external" href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;Web Platform Installer&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use the search box in the upper-right to search for &lt;cite&gt;Web Matrix&lt;/cite&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click add next to the most recent &lt;cite&gt;Web Matrix&lt;/cite&gt; entry, then
&lt;cite&gt;Install&lt;/cite&gt; in the lower-right and follow the instructions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open the &lt;cite&gt;Options&lt;/cite&gt; dialog by clicking the link on the lower-right&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under &lt;cite&gt;Custom Feeds&lt;/cite&gt;, add the &lt;a class="reference external" href="http://dist.plone.org/release/4.2/PloneIISApp-4.2-py2.7-win32.webpi.xml"&gt;URL for latest *.webpi.xml file&lt;/a&gt;
from the &lt;a class="reference external" href="http://dist.plone.org/"&gt;Plone release&lt;/a&gt; to install and click &lt;cite&gt;Add feed&lt;/cite&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under &lt;cite&gt;Which Web Server…?&lt;/cite&gt;, check &lt;cite&gt;IIS Express&lt;/cite&gt; and then click
&lt;cite&gt;OK&lt;/cite&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use the search box in the upper-right to search for &lt;cite&gt;Plone&lt;/cite&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click add next to &lt;cite&gt;Plone Application&lt;/cite&gt; then &lt;cite&gt;Install&lt;/cite&gt; in the
lower-right and follow the instructions&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="note update admonition"&gt;
&lt;p class="admonition-title"&gt;Updated on 30 October 2012&lt;/p&gt;
&lt;p&gt;Imported from Plone on Mar 15, 2021.  The date for this update is the last
modified date in Plone.&lt;/p&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://www.rpatterson.net/blog/announcing-plone-on-webpi/"/>
    <summary>Help me test a new GUI Plone install on Windows and IIS.</summary>
    <category term="Plone" label="Plone"/>
    <category term="Pyramid" label="Pyramid"/>
    <category term="Python" label="Python"/>
    <category term="Zope" label="Zope"/>
    <category term="fastcgi" label="fastcgi"/>
    <category term="fcgi" label="fcgi"/>
    <category term="iis" label="iis"/>
    <category term="msdeploy" label="msdeploy"/>
    <category term="webpi" label="webpi"/>
    <category term="wsgi" label="wsgi"/>
    <published>2012-10-29T00:00:00+00:00</published>
  </entry>
  <entry>
    <id>https://www.rpatterson.net/blog/pycon-2012-sprints/</id>
    <title>PyCon 2012 Sprints</title>
    <updated>2012-03-16T00:00:00+00:00</updated>
    <author>
      <name>Ross Patterson</name>
    </author>
    <content type="html">&lt;section id="pycon-2012-sprints"&gt;

&lt;blockquote&gt;
&lt;div&gt;&lt;p&gt;Sprinting after PyCon and my first time working with and contributing to Pyramid.&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;section id="sprinting-on-pyramid"&gt;
&lt;h2&gt;Sprinting on Pyramid&lt;/h2&gt;
&lt;p&gt;Really my conference review should be taken worth a grain of salt,
because I never go for the talks, it’s all about &lt;a class="reference external" href="https://us.pycon.org/2012/community/sprints/projects/"&gt;the sprints&lt;/a&gt;.  Having so
thoroughly enjoyed sprinting since I came out of my shell and joined
the &lt;a class="reference external" href="http://plone.org"&gt;Plone&lt;/a&gt; community in earnest, it’s always the
only thing I’m really focused on.  What can I say?  In this wonderful
age where, through open-source communities and the recognition of the
ambiguous stuff that helps them thrive, we all recognize that things
like docs and diversity are as important as the quality of code or the
power of features, I’m still a code monkey at heart.&lt;/p&gt;
&lt;p&gt;Since there were no Plone sprints that I heard of or saw on the
boards, I took the chance to sprint on &lt;a class="reference external" href="http://www.pylonsproject.org/projects/pyramid/about"&gt;Pyramid&lt;/a&gt;, part of the
&lt;a class="reference external" href="http://www.pylonsproject.org/"&gt;Pylons&lt;/a&gt; project and love child of
&lt;a class="reference external" href="http://repoze.org/"&gt;repoze&lt;/a&gt;.  I’ve been wanting to learn Pyramid
for quite some time now since I noticed how many of my favorite &lt;a class="reference external" href="http://zope.org/"&gt;Zope&lt;/a&gt; people have moved to Pyramid.  So I went to the
Pyramid room, sat down and asked what someone with plenty of zope
experience could do.&lt;/p&gt;
&lt;p&gt;The &lt;a class="reference external" href="https://github.com/Pylons/pyramid/wiki/Sprint-Ideas"&gt;Pyramid sprinters&lt;/a&gt; were a great
group, very welcoming and friendly.  They remind me a lot of the
things I most love about the Plone community.  It also gave me the
chance to work closely with &lt;a class="reference external" href="http://plope.com/"&gt;Chris McDonough&lt;/a&gt;.
&lt;a class="reference external" href="https://twitter.com/#!/chrismcdonough"&gt;Chris&lt;/a&gt; is very smart, builds
great software, and is just very kind-hearted.&lt;/p&gt;
&lt;p&gt;Here’s some of the stuff I worked on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://github.com/Pylons/pyramid_debugtoolbar/pull/57"&gt;add IP range/network restriction&lt;/a&gt; to
&lt;a class="reference external" href="http://readthedocs.org/docs/pyramid_debugtoolbar/en/latest/"&gt;pyramid_debugtoolbar&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I used this simple feature task to cut my teeth on the Pyramid
development environment and tool-chain.  It was the first time in a
long time I worked outside a &lt;a class="reference external" href="http://www.buildout.org/"&gt;buildout&lt;/a&gt;
environment and it made for some interesting comparisons.  They keep
things really simple relying only on &lt;a class="reference external" href="http://packages.python.org/distribute/"&gt;distribute’s setuptools&lt;/a&gt; and &lt;a class="reference external" href="http://www.virtualenv.org/en/latest/index.html"&gt;virtualenv&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have to say, I still prefer working with buildout.  Buildout’s
caching is much better than &lt;a class="reference external" href="http://packages.python.org/distribute/easy_install.html"&gt;easy_install’s&lt;/a&gt; and
virtualenv so updating the environment after changes is smoother and
faster.  For testing against multiple &lt;a class="reference external" href="http://www.python.org/"&gt;Python&lt;/a&gt; versions and implementations, such as
&lt;a class="reference external" href="http://www.jython.org/"&gt;Jython&lt;/a&gt; and &lt;a class="reference external" href="http://pypy.org/"&gt;PyPy&lt;/a&gt;,
Pyramid uses &lt;a class="reference external" href="http://readthedocs.org/docs/tox/en/latest/"&gt;tox&lt;/a&gt;
which is pretty slick and very useful.  I’d love to see something
like this for deploying the same buildout with different versions of
Python.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://github.com/repoze/repoze.sendmail/pull/2"&gt;support Python 3&lt;/a&gt; in
&lt;a class="reference external" href="http://pypi.python.org/pypi/repoze.sendmail/"&gt;repoze.sendmail&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This was my first time tackling Python 2 and 3 compatibility
issues.  I have to say it’s just not as hard as I feared.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;aside class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: INFO/1 (&lt;span class="docutils literal"&gt;/builds/rpatterson/ross-pattersons-site/blog/pycon-2012-sprints/index.rst&lt;/span&gt;, line 15); &lt;em&gt;&lt;a href="#id1"&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Duplicate explicit target name: “repoze.sendmail”.&lt;/p&gt;
&lt;/aside&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/repoze/repoze.sendmail/pull/3"&gt;improve and centralize email message serializing&lt;/a&gt; in
&lt;a class="reference external" href="http://pypi.python.org/pypi/repoze.sendmail/"&gt;repoze.sendmail&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The one place where there was a lot of Python 2 and 3 compatibility
pain was in the encoding of email messages.  In this case, as in
others I suspect, the problem was that encoding was being done all
over the place in a not-very-well-architected way and the real
solution was to clean things up and put in more clearly defined
boundaries and interfaces.&lt;/p&gt;
&lt;p&gt;That task would have been &lt;em&gt;impossible&lt;/em&gt; without &lt;a class="reference external" href="http://pyvideo.org/video/684/the-email-package-past-present-and-future"&gt;R. David Murray&lt;/a&gt;.
I pestered &lt;a class="reference external" href="http://www.bitdance.com/blog/"&gt;him&lt;/a&gt; endlessly and &lt;a class="reference external" href="https://twitter.com/#!/rdavidmurray"&gt;he&lt;/a&gt; helped me learn all the
deep, dark corners of the email protocols and the Python &lt;a class="reference external" href="http://docs.python.org/library/email.html"&gt;email&lt;/a&gt; package, both of which
have considerable quirks which some would call bugs.  At the end of
it, I had a clear sense of all the quirks of encoding emails and all
the things that the &lt;cite&gt;email&lt;/cite&gt; package doesn’t already do.  I baked
those into &lt;a class="reference external" href="https://github.com/repoze/repoze.sendmail/blob/master/repoze/sendmail/encoding.py"&gt;repoze.sendmail.encoding&lt;/a&gt;
and added that support as a part sending mail through
repoze.sendmail.&lt;/p&gt;
&lt;p&gt;Once that was in place, finishing Python 2 and 3 compatibility was a
snap.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://github.com/Pylons/pyramid_mailer/pull/12"&gt;add Python 3 support&lt;/a&gt; to
&lt;a class="reference external" href="http://readthedocs.org/docs/pyramid_mailer/en/latest/"&gt;pyramid_mailer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Again, once &lt;cite&gt;repoze.sendmail.encoding&lt;/cite&gt; was in-place, I just ripped
all the email encoding support out of &lt;cite&gt;pyramid_mailer&lt;/cite&gt; and Python 2
and 3 compatibility was a cinch.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;aside class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: INFO/1 (&lt;span class="docutils literal"&gt;/builds/rpatterson/ross-pattersons-site/blog/pycon-2012-sprints/index.rst&lt;/span&gt;, line 15); &lt;em&gt;&lt;a href="#id2"&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Duplicate explicit target name: “pyramid_mailer”.&lt;/p&gt;
&lt;/aside&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/Pylons/pyramid_mailer/issues/14"&gt;fix Cc/Bcc witout To handling&lt;/a&gt; in
&lt;a class="reference external" href="http://readthedocs.org/docs/pyramid_mailer/en/latest/"&gt;pyramid_mailer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While I had my hands in &lt;cite&gt;pyramid_mailer&lt;/cite&gt;, I fixed a bug reported by
&lt;a class="reference external" href="http://michael.merickel.org/"&gt;Michael Merickel&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://github.com/Pylons/pyramid/issues/465"&gt;add support for multiple request parameters&lt;/a&gt; when registering
&lt;a class="reference external" href="http://docs.pylonsproject.org/projects/pyramid/en/1.3-branch/api/config.html?highlight=request_param#pyramid.config.Configurator.add_route"&gt;Pyramid views&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I’m not even sure what this stuff does, but Pyramid has such great
test coverage, I was able to get started.  I’m still waiting for
feeback to see what I’m not yet understanding.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;updating &lt;a class="reference external" href="http://docs.python.org/library/warnings.html#warnings.catch_warnings"&gt;warnings&lt;/a&gt;
handling in &lt;a class="reference external" href="https://github.com/Pylons/pyramid/pull/467"&gt;Pyramid tests&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Just a simple test fixture update to cleanup output.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="note update admonition"&gt;
&lt;p class="admonition-title"&gt;Updated on 16 March 2012&lt;/p&gt;
&lt;p&gt;Imported from Plone on Mar 15, 2021.  The date for this update is the last
modified date in Plone.&lt;/p&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://www.rpatterson.net/blog/pycon-2012-sprints/"/>
    <summary>Sprinting after PyCon and my first time working with and contributing to Pyramid.</summary>
    <category term="Plone" label="Plone"/>
    <category term="Pyramid" label="Pyramid"/>
    <category term="Zope" label="Zope"/>
    <category term="buildout" label="buildout"/>
    <category term="pycon2012" label="pycon2012"/>
    <category term="repoze" label="repoze"/>
    <category term="tox" label="tox"/>
    <category term="virtualenv" label="virtualenv"/>
    <published>2012-03-15T00:00:00+00:00</published>
  </entry>
</feed>
