<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Disqus - Friends of jokull</title><link>http://disqus.com/by/jokull/</link><description></description><atom:link href="http://disqus.com/jokull/friends.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Fri, 21 Jan 2011 18:46:55 -0000</lastBuildDate><item><title>Re: Major Speed Enhancements in SQLAlchemy 0.4</title><link>(u'http://techspot.zzzeek.org/2007/08/14/major-speed-enhancements-in-sqlalchemy-0.4',%20100313328L)#comment-100313328</link><description>&lt;p&gt;nah its more like the time has come to clean up a lot of old crap.  the mass insert bench was a little bit of a wakeup call.   your tests were helpful in identifying some newer code in 0.4 that needed to be simplified.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Wed, 15 Aug 2007 01:45:18 -0000</pubDate></item><item><title>Re: Major Speed Enhancements in SQLAlchemy 0.4</title><link>(u'http://techspot.zzzeek.org/2007/08/14/major-speed-enhancements-in-sqlalchemy-0.4',%20100313331L)#comment-100313331</link><description>&lt;p&gt;Tenjin appears to be a native template language, seeing that its available for five different host languages.  The catch is, native template languages don't integrate with the host language very well - the best you can do is a "namespace" passed from host environment to template, but any kind of programmatic integration is off the table.  Trac switched from native ClearSilver templates to Genshi for the same reason.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Fri, 17 Aug 2007 23:38:48 -0000</pubDate></item><item><title>Re: Revisiting Storm, SQLAlchemy, and Geniusql</title><link>(u'http://techspot.zzzeek.org/2007/12/26/revisiting-storm-sqlalchemy-and-geniusql',%20100313337L)#comment-100313337</link><description>&lt;p&gt;thanks Robert !&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Wed, 26 Dec 2007 17:18:48 -0000</pubDate></item><item><title>Re: Revisiting Storm, SQLAlchemy, and Geniusql</title><link>(u'http://techspot.zzzeek.org/2007/12/26/revisiting-storm-sqlalchemy-and-geniusql',%20100313343L)#comment-100313343</link><description>&lt;p&gt;Well, Robert has linked his post to this one pretty prominently and I've also observed that the programming community reads a lot and responds very quickly to new information; this post has had a lot of traffic so I'm pretty satisfied that SQLA's reputation hasn't been ruined or anything like that.  Also our existing userbase didn't seem so concerned with the whole thing since the slowness Robert referred to was not something anyone had observed themselves.  The various new competition and challenges in recent months have certainly been highly motivating and sqla just gets better and better.  The changelog for the upcoming 0.4.2 has some pretty dramatic new feature adds.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Fri, 28 Dec 2007 00:57:01 -0000</pubDate></item><item><title>Re: Hi, my name is Jesse and I abuse list comprehensions.</title><link>(u'http://jessenoller.com/blog/2008/03/28/hi-my-name-is-jesse-and-i-abuse-list-comprehensions/',%20276536L)#comment-276536</link><description>&lt;p&gt;not to mention return ','.join(['{{whizbang|%s}}' % v for v in myDict[keyname].values()])&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Fri, 28 Mar 2008 12:08:39 -0000</pubDate></item><item><title>Re: zzzeek : Better Form Generation with Mako and Pylons</title><link>(u'http://techspot.zzzeek.org/2008/07/01/better-form-generation-with-mako-and-pylons',%20100313362L)#comment-100313362</link><description>&lt;p&gt;shannon -&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;easy enough to modify the tags to read defaults from a "default_dict" or somesuch attached to &lt;code&gt;c&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;you can also use this approach to make higher-level widgets, in the same manner as the low level widgets.  that's the whole point !&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Also this supports the formencode hierarchies using "." and "[]" syntaxes; that was already built in to the previous &lt;code&gt;validate&lt;/code&gt; decorator (since we are still using `FormEncode` almost identically as before).&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Tue, 01 Jul 2008 16:30:10 -0000</pubDate></item><item><title>Re: zzzeek : Better Form Generation with Mako and Pylons</title><link>(u'http://techspot.zzzeek.org/2008/07/01/better-form-generation-with-mako-and-pylons',%20100313364L)#comment-100313364</link><description>&lt;p&gt;See, i dont want to make a "subclass" in order to create an HTML widget.  Just like I dont want to build a picture-drawing robot just to draw a picture :).   If I'm creating an HTML component, I want to use HTML; you know what I'm talking about since you used HTML::Mason at some point if I remember correctly.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Tue, 01 Jul 2008 17:07:02 -0000</pubDate></item><item><title>Re: zzzeek : Better Form Generation with Mako and Pylons</title><link>(u'http://techspot.zzzeek.org/2008/07/01/better-form-generation-with-mako-and-pylons',%20100313367L)#comment-100313367</link><description>&lt;p&gt;try running the entire example, with Pylons 0.9.7, as is.  There's configuration in the config/&lt;a href="http://environment.py" rel="nofollow noopener" target="_blank" title="environment.py"&gt;environment.py&lt;/a&gt; to get the custom tags.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Wed, 02 Jul 2008 17:46:22 -0000</pubDate></item><item><title>Re: Django round 2</title><link>(u'https://justin.harmonize.fm/?p=14',%202225438L)#comment-2225438</link><description>&lt;p&gt;web designer doesn't need to learn Python just because there's some python in the template - this is a common overreaction to a problem that doesn't really exist.  I wrote an old rant about this here:  &lt;a href="http://techspot.zzzeek.org/?p=3" rel="nofollow noopener" target="_blank" title="http://techspot.zzzeek.org/?p=3"&gt;http://techspot.zzzeek.org/...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Sun, 07 Sep 2008 23:20:56 -0000</pubDate></item><item><title>Re: zzzeek : Expression Transformations</title><link>(u'http://techspot.zzzeek.org/2008/01/23/expression-transformations',%20100313350L)#comment-100313350</link><description>&lt;p&gt;Nick -&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;As to the "utility" of the features, the only example I can give is that of the SQLAlchemy ORM's usage of them - the ClauseAdapter feature is intrinsic to much of the ORM's capabilities, and the examples within the post should make that apparent.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;As to creating a `cracker_posts` function, you say we "cannot be ignorant of the grandchildren alias".  It's true, at some point we are aware of it, however your `cracker_posts` function is not - you've created an abstraction that allows a particular clause construct to be adapted against any compatible selectable.  ClauseAdapter takes this a step further as a function that allows &lt;em&gt;any&lt;/em&gt; clause construct to be adapted against any compatible selectable.  Just as your application finds utility in abstracting one side of the equation, SQLA's ORM finds utility in abstracting the other side of it as well.   The example including "aliased=True" illustrates this.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Now, you could say that the entire use case of saying query(Node).join('children', 'children', aliased=True).filter(&lt;a href="http://Node.data" rel="nofollow noopener" target="_blank" title="Node.data"&gt;Node.data&lt;/a&gt;=='crackers') is unnecessary, and that the join can be constructed manually.   Our users do appreciate that they don't have to construct such a join manually (it was a widely requested feature).  The utility of SQLA's clause generation generally becomes apparent the more that nestings and generations are applied to a query, and the alternative manual construction becomes more tedious and verbose.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Sat, 04 Oct 2008 19:33:33 -0000</pubDate></item><item><title>Re: Sometimes I think validate + formencode is more hassle than it is worth</title><link>(u'http://blog.tplus1.com/blog/2008/10/28/sometimes-i-think-validate-formencode-is-more-hassle-than-it-is-worth/',%203350035L)#comment-3350035</link><description>&lt;p&gt;The "None" thing is one of maybe a few very glaring issues which should be changed.   If you look at the source code, the Schema object totally bypasses the validator if the value is None.   This is an inconsistency in how the data is handled and it would be nice if Schema/FancyValidator had one single datapath for all values.&lt;/p&gt;&lt;p&gt;Its also confusing to have to integrate composite form elements with variabledecode and it would be nicer for this to be more explicitly integrated.&lt;/p&gt;&lt;p&gt;Beyond that I think the docs just need more real world examples.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Tue, 28 Oct 2008 16:21:47 -0000</pubDate></item><item><title>Re: Why use a VARCHAR when you can use TEXT?</title><link>(u'http://www.eflorenzano.com/blog/post/why-use-varchar-when-you-can-use-text/',%2013323275L)#comment-13323275</link><description>&lt;p&gt;I can't speak for MySQL and Postgres as authoritatively, but TEXT columns in Oracle and MSSQL have any number of these limitations:&lt;/p&gt;&lt;p&gt;1. can't compare them&lt;br&gt;2. can't use LIKE on them&lt;br&gt;3. can't fetch or insert large ones without using a separate cursor&lt;br&gt;4. can't ORDER BY them&lt;br&gt;5. client libraries often have limitations being able to stream them efficiently/easily&lt;/p&gt;&lt;p&gt;Even if MySQL/PG is in fact able to index them, you'll still get poorer performance by indexing a column with potentially huge strings in it versus one which is guaranteed to have strings no larger than a fixed size in them.  It's also very reasonable to use size-constrained columns in any case for any type of data that is in fact meant to be a short string, like email addresses.   Constraints are basically something you should be using as often as possible in SQL.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Tue, 11 Nov 2008 07:09:00 -0000</pubDate></item><item><title>Re: corte.si - A Farewell to ORMs</title><link>(u'http://corte.si/posts/code/farewell-to-orms.html',%2019899727L)#comment-19899727</link><description>&lt;p&gt;nice post.  One nit that I'm sure you can predict I'm going to say - SQLAlchemy ORM does not "define the schema" in any way, and is entirely compatible with table reflection.  It's only 3rd party extensions like Elixir that have an opinion about schemas, and those can be customized too.    In fact if you use the SQLSoup extension, its providing just the "table-oriented statement generation over reflected tables" approach you describe - except its built on top of the ORM.&lt;/p&gt;&lt;p&gt;OK one more nit.    If you've upgraded to modern versions of SQLAlchemy, I'm sure you're aware that the Query() object can pretty much formulate any query that the expression language can, in just as an explicit way as the underlying expression language.  So again I'm puzzled how it is you ended up fighting with the ORM when these days it is pretty competitive with straight SQL expressions, or why you don't think sessions are useful - I do have some batch scripts that use raw inserts and updates, but boy are they hard to write versus just using instrumented classes that track their own changes.&lt;/p&gt;&lt;p&gt;and of course the usual, if you show me what your performance problem was with the ORM, its likely that its already been solved, or I can show you how to solve it, or its some issue that I'd love to fix, or your app would just require a little expression language goodness to deal with a critical section...doesn't seem like a reason to ditch the whole thing.&lt;/p&gt;&lt;p&gt;and finally thanks for the plug !  :)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Mon, 12 Oct 2009 11:10:52 -0000</pubDate></item><item><title>Re: corte.si - A Farewell to ORMs</title><link>(u'http://corte.si/posts/code/farewell-to-orms.html',%2019902983L)#comment-19902983</link><description>&lt;p&gt;summary: here's a story that has nothing to do with ORMs illustrating bad practices, then I used a crappy ORM some years ago that was awful, therefore ORMs suck.   Same argument Neward writes.&lt;/p&gt;&lt;p&gt;Yet somehow people get tons of work done with ORMs every day.&lt;/p&gt;&lt;p&gt;Anyway that post is nearly a year old, so how did it go ?   &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Mon, 12 Oct 2009 12:20:18 -0000</pubDate></item><item><title>Re: lxml vs. ElementTree</title><link>(u'http://blog.schmichael.com/2009/10/14/lxml-vs-elementtree/',%20357323753L)#comment-357323753</link><description>&lt;p&gt;the big win of lxml is that you can actually get at the DOCTYPE node using the native API.   cElementTree has no way of doing this (you have to write a custom subclass using ElementTree).     looking at the source you can see it just throws DOCTYPE away.  Why this node wouldn't be considered important is beyond me.&lt;/p&gt;&lt;p&gt;my general impression is that lxml is much more actively maintained.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Thu, 15 Oct 2009 19:54:48 -0000</pubDate></item><item><title>Re: Supporting Python 3 is a Ghetto</title><link>(u'http://unethicalblogger.com/node/269',%2035888265L)#comment-35888265</link><description>&lt;p&gt;a basic "preprocessor" monkeypatch for 2to3:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.sqlalchemy.org/trac/browser/sqlalchemy/trunk/sa2to3.py" rel="nofollow noopener" target="_blank" title="http://www.sqlalchemy.org/trac/browser/sqlalchemy/trunk/sa2to3.py"&gt;http://www.sqlalchemy.org/t...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Mon, 22 Feb 2010 13:59:42 -0000</pubDate></item><item><title>Re: Sphinx + Mercurial = My favorite CMS</title><link>(u'http://rhodesmill.org/brandon/2010/sphinx-mercurial-cms/',%20160800560L)#comment-160800560</link><description>&lt;p&gt;For a document-oriented CMS its a great approach.  We rolled a similar idea out years ago at MLB - we threw out Teamsite and replaced it with a CVS repository (CVS was state of the art at this time, trust me), and gave the users WinCVS with some Python macros included - the macros, "promote to stage"/"promote to production" would just tag the files with "staging" or "production", and a listener on the server would hit rsync in response to promote the files to the site.&lt;/p&gt;&lt;p&gt;As a side note, that project was the reason I had to learn Python.  It's been a long road since then !&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Mon, 22 Mar 2010 00:28:45 -0000</pubDate></item><item><title>Re: Blog II - The Sequel Blog - MyISAM, InnoDB, and PostgreSQL</title><link>(u'http://sequel.heroku.com/2010/03/29/myisam-innodb-and-postgresql/',%2042187870L)#comment-42187870</link><description>&lt;p&gt;add some joins and subqueries to your test.   then watch Postgresql blow MySQL into dust.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Mon, 29 Mar 2010 20:32:07 -0000</pubDate></item><item><title>Re: NoSQL panel &amp;#8212; Reinout van Rees' website</title><link>(u'http://reinout.vanrees.org/weblog/2010/05/26/nosql-panel.html',%2052255224L)#comment-52255224</link><description>&lt;p&gt;Clarification on SQLA's position.   The query side of a SQL ORM is not very portable to a NoSQL database (though one can be emulated).  The persistence side of the ORM, i.e. unit of work + objects mapped to database structures, is relevant.  SQLAlchemy's current plans in this area are at &lt;a href="http://www.sqlalchemy.org/trac/ticket/1518" rel="nofollow noopener" target="_blank" title="http://www.sqlalchemy.org/trac/ticket/1518"&gt;http://www.sqlalchemy.org/t...&lt;/a&gt; , the focus is to allow Mapper to be more friendly towards subclassing and therefore being able to provide alternative save/update/delete semantics.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Wed, 26 May 2010 11:46:38 -0000</pubDate></item><item><title>Re: Why Extending Through Subclassing (a framework&amp;#8217;s classes) is a Bad Idea</title><link>(u'http://be.groovie.org/post/1347858988',%2088189324L)#comment-88189324</link><description>&lt;p&gt;Subclassing is fine as long as you keep it to classes whose sole/primary purpose is to be subclassed, i.e. extension classes, like those of SQLAlchemy, Nose, and Sphinx, as well as "component" classes like Pygment's Lexer classes.     But yeah, you don't subclass the object(s) which implement the central processing paradigm of the library - that part should be private since its essentially the "guts" of the tool.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Tue, 19 Oct 2010 09:31:03 -0000</pubDate></item><item><title>Re: Quick Mako vs. Jinja Speed Test</title><link>(u'http://techspot.zzzeek.org/2010/11/19/quick-mako-vs.-jinja-speed-test',%20100313407L)#comment-100313407</link><description>&lt;p&gt;Nah you win dude, I forgot to upgrade Jinja2 to 2.5.5 !   You're doing the same pessimistic assumption thing as me ;)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Fri, 19 Nov 2010 20:48:09 -0000</pubDate></item><item><title>Re: Quick Mako vs. Jinja Speed Test</title><link>(u'http://techspot.zzzeek.org/2010/11/19/quick-mako-vs.-jinja-speed-test',%20100323153L)#comment-100323153</link><description>&lt;p&gt;thanks for the compliments Seth !&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Sun, 21 Nov 2010 17:25:42 -0000</pubDate></item><item><title>Re: zzzeek</title><link>(u'http://techspot.zzzeek.org/2010/11/21/how-coders-blog',%20108018648L)#comment-108018648</link><description>&lt;p&gt;a Python-based comments engine that essentially clones Disqus would fit the bill - you then use it with whatever static blog thing you want.   I think the Disqus "comments for anything" model is pretty awesome, after having written dozens of crappy comment systems of my own in the past.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Mon, 06 Dec 2010 16:51:18 -0000</pubDate></item><item><title>Re: Python Float Quiz</title><link>(u'http://nuitka.net/blog/2011/01/python-float-quiz/',%20539476748L)#comment-539476748</link><description>&lt;p&gt;You'd find the same behavior with SQL NULL, as well as Decimal, where NaN is part of the decimal specification.   NaN values all represent "unknown" or "unrepresentable",  such as the square root of a negative number, so cannot compare as True.    Wikipedia has a good read on it: &lt;a href="http://en.wikipedia.org/wiki/NaN" rel="nofollow noopener" target="_blank" title="http://en.wikipedia.org/wiki/NaN"&gt;http://en.wikipedia.org/wik...&lt;/a&gt;.  So this is nothing specific to Python !&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Sun, 02 Jan 2011 16:15:49 -0000</pubDate></item><item><title>Re: Scientists Aren&amp;#8217;t Stupid: Software Is</title><link>(u'http://software-carpentry.org/blog/2011/01/scientists-arent-stupid-software-is.html',%20713577495L)#comment-713577495</link><description>&lt;p&gt;Nice.  Though the original dumdum in question made this blanket pronouncement, "Python is not portable", based on the fact that some libraries need to be installed.  This isn't any kind of "I've tried so many times and it keeps breaking", this is, "I don't understand the difference between a language and installing libraries, let me not bother reading any documentation and instead post on a social network to see if someone can fix my problem".    His or her experience with Perl, for some reason, was such that they never had to use CPAN, apparently.   There's just an appalling lack of curiosity here on the part of someone who is decidedly not a lay-person.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">zzzeek</dc:creator><pubDate>Fri, 21 Jan 2011 18:46:55 -0000</pubDate></item></channel></rss>