Agendaless Bloghttps://www.agendaless.com/blog/index.atom?category=substanced2014-02-23T20:41:45+00:00PyTennessee 2014 Talkshttps://www.agendaless.com/blog/pytennessee_2014_talks/2014-02-23T20:41:45+00:00<p>Chris and I have given our talks at <a class="reference external" href="http://www.pytennessee.org/">PyTennesse 2014</a>. Mine was a two-hour tutorial,
"Pyramid Development in a Nutshell", which I cut down from Paul's <a class="reference external" href="http://docs.pylonsproject.org/projects/pyramid/en/master/quick_tutorial/">Quick Pyramid Tutorial</a>. (See my slides <a class="reference external" href="http://static.agendaless.com/pytn2014">here</a>; examples are on <a class="reference external" href="https://github.com/tseaver/pytn2014">github</a>)</p>
<p>Chris' talk was his "Substance D: Build Civilized Web Applications" talk. See a <a class="reference external" href="https://www.youtube.com/watch?feature=player_embedded&v=tRrN09pcyVU">video of the same talk from the RuPy 2013
conference</a>).</p>
AgendalessSubstanceD Screencast #6: Adding Editing Objects inside a Folderhttps://www.agendaless.com/blog/substanced_screencast_six/2013-12-20T22:30:00+00:00<p> This screencast is the sixth in a series of short tutorials on
installing <a href="http://substanced.net/">SubstanceD</a>
and using it to build a simple intranet application. It starts
from where <a href="/blog/substanced_screencast_five">Episode 5</a>
leaves off.
</p>
<p> This episode covers adding objects to a folder, and editing those objects' properties.
</p>
<iframe width="420" height="315" src="//www.youtube.com/embed/91fSOvK3toY" frameborder="0" allowfullscreen></iframe>AgendalessSubstanceD Screencast #5: Editing Object Properties / Undohttps://www.agendaless.com/blog/substanced_screencast_five/2013-12-20T22:00:00+00:00<p> This screencast is the fifth in a series of short tutorials on
installing <a href="http://substanced.net/">SubstanceD</a>
and using it to build a simple intranet application. It starts
from where <a href="/blog/substanced_screencast_four">Episode 4</a>
leaves off.
</p>
<p> This episode covers updating object properties, and undoing those changes..
</p>
<iframe width="420" height="315" src="//www.youtube.com/embed/HfMZGLSFFIk" frameborder="0" allowfullscreen></iframe>AgendalessSubstanceD Screencast #4: SubstanceD Managment Interface Overviewhttps://www.agendaless.com/blog/substanced_screencast_four/2013-12-20T21:30:00+00:00<p> This screencast is the fourth in a series of short tutorials on
installing <a href="http://substanced.net/">SubstanceD</a>
and using it to build a simple intranet application. It starts
from where <a href="/blog/substanced_screencast_three">Episode 3</a>
leaves off.
</p>
<p> This episode provides a quick tour of the SubstanceD management interface (SDI),
including navigating through the "tree" of objects in the database.
</p>
<iframe width="420" height="315" src="//www.youtube.com/embed/wT5taYgCH9c" frameborder="0" allowfullscreen></iframe>AgendalessSubstanceD Screencast #3: Starting the Server, Viewing the Admin Interfacehttps://www.agendaless.com/blog/substanced_screencast_three/2013-12-13T23:00:00+00:00<p> This screencast is the third in a series of short tutorials on
installing <a href="http://substanced.net/">SubstanceD</a>
and using it to build a simple intranet application. It starts
from where <a href="/blog/substanced_screencast_two">Episode 2</a>
leaves off.
</p>
<p> This episode demonstrates starting the WSGI server in development
mode, viewing the default splash page in the browser, and logging
into the the SubstanceD admin interface.
</p>
<iframe width="420" height="315" src="//www.youtube.com/embed/Hbreqqo6ZDM" frameborder="0" allowfullscreen></iframe>
<h3> Annotated Commands </h3>
<p>For those who'd like to read rather than listen, this is the set of
commands outlined:</p>
<ol>
<li> Start the server using the development configuration:
<pre>
$ ../../bin/pserve development.ini
</pre>
</li>
<li> Grep the generated, random password from the config file:
<pre>
$ cd src/myintranet
$ grep passwword development.ini
</pre>
</li>
<li>View the default splash page at
<a href="http://localhost:6543/">http://localhost:6543/</a>.
</li>
<li>Log into the SubstanceD management interface at:
<a href="http://localhost:6543/manage">http://localhost:6543/manage</a>.
</li>
</ol>AgendalessSubstanceD Screencast #1: Setting Up the Environmenthttps://www.agendaless.com/blog/substanced_screencast_one/2013-12-13T22:00:00+00:00<p> This screencast is the first in a series of short tutorials on
installing <a href="http://substanced.net/">SubstanceD</a>
and using it to build a simple intranet application.</p>
<p> This episode demonstrates creating a Python virtual environment and
installing the SubstanceD software into it.</p>
<iframe width="420" height="315" src="//www.youtube.com/embed/Y5bQ8rZ5tEw" frameborder="0" allowfullscreen></iframe>
<h3> Annotated Commands </h3>
<p>For those who'd like to read rather than listen, this is the set of
commands outlined:</p>
<ol>
<li> Create a Python 3.3 virtual environment:
<pre>
$ /opt/Python-3.3.3/bin/pyvenv intranet
$ cd intranet
</pre>
</li>
<li> Install and update <code>setuptools</code>:
<pre>
$ wget https://bitbucket.org/pypa/setuptools/downloads/ez_setup.py
$ bin/python3 ez_setup.py
$ bin/easy_install -U setuptools
</pre>
</li>
<li> Check out SubstanceD from Github:
<pre>
$ mkdir src
$ cd src
$ git clone git@github.com:Pylons/substanced
$ cd substanced
</pre>
</li>
<li> Run SubstanceD's <code>setup.py</code> to install it in the environment:
<pre>
$ ../../bin/python3 setup.py develop
</pre>
Note that this step also installs SubstanceD's dependencies.
</li>
<li> Verify that SubstanceD is importable from our checkout:
<pre>
$ cd ../..
$ bin/python
...
>>> import substanced
>>> print(substanced.__file__)
</pre>
</li>
</ol>AgendalessSubstanceD Screencast #2: Generating the Initial 'myintranet' Projecthttps://www.agendaless.com/blog/substanced_screencast_two/2013-12-13T22:00:00+00:00<p> This screencast is the second in a series of short tutorials on
installing <a href="http://substanced.net/">SubstanceD</a>
and using it to build a simple intranet application. It starts
from where <a href="/blog/substanced_screencast_one">Episode 1</a>
leaves off.
</p>
<p> This episode demonstrates generating the initial version of the
<code>myintranet</code> project, checking it into Git, and installing
it and its added dependencies into the virtual environment.
</p>
<iframe width="420" height="315" src="//www.youtube.com/embed/jRVwpJLVL1s" frameborder="0" allowfullscreen></iframe>
<h3> Annotated Commands </h3>
<p>For those who'd like to read rather than listen, this is the set of
commands outlined:</p>
<ol>
<li> List the templates available for generating a project:
<pre>
$ bin/pcreate --list-templates
</pre>
</li>
<li> Generate the <code>myintranet</code> project:
<pre>
$ cd src
$ ../bin/pcreate --template=substanced myintranet
$ cd myintranet
</pre>
</li>
<li> Check the initially generated code into a local Git repository:
<pre>
$ git init .
$ cat > .gitignore
*.pyc
__pycache__
*.egg-info
*.fs*
blobs
tmp
^D
$ git add .
$ git commit -m "Initially-generated project."
</pre>
</li>
<li> Install the project and its extra dependencies into the environment:
<pre>
$ ../../bin/python setup.py develop
</pre>
</li>
<li> Verify that <code>myintranet</code> is importable from our checkout:
<pre>
$ cd ../..
$ bin/python
...
>>> import myintranet
>>> print(myintranet.__file__)
</pre>
</li>
</ol>AgendalessSubstanceD Screencastshttps://www.agendaless.com/blog/substanced_screencasts_overview/2013-12-13T21:30:00+00:00<p>We're starting a series of short (3 - 5 minute) screencasts, demonstrating
the <a href="http://substanced.net">SubstanceD</a> application development
platform. The series is built around the tasks needed to set up a simple
intranet site.</p>
<p> For an overview of SubstanceD as a development platform, start with the
talk given by <a href="//people/chrism">Chris McDonough </a> at the
RuPy 2013 confernce: "SubstanceD: Building Civilized Web Applications".</p>
<iframe width="560" height="315"
src="//www.youtube.com/embed/tRrN09pcyVU" frameborder="0" allowfullscreen></iframe>AgendalessRupy 2013 Python Sprinthttps://www.agendaless.com/blog/rupy_2013_sprint/2013-10-11T23:03:20.427411+00:00<p>Recently we held a 3-day-long Python sprint in Budapest before the <a class="reference external" href="http://13.rupy.eu/">RuPy</a> conference. Here's what got done.</p>
<div class="section" id="substance-d-web-application-server">
<h2>Substance D (web application server)</h2>
<p>Participating: Chris McDonough, Balázs Reé, Godefroid Chapelle</p>
<ul class="simple">
<li>Allow management views to be categorized.</li>
<li>Allow deletion of objects that cannot successfully be unpickled.</li>
<li>Add an API for <tt class="docutils literal">get_editable_adapter</tt>.</li>
<li>Allow schemas that inherit from <tt class="docutils literal">substanced.schema.Schema</tt> to be used
successfully in non-FormView code (no longer necessary to call <tt class="docutils literal">.bind()</tt> on
these to run things through deserialization).</li>
<li>Grid error messages caused by connectivity problems now disappear if the
client notices that the server is back up via SSE.</li>
<li>Attempted to figure out how to more better show "global" views (like the
auditing tab, the database tab, and the undo tab).</li>
<li>Various small UI improvements.</li>
</ul>
</div>
<div class="section" id="deform-form-library">
<h2>Deform (form library)</h2>
<p>Participating: Domen Kožar, Balázs Reé, Chris McDonough</p>
<ul class="simple">
<li>Experimented with using angular.js for client-side validation (fairly
successfully).</li>
<li>Refactored and improved resource registry.</li>
</ul>
</div>
<div class="section" id="pyramid-web-framework">
<h2>Pyramid (web framework)</h2>
<p>Participating: Fabian Neumann</p>
<ul class="simple">
<li>Audit docs for places we could better use <tt class="docutils literal">.. deprecated::</tt> and other
Sphinx/RST directives.</li>
</ul>
</div>
AgendalessMozilla Persona and Substance Dhttps://www.agendaless.com/blog/substanced-persona/2013-10-11T16:12:10.616427+00:00<p>We're running this agendaless.com website on Substance D, the content framework for Pyramid that Chris came up with. We're dogfooding a lot of the good work done by Substance D folks, plus related work like Domen's Deform2.</p>
<p>It's also a testing ground for some of our own stuff. Tres has it acting as a WebDAV server, which is how he does his authoring. He did this as a Substance D add-on, which helps prove how well Pyramid's add-on system functions.</p>
<p>We were talking about logins and thinking about re-using the Twitter-OAuth-based login I did on my Substance D site for a local sports league. Instead, Tres looked at
<a class="reference external" href="http://www.mozilla.org/en-US/persona/">Mozilla Persona</a> and whipped up support for that. I can now use a Google account and get transparent login when authoring blog posts here.</p>
<p>It's worked, well, just about perfectly.</p>
AgendalessGearing up for WSGI War^WWrestle 2013https://www.agendaless.com/blog/wsgi_wrestle_2013/2013-09-25T21:35:06.134283+00:00<p><a class="reference external" href="http://agendaless.com/people/chrism">Chris McDonough</a>,
<a class="reference external" href="http://archimedeanco.com/cv.html">Chris Rossi</a> and I are competing in the
<a class="reference external" href="http://wsgiwar.com/">2013 WSGI Wrestle</a> contest (originally "WSGI War",
but changed to protect some queasy stomachs) this weekend. We will be building
our application using <a class="reference external" href="http://www.pylonsproject.org/projects/pyramid/about">Pyramid</a>
and <a class="reference external" href="http://substanced.net">SubstanceD</a>.</p>
<div class="figure align-right">
<img alt="https://agendaless.com/images/pyramid_tshirt_mummy-circle.jpeg" src="https://agendaless.com/images/pyramid_tshirt_mummy-circle.jpeg" />
<p class="caption"><em>Pyramid is Definitely Not Built by Aliens</em></p>
</div>
<p>Watch the <a class="reference external" href="http://wsgiwar.com/teams/c2/definitely-not-built-by-aliens/">Definitely Not Built By Aliens</a> team in real time as we bash together an app in 72 hours!</p>
AgendalessGlobetrotting in October, 2013https://www.agendaless.com/blog/globe_trotting_october_2013/2013-09-25T21:29:04.583071+00:00<p>Some upcoming travel for Agendaless:</p>
<div class="section" id="python-brazil-plone-conference-2013">
<h2>Python Brazil / Plone Conference 2013</h2>
<ul class="simple">
<li><a class="reference external" href="http://agendaless.com/people/paul">Paul</a> is flying Saturday to Brasilia
October to keynote the jointly held
<a class="reference external" href="http://2013.ploneconf.org/ploneconf">2013 Plone conference</a> /
<a class="reference external" href="http://2013.pythonbrasil.org.br/pythonbrasil">2013 Python Brazil conference</a>.</li>
<li>Paul will be teaching a 2-day "Python3 Web Development with Pyramid"
tutorial before the conference starts, too!</li>
</ul>
</div>
<div class="section" id="rupy-eu-2013">
<h2>RuPy.eu 2013</h2>
<ul class="simple">
<li><a class="reference external" href="http://agendaless.com/people/chrism">Chris</a> is travelling to Budapest
next week to serve as the main sprint leater at
<a class="reference external" href="http://13.rupy.eu/">RuPy.eu 2013</a>, 2013-10-08 - 2013-10-10.</li>
<li>Chris will speak about
<a class="reference external" href="http://www.pylonsproject.org/projects/pyramid/about">Pyramid</a> at the
RuPy coference on Friday, 2013-10-11.</li>
</ul>
</div>
<div class="section" id="pycon-ie-2013">
<h2>PyCon IE 2013</h2>
<ul class="simple">
<li>Chris then flies from Budapest to Dublin to speak at
<a class="reference external" href="http://python.ie/pycon/2013/">PyCon Ireland 2013</a> on
<cite>SubstanceD <http://substanced.net></cite> on Sunday, 2013-10-13.</li>
<li>Chris will also be leading the Pyramid sub-sprint in Dublin following
the conference, 2013-10-14 - 2013-10-15.</li>
</ul>
</div>
Agendaless