<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8926285956869662516</id><updated>2025-12-14T09:59:17.272-05:00</updated><category term="PyAtl Book Club"/><category term="Announce"/><category term="PyAtl"/><category term="Review"/><category term="Next Meeting Organization"/><category term="Collective Intelligence"/><category term="Community Blog"/><category term="Meeting Notes"/><category term="web development"/><category term="2008"/><category term="Feb"/><category term="First Post"/><category term="Hack-a-thon"/><category term="News"/><category term="Noah Gift"/><category term="PyAtl Website"/><category term="django"/><category term="meeting"/><category term="python"/><category term="repoze"/><title type='text'>PyAtl Book Club</title><subtitle type='html'>A group blog for the PyATL book club.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>PyAtl Users</name><uri>http://www.blogger.com/profile/11287459486253801845</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://lh5.google.com/pyatlweb/RxFdZgltFvI/AAAAAAAAABc/i-mmtv68S8g/s144/PyAtl_Logo_Linked_In_transparent.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-3472549278118490928</id><published>2011-08-30T21:29:00.003-04:00</published><updated>2011-08-30T21:35:28.093-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl Book Club"/><category scheme="http://www.blogger.com/atom/ns#" term="Review"/><category scheme="http://www.blogger.com/atom/ns#" term="web development"/><title type='text'>Book Review: Python 3 Web Development Beginner&#39;s Guide</title><content type='html'>&lt;p&gt;I recently received a free review copy (eBook version) of&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href=&quot;http://www.packtpub.com/python-3-web-development-beginners-guide/book&quot; title=&quot;Packt Publishing page for Python 3 Web Development Beginner&#39;s Guide&quot;&gt;&lt;img src=&quot;http://www.packtpub.com/sites/default/files/3746OS_Python%203%20Web%20Development%20Beginner’s%20Guide_0.jpg&quot; alt=&quot;Cover art for Python 3 Web Development Beginner&#39;s Guide&quot; width=&quot;320&quot; height=&quot;400&quot;/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; from Packt Publishing. I was looking forward to this book, because I haven&#39;t really done much Python 3 work yet, and I wanted to see how it could make my life as a web developer better. However, the book wasn&#39;t what I expected. Instead of covering the basics of web development and how Python 3 applies, it is more of an introduction to the sorts of concerns that come up when you build a web framework on top of &lt;a href=&quot;http://www.cherrypy.org/&quot;&gt;CherryPy&lt;/a&gt;. The sample code just happens to be in Python 3.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;The Good&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The two best parts of the book, to me, were the coverage of writing a &lt;a href=&quot;http://jquery.com/&quot;&gt;jQuery&lt;/a&gt; plugin, and growing an &lt;abbr title=&quot;Object-Relational Mapper&quot;&gt;ORM&lt;/abbr&gt; that uses metaclasses to provide a compact, readable way to define the models.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;The Bad&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I have a rather long list of things I didn&#39;t like about the book, some of which are a function of the title setting misleading expectations, and some of which I think are just problematic in general.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In general, I didn&#39;t care for the examples. Some of this is personal preference: I find that many people (myself included) learn better when they must type in the examples instead of opening up the code and reading through a completed solution. While the book sometimes indicated that something had been left as an exercise to the reader, opening up the sample code showed that the exercise actually &lt;em&gt;had not&lt;/em&gt; been left to the reader. This mismatch between what the text of the book &lt;em&gt;says&lt;/em&gt; will be in the sample code and what is &lt;em&gt;actually in&lt;/em&gt; the sample code occurs in multiple places throughout the book, and gives a sense that the book was sloppily edited.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I also felt the examples in general were too complicated. It&#39;s fine to build up a complicated example over the course of a book, but instead we got a task list, a wiki, a Customer Relationship Management (&lt;abbr title=&quot;Customer Relationship Management&quot;&gt;CRM&lt;/abbr&gt;) tool, a spreadsheet, and more. That&#39;s an awful lot to distract you from the beginner&#39;s principles that you would expect in a book with this title.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I also didn&#39;t care for many of the shortcuts taken in the book. In most instances, the book did acknowledge that the approach taken was not appropriate in the real world, but then proceeded with little or no justification for why it was done the way it was. The two examples that really leap out in this category are the password hashing scheme and the&lt;br /&gt;failure to use a template engine.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;When the book first introduces authentication, it explains that you should never store passwords in plaintext. This is absolutely correct, but the book then goes on to demonstrate a completely insecure password hashing scheme: &lt;strong&gt;UNSALTED&lt;/strong&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/SHA-1&quot;&gt;&lt;abbr title=&quot;Secure Hash Algorithm&quot;&gt;SHA1&lt;/abbr&gt;&lt;/a&gt;. The author only provides a cursory link to explain what you should actually be doing. In this day and age, demonstrating anything less than a &lt;a href=&quot;http://www.usenix.org/events/usenix99/provos/provos_html/index.html&quot;&gt;&lt;code&gt;bcrypt&lt;/code&gt;&lt;/a&gt;-based solution is wrong. Read &lt;a href=&quot;http://chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow-tables-what-you-need-to-know-about-s.html&quot;&gt;Enough With The Rainbow Tables&lt;/a&gt; and &lt;a href=&quot;http://codahale.com/how-to-safely-store-a-password/&quot;&gt;How To Safely Store A Password&lt;/a&gt; for a far better explanation than I can provide. There&#39;s really no excuse for&lt;br /&gt;this: the added complexity of using &lt;a href=&quot;http://code.google.com/p/py-bcrypt/&quot;&gt;&lt;code&gt;py-bcrypt&lt;/code&gt;&lt;/a&gt; instead of writing your own (insecure) &lt;abbr title=&quot;Secure Hash Algorithm&quot;&gt;SHA1&lt;/abbr&gt;-based solution is trivial at worst; there&#39;s a strong case to be made that it would actually be simpler.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The failure to use a template engine (also a weakness acknowledged by the book) really makes the code harder to follow than it should be. Virtually any serious web development effort is going to take advantage of a template engine, and for good reason. This code gives me flashbacks to my days of writing Java servlets before the advent of &lt;abbr title=&quot;Java Server Pages&quot;&gt;JSP&lt;/abbr&gt;, and I saw where one other reviewer invoked the specter of PHP. The fact that this style of coding draws such comparisons should give you an idea of just how unpythonic it is. I would be sympathetic to claims of not wanting to add too many external dependencies if the book did not already rely significantly on the magic of &lt;a href=&quot;http://jqueryui.com/&quot;&gt;jQuery UI&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;My last major complaint is simply one of focus: the book spends substantial amounts of time growing an &lt;abbr title=&quot;Object-Relational Mapper&quot;&gt;ORM&lt;/abbr&gt; and teaching Python metaclasses (and doing a good job of it), but spends little&lt;br /&gt;more than the bare minimum required on CherryPy (which is at the core of the code), and essentially none on understanding &lt;abbr title=&quot;HyperText Transfer Protocol&quot;&gt;HTTP&lt;/abbr&gt;. In fact, the few times it comes up is usually in relation to &lt;code&gt;GET&lt;/code&gt; vs. &lt;code&gt;POST&lt;/code&gt;, where the decision is usually made based on inane implementation details such as whether request arguments are logged by default instead of &lt;abbr title=&quot;HyperText Transfer Protocol&quot;&gt;HTTP&lt;/abbr&gt; fundamentals such as idempotency, safety, or cacheability (although caching &lt;em&gt;is&lt;/em&gt; mentioned elsewhere, in the context of how to prevent it). Also, the book does mention security, but it does not give it the sort of omnipresent emphasis that is necessary to write good web applications, given the hostile nature of the domain. &lt;abbr title=&quot;Cross-site Scripting&quot;&gt;XSS&lt;/abbr&gt;, &lt;abbr title=&quot;Cross-Site Request Forgery&quot;&gt;CSRF&lt;/abbr&gt;, and SQL injection attacks all deserve much more attention than they were given.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;The Summary&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The book has some good content mixed in with the stuff I didn&#39;t like. Unfortunately, the good content is rarely specific to web development. For example, the chapter that uses metaclasses to clean up the &lt;abbr title=&quot;Object-Relational Mapper&quot;&gt;ORM&lt;/abbr&gt; is one of the better resources on metaclasses that I&#39;ve seen, but metaclasses are clearly not specific to web development. Furthermore, the impression of sloppy editing makes it hard to put as much faith in the content as it probably deserves. Given these flaws, I really don&#39;t think I&#39;d recommend this book to a friend who was looking to get started with web development.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Back to flipping out...&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/3472549278118490928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/3472549278118490928' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/3472549278118490928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/3472549278118490928'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2011/08/book-review-python-3-web-development.html' title='Book Review: Python 3 Web Development Beginner&#39;s Guide'/><author><name>Hank Gay</name><uri>http://www.blogger.com/profile/13405417651021620361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-7819861001136576584</id><published>2011-08-06T10:59:00.004-04:00</published><updated>2011-08-06T11:00:15.668-04:00</updated><title type='text'>Now Reading: Python 3 Web Development Beginner&#39;s Guide</title><content type='html'>&lt;p&gt;&lt;br /&gt;Packt Publishing has kindly given me a free review copy of the eBook edition of&lt;br/&gt;&lt;br /&gt;&lt;a href=&quot;http://www.packtpub.com/python-3-web-development-beginners-guide/book&quot; title=&quot;Packt Publishing page for Python 3 Web Development Beginner&#39;s Guide&quot;&gt;&lt;img src=&quot;http://www.packtpub.com/sites/default/files/3746OS_Python%203%20Web%20Development%20Beginner’s%20Guide_0.jpg&quot; alt=&quot;Cover art for Python 3 Web Development Beginner&#39;s Guide&quot; width=&quot;320&quot; height=&quot;400&quot;/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I&#39;ll be reading it and publishing my review here and on &lt;a href=&quot;http://realultimateprogramming.blogspot.com/&quot; title=&quot;Real Ultimate Programming&quot;&gt;my personal blog&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/7819861001136576584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/7819861001136576584' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/7819861001136576584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/7819861001136576584'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2011/08/now-reading-python-3-web-development.html' title='Now Reading: Python 3 Web Development Beginner&#39;s Guide'/><author><name>Hank Gay</name><uri>http://www.blogger.com/profile/13405417651021620361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-5281196018856108394</id><published>2010-01-17T21:00:00.001-05:00</published><updated>2010-01-17T21:00:02.295-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl Book Club"/><title type='text'>Book Review: Matplotlib for Python Developers</title><content type='html'>&lt;a class=&quot;reference external&quot; href=&quot;http://www.packtpub.com/matplotlib-python-development?utm_source=blog.doughellmann.com&amp;amp;utm_medium=bookrev&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_001981&quot;&gt;Matplotlib for Python Developers&lt;/a&gt; by Sandro Tosi is the latest in a&lt;br /&gt;series of concise project-specific manuals from &lt;a class=&quot;reference external&quot; href=&quot;http://packtpub.com/&quot;&gt;Packt&lt;/a&gt;.  It covers&lt;br /&gt;the &lt;a class=&quot;reference external&quot; href=&quot;http://matplotlib.sourceforge.net/&quot;&gt;matplotlib&lt;/a&gt; library for creating charts and graphs.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;My review for the impatient reader:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why I picked it up:&lt;/strong&gt; 	I thought it might help with a project at work.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why I finished it:&lt;/strong&gt; 	I wanted to see what features matplotlib had the could be useful, and how to integrate it with web frameworks.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;I’d give it to:&lt;/strong&gt;	Anyone wishing to create custom charts and graphs, especially programmatically.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.doughellmann.com/articles/bookreviews/matplotlib.html&quot;&gt;Read more...&lt;/a&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/5281196018856108394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/5281196018856108394' title='28 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/5281196018856108394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/5281196018856108394'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2010/01/book-review-matplotlib-for-python.html' title='Book Review: Matplotlib for Python Developers'/><author><name>Doug Hellmann</name><uri>http://www.blogger.com/profile/01892352754222143463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhprDrJ7x4JLYZ0F-yZ25SDisFaC19kVukvFnUpbX2BB_YUybQYi4OW9ERIONydJKc-cAIzeLlauRp2sEweO4Fzs37ogvBgNAJmZAZF5yRhwffCQBxcZxFl_-e72cMtTiQ/s220/book-smaller.jpg'/></author><thr:total>28</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-4465453966321548768</id><published>2010-01-09T10:37:00.001-05:00</published><updated>2010-01-09T10:37:47.361-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl Book Club"/><title type='text'>Dive Into Python 3</title><content type='html'>I&#39;ve posted a review of Mark Pilgrim&#39;s &lt;em&gt;Dive Into Python 3&lt;/em&gt; on &lt;a href=&quot;http://blog.doughellmann.com/2010/01/book-review-dive-into-python-3.html&quot;&gt;my blog&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/4465453966321548768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/4465453966321548768' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/4465453966321548768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/4465453966321548768'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2010/01/dive-into-python-3.html' title='Dive Into Python 3'/><author><name>Doug Hellmann</name><uri>http://www.blogger.com/profile/01892352754222143463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhprDrJ7x4JLYZ0F-yZ25SDisFaC19kVukvFnUpbX2BB_YUybQYi4OW9ERIONydJKc-cAIzeLlauRp2sEweO4Fzs37ogvBgNAJmZAZF5yRhwffCQBxcZxFl_-e72cMtTiQ/s220/book-smaller.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-6130532028043580515</id><published>2009-08-23T08:29:00.001-04:00</published><updated>2009-08-23T08:29:21.664-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl Book Club"/><title type='text'>Book Review: Python Essential Reference, Fourth Edition</title><content type='html'>&lt;iframe src=&quot;http://rcm.amazon.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=hellflynet-20&amp;o=1&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=10FE9736YVPPT7A0FBG2&amp;asins=0672329786&quot; style=&quot;width:120px;height:240px;float: left; margin: 0 1em 1em 0;&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Disclosure: I received a copy of this book for free from Addison-Wesley as part of the PyATL Book Club.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;I have a copy of the first edition of the &lt;strong&gt;Python Essential Reference&lt;/strong&gt; that I picked up at IPC 8 back in 2000.  It&#39;s largely out of date by now, given that it covered Python 1.5.2.  But at the time it was one of the few books I always kept close at hand for easy reference.  Over time my reference habits evolved away from paper references in favor of &lt;a href=&quot;http://blog.doughellmann.com/2008/08/python-documentation-power-user-tip.html&quot;&gt;online materials&lt;/a&gt;.  Today I cleared a little space on my desk for the fourth edition of PER by David Beazley, updated to cover Python 2.6 and 3.0.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Pound for pound:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Just a little space, mind you, because the book is quite compact (717 pages in 6&quot; x 9&quot; x 1&quot;, easily portable in a backpack or briefcase).  This book, diminutive though it may be, has more information of direct use to Python programmers than many of the &lt;strong&gt;War and Peace&lt;/strong&gt;-sized tomes you&#39;ll find elsewhere.  If David keeps adding material at this rate, I&#39;m going to need a magnifying glass for the next edition. &lt;br /&gt;&lt;br /&gt;The book is organized into three main sections: Language, Library, and Extending and Embedding.  There is a comprehensive index and the chapter sequence places related information close together.  You will not find yourself flipping back and forth between an early &quot;prose&quot; chapter to a later &quot;reference&quot; section.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Language:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The language section can serve as a reference guide for Python, though I think the first chapter title &quot;Tutorial&quot; is a little optimistic based on the brevity.  To be fair, the preface states right up front that the book is not intended to be an introductory text.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;This is not a book for learning Python. It is a book for &lt;em&gt;writing&lt;/em&gt; Python.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Library:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The coverage of the standard library is where PER really shines.  I have a &lt;a href=&quot;http://www.doughellmann.com/PyMOTW/&quot;&gt;certain amount of interest&lt;/a&gt; in documenting the Python standard library myself, so I was especially keen to review the material here.  I found it up to date, clearly explained, and detailed. There is not a lot of sample code, but it is not entirely devoid of examples. In most cases, the prose descriptions are sufficient and eliminating code samples let David maintain a readable style without adding filler material.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I thought I had internalized most of this material long ago, but I learned a few things by re-reading it.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;As the title implies, this is not an exhaustive reference guide.  It covers the &lt;em&gt;essential&lt;/em&gt; information that will be useful to the most readers.  As a result, some of the modules are covered in less depth than others.  However, I tend to agree with where focus is placed.  For example, much more space is given to working with sqlite3 and databases in general than some of the more esoteric modules like dis. The ast module doesn&#39;t appear at all.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Extending and Embedding:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Extending and Embedding section is one area where plenty of example code is provided.  Three techniques for creating extension modules are covered: hand coding, ctypes, and SWIG (no surprise, since SWIG is popular and was written by the author).  Examples and commentary are provided for all three approaches.&lt;br /&gt;&lt;br /&gt;Going the other direction, embedding an interpreter in another application, is also explained.  All of the functions from the Python library useful to someone trying to make their application scriptable are listed and described, with some basic examples showing how to communicate between the interpreter and your main application.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Recommendation:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Due to the reference style, this should not be your first Python book.  It should &lt;em&gt;absolutely&lt;/em&gt; be your second.&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/6130532028043580515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/6130532028043580515' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/6130532028043580515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/6130532028043580515'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2009/08/book-review-python-essential-reference.html' title='Book Review: Python Essential Reference, Fourth Edition'/><author><name>Doug Hellmann</name><uri>http://www.blogger.com/profile/01892352754222143463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhprDrJ7x4JLYZ0F-yZ25SDisFaC19kVukvFnUpbX2BB_YUybQYi4OW9ERIONydJKc-cAIzeLlauRp2sEweO4Fzs37ogvBgNAJmZAZF5yRhwffCQBxcZxFl_-e72cMtTiQ/s220/book-smaller.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-7580236895925955955</id><published>2009-07-22T15:29:00.001-04:00</published><updated>2009-07-22T15:29:50.466-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl Book Club"/><category scheme="http://www.blogger.com/atom/ns#" term="Review"/><title type='text'>Book Review:</title><content type='html'>Adiascar Cisneros has posted &lt;a href=&quot;http://www.amazon.com/review/R2M5BWUO93RM4T/ref=cm_cr_rdp_perm&quot;&gt;a review&lt;/a&gt; of &lt;em&gt;Implementing Automated Software Testing: How to Save Time and Lower Costs While Raising Quality&lt;/em&gt; written by Elfriede Dustin, Thom Garrett, and Bernie Gauf and published by Addison-Wesley.</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/7580236895925955955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/7580236895925955955' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/7580236895925955955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/7580236895925955955'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2009/07/book-review.html' title='Book Review:'/><author><name>Doug Hellmann</name><uri>http://www.blogger.com/profile/01892352754222143463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhprDrJ7x4JLYZ0F-yZ25SDisFaC19kVukvFnUpbX2BB_YUybQYi4OW9ERIONydJKc-cAIzeLlauRp2sEweO4Fzs37ogvBgNAJmZAZF5yRhwffCQBxcZxFl_-e72cMtTiQ/s220/book-smaller.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-3515630989761398487</id><published>2009-07-06T08:06:00.001-04:00</published><updated>2009-07-06T08:06:27.449-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl Book Club"/><title type='text'>Book Review: IronPython in Action</title><content type='html'>I&#39;ve posted my review of &lt;a href=&quot;http://blog.doughellmann.com/2009/07/book-review-ironpython-in-action.html&quot;&gt;IronPython in Action&lt;/a&gt; from Manning.</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/3515630989761398487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/3515630989761398487' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/3515630989761398487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/3515630989761398487'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2009/07/book-review-ironpython-in-action.html' title='Book Review: IronPython in Action'/><author><name>Doug Hellmann</name><uri>http://www.blogger.com/profile/01892352754222143463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhprDrJ7x4JLYZ0F-yZ25SDisFaC19kVukvFnUpbX2BB_YUybQYi4OW9ERIONydJKc-cAIzeLlauRp2sEweO4Fzs37ogvBgNAJmZAZF5yRhwffCQBxcZxFl_-e72cMtTiQ/s220/book-smaller.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-5299000563956366206</id><published>2009-07-04T18:46:00.001-04:00</published><updated>2009-07-04T18:46:32.424-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl Book Club"/><title type='text'>Book Review: Hello, World!</title><content type='html'>I&#39;ve finished my review of &lt;strong&gt;Hello, World! Computer Programming for Kids and Other Beginners&lt;/strong&gt; from Manning and posted in &lt;a href=&quot;http://blog.doughellmann.com/2009/07/book-review-hello-world.html&quot;&gt;on my blog&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/5299000563956366206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/5299000563956366206' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/5299000563956366206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/5299000563956366206'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2009/07/book-review-hello-world.html' title='Book Review: Hello, World!'/><author><name>Doug Hellmann</name><uri>http://www.blogger.com/profile/01892352754222143463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhprDrJ7x4JLYZ0F-yZ25SDisFaC19kVukvFnUpbX2BB_YUybQYi4OW9ERIONydJKc-cAIzeLlauRp2sEweO4Fzs37ogvBgNAJmZAZF5yRhwffCQBxcZxFl_-e72cMtTiQ/s220/book-smaller.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-8195007415360095285</id><published>2009-06-16T13:19:00.004-04:00</published><updated>2009-06-16T17:35:59.579-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="django"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="web development"/><title type='text'>Book Review: Python Web Development with Django</title><content type='html'>&lt;em&gt;Disclaimer: I received a review copy of this book through the PyATL Book Club.&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The stated goal of the book is &quot;to help you get things done&quot; (using Django for web development).  As a relative beginner with 3 years of Python and coming on 1 year of using Django for web development, I figured that I would either be the perfect audience for the book or already too advanced to get much out of it (it&#39;s been a pretty obsessive year).&lt;br /&gt;&lt;br /&gt;The book starts out with a nice introduction to Python.  I thought that this was a great place to start because the Django documentation intentionally assumes knowledge of Python and the &lt;a href=&quot;http://www.djangobook.com/&quot;&gt;free online django book&lt;/a&gt; dives straight into the merits of web frameworks and the history of Django.  So, already the book is setting itself apart a bit from the free online resources.&lt;br /&gt;&lt;br /&gt;I remember feeling a sense of clarity while reading the introduction, a good compromise between trying to be comprehensive and terse at the same time.  The intro does a good job of presenting what you really do need to know about Python and some common pitfalls.  Interesting that nothing is said of the string.format() method which is somewhat unfortunate as &lt;a href=&quot;http://docs.python.org/library/stdtypes.html#str.format&quot;&gt;the official python docs&lt;/a&gt; say:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;This method of string formatting is the new standard in Python 3.0, and should be preferred to the &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;%&lt;/span&gt;&lt;/tt&gt; formatting described in &lt;a class=&quot;reference internal&quot; href=&quot;http://docs.python.org/library/stdtypes.html#string-formatting&quot;&gt;&lt;em&gt;String Formatting Operations&lt;/em&gt;&lt;/a&gt; in new code.&lt;/blockquote&gt;&lt;br /&gt;But, alas, I (not to mention the official Django docs and probably 99% of Django devels) have always used % formatting and will probably continue to do so for the near future.  I will be interested to see how Django and Python move forward.  Actually, checkout the Django source itself:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;skylar@ABC255:~/svn/django-trunk$ grep -r % * |grep \&#39; |grep -v svn|grep -cv dateformat&lt;br /&gt;4596&lt;br /&gt;skylar@ABC255:~/svn/django-trunk$ grep -r % * |grep \&quot; |grep -v svn|grep -cv dateformat&lt;br /&gt;12818&lt;br /&gt;skylar@ABC255:~/svn/django-trunk$ grep -r &#39;\.format(&#39; * |grep \&#39; |grep -v svn|grep -cv dateformat&lt;br /&gt;0&lt;br /&gt;skylar@ABC255:~/svn/django-trunk$ grep -r &#39;\.format(&#39; * |grep \&quot; |grep -v svn|grep -cv dateformat&lt;br /&gt;0&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Well, perhaps the authors are right in not mentioning the string.format method after all.&lt;br /&gt;&lt;br /&gt;A small correction that I can&#39;t pass on mentioning here (being a math nerd): the book states that list.sort() sorts numeric values from smallest to largest.  If I may present a list that I believe is ordered from smallest to largest: [1,2,3, -100000, -9999999999].  I spoke to Wesley Chun and he said that he would probably change to &quot;the most-left on the number line to the most-right on the number line.&quot;  I think that is about as good as it can be phrased without opening an analytical can of worms that could erupt and engulf us all!  Coming back to earth after my self-satisfied, math-degree-induced intoxication, I learned a little about generators, the finally clause, raise and other aspects of the Python language that I have mostly danced around.  Almost everything presented in the chapter I already knew; but, perhaps rather than struggling for years to understand these concepts I could have just read these ~50 pages?  I did get a nice sense of clarity and a feeling that I was consolidating what I already knew into a more cohesive force.&lt;br /&gt;&lt;br /&gt;Chapters 2 and 3 are fair enough, &quot;Django for the Impatient: Building a Blog&quot; and &quot;Starting Out&quot;.  Nothing really stood out as exceptional.  I could imagine that I have just worked my way through the &lt;a href=&quot;http://docs.djangoproject.com/en/dev/intro/tutorial01/&quot;&gt;documentation&#39;s tutorial&lt;/a&gt; and these two sections really helping to expand my horizons and to clarify a few things.&lt;br /&gt;&lt;br /&gt;The next section &quot;Django in Depth&quot; gives an enjoyable read of the M, the V, and the T in Django (change the letters if you feel the need).  At only ~60 pages I don&#39;t know if the authors were intending this to be Django&#39;s &lt;a href=&quot;http://en.wikipedia.org/wiki/The_C_Programming_Language_%28book%29&quot;&gt; K&amp;amp;R &lt;/a&gt;.  But, it seemed to be just about right for my particular skill level.  I definitely came in with a lot of the information presented; a few of the sections definitely pushed into areas I hadn&#39;t bothered considering too deeply like abstract base classes, multi-table inheritance, extra() and fixtures (in the Models section).  I enjoyed the authors&#39; treatment of the request and response objects in Django and felt my understanding enhanced. I have been making things work but not necessarily seeing the forest for the trees.  I&#39;m not sure how the sections on forms and templates differ from the official documentation; although, it is nice to have a document that is intentionally ordered and requires no electricity.&lt;br /&gt;&lt;br /&gt;&quot;Django Applications by Example&quot; had some fun examples with some real-feeling problems to overcome.  We get a custom field, use the flatpages app, use generic views and custom views judiciously, implement a search request-handler, deal with users and the admin app&#39;s current insistence on mutual trust where users have the same permissions.&lt;br /&gt;&lt;br /&gt;I like that the authors went ahead and made use of &quot;AJAX&quot; with jquery in their liveblog example app.  I&#39;m biased because I use jquery.  But, this is something that you will never see in the official docs or djangobook: A JAVASCRIPT SNIPPET!  It definitely got my juices flowing about how I can make my own JSON API views.  Usually I have just rendered an HTML snippet with my view and the asynchronously inserted it into the DOM (actually preferable in a lot of situations) but it&#39;s nice to see how a JSON api would work.  The pastebin example also had syntax highlighting with javascript which was nice.  I even learned about the &quot;pre&quot; tag.  And there is a little introduction to cron with the Django ORM.&lt;br /&gt;&lt;br /&gt;The &quot;Advanced Django Programming&quot; chapter is kind of a hodge-podge of things that will probably be encountered eventually if you work with Django enough.  Django&#39;s power by virtue of Python&#39;s power is shown with examples using the csv and pycha modules.  External python modules might have been it&#39;s own chapter but these topics are presented alongside customizing the admin, custom managers for your models and extending/replacing the templating system.  Then, in &quot;Advanced Django Deployment&quot; we talk about cron, caching, testing and other miscellany.  These ~50 pages seem a bit like the authors were getting tired and so rather than properly organizing they kind of just tacked on some extra things that they felt were neglected or not properly treated in other chapters (reminescent of tacking on some css rules at the end to get your website out the door when you know it would be more proper to factor it in to various external files).  Here I can cut them a break because I am feeling like cutting this review short and it is barely a page ;)&lt;br /&gt;&lt;br /&gt;Overall, I don&#39;t know if this book will &quot;help me get things done&quot;.  Actually, I rather think that the online book and the django documentation are first choices in a pinch and trying to really &quot;get things done&quot;.  However, the book gave me prospective on quite a few things that are either lacking from the documentation or are just presented in a different order.  I like the way that this book is logically ordered. &lt;br /&gt;&lt;br /&gt;Most importantly the book allowed me to get out in nature and hang out with my girlfriend (sans computer) while still sharpening my Python/Django tools.  Plus, your mind can get a little scrambled with 10 tabs of documentation up in your browser alongside 5 blog postings that you are reading simultaneously.  Sometimes it&#39;s definitely nice to have a single source with a linear organization.</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/8195007415360095285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/8195007415360095285' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/8195007415360095285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/8195007415360095285'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2009/06/book-review-python-web-development-with.html' title='Book Review: Python Web Development with Django'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05012722401165767905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-8132616672450911974</id><published>2009-06-13T17:38:00.003-04:00</published><updated>2009-06-13T17:41:43.821-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl Book Club"/><title type='text'>Book Review: Expert Python Programming</title><content type='html'>I&#39;ve posted &lt;a href=&quot;http://readernaut.com/gthank/notes/7127/&quot;&gt;my review of &lt;em&gt;Expert Python Programming&lt;/em&gt;&lt;/a&gt; to Readernaut.</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/8132616672450911974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/8132616672450911974' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/8132616672450911974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/8132616672450911974'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2009/06/book-review-expert-python-programming.html' title='Book Review: Expert Python Programming'/><author><name>Hank Gay</name><uri>http://www.blogger.com/profile/13405417651021620361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-3910197584991549949</id><published>2009-06-12T09:26:00.001-04:00</published><updated>2009-06-12T09:26:28.376-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl Book Club"/><title type='text'>Book review: The Economics of Iterative Development</title><content type='html'>I&#39;ve finished my review of &quot;The Economics of Iterative Development&quot; from Addison-Wesley/Pearson and &lt;a href=&quot;http://blog.doughellmann.com/2009/06/book-review-economics-of-iterative.html&quot;&gt;posted it on my blog&lt;/a&gt;.&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/3910197584991549949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/3910197584991549949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/3910197584991549949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/3910197584991549949'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2009/06/book-review-economics-of-iterative.html' title='Book review: The Economics of Iterative Development'/><author><name>Doug Hellmann</name><uri>http://www.blogger.com/profile/01892352754222143463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhprDrJ7x4JLYZ0F-yZ25SDisFaC19kVukvFnUpbX2BB_YUybQYi4OW9ERIONydJKc-cAIzeLlauRp2sEweO4Fzs37ogvBgNAJmZAZF5yRhwffCQBxcZxFl_-e72cMtTiQ/s220/book-smaller.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-7999476866766384933</id><published>2009-01-05T12:59:00.002-05:00</published><updated>2009-01-05T14:13:56.170-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Next Meeting Organization"/><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl"/><title type='text'>January Meeting</title><content type='html'>Via Brandon Rhodes:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.meetup.com/python-atlanta/calendar/9401254/&quot;&gt;This month&#39;s Python Atlanta meeting&lt;/a&gt; is this Thursday, January 8th:&lt;br /&gt;&lt;br /&gt;And, I have exciting news - the chairman of the &lt;a href=&quot;http://www.python.org/psf/&quot;&gt;Python Software Foundation&lt;/a&gt; himself, &lt;a href=&quot;http://holdenweb.blogspot.com/&quot;&gt;Steve Holden&lt;/a&gt;, will be our main speaker! He will kick off our new year by giving us his own State of the Union address: in &quot;The State of the Python Community&quot;, he will talk about the Python community, its strengths, and its weaknesses. He will not only answer your questions about how to stay connected to the wider Python community, but will be asking *you* questions about how the community can be more accessible and serve you better!&lt;br /&gt;&lt;br /&gt;Our other talk should also be great: &lt;a href=&quot;http://www.ifpeople.net/&quot;&gt;ifPeople&lt;/a&gt; founder Christopher Johnson will answer the question &quot;Why People Choose Plone&quot; by talking about how his customers benefit from &lt;a href=&quot;http://plone.org/&quot;&gt;Plone&lt;/a&gt;, Python&#39;s flagship CMS (content management system). He will discuss how it integrates with other web-enabled services like Salesforce, and what it is like to install and theme a Plone site for the first time.&lt;br /&gt;&lt;br /&gt;If you are very interested in Plone, note that the Atlanta Plone group meets at the ifPeople offices this Wednesday at 5:30pm for beer, slide presentations, and talk about their favorite CMS!&lt;br /&gt;&lt;br /&gt;Feel free to either meet up with us early at the Howell Mill Figo Pasta at 6pm (email Brandon if you&#39;re coming so that he can get a head count), or just show up at the main meeting at 7:30pm at the GTRI Food Processing Technology Building for the presentations. &lt;a href=&quot;http://www.meetup.com/python-atlanta/calendar/9401254/&quot;&gt;Here are the meeting details, where you can RSVP and get directions.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;See you on Thursday!</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/7999476866766384933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/7999476866766384933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/7999476866766384933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/7999476866766384933'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2009/01/january-meeting.html' title='January Meeting'/><author><name>Doug Hellmann</name><uri>http://www.blogger.com/profile/01892352754222143463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhprDrJ7x4JLYZ0F-yZ25SDisFaC19kVukvFnUpbX2BB_YUybQYi4OW9ERIONydJKc-cAIzeLlauRp2sEweO4Fzs37ogvBgNAJmZAZF5yRhwffCQBxcZxFl_-e72cMtTiQ/s220/book-smaller.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-8854117011295453291</id><published>2008-10-26T16:48:00.001-04:00</published><updated>2008-10-26T17:14:39.730-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Announce"/><category scheme="http://www.blogger.com/atom/ns#" term="Hack-a-thon"/><title type='text'>15th Nov 2008 - Google App Engine Hackathon: Atlanta</title><content type='html'>Please join us on 15th Nov 2008 for a Google App Engine Hack-a-thon in Atlanta.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Learn about Google App Engine&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The events will include training on the major features of Google App Engine, including data modeling, the App Engine APIs, some aspects of Django, and how to mashup App Engine with other web services. Google Engineers and Product Managers will be on hand to help and to answer questions throughout the day.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Build With Us, or Build Your Own&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Throughout the day, we will be building a complete App Engine application, and sharing the code with you so you can code along with us. If, on the other hand, you already have a great idea for what to build, bring that idea with you to the hackathon. Even better, bring along anything you can prepare ahead of time (sketches, designs, web page mock ups, etc.) and use the time and information provided to develop your idea into a working application, then share it with the world.&lt;br /&gt;&lt;br /&gt;At the end of the day, we&#39;ll invite you to share your App Engine applications with the group.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What Do I Need?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;We will provide facilities, power, food, refreshments and experts to help you learn to use Google App Engine and write your application. Just bring your laptops, ideas and enthusiasm to complete the mix.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;When and Where?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The Atlanta hack-a-thon will take place Saturday 15th Nov 2008 from 10AM-6PM. It will be held at Google Atlanta in Millennium at Midtown, 10 10th Street NE, Suite 600, Atlanta, GA 30309&lt;br /&gt;&lt;br /&gt;Space is limited so Sign Up now: &lt;a href=&quot;http://sites.google.com/site/gaehackathonatlanta/registration&quot;&gt;http://sites.google.com/site/gaehackathonatlanta/registration&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/8854117011295453291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/8854117011295453291' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/8854117011295453291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/8854117011295453291'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2008/10/15th-nov-2008-google-app-engine.html' title='15th Nov 2008 - Google App Engine Hackathon: Atlanta'/><author><name>Doug Hellmann</name><uri>http://www.blogger.com/profile/01892352754222143463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhprDrJ7x4JLYZ0F-yZ25SDisFaC19kVukvFnUpbX2BB_YUybQYi4OW9ERIONydJKc-cAIzeLlauRp2sEweO4Fzs37ogvBgNAJmZAZF5yRhwffCQBxcZxFl_-e72cMtTiQ/s220/book-smaller.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-7176334359553741252</id><published>2008-05-11T04:24:00.001-04:00</published><updated>2008-05-11T04:24:20.790-04:00</updated><title type='text'>May PyAtl Meeting</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;The May meeting was a lot of fun.  I gave a talk on a silly Google App Engine application I wrote.  You can test it out, and grab the source code here:  http://greedycoin.appspot.com/.  Rick Thomas gave a much more in depth look at Google App Engine, and explained a lot about the architecture, and the Datastore API.  Doug Hellmann gave a special announcement about Python Magazine:  http://pymag.phparch.com/, you can get three months free.  Finally Brandon Rhodes gave yet another last minute lightening talk, on the topic of lexical closures.&lt;br /&gt;&lt;br /&gt;For June we will be covering Functional Programming in Python as our theme.  So far Toby Ho will do the introduction and reduce, I will cover itertools and generators, Rick Thomas, and Brandon are giving presentations which are TBD.  Hopefully we can have another comprehensive blowout of the topic with many short presentations.  Please volunteer for a topic and make sure we cover every last detail of functional programming.  I sense Rick Copeland and Jeremy Jones need to give a presentation, so hopefully they volunteer as well :)  For reference on topics to select for the meeting please reference this article:  http://www.amk.ca/python/writing/functional.  One immediate topic we are missing that comes to mind is this:  http://oakwinter.com/code/functional/&lt;br /&gt;&lt;br /&gt;You can RSVP to the June 12th meeting here:  http://python.meetup.com/46/calendar/7904879/&lt;br /&gt;&lt;br /&gt;In order to get better planning for pre-PyAtl dinners, I have created another meetup page just for the 6PM-7PM dinner.  You can RSVP for that for June here:  http://python.meetup.com/46/calendar/7916001/&lt;br /&gt;&lt;br /&gt;It appears there is interest in meeting once a month on a Saturday morning to work with Google App Engine projects and collaborate with people.  This will be an ongoing event.  There is a cross country Pylons sprint that will end up being the first Google App Engine Monthly meeting, as we are combining the two events.  You can book it here:  http://python.meetup.com/46/calendar/7915999/, and the group to discuss atlanta google app engine coding is here:  http://groups.google.com/group/pyatl-google-app-engine  Note this is going to be at White Wolf headquarters, and I will have the location as soon as I get it.</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/7176334359553741252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/7176334359553741252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/7176334359553741252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/7176334359553741252'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2008/05/may-pyatl-meeting.html' title='May PyAtl Meeting'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-3332084482759065249</id><published>2008-02-18T07:56:00.001-05:00</published><updated>2008-02-18T08:00:54.765-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2008"/><category scheme="http://www.blogger.com/atom/ns#" term="Feb"/><category scheme="http://www.blogger.com/atom/ns#" term="Meeting Notes"/><title type='text'>Feb Meeting Summary</title><content type='html'>For those that missed the meeting on Wednesday, it was awesome!  We are trying out a new location thanks to Sim Harbert, at the GTRI Food Processing Technology Building.  One of the advantages of this new building, is that security does not take 30-45 minutes to get through.  Rick Copeland , an &quot;old school&quot; PyAtl founder, gave an incredible presentation on BloxAlchemy, Drew Smathers and Carey Hull gave a very cool prezo on Axiom, and finally Brandon Rhodes gave an impromptu presentation on KSS.  Finally, Michael Langford, recorded things on his &quot;direct to the web&quot; camera, and will be posting it to PyAtl, via Google Video at some point.  Thanks Michael!  &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;March Meeting&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Concurrency with special guest Richard Tew:  White Wolf is rapidly becoming the PyAtl sugar daddy.  Richard Tew, the Stackless maintainer, will be giving a presentation on...you guessed it, Stackless.  Remember, we will be meeting on March 20th, due to a conflict with PyCon, and once again at Georgia Tech.  Please see the meetup page for full details:  http://python.meetup.com/46/calendar/7327638/  &lt;br /&gt;&lt;br /&gt;Please note we have room for a couple of 10 minute lightening talks related to concurrency, and that we will be having our monthly roundtable discussion on PyCon 2008 aftermath.  There will be a pre-PyAtl dinner as usual, at 6PM, at a yet to be determined place.  We discuss dinner before PyAtl here:  http://groups.google.com/group/pyatl-dinner&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Random Announcements&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;PyCon 08:&lt;/span&gt;  I believe there will be another large PyAtl group attending this year.  It might be cool if all met for lunch or dinner one night, plus if we had some kind of T-Shirt we printed at Cafe Press.  I drew up a very basic logo some time ago:  http://files.meetup.com/127119/PyAtl_Logo_bbg.png, but I am sure we could come up with a better one.  Make sure you stop by for Brandon&#39;s talk on Grok and my talk on Command Line Tools... although keep the eggs and tomato throwing to a minimum.  Remember we also want to see if we can get PyCon 2010 to be in Atlanta, so lets see what we need to do.  I believe there is sort of a bid process.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;PyAtl.org: &lt;/span&gt; Note, PyAtl.org is alive and kicking and 100% self serve, so have at it.  Basically if you give a presentation, you can post your material, and bio of yourself, just contact me for access after you sign yourself up for an account.  If you think we need a new section or content added to PyAtl, by golly add it yourself.  I sure as heck don&#39;t want to do it.  As hard as it is to believe, I try to have some sort of life outside of PyAtl.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Jobs Board&lt;/span&gt;:  I know some people have discussed putting a company section of PyAtl.org up, where people could highlight their Python related company.  Also, some brave soul could volunteer to help organize a jobs board.  I constantly get asked by employers how to access PyAtl people, and I keep telling them, eventually we are going to have a jobs board.  &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Special Interest Groups:&lt;/span&gt;  Quite a few people have expressed interest in joining special interest programming groups.  The idea would be that a leader, or leaders, of a technology would meet every other month on a Saturday morning for 3-4 hours and program etc.  So far we have interest in a Twisted Group led by Drew Smathers and Cary Hull, I know I would attend.  There is also an interest in a Grok group led by Brandon Rhodes, I know I would attend this too.  Maybe someone can start a special interest page on the PyAtl site, and also create a special interest google group mailing list so people can meet and discuss things.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Summer Sprint:&lt;/span&gt;  We are still planning on having a PeachWSGI/PyAtl sprint at the end of May or early June on a three day weekend.  Our only road block is finding a location for enough people to code together with internet access.  If your company would like to sponsor this event, please contact me.  I would anticipate it should be a turn out of approximately 30-50 developers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See you in  March!</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/3332084482759065249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/3332084482759065249' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/3332084482759065249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/3332084482759065249'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2008/02/feb-meeting-summary.html' title='Feb Meeting Summary'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-6554455894298495689</id><published>2008-01-29T19:04:00.000-05:00</published><updated>2008-01-29T19:06:47.450-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="meeting"/><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl"/><title type='text'>Feb 13th Python ORM&#39;s</title><content type='html'>&lt;span style=&quot;font-weight:bold;&quot;&gt;Theme:&lt;/span&gt; Python ORM&#39;s&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Primary Presentation &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;BloxAlchemy:&lt;/span&gt; Rick Copeland &lt;br /&gt;proprietary project called BloxAlchemy. Basically, it&#39;s a SQLAlchemy-like layer on top of a proprietary logical (Prolog-like) database. So where SA is Objects-&gt;SQL Generation-&gt;Database, BA is more like Objects-&gt;SQL Generation-&gt;Logic Generation-&gt;Database. Rick will include a brief intro to what a logical DB is, what it&#39;s good/bad for, and why BA solves a &quot;hard&quot; problem.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Axiom:&lt;/span&gt; 10 min Lightening talk by Cary Hull and/or Drew Smathers: http://divmod.org/tra... &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Storm:&lt;/span&gt; 10 min Lightening talk by Noah Gift: https://storm.canonic...&lt;br /&gt;&lt;br /&gt;If you want to help give a presentation please email me.&lt;br /&gt;&lt;br /&gt;Noah</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/6554455894298495689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/6554455894298495689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/6554455894298495689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/6554455894298495689'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2008/01/feb-13th-python-orms.html' title='Feb 13th Python ORM&#39;s'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-2650221957207008037</id><published>2007-12-29T13:34:00.001-05:00</published><updated>2007-12-29T13:34:57.176-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl Book Club"/><category scheme="http://www.blogger.com/atom/ns#" term="Review"/><title type='text'>Book Review: The Definitive Guide to Django</title><content type='html'>I&#39;ve posted &lt;a href=&quot;http://blog.doughellmann.com/2007/12/book-review-definitive-guide-to-django.html&quot;&gt;a review&lt;/a&gt; of the new Django book on my blog, and the Book Club review list.</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/2650221957207008037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/2650221957207008037' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/2650221957207008037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/2650221957207008037'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2007/12/book-review-definitive-guide-to-django.html' title='Book Review: The Definitive Guide to Django'/><author><name>Doug Hellmann</name><uri>http://www.blogger.com/profile/01892352754222143463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhprDrJ7x4JLYZ0F-yZ25SDisFaC19kVukvFnUpbX2BB_YUybQYi4OW9ERIONydJKc-cAIzeLlauRp2sEweO4Fzs37ogvBgNAJmZAZF5yRhwffCQBxcZxFl_-e72cMtTiQ/s220/book-smaller.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-5336924024667442789</id><published>2007-12-22T23:06:00.000-05:00</published><updated>2007-12-22T23:07:24.286-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="repoze"/><title type='text'>Repoze Talk</title><content type='html'>&lt;embed style=&quot;width:400px; height:326px;&quot; id=&quot;VideoPlayback&quot; type=&quot;application/x-shockwave-flash&quot; src=&quot;http://video.google.com/googleplayer.swf?docId=-3276625123051018943&amp;hl=en&quot; flashvars=&quot;&quot;&gt; &lt;/embed&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/5336924024667442789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/5336924024667442789' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/5336924024667442789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/5336924024667442789'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2007/12/repoze-talk.html' title='Repoze Talk'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-8523629732187481075</id><published>2007-11-24T21:59:00.000-05:00</published><updated>2007-11-24T22:09:15.872-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl Website"/><title type='text'>WWW PyAtl Is Alive and it speaks Plone 3.0</title><content type='html'>It turns out a little help from Atlanta-Plone and a holiday break allowed me to get Plone 3.0 finished.  Finally, we have a 100% complete working website.  We need a few beta testers.  The initial configuration is very secure, so accounts will need to be added by an administrator until we sorts things out.&lt;br /&gt;&lt;br /&gt;You can check it out here:  &lt;a href=&quot;http://www.pyatl.org/&quot;&gt;www.pyatl.org&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/8523629732187481075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/8523629732187481075' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/8523629732187481075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/8523629732187481075'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2007/11/www-pyatl-is-alive-and-it-speaks-plone.html' title='WWW PyAtl Is Alive and it speaks Plone 3.0'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-7005555630105079596</id><published>2007-11-17T08:23:00.001-05:00</published><updated>2007-11-17T08:25:08.228-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Announce"/><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl"/><title type='text'>#pyatl IRC channel</title><content type='html'>I&#39;ve set up a #pyatl channel on irc.freenode.net.  If you&#39;re an IRC user, come hang out.</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/7005555630105079596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/7005555630105079596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/7005555630105079596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/7005555630105079596'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2007/11/pyatl-irc-channel.html' title='#pyatl IRC channel'/><author><name>Doug Hellmann</name><uri>http://www.blogger.com/profile/01892352754222143463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhprDrJ7x4JLYZ0F-yZ25SDisFaC19kVukvFnUpbX2BB_YUybQYi4OW9ERIONydJKc-cAIzeLlauRp2sEweO4Fzs37ogvBgNAJmZAZF5yRhwffCQBxcZxFl_-e72cMtTiQ/s220/book-smaller.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-2498883892482423503</id><published>2007-11-12T09:07:00.001-05:00</published><updated>2007-11-12T09:20:02.767-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Announce"/><category scheme="http://www.blogger.com/atom/ns#" term="Community Blog"/><title type='text'>Email subscriptions</title><content type='html'>I&#39;ve set up feedburner to handle email subscriptions to this blog, for anyone who wants to receive updates that way instead of via RSS.  To subscribe, visit &lt;a href=&quot;http://pyatl.blogspot.com&quot;&gt;http://pyatl.blogspot.com&lt;/a&gt; and put your email address in the form on the right side of the page.&lt;br /&gt;&lt;br /&gt;- Doug</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/2498883892482423503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/2498883892482423503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/2498883892482423503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/2498883892482423503'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2007/11/email-subscriptions.html' title='Email subscriptions'/><author><name>Doug Hellmann</name><uri>http://www.blogger.com/profile/01892352754222143463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhprDrJ7x4JLYZ0F-yZ25SDisFaC19kVukvFnUpbX2BB_YUybQYi4OW9ERIONydJKc-cAIzeLlauRp2sEweO4Fzs37ogvBgNAJmZAZF5yRhwffCQBxcZxFl_-e72cMtTiQ/s220/book-smaller.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-6220771473734874667</id><published>2007-11-11T10:34:00.001-05:00</published><updated>2007-11-11T10:37:42.609-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Collective Intelligence"/><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl Book Club"/><title type='text'>Book Review: Programming Collective Intelligence</title><content type='html'>I&#39;ve posted &lt;a href=&quot;http://blog.doughellmann.com/2007/11/book-review-programming-collective.html&quot;&gt;my review for Programming Collective Intelligence&lt;/a&gt; over on my blog.</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/6220771473734874667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/6220771473734874667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/6220771473734874667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/6220771473734874667'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2007/11/book-review-programming-collective.html' title='Book Review: Programming Collective Intelligence'/><author><name>Doug Hellmann</name><uri>http://www.blogger.com/profile/01892352754222143463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhprDrJ7x4JLYZ0F-yZ25SDisFaC19kVukvFnUpbX2BB_YUybQYi4OW9ERIONydJKc-cAIzeLlauRp2sEweO4Fzs37ogvBgNAJmZAZF5yRhwffCQBxcZxFl_-e72cMtTiQ/s220/book-smaller.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-6606498382416923309</id><published>2007-10-28T16:51:00.001-04:00</published><updated>2007-10-29T03:52:56.474-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Collective Intelligence"/><category scheme="http://www.blogger.com/atom/ns#" term="PyAtl Book Club"/><category scheme="http://www.blogger.com/atom/ns#" term="Review"/><title type='text'>Review of Collective Intelligence</title><content type='html'>I was quite excited to get a copy of Collective Intelligence to review for the PyAtl Bookclub, as I am extremely interested in Artificial Intelligence.  I was also extremely pleased to learn that Collective Intelligence used Python, exclusively, throughout the book to explain the author&#39;s ideas.  There is a certain like minding thinking that Python Programmers share and it certainly comes through in this book by Toby Segaran.&lt;br /&gt;&lt;br /&gt;With these high expectations on the table, it would have been easy for me to be disappointed, but the book met the expectations that I had, and in certain situations, exceeded them.  One of the great aspects of Python, is that is so pragmatic.  In a trivial amount of code, this book explained how to apply unsupervised learning techniques to RSS feeds.  I had been meaning for quite some time to write some code that parsed RSS feeds and determined relevant information for me automatically.  In Chapter 2, the book jumps right into using the &quot;feedparser&quot; module, to do just that!  There are also great examples of using, &quot;urllib2&quot;, and SQLite, in that same chapter.&lt;br /&gt;&lt;br /&gt;Throughout, the rest of the book, Toby explores various other AI techniques, and explains clearly, how to implement them in Python.  One nice touch at the end of the book, was to include a reference to modules used in the book, and to include small usage examples.  I was quite pleased by Collective Intelligence, and I would recommend the book to any intermediate to advanced programmer who wants to learn more about AI, and also web specific applications of AI theory.&lt;br /&gt;&lt;br /&gt;-Noah Gift</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/6606498382416923309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/6606498382416923309' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/6606498382416923309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/6606498382416923309'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2007/10/review-of-collective-intelligence.html' title='Review of Collective Intelligence'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-8712295189008851042</id><published>2007-10-22T22:13:00.001-04:00</published><updated>2007-10-25T21:06:34.164-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Next Meeting Organization"/><title type='text'>Nov. 8th meeting: GUI Showdown</title><content type='html'>The next meeting is November 8th at 7:30 at Turner.  This month&#39;s theme is graphical user interface toolkits.  The presenters will be offering a series of 10 minute Lightning talks so we have a good overview of a variety of toolkits.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7:15-7:30&lt;/strong&gt; Meet at Turner Lobby.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7:30-7:45&lt;/strong&gt; Opening Remarks and setup.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7:45-~9:00&lt;/strong&gt; Series of 10 Minute Lightning talks on GUI toolkits:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.pygtk.org/pygtk2tutorial/index.html&quot;&gt;PyGTK 2.0&lt;/a&gt;: Jeremy Jones&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.wxpython.org/&quot;&gt;WXPython&lt;/a&gt;: &lt;em&gt;We need someone!&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.pyglet.org/&quot;&gt;PyGlet&lt;/a&gt;: Drew Smathers&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://wiki.python.org/moin/PyQt&quot;&gt;PyQt&lt;/a&gt;: &lt;em&gt;We need someone!&lt;/em&gt;&lt;a href=&quot;http://divmod.org/trac/wiki/DivmodNevow/Athena&quot;&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://divmod.org/trac/wiki/DivmodNevow/Athena&quot;&gt;Divmod Nevow Athena&lt;/a&gt;: Cary Hull&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://docs.python.org/lib/tkinter.html&quot;&gt;Tkinter&lt;/a&gt;: Bernard Matthews&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.apple.com/macosx/technology/unix.html&quot;&gt;Python/Cocoa/Leopard: &lt;/a&gt;Noah Gift&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Door Prize For Best Presentation!&lt;/strong&gt; There will be a Door Prize for the best presentation, by way of vote.  The door prize will be a copy of, &lt;a href=&quot;http://www.oreilly.com/catalog/9780596510510/&quot;&gt;Making Things Talk&lt;/a&gt;, thanks to O&#39;Reilly.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;9:00-?&lt;/strong&gt; General Discussion &amp;amp; Coding Sessions&lt;br /&gt;&lt;br /&gt;Make sure you head over to the &lt;a href=&quot;http://python.meetup.com/46/calendar/6533675/&quot;&gt;meetup.com page&lt;/a&gt; and RSVP if you&#39;re coming, so your name is added to the security list for Turner.</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/8712295189008851042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/8712295189008851042' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/8712295189008851042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/8712295189008851042'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2007/10/nov-8th-meeting-gui-showdown.html' title='Nov. 8th meeting: GUI Showdown'/><author><name>Doug Hellmann</name><uri>http://www.blogger.com/profile/01892352754222143463</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhprDrJ7x4JLYZ0F-yZ25SDisFaC19kVukvFnUpbX2BB_YUybQYi4OW9ERIONydJKc-cAIzeLlauRp2sEweO4Fzs37ogvBgNAJmZAZF5yRhwffCQBxcZxFl_-e72cMtTiQ/s220/book-smaller.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8926285956869662516.post-2942543810807084639</id><published>2007-10-14T12:28:00.000-04:00</published><updated>2007-10-17T22:01:47.996-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Announce"/><category scheme="http://www.blogger.com/atom/ns#" term="Community Blog"/><category scheme="http://www.blogger.com/atom/ns#" term="Meeting Notes"/><category scheme="http://www.blogger.com/atom/ns#" term="Next Meeting Organization"/><title type='text'>PyAtl  Meeting Notes, Thursday, Oct. 11th:  Zope Technologies</title><content type='html'>&lt;span style=&quot;font-weight:bold;&quot;&gt;First Presentation:  &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Derek Richardson gave a presentation on Plone 3.  He talked about some of the features of Plone 3 and how to correctly configure a new Plone 3 site.  We also briefly talked about moving the PyAtl website to Plone.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Second Presentation: &lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Drew Smathers gave a talk on the Zope 3 Component Architecture, and also talked about &lt;a href=&quot;http://grok.zope.org/&quot;&gt;Grok&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Nov Meeting Plans:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Toby Ho suggested a GUI showdown, and everyone liked the idea.  The format for the November &lt;br /&gt;meeting will be:&lt;br /&gt;&lt;br /&gt;Small Roundtable Discussion depending on the number of GUI Presenters.&lt;br /&gt;Multiple, 10 Minute Lightening Talks, as many as we can squeeze in and get out by 9PM.&lt;br /&gt;&lt;br /&gt;Here is a list of Python GUIs, from the Python wiki:&lt;br /&gt;&lt;a href=&quot;http://wiki.python.org/moin/GuiProgramming&quot;&gt;http://wiki.python.org/moin/GuiProgramming&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;br /&gt;Presenters So Far:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cary Hull:  &lt;a href=&quot;http://www.pyglet.org/&quot;&gt;Pyglet&lt;/a&gt;&lt;br /&gt;Jeremy Jones:  PyGTK 2.0&lt;br /&gt;Noah Gift:  Cocoa/Python/Leopard&lt;br /&gt;&lt;br /&gt;We probably have room for 3-5 more 10 minute presentations, here are my suggestions&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Suggestions for potential presenters:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Toby since you brought it up, are you going to volunteer?&lt;br /&gt;&lt;br /&gt;TkInter:  Bernard?&lt;br /&gt;WXPython:&lt;br /&gt;PyQT&lt;br /&gt;PyKDE&lt;br /&gt;Jython:  Howard?&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Miscellaneous Happenings:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt; LinkedIn Group:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thanks to another great suggestion by Doug Hellmann, we now have a Linked In PyAtl Group.  Please feel free to invite yourself and I will approve the queue:&lt;br /&gt;&lt;br /&gt;Here is the invitation link:&lt;br /&gt;&lt;a href=&quot;http://www.linkedin.com/e/gis/37441/61EE145B3728&quot;&gt;http://www.linkedin.com/e/gis/37441/61EE145B3728&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt; PyAtl Blog:&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;I will be making a few changes on the main website as we prepare to eventually move to Plone, but in the meantime, in the spirit of &quot;something is better than nothing&quot;.  We have a blogger account that any and all members of PyAtl can contribute to. &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://pyatl.blogspot.com/&quot;&gt;PyAtl Community Blog &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Recommended Use:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;1.  Email me, Noah Gift, at noahdotgiftatgmaildotcom, and request an invite to edit the blog.&lt;br /&gt;2.  Try to use tags when you post.  For example, I am posting this under &quot;Meeting Notes, Next Meeting Organization, Announce, Community Blog.  It is best if you can use previous tags that another person has created.&lt;br /&gt;3.  Don&#39;t be evil, not that I really need to mention it, as I am sure we will all be fine.&lt;br /&gt;4.  Please contribute, if you have more detailed notes about a meeting, feel free to append my post, or add a new one.&lt;br /&gt;&lt;br /&gt;-Noah</content><link rel='replies' type='application/atom+xml' href='http://pyatl.blogspot.com/feeds/2942543810807084639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8926285956869662516/2942543810807084639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/2942543810807084639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8926285956869662516/posts/default/2942543810807084639'/><link rel='alternate' type='text/html' href='http://pyatl.blogspot.com/2007/10/pyatl-meeting-notes-thursday-oct-11th.html' title='PyAtl  Meeting Notes, Thursday, Oct. 11th:  Zope Technologies'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>