<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>..::Planet PostgreSQL::..</title>
	<link rel="self" href="http://www.planetpostgresql.org/atom.xml"/>
	<link href="http://www.planetpostgresql.org/"/>
	<id>http://www.planetpostgresql.org/atom.xml</id>
	<updated>2011-01-04T12:58:16+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry xml:lang="en">
		<title type="html">Redirecting planetpostgresql.org to planet.postgresql.org -- please update your bookmarks</title>
		<link href="http://blog.gunduz.org/index.php?/archives/103-Redirecting-planetpostgresql.org-to-planet.postgresql.org-please-update-your-bookmarks.html"/>
		<id>http://blog.gunduz.org/index.php?/archives/103-guid.html</id>
		<updated>2011-01-04T12:32:28+00:00</updated>
		<content type="html">&lt;p&gt;When I started Planet PostgreSQL project&amp;#160; about 6.5 years ago, we had only very few (almost none!) bloggers -- but we had to start at some point. As time moved on, lots of people started blogging, and we had invaluable blog posts about various PostgreSQL related topics.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt; When community decided to fork the planet project because of valid reasons, it increased the visibility of blogs, because it was also feeding postgresql.org main page. It also has more bloggers. However, we had tons of people who were following &amp;quot;my&amp;quot; planet, because they already bookmarked it and never ever heard about new planet.&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Anyway, I'll keep it short: As of today, I will be stopping updating this planet. This will be the latest post on this planet. Please use &lt;a href=&quot;http://blog.gunduz.org/exit.php?url_id=173&amp;amp;entry_id=103&quot; title=&quot;http://planet.postgresql.org&quot;&gt;http://planet.postgresql.org&lt;/a&gt;&amp;#160; as the new Planet PostgreSQL URL.&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;I will redirect domains in a few months after making sure that (almost) everyone updated their bookmarks. &lt;/p&gt; &lt;br /&gt;
&lt;p&gt;There will be no changes in &lt;a href=&quot;http://blog.gunduz.org/exit.php?url_id=174&amp;amp;entry_id=103&quot; title=&quot;http://people.planetpostgresql.org&quot;&gt;people.planetpostgresql.org.&lt;/a&gt; &lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Regards, Devrim&lt;br /&gt;&lt;/p&gt;</content>
		<author>
			<name>Devrim GUNDUZ</name>
			<email>nospam@example.com</email>
			<uri>http://blog.gunduz.org/</uri>
		</author>
		<source>
			<title type="html">MadBlog - Planet-Temp</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://blog.gunduz.org/index.php?/feeds/categories/8-Planet-Temp.rss"/>
			<id>http://blog.gunduz.org/index.php?/feeds/categories/8-Planet-Temp.rss</id>
			<updated>2011-01-04T12:57:10+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">2010 retrospective</title>
		<link href="http://www.chesnok.com/daily/2011/01/03/2010-retrospective/"/>
		<id>http://www.chesnok.com/daily/?p=2385</id>
		<updated>2011-01-04T01:49:30+00:00</updated>
		<content type="html">&lt;div class=&quot;tweetmeme_button&quot;&gt;
			&lt;a href=&quot;http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2011%2F01%2F03%2F2010-retrospective%2F&quot;&gt;&lt;br /&gt;
				&lt;img src=&quot;http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2011%2F01%2F03%2F2010-retrospective%2F&amp;amp;style=normal&amp;amp;b=2&quot; height=&quot;61&quot; width=&quot;50&quot; /&gt;&lt;br /&gt;
			&lt;/a&gt;
		&lt;/div&gt;
&lt;p&gt;I&amp;#8217;m barely back from a 2-week vacation, and still easing my way back into Portland living. &lt;/p&gt;
&lt;p&gt;Looking back on 2010, the highlights were: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Listed as a &lt;a href=&quot;http://www.postgresql.org/community/contributors/&quot;&gt;major contributor to PostgreSQL&lt;/a&gt;. In typical community-style, I found out by chance by looking at the contributors website one day, weeks after the change was made. Sneaky devils. &lt;img src=&quot;http://www.chesnok.com/daily/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;
&lt;/li&gt;
&lt;li&gt;Gave talks at LinuxConf.AU in New Zealand, LibrePlanet in Boston, PgCon in Ottawa, CouchCamp in the Bay area, Grace Hopper Celebration of Women in Computing in Atlanta, LinuxFest Northwest in Bellingham, WA, Google Summer of Code Mentor&amp;#8217;s Summit in Mountain View, and keynoted DevNation in Portland.
&lt;/li&gt;
&lt;li&gt;Helped run the first ever &lt;a href=&quot;http://goscon.org/ignitegov&quot;&gt;IgniteGov&lt;/a&gt; at GOSCON in Portland!
&lt;/li&gt;
&lt;li&gt;Spoke at and participated in &lt;a href=&quot;http://baacamp.org&quot;&gt;KiwiFoo&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Foo_Camp&quot;&gt;FooCamp&lt;/a&gt;. KiwiFoo changed my life. At some point, I&amp;#8217;d love to live in New Zealand.
&lt;/li&gt;
&lt;li&gt;Made &lt;a href=&quot;http://stickurs.org&quot;&gt;stickers&lt;/a&gt; with Reid and distributed OSFY, FSFY and OALFY stickers across the world.
&lt;/li&gt;
&lt;li&gt;Lead the second successful &lt;a href=&quot;http://opensourcebridge.org&quot;&gt;Open Source Bridge&lt;/a&gt; conference. The second edition brought in Danny O&amp;#8217;Brien, as he started his work with the Committee to Protect Journalists, Leigh Honeywell, who chronicled the rise of hackerspaces around the world, and Mayor Sam Adams. Danny&amp;#8217;s talk was an inspiration to me, and I&amp;#8217;m looking for opportunities to create better and more secure software for people who fight political oppression.
&lt;/li&gt;
&lt;li&gt;Started work at &lt;a href=&quot;http://myemma.com&quot;&gt;Emma&lt;/a&gt;, a lovely group of people and tons of interesting problems to work on.
&lt;/li&gt;
&lt;li&gt;Learned Python. Well, still learning python. &lt;img src=&quot;http://www.chesnok.com/daily/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;
&lt;/li&gt;
&lt;li&gt;Took a couple vacations &amp;#8211; Fourth of July weekend in Nashville, TN and two weeks in St Croix in December.
&lt;/li&gt;
&lt;li&gt;Spent a week in Montana with my mom for the first time in many years and had Thanksgiving with family at her mountain-man hideout near Tally Lake.
&lt;/li&gt;
&lt;li&gt;Drove to and from from Montana. I love road trips.
&lt;/li&gt;
&lt;li&gt;Started the &lt;a href=&quot;http://pdx11.org&quot;&gt;PDX11&lt;/a&gt; site to help publicize what the city and citizens are working together to create an even better and more inviting software community in Portland.
&lt;/li&gt;
&lt;li&gt;Worked on &lt;a href=&quot;http://trolluniversity.com/&quot;&gt;trolluniversity.com&lt;/a&gt; with Duke and Bart. Lots of scotch, ontologies and awkward jokes expected in the future.&lt;/li&gt;
&lt;li&gt;Saw one of the world&amp;#8217;s largest tesla coils turned on and run in a giant warehouse. Twice. And learned a tiny bit more about lightning, Tesla and high voltage.&lt;/li&gt;
&lt;li&gt;Connected with a ton of new friends in open source communities, and hope to make many more in the new year.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;#8217;m sure I left a few things out. I wish I would have written this post last year for 2009, as it was also an amazing year, full of travel, new experiences and wonderful people.  Maybe I&amp;#8217;ll do that and just backdate it for myself. I forgot that &lt;a href=&quot;http://www.chesnok.com/daily/2010/01/11/2010-pictures-from-the-past-inspiring-me-this-year/&quot;&gt;I&amp;#8217;d done a picture inspiration&lt;/a&gt; last year for 2010. I substituted scuba diving for flying &amp;#8211; cheaper and quite a bit safer. &lt;img src=&quot;http://www.chesnok.com/daily/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;  Otherwise.. mostly all came to pass. &lt;/p&gt;
&lt;p&gt;Another thing about this year: I&amp;#8217;m still not sure what it is that I want to become. I&amp;#8217;ve had many conversations over the last six months with women who are at a similar stage of life &amp;#8211; stable work/career, considering having children, loving travel, obsessed with software and communication. &lt;/p&gt;
&lt;p&gt;What comforted me is that they were sitting with the ambiguity of it all as well, and finding ways of sifting through probabilities to home in on what&amp;#8217;s truly important. I think happiness is an important factor in decision making about life&amp;#8217;s goals, but there&amp;#8217;s a big part of me that&amp;#8217;s more apt to go for interestingness instead. So, while sometimes things have gone off the rails or been incredibly difficult in the last year, all the experiences I listed above have made the sacrifices and contemplative time worth it.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/07/13/foocamp-2010-lovely-expectant-reflective/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Foocamp 2010: lovely, expectant, reflective&quot;&gt;Foocamp 2010: lovely, expectant, reflective&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content>
		<author>
			<name>selena</name>
			<uri>http://www.chesnok.com/daily</uri>
		</author>
		<source>
			<title type="html">tending the garden</title>
			<subtitle type="html">selena marie deckelmann's blog</subtitle>
			<link rel="self" href="http://www.chesnok.com/daily/feed/atom/"/>
			<id>http://www.chesnok.com/daily/feed/atom/</id>
			<updated>2011-01-04T03:01:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Waiting for 9.1 – Unlogged tables</title>
		<link href="http://www.depesz.com/index.php/2011/01/03/waiting-for-9-1-unlogged-tables/"/>
		<id>http://www.depesz.com/?p=1937</id>
		<updated>2011-01-03T13:07:01+00:00</updated>
		<content type="html">On 29th of December, Robert Haas committed interesting patch, which does: Support unlogged tables. &amp;#160; The contents of an unlogged table aren't WAL-logged; thus, they are not available on standby servers and are truncated whenever the database system enters recovery. Indexes on unlogged tables are also unlogged. Unlogged GiST indexes are not currently supported. (edited [...]</content>
		<author>
			<name>Hubert Lubaczewski</name>
			<uri>http://www.depesz.com</uri>
		</author>
		<source>
			<title type="html">select * from depesz; » postgresql</title>
			<link rel="self" href="http://www.depesz.com/index.php/tag/postgresql/feed/"/>
			<id>http://www.depesz.com/index.php/tag/postgresql/feed/</id>
			<updated>2011-01-03T13:16:31+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Version Control Visualization and End Point in Open Source</title>
		<link href="http://blog.endpoint.com/2011/01/version-control-visualization-and-end.html"/>
		<id>tag:blogger.com,1999:blog-7997313029981170997.post-7616351511753832756</id>
		<updated>2011-01-03T10:22:13+00:00</updated>
		<content type="html">&lt;p&gt;Over the weekend, I &lt;a href=&quot;http://royal.pingdom.com/2010/11/25/awesome-visualizations-of-internet-and-web-tech/&quot;&gt;discovered&lt;/a&gt; an open source tool for version control visualization, &lt;a href=&quot;http://code.google.com/p/gource/&quot;&gt;Gource&lt;/a&gt;. I decided to put together a few videos to showcase End Point's involvement in several open source projects.&lt;/p&gt;

&lt;p&gt;Here's a quick legend to help understand the videos below:&lt;/p&gt;

&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/_wWmWqyCEKEs/TSEQe_JYERI/AAAAAAAADug/J5f0_i57sUc/s1600/filestructure.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_wWmWqyCEKEs/TSEQe_JYERI/AAAAAAAADug/J5f0_i57sUc/s400/filestructure.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5557741539684782354&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;&lt;td&gt;The branches and nodes correlate to directories and files, respectively. In the case of the image to the left, the repository has a main directory with several files and three directories. One of the child directories has one file and the other two have multiple files.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/_wWmWqyCEKEs/TSEQeiyw66I/AAAAAAAADuY/DE-JKJECo8I/s1600/flash.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_wWmWqyCEKEs/TSEQeiyw66I/AAAAAAAADuY/DE-JKJECo8I/s400/flash.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5557741532073749410&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;&lt;td&gt;
A big dot represents a person, and a flash connecting the person and a file signifies a commit.
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/_wWmWqyCEKEs/TSEQT2v0cXI/AAAAAAAADuI/hegHiG86qBU/s1600/end_point.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_wWmWqyCEKEs/TSEQT2v0cXI/AAAAAAAADuI/hegHiG86qBU/s200/end_point.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5557741348451545458&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;&lt;td&gt;
White + blue dots represent current End Point employees.
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&quot;http://4.bp.blogspot.com/_wWmWqyCEKEs/TSEQUbgrQZI/AAAAAAAADuQ/nle2R79B7Tw/s1600/old_employee.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_wWmWqyCEKEs/TSEQUbgrQZI/AAAAAAAADuQ/nle2R79B7Tw/s200/old_employee.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5557741358320140690&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;&lt;td&gt;
White + grey dots represent former End Point employees.
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/_wWmWqyCEKEs/TSEQT0EwdcI/AAAAAAAADuA/2QUZa4LMFnM/s1600/default.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_wWmWqyCEKEs/TSEQT0EwdcI/AAAAAAAADuA/2QUZa4LMFnM/s200/default.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5557741347734058434&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;&lt;td&gt;
White dots represent other people, out there!
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;h3&gt;The Videos&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://vimeo.com/18377577&quot;&gt;Interchange&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user5632078&quot;&gt;endpoint&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com/&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://vimeo.com/18376918&quot;&gt;pgsi&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user5632078&quot;&gt;endpoint&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com/&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://vimeo.com/18377348&quot;&gt;Spree&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user5632078&quot;&gt;endpoint&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com/&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://vimeo.com/18376453&quot;&gt;Bucardo&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user5632078&quot;&gt;endpoint&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com/&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One of the articles that references Gource suggests that the videos can be used to visualize and analyze the community involvement of a project (open source or not). One might also be able to qualitatively analyze the stability of project file architecture from a video, but this won't reveal anything definitive about the code stability since external factors can influence file structure. For example, since I am intimately familiar with the progress of Spree, I can identify when Spree transitioned to Rails 3 in the video, which required reorganization of the Spree core functionality (read more about this &lt;a href=&quot;http://blog.endpoint.com/2010/10/spree-on-rails-3-part-one.html&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://blog.endpoint.com/2010/10/spree-on-rails-3-part-two.html&quot;&gt;here&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;In the case of this article, I wanted to highlight End Point's involvement in a few open source projects where we've had various levels of involvement. We've contributed to Interchange since 2000. We've been involved in Spree less lately, but had more presence in early 2009. In the smaller projects Bucardo and pgsi, End Point employees have worked on a team to be the primary contributors to the projects in addition to a few external contributors. Open source is important to End Point, and it's great to see our presence demonstrated in these cute videos.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7997313029981170997-7616351511753832756?l=blog.endpoint.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Steph Skardal</name>
			<email>steph@endpoint.com</email>
			<uri>http://blog.endpoint.com/search/label/postgres</uri>
		</author>
		<source>
			<title type="html">End Point Blog</title>
			<subtitle type="html">Ongoing observations by End Point people.</subtitle>
			<link rel="self" href="http://blog.endpoint.com/feeds/posts/default/-/postgres/"/>
			<id>tag:blogger.com,1999:blog-7997313029981170997</id>
			<updated>2011-01-03T15:30:34+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PostgreSQL Weekly News January 2nd 2011</title>
		<link href="http://www.postgresql.org/community/weeklynews/pwn20110102"/>
		<id>http://www.postgresql.org/community/weeklynews/pwn20110102</id>
		<updated>2011-01-02T08:00:00+00:00</updated>
		<content type="html">PostgreSQL 9.1alpha3 released!  Get it here:
&lt;a href=&quot;http://developer.postgresql.org/pgdocs/postgres/release-9-1-alpha.html&quot;&gt;http://developer.postgresql.org/pgdocs/postgres/release-9-1-alpha.html&lt;/a&gt;
Here's how to test it:
&lt;a href=&quot;http://wiki.postgresql.org/wiki/HowToBetaTest&quot;&gt;http://wiki.postgresql.org/wiki/HowToBetaTest&lt;/a&gt;</content>
		<author>
			<name>PostgreSQL Weekly News</name>
			<uri>http://www.postgresql.org/community/weeklynews/</uri>
		</author>
		<source>
			<title type="html">PostgreSQL Weekly News</title>
			<link rel="self" href="http://wwwmaster.postgresql.org/files/weeklynews.xml"/>
			<id>http://wwwmaster.postgresql.org/files/weeklynews.xml</id>
			<updated>2011-01-03T07:16:13+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">pltoolbox released</title>
		<link href="http://okbob.blogspot.com/2011/01/pltoolbox-released.html"/>
		<id>tag:blogger.com,1999:blog-8839574367290288724.post-1674971349989068652</id>
		<updated>2011-01-01T08:27:21+00:00</updated>
		<content type="html">Hello&lt;br /&gt;I released new version of pst collection. This version was enhanced about a regress tests and &lt;a href=&quot;http://www.pgsql.cz/index.php/PL_toolbox_%28en%29&quot;&gt;documentation&lt;/a&gt;. At the same time I renamed this package to &lt;a href=&quot;http://pgfoundry.org/frs/?group_id=1000457&quot;&gt;&lt;i&gt;PL toolbox&lt;/i&gt;&lt;/a&gt;, because functions from this package are intended for using in stored procedures.&lt;br /&gt;Happy New Year&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8839574367290288724-1674971349989068652?l=okbob.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Pavel Stěhule</name>
			<email>noreply@blogger.com</email>
			<uri>http://okbob.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Pavel Stehule's blog</title>
			<subtitle type="html">Some notes about PostgreSQL</subtitle>
			<link rel="self" href="http://okbob.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-8839574367290288724</id>
			<updated>2011-01-03T17:01:48+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">What was in your stocking?</title>
		<link href="http://people.planetpostgresql.org/andrew/index.php?/archives/142-What-was-in-your-stocking.html"/>
		<id>http://people.planetpostgresql.org/andrew/index.php?/archives/142-guid.html</id>
		<updated>2010-12-30T16:10:18+00:00</updated>
		<content type="html">&lt;!-- s9ymdb:8 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;259&quot; height=&quot;436&quot; src=&quot;http://people.planetpostgresql.org/andrew/uploads/ganesha.png&quot; alt=&quot;&quot; /&gt; One of my Christmas gifts this year was this charming little statue of Ganesha, the Hindu God with an elephant's head. Some years ago I was going to create a piece of software named for Ganesha, a Postgres-backed blog, but as often happens life and other things got in the way. He's used in the logo for &lt;a href=&quot;http://www.dunslane.net&quot;&gt;Dunslane Consulting LLC&lt;/a&gt;, and is a very appropriate God to be associated with PostgreSQL, being recognized by Jains and Buddhists as well as Hindus (so he has wide appeal), and is a patron of arts and sciences and deva of intellect and wisdom, according to Wikipedia.&lt;br /&gt;
&lt;br /&gt;
And he's cute.</content>
		<author>
			<name>Andrew Dunstan</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/andrew/</uri>
		</author>
		<source>
			<title type="html">Andrew's PostgreSQL blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2</id>
			<updated>2010-12-31T09:30:32+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Bitmapset for PL/pgSQL</title>
		<link href="http://okbob.blogspot.com/2010/12/bitmapset-for-plpgsql.html"/>
		<id>tag:blogger.com,1999:blog-8839574367290288724.post-3067654562704315536</id>
		<updated>2010-12-29T10:58:48+00:00</updated>
		<content type="html">PostgreSQL has a nice functions for operations over bitmapset. A bitmapset is set of positive integers. It should be smaller than array, and, what is important for me. it support very fast test if some value is in set or not. PostgreSQL internally use this functions, but there are not possibility to use it from SQL (PL/pgSQL). I wrote a wrapper for this functionality and moved it to PST collection - &lt;a href=&quot;http://pgfoundry.org/frs/download.php/2909/pstcoll-10-12-29.tgz&quot;&gt;http://pgfoundry.org/frs/download.php/2909/pstcoll-10-12-29.tgz&lt;/a&gt;.so there is some preview:&lt;br /&gt;&lt;pre&gt;pavel=# select pg_column_size(pst.bitmapset '{1,2,3,4}');&lt;br /&gt; pg_column_size &lt;br /&gt;----------------&lt;br /&gt;              8&lt;br /&gt;(1 row)&lt;br /&gt;&lt;br /&gt;pavel=# select pg_column_size(array[1,2,3,4]);&lt;br /&gt; pg_column_size &lt;br /&gt;----------------&lt;br /&gt;             40&lt;br /&gt;(1 row)&lt;br /&gt;&lt;br /&gt;pavel=# select pst.add_members('{}', 1, 2, 4,8);&lt;br /&gt; add_members &lt;br /&gt;-------------&lt;br /&gt; {1,2,4,8}&lt;br /&gt;(1 row)&lt;br /&gt;&lt;br /&gt;pavel=# select pst.is_member(pst.add_members('{}', 1, 2, 4,8), 8);&lt;br /&gt; is_member &lt;br /&gt;-----------&lt;br /&gt; t&lt;br /&gt;(1 row)&lt;br /&gt;&lt;br /&gt;pavel=# select pst.bitmapset_union('{1,2,3}','{6,2,9}');&lt;br /&gt; bitmapset_union &lt;br /&gt;-----------------&lt;br /&gt; {1,2,3,6,9}&lt;br /&gt;(1 row)&lt;br /&gt;&lt;/pre&gt;Without bitmapsets we have to use a arrays. But bitmaps are better for storing some flags - it's more adequate tool. &lt;br /&gt;&lt;pre&gt;pavel=# select count(*) from omega;&lt;br /&gt;  count  &lt;br /&gt;---------&lt;br /&gt; 1010000&lt;br /&gt;(1 row)&lt;br /&gt;&lt;br /&gt;pavel=# select bitmapset_collect(a) from omega;&lt;br /&gt;    bitmapset_collect     &lt;br /&gt;--------------------------&lt;br /&gt; {0,1,2,3,4,5,6,7,8,9,10}&lt;br /&gt;(1 row)&lt;br /&gt;&lt;br /&gt;Time: 558.667 ms&lt;br /&gt;&lt;br /&gt;pavel=# select array_agg(distinct a) from omega;&lt;br /&gt;        array_agg         &lt;br /&gt;--------------------------&lt;br /&gt; {0,1,2,3,4,5,6,7,8,9,10}&lt;br /&gt;(1 row)&lt;br /&gt;&lt;br /&gt;Time: 3859.567 ms&lt;br /&gt;&lt;/pre&gt;Using a bitmapset is about 7x faster.&lt;br /&gt;&lt;pre&gt;pavel=# select del_members('{2,3,4,5,1}',2,3);&lt;br /&gt; del_members &lt;br /&gt;-------------&lt;br /&gt; {1,4,5}&lt;br /&gt;(1 row)&lt;br /&gt;&lt;br /&gt;pavel=# select bitmapset_is_subset('{1,2,3}','{1,3}');&lt;br /&gt; bitmapset_is_subset &lt;br /&gt;---------------------&lt;br /&gt; f&lt;br /&gt;(1 row)&lt;br /&gt;&lt;br /&gt;pavel=# select bitmapset_overlap('{1,2,3}','{1,3}');&lt;br /&gt; bitmapset_overlap &lt;br /&gt;-------------------&lt;br /&gt; t&lt;br /&gt;(1 row)&lt;br /&gt;&lt;br /&gt;pavel=# select bitmapset_difference('{1,2,3}','{1,3}');&lt;br /&gt; bitmapset_difference &lt;br /&gt;----------------------&lt;br /&gt; {2}&lt;br /&gt;(1 row)&lt;br /&gt;&lt;/pre&gt;Probably this simple wrapper can be enhanced - some GiST or GIN index can be nice. The bitmapset is limited only on integers. There is not simple way to use it together with enums for example.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8839574367290288724-3067654562704315536?l=okbob.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Pavel Stěhule</name>
			<email>noreply@blogger.com</email>
			<uri>http://okbob.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Pavel Stehule's blog</title>
			<subtitle type="html">Some notes about PostgreSQL</subtitle>
			<link rel="self" href="http://okbob.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-8839574367290288724</id>
			<updated>2011-01-03T17:01:48+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PostgreSQL 9 High Performance Book Review</title>
		<link href="http://www.postgresonline.com/journal/archives/192-PostgreSQL-9-High-Performance-Book-Review.html"/>
		<id>http://www.postgresonline.com/journal/archives/192-guid.html</id>
		<updated>2010-12-28T20:59:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://www.postgresonline.com/store.php?asin=184951030X&quot;&gt;&lt;img src=&quot;http://www.postgresonline.com/images/affiliate/PostgreSQL9.0HighPerformance_large.jpg&quot; border=&quot;0&quot; alt=&quot;PostgreSQL 9.0 High Performance&quot; /&gt;&lt;/a&gt;
In a prior article we did a review of &lt;a href=&quot;http://www.postgresonline.com/journal/archives/182-postgrsql90admincookbook.html&quot; target=&quot;_blank&quot;&gt;PostgreSQL 9 Admin Cookbook&lt;/a&gt;, by Simon Riggs and Hannu Krosing.  In this article
we'll take a look at the companion book &lt;a href=&quot;http://www.postgresonline.com/store.php?asin=184951030X&quot; target=&quot;_blank&quot;&gt;PostgreSQL 9 High Performance&lt;/a&gt; by Greg Smith.&lt;/p&gt;
&lt;p&gt;Both books are published by Packt Publishing and can be &lt;a href=&quot;http://link.packtpub.com/2NCM0g&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;bought directly from Packt Publishing&lt;/b&gt;&lt;/a&gt; or via Amazon. Packt is currently running a 50% off sale if you
buy both books (&lt;b&gt;e-Book version&lt;/b&gt;) directly from Packt. In addition Packt offers &lt;a href=&quot;http://www.packtpub.com/Shippingpolicy&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;free shipping for US, UK, Europe and select Asian countries&lt;/b&gt;&lt;/a&gt;.  &lt;/p&gt;
&lt;p&gt;For starters: The PostgreSQL 9 High Performance book is a more advanced book than the PostgreSQL 9 Admin Cookbook and is more of a sit-down book. At about 450 pages, it's a bit longer than the PostgreSQL Admin Cookbook.  Unlike the PostgreSQL 9 Admin Cookbook, it is more a concepts book and much less of a cookbook. 
It's not a book you would pick up if you are new to databases and trying to feel your way thru PostgreSQL, however if you feel comfortable with databases in general, not specific
to PostgreSQL and are trying to eek out the most performance you can it's a handy book.  What surprised me most about this book was how much of it is not specific to PostgreSQL, but in fact hardware considerations that are pertinent to most relational databases.  
In fact Greg Smith, starts the book off with a fairly 
shocking statement in the section entitled &lt;b&gt;PostgreSQL or another database?&lt;/b&gt; &lt;em&gt;There are certainly situations where other database solutions will perform better&lt;/em&gt;.  Those are words you will rarely hear from die-hard PostgreSQL users, bent on defending their database
of choice against all criticism and framing PostgreSQL as the tool that will solve famine, bring world peace, and cure cancer if only everyone would stop using that other thing and use PostgreSQL instead:). 
That in my mind, made this book more of a trustworthy reference if you came from some other DBMS, and wanted to know if PostgreSQL could meet your needs comparably or better than what you were using before.&lt;/p&gt;
&lt;p&gt;In a nutshell, if I were to contrast and compare the PostgreSQL 9 Admin Cookbook vs. PostgreSQL High Performance, I would say the Cookbook is a much lighter read focused on getting familiar with and getting the most out of the software (PostgreSQL), and PostgreSQL High Perofrmance is focused
on getting the most out of your hardware and pushing your hardware to its limits to work with PostgreSQL.  There is very little overlap of content between the two and as you take on more sophisticated projects, you'll definitely want both books on your shelf.  The PostgreSQL 9 High Perofrmance book isn't going to teach you 
too much about writing better queries,day to day management, or how to load data etc, but it will tell you how to determine when your database is under stress or your hardware is about to kick the bucket and what is causing that stress.  It's definitely a book you want to have if you plan to run large PostgreSQL databases or a high traffic
site with PostgreSQL.&lt;/p&gt;


&lt;p&gt;PostgreSQL 9 High Performance is roughly about 25% hardware and how to choose the best hardware for your budget, 40% in-depth details about how PostgreSQL works with your hardware and trade-offs made by PostgreSQL developers to get a healthy balance of performance vs. reliability, and another 35% about various useful monitoring 
tools for PostgreSQL performance and general hardware performance. Its focus is mostly on Linux/Unix, which is not surprising since most production PostgreSQL installs are on Linux/Unix.  That said there is some coverage of windows
such as FAT32/NTFS discussion and considerations when deploying terabyte size databases on Windows and issues with shared memory on Windows.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Full disclosure:&lt;/b&gt;  I got a free e-Book copy of this book just as I did with PostgreSQL 9 Admin Cookbook.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/192-PostgreSQL-9-High-Performance-Book-Review.html#extended&quot;&gt;Continue reading &quot;PostgreSQL 9 High Performance Book Review&quot;&lt;/a&gt;</content>
		<author>
			<name>Leo Hsu and Regina Obe</name>
			<email>nospam@example.com</email>
			<uri>http://www.postgresonline.com/journal/</uri>
		</author>
		<source>
			<title type="html">Postgres OnLine Journal</title>
			<subtitle type="html">an In depth look at the PostgreSQL open source database</subtitle>
			<link rel="self" href="http://www.postgresonline.com/journal/index.php?/feeds/index.rss2"/>
			<id>http://www.postgresonline.com/journal/index.php?/feeds/index.rss2</id>
			<updated>2010-12-31T17:15:11+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Feedback from PGDay.EU the final part - the venue and registration</title>
		<link href="http://blog.hagander.net/archives/184-Feedback-from-PGDay.EU-the-final-part-the-venue-and-registration.html"/>
		<id>http://blog.hagander.net/archives/184-guid.html</id>
		<updated>2010-12-28T11:57:00+00:00</updated>
		<content type="html">&lt;p&gt;The big change for &lt;a href=&quot;http://2010.pgday.eu/&quot;&gt;PGDay.EU&lt;/a&gt; this year really was the switch from a university venue (first Monash University in Prato, then ParisTech in Paris) to a hotel venue (The Millennium Hotel in Stuttgart). We believe that much of the rest of the conference was an improvement over previous years - but it was an incremental improvement, whereas the change of venue was rather drastic. Looking at the feedback on this, I think we can conclude that this change was in general a positive one:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://photos.smugmug.com/photos/1139387658_2VXMu-O.png&quot; width=&quot;400&quot; height=&quot;200&quot; alt=&quot;1139387658_2VXMu-O.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We're seeing a total of 75% who rate the venue as a 4 or a 5. Looking at the freetext comments, a large majority of them are very positive, but there are a few ones that stand out:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;Several people mentioned it was bad that the two sets of rooms (Berlin vs non-Berlin rooms) were very far apart. This is definitely something that we noted, and will attempt to avoid next year.&lt;/li&gt;
    &lt;li&gt;A few people mentioned that it would be nice if the hotel was closer to the city center. This is definitely true - unfortunately, closer to the city center means higher prices. We hope to find something closer to a city center at a reasonable price next year - by making sure we start to look and book early enough.&lt;/li&gt;
    &lt;li&gt;A few people commented that we shouldn't hold this in northern/central Europe in December due to weather (snow anyone?). Our goal is to move the conference back to an earlier date during the autumn - again, the main reason we ended up in December this year was that we started looking for a venue too late.&lt;/li&gt;
    &lt;li&gt;A couple of people commented that the hotel room rates were too high at the Millennium. There were cheaper hotels around to use - but of course, those aren't as convenient. This wasn't helped by the fact that the hotel group rate dropped off the hotel website twice, causing some people to get their reservations at a higher rate.&lt;/li&gt;
    &lt;li&gt;Isolated people commented that they did not like the hotel - &quot;too big, unpersonal&quot; and &quot;feels like a prison&quot;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Amongst the positive ones we find a large number of comments saying that the &quot;integrated venue&quot; or &quot;all inclusive&quot; venue was a great step up.&lt;/p&gt;

&lt;p&gt;Closely related to the venue, is the food. Unlike the big north American conferences &lt;a href=&quot;http://www.pgcon.org/&quot;&gt;PGCon&lt;/a&gt; and  &lt;a href=&quot;http://www.postgresqlconference.org/&quot;&gt;PG-East/West&lt;/a&gt;, we have for the past two years tried to provide proper lunches and not just sandwiches/boxed lunches. This obviously costs more money, but we believe it's worth it, and we think our visitors do. Last year we had a catering firm bring us assorted food, mainly cold cuts, at the conference venue, and this year we got proper lunch buffets (including multiple choices for dessert, of course..) at one of the hotel restaurants. I think the ratings speak for themselves - I would encourage those other conferences to look into improving their lunches as well!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://photos.smugmug.com/photos/1139387657_HLpDJ-O.png&quot; width=&quot;400&quot; height=&quot;200&quot; alt=&quot;1139387657_HLpDJ-O.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A full 82% rated the food as 4 or 5. In the end, the cost for paying for a lunch &quot;on ones own bill&quot; would probably have cost more than half the conference fee - so we think we managed to provide some very good value. In fact, several people rated the food as being the best part of the conference(!)&lt;/p&gt;

&lt;p&gt;There was, however, one person who said the food was one of the &lt;i&gt;worst&lt;/i&gt; things about the conference - if you recognize that was you, we would very much like to know exactly why (no details were included) - please send me an email or write a comment here!&lt;/p&gt;

&lt;p&gt;A few people commented on the large amount of food left over from lunch on at least one of the days - it is up to the hotel to decide what to do about that, but it is our belief that they do something &quot;reasonable&quot; with it - and not just throw it away. We know that the caterers last year delivered all leftovers to a nearby homeless shelter, for example. For next year, we will attempt to again get a specification from the catering/restaurant as to what happens to leftovers.&lt;/p&gt;

&lt;p&gt;We feel that the overwhelming majority of our visitors found the changes an improvement, and we will therefor pursue something similar as our primary option for next year. We are always interested in improving further, of course, so if you have any other ideas - let us know! The final question we asked about the venue was where to hold the conference next year. Many were quite ambiguous in their suggestions (&quot;big city in Europe&quot; is in, &quot;Hawaii&quot; is out because we want to stick to Europe). Summarizing what we could gave us the following:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://photos.smugmug.com/photos/1139392945_EeBeh-O.png&quot; width=&quot;697&quot; height=&quot;469&quot; alt=&quot;1139392945_EeBeh-O.png&quot; /&gt;&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;Obviously, we see a bias towards Germany - since we were in Germany this time. However, we are only going back to Germany next year as a last resort - we want to move around. We will eventually come back to Germany of course - but not next year.&lt;/li&gt;
    &lt;li&gt;Some people commented that they will not be able to attend in a country other than Germany because they wouldn't understand the language of the talks. To deal with this, we are considering adding non-local-or-english talks as well for next year independent of where it is - where German talks (along with French and maybe Spanish) would be included even if the conference isn't in Germany.&lt;/li&gt;
    &lt;li&gt;Our &lt;a href=&quot;http://www.pgug.de/&quot;&gt;Germany community&lt;/a&gt; is also looking into creating a specific &lt;i&gt;PGDay Germany&lt;/i&gt; next year, which will be a smaller event focused on the local market - something we as PostgreSQL Europe will help and encourage.&lt;/li&gt;
    &lt;li&gt;I'm surprised to find Stockholm so high up on the list - I promise I didn't put any of those votes in there myself!&lt;/li&gt;
    &lt;li&gt;It's good to note that all the cities having 2 or more suggestions were already on our list of places to look at for next year.&lt;/li&gt;
    &lt;li&gt;We will consider this input and start looking for venues. This time we will not attempt to decide and announce a city first and find a venue later, we'll do it in the other order.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The final part of our evaluation was considering the conference website and registration:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://photos.smugmug.com/photos/1139387653_s4bHN-O.png&quot; width=&quot;400&quot; height=&quot;200&quot; alt=&quot;1139387653_s4bHN-O.png&quot; /&gt; &lt;img src=&quot;http://photos.smugmug.com/photos/1139387651_Yoeab-O.png&quot; width=&quot;400&quot; height=&quot;200&quot; alt=&quot;1139387651_Yoeab-O.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In general these are very good rates. I'm happy to see that more than 50% rate the website overall experience as 4 or 5 - that's a much better rating than it's being given by the people who edit the content on it! Same for registration, with very few people rating it really low. There's clearly some room for improvement though:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;A few people commented they wanted non-paypal registration options. While the paypal system we use actually allow you to do a credit card payment without the need to sign up for paypal (which some people did not realize and thus sent us an email before registering asking about it), not everybody has a credit card (this is not America - or Sweden). We'd be very happy to hear suggestions for what to do here though - we've looked at many different options, and paypal turned out to be by far the best one. We need something that supports automation and is reasonably fast. We did also support bank transfer in extraordinary cases - but that's not something that can be automated (unless you are a &lt;i&gt;much&lt;/i&gt; bigger customer to the bank than we are), and it takes a long time for some payments, since they have to cross borders. So - any suggestions are welcome, and our core registration system is designed to support multiple payment methods.&lt;/li&gt;
    &lt;li&gt;Nobody actually wrote in the conference feedback that we lack a good interface for bulk registration, but we are aware of this - we had a few (less than 10 in total) entities wanting to register more than 2-3 persons at the same time for a single invoice, and our current system does not provide a reasonable way of dealing with this. This is definitely something we need to work on for next year.&lt;/li&gt;
    &lt;li&gt;It's been suggested we add a &quot;skill level&quot; entry to each talk, to make it easier for an attendee to know if it's a beginner or advanced talk. This is definitely something we'll look at doing for next year.&lt;/li&gt;
    &lt;li&gt;One suggestion is we include a full list of all attendees including their email address in the conference handouts, to make it easier to contact each other. This is not something we're going to do as a general thing, since we don't want to go distributing such lists. But we may consider adding it as an opt-in feature, where you can choose on registration if you want to be included in such a list.&lt;/li&gt;
    &lt;li&gt;Several people suggested adding videos of the talks - either as realtime streaming or as downloadables. We're not likely to add a real-time streaming, but we are considering doing talk recording. It does add a fairly large amount of work though, so we'll be needing more volunteers to cope with it...&lt;/li&gt;
    &lt;li&gt;We need to make it more clear that 5 is the best and 1 is the worst on the feedback forms. We know a few people filled them in wrong (we hope it meant they gave us bad rates when they meant good, but we don't know that), and it was also mentioned in the feedback.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In summary, here are some reasons in graphical and textual forms why you should already put attendance to next years &lt;i&gt;PostgreSQL Conference Europe&lt;/i&gt; in your budget:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://photos.smugmug.com/photos/1139387650_axwxQ-O.png&quot; width=&quot;400&quot; height=&quot;200&quot; alt=&quot;1139387650_axwxQ-O.png&quot; /&gt;&lt;/p&gt;

Freetext comments:
&lt;ul&gt;
    &lt;li&gt;&quot;The overall organization of that event was excellent.&quot;&lt;/li&gt;
    &lt;li&gt;&quot;Very good organization, great people, interesting talks, vibrant community in general. Lots of core dev presents, high level of knowledge.&quot;&lt;/li&gt;
    &lt;li&gt;&quot;Great organization from beginning (registration at the website, information prior to the event), arriving and registering (internet access already available, great t-shirt and backpack) to the conference itself (sessions, warning speakers about how much time is left), good food and drinks at the breaks and at lunch. Kudos to the organizers and everyone who helped make this happen.&quot;&lt;/li&gt;
    &lt;li&gt;&quot;I think the organisation was perfect. There where many people and all know where they had to go to.&quot;&lt;/li&gt;
    &lt;li&gt;&quot;The huge amount of information, inspiration and positive energy. Actually I hacked my first patch on the way back.&quot;&lt;/li&gt;
    &lt;li&gt;&quot;The people especially the staff &lt;img src=&quot;http://blog.hagander.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt; Both keynotes were stimulating good dsicussions with my peers&quot;&lt;/li&gt;
    &lt;li&gt;&quot;Very good conference. I felt really cosy there. As a noob to PG, I got a lot of information and I lost the fear of asking the experts (either on the mailing list or on IRC).&quot;&lt;/li&gt;
    &lt;li&gt;&quot;The organization was really great. Maybe the best PostgreSQL conference I've attended so far.&quot;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That concludes my summaries of the feedback from this years &lt;a href=&quot;http://2010.pgday.eu/&quot;&gt;PGDay.EU&lt;/a&gt; conference. If your specific comments haven't been called out here, don't worry - we still read them all and will consider them all for next year!&lt;/p&gt;

&lt;p&gt;Finally, thanks again to all who helped make this conference great!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;See you again next year!&lt;/strong&gt;&lt;/p&gt;</content>
		<author>
			<name>Magnus Hagander</name>
			<email>nospam@example.com</email>
			<uri>http://blog.hagander.net/</uri>
		</author>
		<source>
			<title type="html">Magnus Hagander's PostgreSQL blog - PostgreSQL</title>
			<link rel="self" href="http://blog.hagander.net/feeds/categories/1-PostgreSQL.rss"/>
			<id>http://blog.hagander.net/feeds/categories/1-PostgreSQL.rss</id>
			<updated>2010-12-28T16:31:15+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PostgreSQL Weekly News December 26th 2010</title>
		<link href="http://www.postgresql.org/community/weeklynews/pwn20101226"/>
		<id>http://www.postgresql.org/community/weeklynews/pwn20101226</id>
		<updated>2010-12-26T08:00:00+00:00</updated>
		<content type="html">Happy Boxing Day from the PostgreSQL Weekly News!</content>
		<author>
			<name>PostgreSQL Weekly News</name>
			<uri>http://www.postgresql.org/community/weeklynews/</uri>
		</author>
		<source>
			<title type="html">PostgreSQL Weekly News</title>
			<link rel="self" href="http://wwwmaster.postgresql.org/files/weeklynews.xml"/>
			<id>http://wwwmaster.postgresql.org/files/weeklynews.xml</id>
			<updated>2011-01-03T07:16:13+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">String Aggregation in PostgreSQL, SQL Server, and MySQL</title>
		<link href="http://www.postgresonline.com/journal/archives/191-String-Aggregation-in-PostgreSQL,-SQL-Server,-and-MySQL.html"/>
		<id>http://www.postgresonline.com/journal/archives/191-guid.html</id>
		<updated>2010-12-24T16:24:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;b&gt;Question:&lt;/b&gt; You have a table of people and a table that specifies the activities each person is involved
in.  You want to return a result that has one record per person and a column that has a listing of activities for each person
separated by semicolons and alphabetically sorted by activity. You also want the whole set alphabetically sorted by person's name. &lt;/p&gt;

&lt;p&gt;This is a question we are always asked and since we mentor on various flavors of databases, 
we need to be able to switch gears and provide an answer that works on the client's database. Most
often the additional requirement is that you can't install new functions in the database. This means that
for PostgreSQL/SQL Server that both support defining custom aggregates, that is out as an option.&lt;/p&gt;

&lt;p&gt;Normally we try to come up with an answer that works in most databases, but sadly the only solution that works in 
most is to push the problem off to the client front end and throw up your hands and proclaim -- &amp;quot;This ain't something that should be 
done in the database and is a reporting problem.&amp;quot;  That is in fact what many database purists do, and all I can say to them is wake up and smell the coffee before you are out of a job.  
We feel that data 
transformation is an important function of a database, and if your database is incapable of massaging the data into a format
your various client apps can easily digest, WELL THAT's A PROBLEM.&lt;/p&gt;

&lt;p&gt;We shall now document this answer rather than trying to answer for the nteenth time. For starter's
PostgreSQL has a lot of answers to this question, probably more so than any other, though some are easier to execute than others
and many depend on the version of PostgreSQL you are using.  SQL Server has 2 classes of answers neither of which is terribly appealing,
but we'll go over the ones that don't require you to be able to install .NET stored functions in your database since we said that is often a requirement.  
MySQL has a fairly
simple, elegant and very portable way that it has had for a really long time.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/191-String-Aggregation-in-PostgreSQL,-SQL-Server,-and-MySQL.html#extended&quot;&gt;Continue reading &quot;String Aggregation in PostgreSQL, SQL Server, and MySQL&quot;&lt;/a&gt;</content>
		<author>
			<name>Leo Hsu and Regina Obe</name>
			<email>nospam@example.com</email>
			<uri>http://www.postgresonline.com/journal/</uri>
		</author>
		<source>
			<title type="html">Postgres OnLine Journal</title>
			<subtitle type="html">an In depth look at the PostgreSQL open source database</subtitle>
			<link rel="self" href="http://www.postgresonline.com/journal/index.php?/feeds/index.rss2"/>
			<id>http://www.postgresonline.com/journal/index.php?/feeds/index.rss2</id>
			<updated>2010-12-31T17:15:11+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Extra columns when doing .distinct() in a Django QuerySet</title>
		<link href="http://thebuild.com/blog/2010/12/22/extra-columns-when-doing-distinct-in-a-django-queryset/"/>
		<id>http://thebuild.com/blog/?p=239</id>
		<updated>2010-12-22T22:54:05+00:00</updated>
		<content type="html">&lt;p&gt;&lt;strong&gt;tl;dr&lt;/strong&gt;: If you are doing a &lt;code&gt;.distinct()&lt;/code&gt; query and limiting the results using &lt;code&gt;.values()&lt;/code&gt; or &lt;code&gt;.values_list()&lt;/code&gt;, you may be in for a surprise if your model has a default ordering using the Meta value &lt;code&gt;ordering&lt;/code&gt;. You probably want to clear the ordering using &lt;code&gt;.order_by()&lt;/code&gt; with no parameters.&lt;/p&gt;

&lt;p&gt;&lt;span id=&quot;more-239&quot;&gt;&lt;/span&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;If a model is ordered, either by &lt;code&gt;.order_by()&lt;/code&gt; on the QuerySet or a Meta &lt;code&gt;ordering&lt;/code&gt; value, it will always include that field in the QuerySet. This is true &lt;em&gt;even if the query uses &lt;code&gt;.distinct()&lt;/code&gt;&lt;/em&gt;. To quote &lt;a href=&quot;http://docs.djangoproject.com/en/1.2/ref/models/querysets/#distinct&quot;&gt;the documentation&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Any fields used in an&lt;code&gt;order_by()&lt;/code&gt; call are included in the SQL SELECT columns. This can sometimes lead to unexpected results when used in conjunction with &lt;code&gt;distinct()&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;(The documentation as written implies that is only problem with related models, but as we&amp;#8217;ll see, it&amp;#8217;s a problem in general. &lt;a href=&quot;http://code.djangoproject.com/ticket/14942&quot;&gt;A documentation patch&lt;/a&gt; is probably in order here.)&lt;/p&gt;

&lt;p&gt;By way of illustration, let&amp;#8217;s assume you have the following models:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;from django.db import models

class Publisher(models.Model):
    name = models.TextField()

    class Meta:
        ordering = [ 'name', ]

class Book(models.Model):
    title = models.TextField()
    topic = models.TextField()
    publisher = models.ForeignKey(Publisher)

    class Meta:
        ordering = [ 'title', ]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And we create some rows:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pub = Publisher(name=&quot;Strange But True Publications&quot;)
pub.save()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And some books:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;book1 = Book(title=&quot;New Topics in Industrial Meringue Production&quot;,
             topic=&quot;Cooking&quot;,
             publisher=pub)
book1.save()

book2 = Book(title=&quot;Your Chicken's First Song Book&quot;,
             topic=&quot;Animal Husbandry&quot;,
             publisher=pub)
book2.save()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now, we want to get the list of IDs of the publishers, and we&amp;#8217;re using the &lt;a href=&quot;http://thebuild.com/blog/2010/12/22/getting-the-id-of-related-objects-in-django/&quot;&gt;cool optimization that I described earlier&lt;/a&gt;, with the optimization a commenter suggested (thanks!):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; q = Book.objects.values_list('publisher_id', flat=True).distinct()
&amp;gt;&amp;gt;&amp;gt; print q
[1, 1]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Um, wait.  That&amp;#8217;s not right.  Why would it return &lt;code&gt;1&lt;/code&gt; twice when we said &lt;code&gt;.distinct()&lt;/code&gt;?  Let&amp;#8217;s look at the SQL (you &lt;em&gt;are&lt;/em&gt; doing a &lt;code&gt;tail -f&lt;/code&gt; on the PostgreSQL logs while  you develop, right?):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;LOG:  statement: SELECT DISTINCT &quot;x_book&quot;.&quot;publisher_id&quot;, &quot;x_book&quot;.&quot;title&quot; FROM &quot;x_book&quot; ORDER BY &quot;x_book&quot;.&quot;title&quot; ASC LIMIT 21
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And there we have it.  It includes the &lt;code&gt;title&lt;/code&gt; field in the query, even though it doesn&amp;#8217;t return it.  Since the &lt;code&gt;DISTINCT&lt;/code&gt; thus applies to both, we have two distinct rows, rather than one.&lt;/p&gt;

&lt;p&gt;The fix, fortunately, is easy; just clear the ordering with a &lt;code&gt;.order_by()&lt;/code&gt; without any parameters:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; q = Book.objects.values_list('publisher_id', flat=True).distinct().order_by()
&amp;gt;&amp;gt;&amp;gt; print q
[1]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And the query:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;LOG:  statement: SELECT DISTINCT &quot;x_book&quot;.&quot;publisher_id&quot; FROM &quot;x_book&quot; LIMIT 21
&lt;/code&gt;&lt;/pre&gt;</content>
		<author>
			<name>Christophe Pettus</name>
			<uri>http://thebuild.com/blog</uri>
		</author>
		<source>
			<title type="html">The Build » PostgreSQL</title>
			<subtitle type="html">programming, etc.</subtitle>
			<link rel="self" href="http://thebuild.com/blog/category/postgresql/feed/"/>
			<id>http://thebuild.com/blog/category/postgresql/feed/</id>
			<updated>2011-01-01T20:46:08+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Feedback from PGDay.EU - the speakers</title>
		<link href="http://blog.hagander.net/archives/183-Feedback-from-PGDay.EU-the-speakers.html"/>
		<id>http://blog.hagander.net/archives/183-guid.html</id>
		<updated>2010-12-22T15:37:00+00:00</updated>
		<content type="html">&lt;p&gt;The next issue of my &quot;pie-chart-overflow blog posts about PGDay feedback&quot; is about our speakers. The speakers are, if that's not obvious, the reason that people come to the conference. Having good speakers is an absolute requirement if we want to keep up the quality of the conference. Other things like venue and price are certainly important, but nothing compares to the actual content of the conference - which is provided by our speakers.&lt;/p&gt;

&lt;p&gt;I'm very happy to say that we seem to have manage to keep the very high numbers for Speaker Quality that we had from last year (differing less than 3% which is well within the margin of error). The same goes for the scores our speakers got on their knowledge of the topic - indicating that we've managed to attract some of the most skilled speakers in the world. Which is not surprising given that in many cases, we the person speaking about a feature is actually the guy &lt;a href=&quot;http://www.postgresql.eu/events/schedule/pgday2010/session/66-rapid-upgrades-with-pg_upgrade/&quot;&gt;who&lt;/a&gt; &lt;a href=&quot;http://www.postgresql.eu/events/schedule/pgday2010/session/55-managing-postgresql-replication/&quot;&gt;wrote&lt;/a&gt; &lt;a href=&quot;http://www.postgresql.eu/events/schedule/pgday2010/session/76-embedded-sql-fur-postgresql/&quot;&gt;it&lt;/a&gt;. What is more surprising is that these same people are rated as very good speaker - which we all know isn't always true about your stereotypical developer.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://photos.smugmug.com/photos/1134342926_xzhmk-O.png&quot; width=&quot;400&quot; height=&quot;200&quot; alt=&quot;1134342926_xzhmk-O.png&quot; /&gt; &lt;img src=&quot;http://photos.smugmug.com/photos/1134342924_gbA6T-O.png&quot; width=&quot;400&quot; height=&quot;200&quot; alt=&quot;1134342924_gbA6T-O.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Just like &lt;a href=&quot;http://blog.hagander.net/archives/157-Feedback-from-pgday.eu.html&quot;&gt;last year&lt;/a&gt;, we're not going to post the complete list of speaker ratings, given that they are easy to read wrong. But here is a list of our top speakers, excluding any that had less than 5 ratings. Any speakers who have fewer than 10 should be considered a very uncertain number, and I've again included the standard deviation to determine the uncertainty. We had a lot more speakers this year, so I have only included those scoring 4 or above this time around. Each speaker has received his own detailed score, of course.&lt;/p&gt;



&lt;table&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;strong&gt;Place&lt;/strong&gt;&lt;/td&gt;
        &lt;td&gt;&lt;strong&gt;Speaker&lt;/strong&gt;&lt;/td&gt;
        &lt;td&gt;&lt;strong&gt;Quality Score&lt;/strong&gt;&lt;/td&gt;
        &lt;td&gt;&lt;strong&gt;Standard deviation&lt;/strong&gt;&lt;/td&gt;
        &lt;td&gt;&lt;strong&gt;Number of votes&lt;/strong&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;1&lt;/td&gt;
        &lt;td&gt;Dimitri Fontaine&lt;/td&gt;
        &lt;td&gt;4.8&lt;/td&gt;
        &lt;td&gt;0.5&lt;/td&gt;
        &lt;td&gt;8&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;2&lt;/td&gt;
        &lt;td&gt;Mason Sharp&lt;/td&gt;
        &lt;td&gt;4.7&lt;/td&gt;
        &lt;td&gt;0.9&lt;/td&gt;
        &lt;td&gt;11&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;2&lt;/td&gt;
        &lt;td&gt;Magnus Hagander&lt;/td&gt;
        &lt;td&gt;4.7&lt;/td&gt;
        &lt;td&gt;0.7&lt;/td&gt;
        &lt;td&gt;29&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;4&lt;/td&gt;
        &lt;td&gt;Simon Riggs&lt;/td&gt;
        &lt;td&gt;4.6&lt;/td&gt;
        &lt;td&gt;0.7&lt;/td&gt;
        &lt;td&gt;52&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;4&lt;/td&gt;
        &lt;td&gt;Simon Phipps&lt;/td&gt;
        &lt;td&gt;4.6&lt;/td&gt;
        &lt;td&gt;0.9&lt;/td&gt;
        &lt;td&gt;45&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;6&lt;/td&gt;
        &lt;td&gt;Andreas Scherbaum&lt;/td&gt;
        &lt;td&gt;4.5&lt;/td&gt;
        &lt;td&gt;0.7&lt;/td&gt;
        &lt;td&gt;34&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;6&lt;/td&gt;
        &lt;td&gt;Ed Boyajian&lt;/td&gt;
        &lt;td&gt;4.5&lt;/td&gt;
        &lt;td&gt;1.1&lt;/td&gt;
        &lt;td&gt;33&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;8&lt;/td&gt;
        &lt;td&gt;Bruce Momjian&lt;/td&gt;
        &lt;td&gt;4.4&lt;/td&gt;
        &lt;td&gt;0.9&lt;/td&gt;
        &lt;td&gt;54&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;8&lt;/td&gt;
        &lt;td&gt;Gianni Ciolli&lt;/td&gt;
        &lt;td&gt;4.4&lt;/td&gt;
        &lt;td&gt;0.8&lt;/td&gt;
        &lt;td&gt;38&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;8&lt;/td&gt;
        &lt;td&gt;Tim Bunce&lt;/td&gt;
        &lt;td&gt;4.4&lt;/td&gt;
        &lt;td&gt;1.0&lt;/td&gt;
        &lt;td&gt;10&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;11&lt;/td&gt;
        &lt;td&gt;Jan Aleman&lt;/td&gt;
        &lt;td&gt;4.2&lt;/td&gt;
        &lt;td&gt;1.0&lt;/td&gt;
        &lt;td&gt;11&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;12&lt;/td&gt;
        &lt;td&gt;Tim Child&lt;/td&gt;
        &lt;td&gt;4.1&lt;/td&gt;
        &lt;td&gt;0.8&lt;/td&gt;
        &lt;td&gt;9&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;12&lt;/td&gt;
        &lt;td&gt;Michael Meskes&lt;/td&gt;
        &lt;td&gt;4.1&lt;/td&gt;
        &lt;td&gt;1.2&lt;/td&gt;
        &lt;td&gt;10&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;14&lt;/td&gt;
        &lt;td&gt;Bernd Helmle&lt;/td&gt;
        &lt;td&gt;4.0&lt;/td&gt;
        &lt;td&gt;0.6&lt;/td&gt;
        &lt;td&gt;6&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;14&lt;/td&gt;
        &lt;td&gt;Heikki Linnakangas&lt;/td&gt;
        &lt;td&gt;4.0&lt;/td&gt;
        &lt;td&gt;0.8&lt;/td&gt;
        &lt;td&gt;30&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;14&lt;/td&gt;
        &lt;td&gt;Linas Virbalas&lt;/td&gt;
        &lt;td&gt;4.0&lt;/td&gt;
        &lt;td&gt;0.9&lt;/td&gt;
        &lt;td&gt;10&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;br /&gt;&lt;p&gt;The list based on Speaker Knowledge looks slightly different, but not very much. Given that our speaker knowledge has been rated even higher than speaker quality, I've only included those who scored 4.6 or higher (which is a fantastically high cutoff)&lt;/p&gt;



&lt;table&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;strong&gt;Place&lt;/strong&gt;&lt;/td&gt;
        &lt;td&gt;&lt;strong&gt;Speaker&lt;/strong&gt;&lt;/td&gt;
        &lt;td&gt;&lt;strong&gt;Knowledge Score&lt;/strong&gt;&lt;/td&gt;
        &lt;td&gt;&lt;strong&gt;Standard deviation&lt;/strong&gt;&lt;/td&gt;
        &lt;td&gt;&lt;strong&gt;Number of votes&lt;/strong&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;1&lt;/td&gt;
        &lt;td&gt;Tim Child&lt;/td&gt;
        &lt;td&gt;5&lt;/td&gt;
        &lt;td&gt;0&lt;/td&gt;
        &lt;td&gt;9&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;2&lt;/td&gt;
        &lt;td&gt;Joe Conway&lt;/td&gt;
        &lt;td&gt;4.9&lt;/td&gt;
        &lt;td&gt;0.3&lt;/td&gt;
        &lt;td&gt;10&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;3&lt;/td&gt;
        &lt;td&gt;Simon Riggs&lt;/td&gt;
        &lt;td&gt;4.8&lt;/td&gt;
        &lt;td&gt;0.7&lt;/td&gt;
        &lt;td&gt;52&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;3&lt;/td&gt;
        &lt;td&gt;Linas Virbalas&lt;/td&gt;
        &lt;td&gt;4.8&lt;/td&gt;
        &lt;td&gt;0.4&lt;/td&gt;
        &lt;td&gt;9&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;3&lt;/td&gt;
        &lt;td&gt;Magnus Hagander&lt;/td&gt;
        &lt;td&gt;4.8&lt;/td&gt;
        &lt;td&gt;0.8&lt;/td&gt;
        &lt;td&gt;29&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;3&lt;/td&gt;
        &lt;td&gt;Dimitri Fontaine&lt;/td&gt;
        &lt;td&gt;4.8&lt;/td&gt;
        &lt;td&gt;0.5&lt;/td&gt;
        &lt;td&gt;8&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;7&lt;/td&gt;
        &lt;td&gt;Andreas Scherbaum&lt;/td&gt;
        &lt;td&gt;4.7&lt;/td&gt;
        &lt;td&gt;0.8&lt;/td&gt;
        &lt;td&gt;34&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;7&lt;/td&gt;
        &lt;td&gt;Bruce Momjian&lt;/td&gt;
        &lt;td&gt;4.7&lt;/td&gt;
        &lt;td&gt;1.0&lt;/td&gt;
        &lt;td&gt;53&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;9&lt;/td&gt;
        &lt;td&gt;Mason Sharp&lt;/td&gt;
        &lt;td&gt;4.6&lt;/td&gt;
        &lt;td&gt;1.2&lt;/td&gt;
        &lt;td&gt;11&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;9&lt;/td&gt;
        &lt;td&gt;Heikki Linnakangas&lt;/td&gt;
        &lt;td&gt;4.6&lt;/td&gt;
        &lt;td&gt;0.8&lt;/td&gt;
        &lt;td&gt;30&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;9&lt;/td&gt;
        &lt;td&gt;Simon Phipps&lt;/td&gt;
        &lt;td&gt;4.6&lt;/td&gt;
        &lt;td&gt;1.0&lt;/td&gt;
        &lt;td&gt;45&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;9&lt;/td&gt;
        &lt;td&gt;Gianni Ciolli&lt;/td&gt;
        &lt;td&gt;4.6&lt;/td&gt;
        &lt;td&gt;0.8&lt;/td&gt;
        &lt;td&gt;38&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;9&lt;/td&gt;
        &lt;td&gt;Tim Bunce&lt;/td&gt;
        &lt;td&gt;4.6&lt;/td&gt;
        &lt;td&gt;1.3&lt;/td&gt;
        &lt;td&gt;10&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;9&lt;/td&gt;
        &lt;td&gt;David Fetter&lt;/td&gt;
        &lt;td&gt;4.6&lt;/td&gt;
        &lt;td&gt;0.6&lt;/td&gt;
        &lt;td&gt;16&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;A great big thanks to all our speakers - you did a fantastic job.&lt;/p&gt;

&lt;p&gt;We will need to work hard to keep up our recruiting of speakers for next years. If you were considering but decided not to submit a talk for some reason - please let us know why, so we can improve! Or if you have any ideas in general on our processes around this. For example, we had no female speakers at all this year - we know you're out there, and we certainly want you there, so what do we need to change to make this more interesting for you as a potential speaker? The same goes for other groups that we were missing of course: now is the time to let us know so we have the time to change things before next year!&lt;/p&gt;</content>
		<author>
			<name>Magnus Hagander</name>
			<email>nospam@example.com</email>
			<uri>http://blog.hagander.net/</uri>
		</author>
		<source>
			<title type="html">Magnus Hagander's PostgreSQL blog - PostgreSQL</title>
			<link rel="self" href="http://blog.hagander.net/feeds/categories/1-PostgreSQL.rss"/>
			<id>http://blog.hagander.net/feeds/categories/1-PostgreSQL.rss</id>
			<updated>2010-12-28T16:31:15+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Feedback from PGDay.EU - the contents</title>
		<link href="http://blog.hagander.net/archives/182-Feedback-from-PGDay.EU-the-contents.html"/>
		<id>http://blog.hagander.net/archives/182-guid.html</id>
		<updated>2010-12-22T09:53:00+00:00</updated>
		<content type="html">&lt;p&gt;This blog seems to be turning into a PGDay blog rather than a general PostgreSQL blog. But I promise I'll get back to some more technical content soon - or at least that I'll try.&lt;/p&gt;

&lt;p&gt;A couple of days ago we closed the feedback system from &lt;a href=&quot;http://2010.pgday.eu/&quot;&gt;PGDay.EU 2010&lt;/a&gt;, and have been busy tallying the result. It turns out that my constant nagging on people to please fill out the feedback worked - we got a lot more feedback this year than last year. That also means there's a lot more work in going through mainly all the freetext comments - that's the price I have to pay, I guess. In total we had around 60 people who left &quot;full conference feedback&quot;, which is almost double from last year. It's still only just over 25% of the attendees, so it could certainly be even better yet. We also had 86 people who left session feedback (this is around 40% and a much better number of course) for a total of 570 session feedback entries.&lt;/p&gt;

&lt;p&gt;So what did the feedback say - time for some pie charts! We've actually seen a slight decrease in the ratings for &lt;i&gt;topic importance&lt;/i&gt;. This may well be because we've broadened the topics more. We're still seeing very good grades for content quality, which reinforces my feeling that our speakers deliver very valuable content to the attendees, and that the conference is well worth attending. (As a note to readers - I've had several people point out to me that german people are used to rating &lt;i&gt;1&lt;/i&gt; being the highest and &lt;i&gt;5&lt;/i&gt; being the lowest, so there may be some skewing in the voting because of this. Even though the pages very clearly stated that &lt;i&gt;5&lt;/i&gt; is the highest, this is something we need to make even more clear for next year)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://photos.smugmug.com/photos/1134327279_P3NvS-O.png&quot; width=&quot;400&quot; height=&quot;200&quot; alt=&quot;1134327279_P3NvS-O.png&quot; /&gt; &lt;img src=&quot;http://photos.smugmug.com/photos/1134331393_Gk3nY-O.png&quot; width=&quot;400&quot; height=&quot;200&quot; alt=&quot;1134331393_Gk3nY-O.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We spent a lot of time trying to put together the puzzle that is the schedule for so many talks over so short time. It turns out that we did a good job in general, but there was a large amount of overlap where people wanted to go to many talks at the same time. We also received a lot of comments in the freetext fields about this, and this is definitely something that we will consider for next year. It would probably have been better content-wise to have three tracks spread over three days (maybe not entirely complete) rather than four tracks over two days, but that would also have increased many of the costs with 33% which is a lot of money...&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://photos.smugmug.com/photos/1134332171_UQHa3-O.png&quot; width=&quot;400&quot; height=&quot;200&quot; alt=&quot;1134332171_UQHa3-O.png&quot; /&gt; &lt;img src=&quot;http://photos.smugmug.com/photos/1134332230_n5q7E-O.png&quot; width=&quot;400&quot; height=&quot;200&quot; alt=&quot;1134332230_n5q7E-O.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Of course, the &quot;Hallway track&quot; is a very important part of any conference like this, and this year we collected specific feedback on this side. I'm very happy to see that more than two thirds of our attendees rated the learning part of the hallway track as 4 or 5, and well over half found it a good way to connect with other people in the community!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://photos.smugmug.com/photos/1134329207_QMR5T-O.png&quot; width=&quot;400&quot; height=&quot;200&quot; alt=&quot;1134329207_QMR5T-O.png&quot; /&gt; &lt;img src=&quot;http://photos.smugmug.com/photos/1134329160_XnGKu-O.png&quot; width=&quot;400&quot; height=&quot;200&quot; alt=&quot;1134329160_XnGKu-O.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If these numbers don't make you interested in next years &lt;i&gt;PostgreSQL Conference Europe&lt;/i&gt; then, really, you're reading them wrong...&lt;/p&gt;

&lt;p&gt;That's enough pie-charts for one post. I will follow this up with more feedback summary on our speakers and on our venue once it's ready.&lt;/p&gt;</content>
		<author>
			<name>Magnus Hagander</name>
			<email>nospam@example.com</email>
			<uri>http://blog.hagander.net/</uri>
		</author>
		<source>
			<title type="html">Magnus Hagander's PostgreSQL blog - PostgreSQL</title>
			<link rel="self" href="http://blog.hagander.net/feeds/categories/1-PostgreSQL.rss"/>
			<id>http://blog.hagander.net/feeds/categories/1-PostgreSQL.rss</id>
			<updated>2010-12-28T16:31:15+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Getting the ID of Related Objects in Django</title>
		<link href="http://thebuild.com/blog/2010/12/22/getting-the-id-of-related-objects-in-django/"/>
		<id>http://thebuild.com/blog/?p=232</id>
		<updated>2010-12-22T07:00:03+00:00</updated>
		<content type="html">&lt;p&gt;&lt;strong&gt;tl;dr&lt;/strong&gt;: Don&amp;#8217;t retrieve a whole row just to get the primary key you had anyway. Don&amp;#8217;t iterate in the app; let the database server do the iteration for you. &lt;/p&gt;

&lt;p&gt;&lt;span id=&quot;more-232&quot;&gt;&lt;/span&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;There&amp;#8217;s a couple of bad habits I see a lot in Django code (including, sadly, my own), which is abuse of a ForeignKey field. Let&amp;#8217;s take the classic example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;class Publisher(Model):
    # We accept the default 'id' column
    name = TextField()
    ...

class Book(Model):
    # Likewise
    title = TextField()
    topic = TextField()
    publisher = ForeignKey(Publisher)
        # Remember this creates a publisher_id column
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now, let&amp;#8217;s say we have a book:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;b = Book.objects.get(title=&quot;Interior Landscapes&quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And we want the ID of the publisher.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don&amp;#8217;t do this:&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pub_id = b.publisher.id
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This works, but it&amp;#8217;s absurd: It does a separate select to fetch the entire Publisher object, and then extracts the ID.  But, of course, &lt;em&gt;it already had the ID&lt;/em&gt;, because that&amp;#8217;s how it retrieved the publisher object.  Instead, just go straight to the created ID field:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pub_id = b.publisher_id
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Next, don&amp;#8217;t use iteration to build lists if you can get the data directly out of the database. For example, suppose we want the list of publishers who publish books with topic &amp;#8220;Surreal Architecture&amp;#8221;. Far too often, I see this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;surreal_books = Books.objects.filter(topic=&quot;Surreal Architecture&quot;)

surreal_publishers = set([book.publisher.id for book in surreal_books])
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In this case, Django will send one query to get the list of books, and then do a separate query for each publisher to get the publisher id&amp;#8230; even though they&amp;#8217;re already in memory.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;surreal_publishers = set([book.publisher_id for book in surreal_books])
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This is better, since it doesn&amp;#8217;t have to retrieve each publisher, but far better is to make the database do all the work:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;surreal_publishers_qs = Books.objects.filter(topic=&quot;Surreal Architecture&quot;).values('publisher_id').distinct()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The result set, in this case, is a bit of an odd duck: It&amp;#8217;s a list of dictionaries, each dict being of the form &lt;code&gt;{ 'publisher_id': &amp;lt;id value&amp;gt; }&lt;/code&gt;.  Of course, Python being Python, it&amp;#8217;s not hard to transform that into a set:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;surreal_publishers = set([entry['publisher_id'] for entry in surreal_publishers_qs])
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And we didn&amp;#8217;t have to do any raw SQL!&lt;/p&gt;</content>
		<author>
			<name>Christophe Pettus</name>
			<uri>http://thebuild.com/blog</uri>
		</author>
		<source>
			<title type="html">The Build » PostgreSQL</title>
			<subtitle type="html">programming, etc.</subtitle>
			<link rel="self" href="http://thebuild.com/blog/category/postgresql/feed/"/>
			<id>http://thebuild.com/blog/category/postgresql/feed/</id>
			<updated>2011-01-01T20:46:08+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PL/R Part 3: Sharing Functions across PL/R functions with plr_module</title>
		<link href="http://www.postgresonline.com/journal/archives/190-PLR-Part-3-Sharing-Functions-across-PLR-functions-with-plr_module.html"/>
		<id>http://www.postgresonline.com/journal/archives/190-guid.html</id>
		<updated>2010-12-20T18:37:00+00:00</updated>
		<content type="html">&lt;p&gt;In &lt;a href=&quot;http://www.postgresonline.com/journal/archives/189-plr_part2.html&quot; target=&quot;_blank&quot;&gt;Part 2 of PL/R&lt;/a&gt; we covered how to build PL/R functions that take arrays and output textual outputs of generated R objects.  We then used this in an aggregate SQL query using array_agg. Often when you are building PL/R functions
you'll have R functions that you want to reuse many times either inside a single PL/R function or across various PL/R functions. &lt;/p&gt;

&lt;p&gt;Unfortunately, if you wanted to call a PL/R function from another PL/R function, this is not possible unless you are doing it from spi.execute call. 
There is another way to embed reusable R code in a PostgreSQL database.
In order to be able to share databases stored R code across various PL/R functions, PL/R has a feature called a plr_module.  In this tutorial
we'll learn how to create and register shareable R functions with plr_module. In the next part of this series we'll start to explore generating graphs with PL/R.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/190-PLR-Part-3-Sharing-Functions-across-PLR-functions-with-plr_module.html#extended&quot;&gt;Continue reading &quot;PL/R Part 3: Sharing Functions across PL/R functions with plr_module&quot;&lt;/a&gt;</content>
		<author>
			<name>Leo Hsu and Regina Obe</name>
			<email>nospam@example.com</email>
			<uri>http://www.postgresonline.com/journal/</uri>
		</author>
		<source>
			<title type="html">Postgres OnLine Journal</title>
			<subtitle type="html">an In depth look at the PostgreSQL open source database</subtitle>
			<link rel="self" href="http://www.postgresonline.com/journal/index.php?/feeds/index.rss2"/>
			<id>http://www.postgresonline.com/journal/index.php?/feeds/index.rss2</id>
			<updated>2010-12-31T17:15:11+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PostgreSQL Weekly News December 19th 2010</title>
		<link href="http://www.postgresql.org/community/weeklynews/pwn20101219"/>
		<id>http://www.postgresql.org/community/weeklynews/pwn20101219</id>
		<updated>2010-12-19T08:00:00+00:00</updated>
		<content type="html">PostgreSQL 9.0.2, 8.4.6, 8.3.13, 8.2.19, 8.1.23 updates released.  If
you are using Hot or Warm Standby, or PITR, you should upgrade as soon
as possible.  The 8.1 series is now end-of-life, and users are
encouraged to upgrade to a newer major version as soon as possible.
&lt;a href=&quot;http://www.postgresql.org/docs/9.0/static/release.html&quot;&gt;http://www.postgresql.org/docs/9.0/static/release.html&lt;/a&gt;</content>
		<author>
			<name>PostgreSQL Weekly News</name>
			<uri>http://www.postgresql.org/community/weeklynews/</uri>
		</author>
		<source>
			<title type="html">PostgreSQL Weekly News</title>
			<link rel="self" href="http://wwwmaster.postgresql.org/files/weeklynews.xml"/>
			<id>http://wwwmaster.postgresql.org/files/weeklynews.xml</id>
			<updated>2011-01-03T07:16:13+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Merry Christmas (or whatever you celebrate)</title>
		<link href="http://people.planetpostgresql.org/andrew/index.php?/archives/141-Merry-Christmas-or-whatever-you-celebrate.html"/>
		<id>http://people.planetpostgresql.org/andrew/index.php?/archives/141-guid.html</id>
		<updated>2010-12-19T07:09:06+00:00</updated>
		<content type="html">Quite a number of people have been asking me for a very long time to make the code that runs the &lt;a href=&quot;http://www.pgbuildfarm.org&quot;&gt;PostgreSQL Build Farm server&lt;/a&gt; available. For various reasons I have not done so, but today I have made it available. It is published in a new git repo at &lt;a href=&quot;https://github.com/PGBuildFarm/server-code&quot;&gt;https://github.com/PGBuildFarm/server-code&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
At the same time, I have moved the client code to git and published it under the same github organization. It can be seen at &lt;a href=&quot;https://github.com/PGBuildFarm/client-code&quot;&gt;https://github.com/PGBuildFarm/client-code&lt;/a&gt;. The old CVS repo on pgfoundry will no longer be used and will receive no further updates. However, I will continue to publish client releases there.&lt;br /&gt;
&lt;br /&gt;
Enjoy!</content>
		<author>
			<name>Andrew Dunstan</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/andrew/</uri>
		</author>
		<source>
			<title type="html">Andrew's PostgreSQL blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2</id>
			<updated>2010-12-31T09:30:32+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Two years of explain.depesz.com</title>
		<link href="http://www.depesz.com/index.php/2010/12/18/two-years-of-explain-depesz-com/"/>
		<id>http://www.depesz.com/?p=1931</id>
		<updated>2010-12-18T19:21:51+00:00</updated>
		<content type="html">First of all &amp;#8211; just today I committed patch for Pg::Explain &amp;#8211; which is the workhorse behind explain.depesz.com. This patch fixes calculation of exclusive time for explain nodes, and the best thing about it is &amp;#8211; I didn&amp;#8217;t write it. It&amp;#8217;s full patch provided by someone else &amp;#8211; Filip Rembiałkowski &amp;#8211; my former colleague, friend, [...]</content>
		<author>
			<name>Hubert Lubaczewski</name>
			<uri>http://www.depesz.com</uri>
		</author>
		<source>
			<title type="html">select * from depesz; » postgresql</title>
			<link rel="self" href="http://www.depesz.com/index.php/tag/postgresql/feed/"/>
			<id>http://www.depesz.com/index.php/tag/postgresql/feed/</id>
			<updated>2011-01-03T13:16:31+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Comparing NULLs Considered Silly</title>
		<link href="http://thebuild.com/blog/2010/12/17/comparing-nulls-considered-silly/"/>
		<id>http://thebuild.com/blog/?p=226</id>
		<updated>2010-12-17T16:48:19+00:00</updated>
		<content type="html">&lt;p&gt;&lt;strong&gt;tl;dr&lt;/strong&gt;: You can&amp;#8217;t compare NULLs. A nullable primary key is a contradiction in terms. You can&amp;#8217;t join on NULL, so a NULL foreign key refers to nothing, by definition. NULL doesn&amp;#8217;t do what you think it does, no matter what you think it does.&lt;/p&gt;

&lt;p&gt;&lt;span id=&quot;more-226&quot;&gt;&lt;/span&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;NULL in SQL is annoyingly complex.&lt;/p&gt;

&lt;p&gt;There&amp;#8217;s really no conceptual model of NULL that will not end up surprisingly you in unpleasant ways. Jeff Davis, last year, wrote &lt;a href=&quot;http://thoughts.j-davis.com/2009/08/02/what-is-the-deal-with-nulls/&quot;&gt;a great blog post&lt;/a&gt; that, if could be so bold, could be paraphrased as &amp;#8220;conceptual models of NULL considered harmful.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Thus, it&amp;#8217;s not surprising that some&amp;#8230; well, surprising ideas about NULL sometimes pop up.&lt;/p&gt;

&lt;p&gt;Recently, on the Django developers&amp;#8217; list, the phrase &amp;#8220;nullable primary key&amp;#8221; caught my eye. This inspired me to write these thoughts about NULL, and in particular NULL being used as keys.&lt;/p&gt;

&lt;p&gt;First:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;It ie meaningless to compare two NULL values.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I&amp;#8217;ve noticed application programmers often treat NULL as a magic value that any type can possess (I&amp;#8217;ve been quite guilty of this, too). While this is somewhat true, it&amp;#8217;s also a dangerous path to go down, because:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;NULL = NULL
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#8230; is NULL, not true. Whatever else you can say about NULL, a NULL value means you can make no claims about what value it is. Saying, &amp;#8220;I have no idea what this value is, and I have no idea about what that value is, but are they equal?&amp;#8221; is, I would hope, pretty self-evidently meaningless.&lt;/p&gt;

&lt;p&gt;Now, this immediately implies:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;You cannot join on NULL.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If a foreign key column is NULL, you can&amp;#8217;t do an inner join on it to another table, &lt;em&gt;even if key column(s) being referred to is NULL&lt;/em&gt;. This follows directly from the fact that you can&amp;#8217;t compare NULL values; joining is just built around comparison, after all.&lt;/p&gt;

&lt;p&gt;Yes, you can do things like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;SELECT a.*
    FROM a
    INNER JOIN b
        ON (b.col = a.col) OR ( (b.col IS NULL) AND (a.col IS NULL) )
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Setting aside that you&amp;#8217;ve pretty much committed yourself to a nested loop at this point (and thus a very expensive operation), the fact that you have to jump through this hoop should be an indication that the wrong path is being trod.&lt;/p&gt;

&lt;p&gt;So, please remember: NULL in a foreign key field does not mean &amp;#8220;This refers to rows in the other table that have a matching NULL,&amp;#8221; because there&amp;#8217;s no such thing as a &amp;#8220;matching NULL.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Moving on to primary keys:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A primary key is a combination of columns whose values, taken together, uniquely specify a row.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thus, a nullable primary key is equally meaningless, as the whole point of a primary key is for it it to be compared to other values to determine uniqueness. (The SQL standard prohibits NULLs in primary key columns, so it&amp;#8217;s not just a good idea, it&amp;#8217;s the law, or at least the recommendation.)&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;The SQL standard calls for NULL to be thrown up in places where it really should require an error.  For example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;SELECT SUM(col) FROM t WHERE FALSE
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#8230; returns NULL, as the result of any aggregate function over zero rows is NULL. But the sum of no numbers is 0, not &amp;#8220;unspecified&amp;#8221; (or whatever you want to call NULL).&lt;/p&gt;

&lt;p&gt;Worse:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;SELECT AVG(col) FROM t WHERE FALSE
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;is NULL, while:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;SELECT 0/0
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#8230; much more rationally gives a divsion-by-zero error.&lt;/p&gt;

&lt;p&gt;My guess is that the SQL standards committee is loathe to have the spec require errors for more-or-less common operations, and that&amp;#8217;s where a lot of the stranger cases of NULL come from, as a way of having a normal-but-flagged return from an edge case.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s really a shame that NULL is so complex and counterintuitive, but there&amp;#8217;s really no hope for it except to learn the rules, and not try to abuse NULL to do things it wasn&amp;#8217;t designed for.&lt;/p&gt;</content>
		<author>
			<name>Christophe Pettus</name>
			<uri>http://thebuild.com/blog</uri>
		</author>
		<source>
			<title type="html">The Build » PostgreSQL</title>
			<subtitle type="html">programming, etc.</subtitle>
			<link rel="self" href="http://thebuild.com/blog/category/postgresql/feed/"/>
			<id>http://thebuild.com/blog/category/postgresql/feed/</id>
			<updated>2011-01-01T20:46:08+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Vacation, Dec 18-Jan 3</title>
		<link href="http://www.chesnok.com/daily/2010/12/16/vacation-dec-18-jan-3/"/>
		<id>http://www.chesnok.com/daily/?p=2378</id>
		<updated>2010-12-17T07:13:09+00:00</updated>
		<content type="html">&lt;div class=&quot;tweetmeme_button&quot;&gt;
			&lt;a href=&quot;http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F16%2Fvacation-dec-18-jan-3%2F&quot;&gt;&lt;br /&gt;
				&lt;img src=&quot;http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F16%2Fvacation-dec-18-jan-3%2F&amp;amp;style=normal&amp;amp;b=2&quot; height=&quot;61&quot; width=&quot;50&quot; /&gt;&lt;br /&gt;
			&lt;/a&gt;
		&lt;/div&gt;
&lt;p&gt;I&amp;#8217;m taking an extended vacation. While it&amp;#8217;s possible that I may check my email while I&amp;#8217;m out, it is not likely. &lt;img src=&quot;http://www.chesnok.com/daily/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Sorry for the short notice!  I just realized today that I need a bit of a break from email. In fact, I may just delete everything out of my inbox rather than spend hours trying to sort through it when I get back.&lt;/p&gt;
&lt;p&gt;So, while I&amp;#8217;m out, if there&amp;#8217;s something you need my help with, here&amp;#8217;s what I suggest you do:&lt;/p&gt;
&lt;p&gt;* If it&amp;#8217;s PostgreSQL related, contact pdxpug@postgresql.org for local stuff, or pgsql-advocacy@postgresql.org for other advocacy related things.&lt;br /&gt;
* If it has to do with some other form of volunteer activity, I don&amp;#8217;t have a good backup for me and it will probably just have to wait.&lt;br /&gt;
* If I&amp;#8217;m really the only person that can help, queue up an email draft and send me a message when I return (After Jan 3, 2011).&lt;/p&gt;
&lt;p&gt;Have a lovely holiday season!  And we&amp;#8217;ll see you in the new year.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/07/12/qa-about-hot-standby/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Q&amp;#038;A about Hot Standby&quot;&gt;Q&amp;#038;A about Hot Standby&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content>
		<author>
			<name>selena</name>
			<uri>http://www.chesnok.com/daily</uri>
		</author>
		<source>
			<title type="html">tending the garden</title>
			<subtitle type="html">selena marie deckelmann's blog</subtitle>
			<link rel="self" href="http://www.chesnok.com/daily/feed/atom/"/>
			<id>http://www.chesnok.com/daily/feed/atom/</id>
			<updated>2011-01-04T03:01:12+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PgEast 2011: NYC Call for papers</title>
		<link href="http://www.commandprompt.com/blogs/joshua_drake/2010/12/pgeast_2011_nyc_call_for_papers/"/>
		<id>http://www.commandprompt.com/blogs/joshua_drake/2010/12/pgeast_2011_nyc_call_for_papers/</id>
		<updated>2010-12-16T17:15:32+00:00</updated>
		<content type="html">December 16th, 2010: Celebrating 15 years of PostgreSQL, early.
&lt;p&gt;
Following on the smashing success of PostgreSQL Conference West,
PostgreSQL Conference West, The PostgreSQL Conference for Developers,
End Users and Decision Makers, is being held at the Hotel Pennsylvania,
in New York City from March 22nd through 25th 2011. Please
join us in continuing to make this the largest PostgreSQL Conference 
series!
&lt;p&gt;
&lt;li&gt;&lt;a href=&quot;http://www.postgresqlconference.org/&quot;&gt;PostgreSQL Conference&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;https://www.postgresqlconference.org/talk_types
&quot;&gt;Call for papers&lt;/a&gt;
&lt;p&gt;
&lt;strong&gt;Thank you to our sponsors:&lt;/strong&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;http://www.commandprompt.com/&quot;&gt;Command Prompt, Inc.&lt;/a&gt; 
&lt;li&gt;&lt;a href=&quot;http://www.enterprisedb.com/&quot;&gt;EnterpriseDB&lt;/a&gt;
&lt;p&gt;

&lt;strong&gt;Time line:&lt;/strong&gt;
&lt;br /&gt;&lt;blockquote&gt;
        Dec 16th: Talk submission opens&lt;br /&gt;
        Feb 10th: Talk submission closes&lt;br /&gt;
        Feb 15th: Speaker notification&lt;br /&gt;
&lt;/blockquote&gt;
This year we will be continuing our trend of covering the entire
PostgreSQL ecosystem. We would like to see talks and tutorials on the
following topics:
&lt;p&gt;
&lt;pre&gt;
      * General PostgreSQL: 
              * Administration 
              * Performance 
              * High Availability 
              * Migration 
              * GIS 
              * Integration 
              * Solutions and White Papers 
      * The Stack: 
              * Python/Django/Pylons/TurboGears/Custom 
              * Perl5/Catalyst/Bricolage 
              * Ruby/Rails 
              * Java (PLJava would be great)/Groovy/Grails 
              * Operating System optimization
                (Linux/FBSD/Solaris/Windows) 
              * Solutions and White Papers 
&lt;/pre&gt;&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;&lt;/li&gt;&lt;/p&gt;&lt;/li&gt;&lt;/li&gt;&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Joshua D. Drake</name>
			<uri>http://www.commandprompt.com/blogs/joshua_drake/</uri>
		</author>
		<source>
			<title type="html">CMD: Joshua Drake's Blog</title>
			<subtitle type="html">Command Prompt Blog Feed: Joshua Drake's Blog</subtitle>
			<link rel="self" href="http://www.commandprompt.com/rss/blogs/joshua_drake"/>
			<id>http://www.commandprompt.com/rss/blogs/joshua_drake</id>
			<updated>2011-01-04T12:57:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Conference Report</title>
		<link href="http://momjian.us/main/blogs/pgblog/2010.html#December_16_2010"/>
		<id>http://momjian.us/main/blogs/pgblog/2010.html#December_16_2010</id>
		<updated>2010-12-16T17:00:00+00:00</updated>
		<content type="html">&lt;p&gt;I just returned from conferences in &lt;a class=&quot;txt2html&quot; href=&quot;http://2010.pgday.eu/&quot;&gt;Germany&lt;/a&gt; and &lt;a class=&quot;txt2html&quot; href=&quot;http://2010.pgday.it/&quot;&gt;Italy&lt;/a&gt; which, as usual, allowed me
to easily learn about new technologies.  I have linked to these excellent talks in hopes others can benefit:
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Devrim's &lt;a class=&quot;major&quot; href=&quot;http://www.gunduz.org/download.php?dlid=184&quot;&gt;talk&lt;/a&gt; about
Red Hat Cluster software was very interesting.  Postgres relies on OS-specific tools for auto-failover and, though I have recommended Red
Hat Cluster several times, I did not know much about it before Devrim explained it.   
  &lt;/li&gt;&lt;li&gt;Similarly, David Fetter has been talking about
Writeable Common Table Expressions (CTE) for several years, but I only understood their value after seeing his
&lt;a class=&quot;major&quot; href=&quot;http://fetter.org/Writeable_CTEs_PGDAY_EU_November_2009.pdf&quot;&gt;talk&lt;/a&gt;.  
  &lt;/li&gt;&lt;li&gt;Another eye-opener for me was Jean-Paul Argudo's
&lt;a class=&quot;major&quot; href=&quot;http://www.dalibo.org/_media/pgpool.pdf&quot;&gt;talk&lt;/a&gt; about Pgpool-II and its many features.
  &lt;/li&gt;&lt;li&gt;The surprise talk was Gianni Ciolli's talk
(&lt;a class=&quot;txt2html&quot; href=&quot;http://twitpic.com/3dg42m&quot;&gt;photo&lt;/a&gt;, &lt;a class=&quot;txt2html&quot; href=&quot;http://blog.2ndquadrant.com/en/2010/12/pgchess-code-published.html&quot;&gt;details&lt;/a&gt;) about writing
Postgres code to play chess.
&lt;/li&gt;&lt;/ul&gt;</content>
		<author>
			<name>Bruce Momjian</name>
			<email>bruce@momjian.us</email>
			<uri>http://momjian.us/main/blogs/pgblog.html</uri>
		</author>
		<source>
			<title type="html">Bruce Momjian: Postgres Blog</title>
			<subtitle type="html">Bruce Momjian: Postgres Blog</subtitle>
			<link rel="self" href="http://momjian.us/main/rss/pgblog.xml"/>
			<id>http://momjian.us/main/rss/pgblog.xml</id>
			<updated>2011-01-01T16:00:01+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Still on CVS?</title>
		<link href="http://people.planetpostgresql.org/andrew/index.php?/archives/140-Still-on-CVS.html"/>
		<id>http://people.planetpostgresql.org/andrew/index.php?/archives/140-guid.html</id>
		<updated>2010-12-15T20:03:00+00:00</updated>
		<content type="html">I was under the impression that Postgres was one of the last major FOSS projects using CVS before we switched to using git. Certainly that's what Josh Berkus said in a &lt;a href=&quot;http://lwn.net/Articles/409029/&quot;&gt;recent article&lt;/a&gt;. But today I found &lt;a href=&quot;http://mingw.org/wiki/Official_CVS_Repository&quot;&gt;here&lt;/a&gt; that both MinGW and Cywin, both fairly substantial projects, are still using CVS. So I wonder how many others there are, and if they are considering moving.&lt;br /&gt;
&lt;br /&gt;
On a related note, the WIndows git installation is amazingly big. It's about 172Mb of stuff. By contrast, an entire Mingw/Msys suite sufficient to build Postgres takes less than 1Gb. I know disk space is cheap, but there's no reason to be totally profligate with it. We've seen a few cases recently where buildfarm runs have encountered out of space conditions, and I'm looking at ways to have the client clean up more as it goes.</content>
		<author>
			<name>Andrew Dunstan</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/andrew/</uri>
		</author>
		<source>
			<title type="html">Andrew's PostgreSQL blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2</id>
			<updated>2010-12-31T09:30:32+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">And the good news is ...</title>
		<link href="http://people.planetpostgresql.org/andrew/index.php?/archives/139-And-the-good-news-is-....html"/>
		<id>http://people.planetpostgresql.org/andrew/index.php?/archives/139-guid.html</id>
		<updated>2010-12-15T16:27:36+00:00</updated>
		<content type="html">Today my new server machine arrived.  I'll play around with it a bit, until CentOS 6 is released, when I'll start setting it up in earnest. &lt;br /&gt;
&lt;br /&gt;
Also today I managed to get mostly to the bottom of the Mingw issue I talked about the other day. I have a tentative fix, and I think we just need to make sure of one or two things before we make it right. Basically I used git bisect to narrow down the issue to one particular commit. It was quite cool. Next time I'll write a script for bisect to run, though.&lt;br /&gt;</content>
		<author>
			<name>Andrew Dunstan</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/andrew/</uri>
		</author>
		<source>
			<title type="html">Andrew's PostgreSQL blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2</id>
			<updated>2010-12-31T09:30:32+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Using Server-Side PostgreSQL Cursors in Django</title>
		<link href="http://thebuild.com/blog/2010/12/14/using-server-side-postgresql-cursors-in-django/"/>
		<id>http://thebuild.com/blog/?p=221</id>
		<updated>2010-12-15T00:02:22+00:00</updated>
		<content type="html">&lt;p&gt;This is a follow-up to the &lt;a href=&quot;http://thebuild.com/blog/2010/12/13/very-large-result-sets-in-django-using-postgresql/&quot;&gt;previous post&lt;/a&gt;, in which we talked about ways of handling huge result sets in Django.&lt;/p&gt;

&lt;p&gt;Two commenters (thanks!) pointed out that psycopg2 has built-in support for server-side cursors, using the &lt;code&gt;name&lt;/code&gt; option on the &lt;a href=&quot;http://initd.org/psycopg/docs/connection.html#connection.cursor&quot;&gt;.cursor() function&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To use this in Django requires a couple of small gyrations.&lt;/p&gt;

&lt;p&gt;First, Django wraps the actual database connection inside of the &lt;code&gt;django.db.connection&lt;/code&gt; object, as property &lt;code&gt;connection&lt;/code&gt;. So, to create a named cursor, you need:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cursor = django.db.connection.connection.cursor(name='gigantic_cursor')
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If this is the first call you are making against that connection wrapper object, it&amp;#8217;ll fail; the underlying database connection is created lazily. As a rather hacky solution, you can do this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;from django.db import connection

if connection.connection is None:
    cursor = connection.cursor()
       # This is required to populate the connection object properly

cursor = connection.connection.cursor(name='gigantic_cursor')
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can then iterate over the results using the standard iterator or &lt;code&gt;cursor.fetchmany()&lt;/code&gt; method, and that will grab results in from the server in the appropriate chunks.&lt;/p&gt;</content>
		<author>
			<name>Christophe Pettus</name>
			<uri>http://thebuild.com/blog</uri>
		</author>
		<source>
			<title type="html">The Build » PostgreSQL</title>
			<subtitle type="html">programming, etc.</subtitle>
			<link rel="self" href="http://thebuild.com/blog/category/postgresql/feed/"/>
			<id>http://thebuild.com/blog/category/postgresql/feed/</id>
			<updated>2011-01-01T20:46:08+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Frustration</title>
		<link href="http://people.planetpostgresql.org/andrew/index.php?/archives/138-Frustration.html"/>
		<id>http://people.planetpostgresql.org/andrew/index.php?/archives/138-guid.html</id>
		<updated>2010-12-14T07:50:00+00:00</updated>
		<content type="html">In attempting to get a new Mingw buildfarm member working, I discovered that there's a rather dramatic and nasty failure when it's built with the latest mingw toolset. If the client passes connection options to the server the server fails miserably with&lt;br /&gt;
&lt;blockquote&gt;FATAL:  parameter &quot;port&quot; cannot be changed without restarting the server&lt;/blockquote&gt;It doesn't matter what the options setting is. Anything valid at all triggers it. &lt;br /&gt;
&lt;br /&gt;
I've followed several false trails in trying to find what's causing this, and generally wasted a huge amount of time on it. So far I do know that it's apparently not a client problem (and thus not related to putenv, as several of us thought it might be), not related to compiler optimization, not related to compiler version, and not related to the system's getopt version.&lt;br /&gt;
&lt;br /&gt;
For now I'm going to have to give up and do some actual paying work. I'll try to return to it later. Given other demands, that could be some weeks away.</content>
		<author>
			<name>Andrew Dunstan</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/andrew/</uri>
		</author>
		<source>
			<title type="html">Andrew's PostgreSQL blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2</id>
			<updated>2010-12-31T09:30:32+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Very Large Result Sets in Django using PostgreSQL</title>
		<link href="http://thebuild.com/blog/2010/12/13/very-large-result-sets-in-django-using-postgresql/"/>
		<id>http://thebuild.com/blog/?p=207</id>
		<updated>2010-12-14T03:10:17+00:00</updated>
		<content type="html">&lt;p&gt;&lt;strong&gt;tl;dr:&lt;/strong&gt; Don&amp;#8217;t use Django to manage queries that have very large result sets. If you must, be sure you understand how to keep memory usage manageable.&lt;/p&gt;

&lt;p&gt;&lt;span id=&quot;more-207&quot;&gt;&lt;/span&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;One of the great things about modern interpreted, garbage-collected languages is that most of the memory management happens behind the scenes for you.  Unfortunately, sometimes, the stage equipment comes crashing through the backdrop in the middle of the performance.&lt;/p&gt;

&lt;p&gt;In Django, this frequently happens when manipulating tables that contain a very large number of rows.  Here are some tips on how to not end up with the &amp;#8220;behind the scenes&amp;#8221; machinery landing in the audience&amp;#8217;s lap.&lt;/p&gt;

&lt;p&gt;For purposes of this discussion, let&amp;#8217;s define &amp;#8220;very large&amp;#8221; as being bigger than is comfortable to keep in memory for the appplication.&lt;/p&gt;

&lt;p&gt;When Django executes a query and reads the results, memory is being taken up several places to hold the results of the query:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;On the database server, it needs to keep around structures holding the result of the query.  Most database servers are good about not keeping any more rows of the result in memory than they absolutely have to, and in any event, it&amp;#8217;s pretty much out of Django&amp;#8217;s control what the database server stores.  So, we shall trust the database to do the right thing, and move on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inside of the Django application, some set of the rows that will ultimately be the result of the query need to be stored while Django processes them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Django QuerySet object can (although it does not always) cache some of the results of the query as Model objects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;And, of course, the application might hang on to some of the objects that come back (for example, for display on the web page). Of course, this is directly under the control of the application author.  We&amp;#8217;ll trust &lt;em&gt;you&lt;/em&gt; to do the right thing, and move on.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;First, let&amp;#8217;s talk about Django&amp;#8217;s caching in the QuerySet object.&lt;/p&gt;

&lt;h3&gt;Query Set Caching&lt;/h3&gt;

&lt;p&gt;Django&amp;#8217;s QuerySet objects serve two roles: They&amp;#8217;re data structures representing an SQL query, and an API to access the results of the query.  There&amp;#8217;s no explicit &amp;#8220;do this query now, please&amp;#8221; operation in Django (although some operations have that as, shall we say, a strong implication); by and large, Django waits until you try to get the results of a query before executing it.  So, until you get the first object out of the query set, Django won&amp;#8217;t have even executed the query.&lt;/p&gt;

&lt;p&gt;Django also has a caching mechanism built into QuerySet.  This cache stores the objects that are manufactured from the rows as they come back from the database, so that multiple accesses to the same object &lt;em&gt;from the same QuerySet&lt;/em&gt; will return the cached object instead of a new copy.&lt;/p&gt;

&lt;p&gt;Note, however, the emphasis on &lt;em&gt;from the same QuerySet&lt;/em&gt;.  A surprisingly large number of operations clone the QuerySet before operating on it.  For example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;qs = ExampleModel.objects.filter(name='Fred')
x = qs[2]
x = qs[2]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will do two queries.  &lt;code&gt;qs[2]&lt;/code&gt;, under the hood, clones the query set, applies a limit of &lt;code&gt;[2:3]&lt;/code&gt; to it, executes the query, returns the resulting object, and throws the limited QuerySet away.  Slicing does exactly the same thing.&lt;/p&gt;

&lt;p&gt;However, there is an exception.  If you do this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;qs = ExampleModel.objects.filter(name='Fred')
list(qs)
x = qs[2]
x = qs[2]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#8230; the access pattern will be very different.  &lt;code&gt;list(qs)&lt;/code&gt; forces the evaluation of the query set, so Django will send the query to the database server, and populate the QuerySet (and its cache) with the result.  Then, the &lt;code&gt;qs[2]&lt;/code&gt; operaitons don&amp;#8217;t copy the QuertSet; it just hits the cache.&lt;/p&gt;

&lt;p&gt;Note, though, that this came at the expense of retrieving every row that matched the query from the server, and creating objects for it.  If you force the QuerySet to be evaluated, Django creates objects for everything that matches the query.&lt;/p&gt;

&lt;p&gt;When you iterate over a QuerySet, the behavior is slightly different.  The QuerySet cache is always built from the first object that matches the query on up; it&amp;#8217;s not sparse (for example, you&amp;#8217;ll never have the situation where qs[4] and qs[1000] are in the cache, but the objects between them aren&amp;#8217;t).  As you iterate over a QuerySet, if the cache is not already populated, Django grabs the rows in chunks (currently hard-coded to be 100) and fills the cache ahead of the iterator.  This does mean that if you do a query, then only iterate over the first few elements, the cache doesn&amp;#8217;t fill up with stuff you are never going to look at.&lt;/p&gt;

&lt;p&gt;You can defeat the caching by using &lt;code&gt;.iterator()&lt;/code&gt;.  For example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;qs = ExampleModel.objects.filter(name='Fred')
for x in qs.iterator():
   do_something_wonderful(x)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will execute the query, and return each resulting object back, but without filling the cache.  (It also won&amp;#8217;t return cached objects if they already exist; &lt;code&gt;.iterator()&lt;/code&gt; forces a reexecution of the query.)  As the Django documentation says, this can be handy if it is a huge result set.&lt;/p&gt;

&lt;p&gt;So, let&amp;#8217;s say you for some reason want to process 100 million rows.  You know for sure that you won&amp;#8217;t be able to hold all 100 million Model objects in memory, so you dutifully do:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;qs = GiganticTableModel.objects.all()
for giant in qs.iterator():
    # And BANG, you get an out of memory exception right here.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;But what happened?  Why did you run out of memory before you even saw a single object out of &lt;code&gt;.iterator()&lt;/code&gt;?&lt;/p&gt;

&lt;h3&gt;Daddy, Where Do Model Objects Come From?&lt;/h3&gt;

&lt;p&gt;Let&amp;#8217;s take a moment and trace down the code path that gets executed here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Creating the QuerySet doesn&amp;#8217;t touch the database at all, as noted above.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After a certain amount of fussing around, &lt;code&gt;.iterator()&lt;/code&gt; calls the underlying backend query machinery to perform the query.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The backend machinery executes the query, and creates an iterator over the resulting rows.  That iterator (in this case) grabs a chunk of rows at a time using &lt;code&gt;.fetchmany()&lt;/code&gt;, and returns them one at a time.  (At it happens, that chunk is hardcoded at 100 rows.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;That iterator is called by the actual iterator returned by &lt;code&gt;.iterator()&lt;/code&gt;, so the iteration (pfew!) proceeds as: Call to get a row (which refills if the last grab of 100 is exhausted), create a new object, and return it up.  Create an object from that row, return it to the caller.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, why are we getting an out of memory condition?  Even though there are 100 million rows in the result, there should only be 100 in memory at any one time, right?&lt;/p&gt;

&lt;p&gt;Sadly, wrong. At the moment that the backend machinery executes the query, &lt;em&gt;all 100 million rows are returned by the database server at once.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To quote the &lt;a href=&quot;http://initd.org/psycopg/docs/usage.html#server-side-cursors&quot;&gt;psycopg2 documentation&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;When a database query is executed, the Psycopg cursor usually fetches all the records returned by the backend, transferring them to the client process. If the query returned an huge amount of data, a proportionally large amount of memory will be allocated by the client.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is true even if you do a &lt;code&gt;.fetchone()&lt;/code&gt; or &lt;code&gt;.fetchmany()&lt;/code&gt;, not just a &lt;code&gt;.fetchall()&lt;/code&gt;.  And there&amp;#8217;s no way, while staying entirely within the standard Django QuerySet machinery, to change this behavior.&lt;/p&gt;

&lt;p&gt;So, what do we do?&lt;/p&gt;

&lt;h3&gt;&amp;#8220;Doctor, It Hurts When I Do That.&amp;#8221;&lt;/h3&gt;

&lt;p&gt;&amp;#8220;So, don&amp;#8217;t do that.&amp;#8221;&lt;/p&gt;

&lt;p&gt;If at all possible, don&amp;#8217;t process very large result sets directly in Django.  Even setting aside the memory consumption, it&amp;#8217;s a horribly inefficient use of pretty much every part of the toolchain.  Much more appealing options include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Use &lt;code&gt;.update()&lt;/code&gt; to push the execution into the server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use a stored procedure or raw SQL.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Modern database servers are designed to crunch large result sets; leave the data on the server and do it there.&lt;/p&gt;

&lt;h3&gt;Take Smaller Bites&lt;/h3&gt;

&lt;p&gt;If there is a way of partitioning the data up into smaller chunks, do that.  (For example, processing by day, or ID range.)  Although I wouldn&amp;#8217;t exactly call it &amp;#8220;best practice,&amp;#8221; you could iterate through the rows by using ranges of the primary key, assuming a standard Django serial integer PK:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;i = 0
while True:
    qs = GiganticTableModel.objects.filter(pk__gte=i*1000, pk__lt=(i+1)*1000)
    try:
        for giant in qs:
            do_something_wonderful(giant)
    except GiganticTableModel.DoesNotExist:
        break

    i += 1
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;There&amp;#8217;s also &lt;a href=&quot;http://www.mellowmorning.com/2010/03/03/django-query-set-iterator-for-really-large-querysets/&quot;&gt;an example here&lt;/a&gt; of constructing an iterator that does much the same thing.&lt;/p&gt;

&lt;h3&gt;Use a Database-Side Cursor&lt;/h3&gt;

&lt;p&gt;The way that databases really deal with this problem is &lt;a href=&quot;http://www.postgresql.org/docs/9.0/interactive/sql-declare.html&quot;&gt;cursors&lt;/a&gt;.  Not the Python DBI &lt;code&gt;cursor&lt;/code&gt;, in this case; server-side cursors are a structure which holds the result of a query and allows the client to read portions of it at will without having the whole thing shipped across.&lt;/p&gt;

&lt;p&gt;They&amp;#8217;re wonderful, and Django should use them.  It doesn&amp;#8217;t.  However, you can, using direct SQL.&lt;/p&gt;

&lt;p&gt;To create a cursor in PostgreSQL in the server, first, we need to have a transaction open.  For the full details about Django transaction management, check out some of my earlier blog posts.  This is required because the type of cursors we&amp;#8217;ll be using will only persist for the duration of the transaction.&lt;/p&gt;

&lt;p&gt;Now, the SQL sequence looks something like this.  Instead of saying:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;SELECT * FROM app_gigantictablemodel;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;We say:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;DECLARE gigantic_cursor BINARY CURSOR FOR SELECT * FROM app_gigantictablemodel;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;(The &lt;code&gt;BINARY&lt;/code&gt; keyword allows it to use the more-efficient binary protocol between the database server and the application.)&lt;/p&gt;

&lt;p&gt;Then, to get results, we can just say:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;FETCH 1000 FROM gigantic_cursor;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#8230; or however many rows we want to get.&lt;/p&gt;

&lt;p&gt;And then, we can just iterate over them (of course, we&amp;#8217;re getting the rows as rows, rather than objects):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cursor = connection.cursor()
    # Remember that this 'cursor' is a different thing than the server-side cursor!
cursor.execute(&quot;DECLARE gigantic_cursor BINARY CURSOR 
                    FOR SELECT * FROM app_gigantictablemodel&quot;)

while True:
    cursor.execute(&quot;FETCH 1000 FROM gigantic_cursor&quot;)
    rows = cursor.fetchall()

    if not rows:
        break

    for row in rows():
        ...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now, there&amp;#8217;s something that should work great, but doesn&amp;#8217;t.  In 1.2, Django introduced raw SQL queries that return a RawQuerySet.  So, one could in theory do this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;qs = GiganticTableModel.objects.raw(&quot;FETCH 1000 FROM gigantic_cursor&quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Except we get an exception:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Raw queries are limited to SELECT queries. Use connection.cursor directly for other types of queries.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Presumably to guard against weird errors, raw queries do a hardcoded check against the query string, making sure it starts with SELECT.  It would be nice if this were liberalized to allow FETCHes.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;So, if you must, you can process gigantic result sets in Django. But, ideally, you should design your application to make it unnecessary.  If you &lt;em&gt;must&lt;/em&gt; process large result sets, do it on the database server; that&amp;#8217;s what it&amp;#8217;s there for.&lt;/p&gt;</content>
		<author>
			<name>Christophe Pettus</name>
			<uri>http://thebuild.com/blog</uri>
		</author>
		<source>
			<title type="html">The Build » PostgreSQL</title>
			<subtitle type="html">programming, etc.</subtitle>
			<link rel="self" href="http://thebuild.com/blog/category/postgresql/feed/"/>
			<id>http://thebuild.com/blog/category/postgresql/feed/</id>
			<updated>2011-01-01T20:46:08+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Interested in Sponsoring Tungsten Open Source Features?</title>
		<link href="http://scale-out-blog.blogspot.com/2010/12/interested-in-sponsoring-tungsten-open.html"/>
		<id>tag:blogger.com,1999:blog-768233104244702633.post-1895306719036544861</id>
		<updated>2010-12-12T21:52:00+00:00</updated>
		<content type="html">Over the last few months I have been pleasantly surprised by the number of people using open source builds of Tungsten.&amp;nbsp; My company, Continuent, has therefore started to offer support for open source users and will likely expand these services to meet demand. &lt;br /&gt;&lt;br /&gt;There have also been a number of requests to add specific features to open source builds, especially for replication. We have added a few already but are now considering pushing even more features into open source if we can find sponsors.&amp;nbsp; These add to a number of great features already in open source like global transaction IDs, MySQL 5.0/5.1, basic drizzle replication, transaction filtering, and many others.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Do you have special replication or clustering features you would like to see added to Tungsten? Specialized MySQL to PostgreSQL replication?&amp;nbsp; Management and monitoring commands?&amp;nbsp; Cool parallel replication problems?&amp;nbsp; High-performance logging?&amp;nbsp; Weird multi-master topologies?&amp;nbsp; Talk to us about sponsoring new open source features.&amp;nbsp; We're happy to do projects that solve interesting problems, benefit the open source databases community, and help grow Tungsten as a product.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Visit the Continuent website or send email directly to robert dot hodges at continuent dot com. &amp;nbsp;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/768233104244702633-1895306719036544861?l=scale-out-blog.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Robert Hodges</name>
			<email>noreply@blogger.com</email>
			<uri>http://scale-out-blog.blogspot.com/search/label/PostgreSQL</uri>
		</author>
		<source>
			<title type="html">The Scale-Out Blog</title>
			<subtitle type="html">Creating robust applications using open source databases and commodity hardware</subtitle>
			<link rel="self" href="http://scale-out-blog.blogspot.com/feeds/posts/default/-/PostgreSQL"/>
			<id>tag:blogger.com,1999:blog-768233104244702633</id>
			<updated>2010-12-29T15:00:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PostgreSQL Weekly News December 12th 2010</title>
		<link href="http://www.postgresql.org/community/weeklynews/pwn20101212"/>
		<id>http://www.postgresql.org/community/weeklynews/pwn20101212</id>
		<updated>2010-12-12T08:00:00+00:00</updated>
		<content type="html">The Call for Papers is still open for the PostgreSQL room at FOSDEM,
which will be held in Brussels, Belgium, on February 5-6, 2011.  Send
your proposals to fosdem AT postgresql DOT eu.</content>
		<author>
			<name>PostgreSQL Weekly News</name>
			<uri>http://www.postgresql.org/community/weeklynews/</uri>
		</author>
		<source>
			<title type="html">PostgreSQL Weekly News</title>
			<link rel="self" href="http://wwwmaster.postgresql.org/files/weeklynews.xml"/>
			<id>http://wwwmaster.postgresql.org/files/weeklynews.xml</id>
			<updated>2011-01-03T07:16:13+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Waiting for 9.1 – KNNGIST</title>
		<link href="http://www.depesz.com/index.php/2010/12/11/waiting-for-9-1-knngist/"/>
		<id>http://www.depesz.com/?p=1926</id>
		<updated>2010-12-11T14:25:23+00:00</updated>
		<content type="html">On 4th of December, Tom Lane committed really cool patch: KNNGIST, otherwise known as order-by-operator support for GIST. This commit represents a rather heavily editorialized version of Teodor's builtin_knngist_itself-0.8.2 and builtin_knngist_proc-0.8.1 patches. I redid the opclass API to add a separate Distance method instead of turning the Consistent method into an illogical mess, fixed some [...]</content>
		<author>
			<name>Hubert Lubaczewski</name>
			<uri>http://www.depesz.com</uri>
		</author>
		<source>
			<title type="html">select * from depesz; » postgresql</title>
			<link rel="self" href="http://www.depesz.com/index.php/tag/postgresql/feed/"/>
			<id>http://www.depesz.com/index.php/tag/postgresql/feed/</id>
			<updated>2011-01-03T13:16:31+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="fr">
		<title type="html">Attendees of PGDay.eu 2010, send your feedback please</title>
		<link href="http://blog.guillaume.lelarge.info/index.php/post/2010/12/11/Send-your-feedback-ASAP"/>
		<id>urn:md5:477cf3e5112d3490e469af51a458b4b0</id>
		<updated>2010-12-11T09:14:00+00:00</updated>
		<content type="html">&lt;p&gt;Now that &lt;a href=&quot;http://2010.pgday.eu&quot; hreflang=&quot;en&quot;&gt;PGDay.eu 2010&lt;/a&gt; is over, this is a good time for us to think about what we did right and, perhaps more important, what we did wrong. You can help us on that work by telling us what you think about &lt;a href=&quot;https://www.postgresql.eu/events/feedback/pgday2010/conference/&quot; hreflang=&quot;en&quot;&gt;the venue, the caterer&lt;/a&gt;, and the &lt;a href=&quot;https://www.postgresql.eu/events/feedback/pgday2010/&quot; hreflang=&quot;en&quot;&gt;talks&lt;/a&gt; (and I mean, each of them, including the keynote).&lt;/p&gt;


&lt;p&gt;Thanks.&lt;/p&gt;</content>
		<author>
			<name>Guillaume Lelarge</name>
			<uri>http://blog.guillaume.lelarge.info/index.php/</uri>
		</author>
		<source>
			<title type="html">gleu's blog - PlanetPostgreSQL</title>
			<link rel="self" href="http://blog.guillaume.lelarge.info/index.php/feed/category/Planetpostgresql/rss2"/>
			<id>http://blog.guillaume.lelarge.info/index.php/feed/category/Planetpostgresql/rss2</id>
			<updated>2011-01-02T11:31:28+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PGDay.EU 2010 - Kart racing</title>
		<link href="http://andreas.scherbaum.la/blog/archives/765-PGDay.EU-2010-Kart-racing.html"/>
		<id>http://andreas.scherbaum.la/blog/archives/765-guid.html</id>
		<updated>2010-12-10T19:05:58+00:00</updated>
		<content type="html">&lt;div class=&quot;serendipity_authorpic&quot;&gt;&lt;img src=&quot;http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg&quot; alt=&quot;Author&quot; title=&quot;Andreas 'ads' Scherbaum&quot; /&gt;&lt;br /&gt;&lt;span&gt;Andreas 'ads' Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;font&gt;On tuesday evening, after the &lt;a target=&quot;_blank&quot; href=&quot;http://andreas.scherbaum.la/blog/archives/764-Second-day-of-PGDay.Eu-2010.html&quot;&gt;conference&lt;/a&gt;, we went to a kart racing arena near Stuttgart. This event was announced in the first mail to all participants, although there was no reminder because all available places in the cars (for transportation to the kart racing) were already reserved after a short time.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font&gt;We had 20 drivers, splitted up in 3 groups. Each group had 10 minutes for qualifying and a 10 minute race. Although someone gave me all the papers with the results, there are no names on most of the sheets. So I cannot say who won each of the three races.&lt;br /&gt;&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://andreas.scherbaum.la/blog/archives/765-PGDay.EU-2010-Kart-racing.html#extended&quot;&gt;Continue reading &quot;PGDay.EU 2010 - Kart racing&quot;&lt;/a&gt;</content>
		<author>
			<name>Andreas 'ads' Scherbaum</name>
			<email>nospam@example.com</email>
			<uri>http://andreas.scherbaum.la/blog/</uri>
		</author>
		<source>
			<title type="html">ads' corner - PostgreSQL News</title>
			<subtitle type="html">a place to store my stuff</subtitle>
			<link rel="self" href="http://andreas.scherbaum.la/blog/feeds/categories/17-PostgreSQL-News.rss"/>
			<id>http://andreas.scherbaum.la/blog/feeds/categories/17-PostgreSQL-News.rss</id>
			<updated>2010-12-10T19:30:51+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">R.I.P. PostgreSQL (Mammoth) Replicator</title>
		<link href="http://www.commandprompt.com/blogs/joshua_drake/2010/12/rip_postgresql_mammoth_replicator/"/>
		<id>http://www.commandprompt.com/blogs/joshua_drake/2010/12/rip_postgresql_mammoth_replicator/</id>
		<updated>2010-12-10T18:56:52+00:00</updated>
		<content type="html">In 2004, PostgreSQL Core Team member Josh Berkus wrote[1]:
&lt;p&gt;
&quot;Slony-I is undoubtedly our most popular replication tool.   It supports Master-Slave High Availability Replication.   However, there are a number of other solutions, such as dbMirror, eRServer, pgPool, C-JDBC, and the proprietary Mammoth Replicator, all of which are in wide use because they solve different replication problems than Slony-I does.  Replication is not a single solution for a single problem; it is several solutions for a wide array of different problems.  That's why no one replication tool will ever be the &quot;default&quot; replication for PostgreSQL.&quot;
&lt;p&gt;
I believed well before then it was a fallacy and a bad community decision to not put support behind a single, integrated solution. I also believe it has been one of the single most important policy failures of the .Org community and has lead PostgreSQL to grow much more slowly than it otherwise could have. 
&lt;p&gt;
From a business standpoint it opened the door for many other solutions, a lot of learning experiences and a lot of professional services consulting (Thank you: Slony). It also opened the door for the only solution to look at being integrated into Core. Mammoth PostgreSQL Replicator (Replicator).
&lt;p&gt;
Replicator opened the door for CMD in many ways. Although it was never a huge commercial success we did have early customers (Cisco) and there was quite a few deployments over time. Eventually, we Open Sourced Replicator hoping to generate some external interest, and although quite a few hackers talked to me about participating, none of it actually materialized into anything useful.
&lt;p&gt;
To this day, nothing can touch the usability of Replicator for PostgreSQL replication. It is the easiest to configure, the easiest to run, the easiest to manage. Alas that is not enough, as we needed to re-architect to eliminate the one single point of failure (as well as some other issues, crash safety I am looking at you). Further with the emergence of the Hot Standby technology that is in 9.0, the need for Replicator has become even less.
&lt;p&gt;
Although there were design decisions originally made that were incorrect, I still believe that the overall architecture of Replicator was sound. Implementation, perhaps not but architecture yes. I also believe that the in development version (1.9) would have been a game changer as a whole. Unfortunately we were not able to execute for a number of reasons that don't really matter anymore.
&lt;p&gt;
Everyone who worked on replicator should be proud of what they did. It should be looked on as a learning experience. We built something, nobody else did, even now. We built integrated and flexible PostgreSQL replication. Was it perfect? No. Should we have open sourced it sooner and tried harder to integrate it into the community? Probably. Were there design decisions that should have been different? Yes. Were there components we should have changed (MCP SPOF)? Yes. 
&lt;p&gt;
Of course, we can say all of that about the current state of PostgreSQL. Let alone Replicator, Slony or any other project. Just read -hackers. We are not perfect, but our team did something good.
&lt;p&gt;
It took until 2010, 7 years? after Replicator first released for the community to figure out they were wrong. We were pioneers for PostgreSQL and our team should be proud of that.
&lt;p&gt;
&lt;strong&gt;&lt;center&gt;R.I.P. PostgreSQL (Mammoth) Replicator (12/10/2010)&lt;/center&gt;&lt;/strong&gt;
&lt;p&gt;
1. http://archives.postgresql.org/pgsql-advocacy/2004-11/msg00063.php&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Joshua D. Drake</name>
			<uri>http://www.commandprompt.com/blogs/joshua_drake/</uri>
		</author>
		<source>
			<title type="html">CMD: Joshua Drake's Blog</title>
			<subtitle type="html">Command Prompt Blog Feed: Joshua Drake's Blog</subtitle>
			<link rel="self" href="http://www.commandprompt.com/rss/blogs/joshua_drake"/>
			<id>http://www.commandprompt.com/rss/blogs/joshua_drake</id>
			<updated>2011-01-04T12:57:14+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Iteration over record in PL/pgSQL</title>
		<link href="http://okbob.blogspot.com/2010/12/iteration-over-record-in-plpgsql.html"/>
		<id>tag:blogger.com,1999:blog-8839574367290288724.post-6626755329414582535</id>
		<updated>2010-12-10T07:43:55+00:00</updated>
		<content type="html">Hello &lt;p&gt;A iteration over record in PL/pgSQL is old well known problem. When we try to write a general triggers in PL/pgSQL we can find a break, because we are not able to iterate over record. There was a some workarounds, but these solutions are simply slow and complex. So I wrote a set of functions that can helps.  &lt;p&gt;First functions is &lt;i&gt;record_expand&lt;/i&gt;. This function is similar to &lt;i&gt;unnest&lt;/i&gt; function, but related object is record: &lt;pre&gt; &lt;br /&gt;postgres=# select * from pst.record_expand(row('10',null,'Ahoj', current_date)); &lt;br /&gt; name |   value    |   typ    &lt;br /&gt;------+------------+--------- &lt;br /&gt; f1   | 10         | unknown &lt;br /&gt; f2   |            | unknown &lt;br /&gt; f3   | Ahoj       | unknown &lt;br /&gt; f4   | 2010-12-10 | date &lt;br /&gt;(4 rows) &lt;br /&gt;&lt;/pre&gt;Now isn't problem to write general trigger for detecting a changed colums: &lt;pre&gt;&lt;br /&gt;CREATE TABLE foo(a int, b int, c text, d int); &lt;br /&gt; &lt;br /&gt;CREATE OR REPLACE FUNCTIO update_trg_func() &lt;br /&gt;RETURNS trigger as $$ &lt;br /&gt;DECLARE r record; &lt;br /&gt;BEGIN &lt;br /&gt;  FOR r IN SELECT n.name, o.value as oldval, n.value as newval &lt;br /&gt;              FROM pst.record_expand(new) n, &lt;br /&gt;                   pst.record_expand(old) o &lt;br /&gt;             WHERE n.name = o.name &lt;br /&gt;               AND n.value IS DISTINCT FROM o.value &lt;br /&gt;  LOOP  &lt;br /&gt;    RAISE NOTICE '% % %', r.name, r.oldval, r.newval; &lt;br /&gt;END LOOP; &lt;br /&gt;RETURN NULL; &lt;br /&gt;END; &lt;br /&gt;$$ LANGUAGE plpgsql; &lt;br /&gt; &lt;br /&gt;CREATE TRIGGER update_trg &lt;br /&gt;  AFTER UPDATE ON foo &lt;br /&gt;  FOR EACH ROW EXECUTE PROCEDURE update_trg_func(); &lt;br /&gt; &lt;br /&gt;postgres=# UPDATE foo SET c = 'Pavel', a = 40; &lt;br /&gt;NOTICE:  a 30 40 &lt;br /&gt;NOTICE:  c omega Pavel &lt;br /&gt;UPDATE 1 &lt;br /&gt;&lt;/pre&gt;Next function allows update of any dynamic record. This function is &lt;i&gt;record_set_fields&lt;/i&gt;: It's a variadic functions - you can enter a fields and values to change: &lt;pre&gt;&lt;br /&gt;postgres=# SELECT pst.record_set_fields(row(0,0,'',0)::foo, 'd', 100, 'c', 'Hello');&lt;br /&gt;  record_set_fields&lt;br /&gt;-------------------&lt;br /&gt;  (0,0,Hello,100)&lt;br /&gt;&lt;/pre&gt;It can be used for dynamic initialization of wide tables - for some OLAP purposes: &lt;pre&gt;  &lt;br /&gt; CREATE TABLE t(a0 int, a1 int, a2 int, a3 int, a4 int, a5 int); &lt;br /&gt; &lt;br /&gt;-- set all null fields &lt;i&gt;ax&lt;/i&gt; on value -1000 &lt;br /&gt; &lt;br /&gt;CREATE OR REPLACE FUNCTION insert_trg_func()&lt;br /&gt;RETURNS trigger as $$&lt;br /&gt;DECLARE name text;&lt;br /&gt;BEGIN&lt;br /&gt;   FOR name IN SELECT x.name &lt;br /&gt;                  FROM pst.record_expand(new) x &lt;br /&gt;                 WHERE x.value IS NULL AND x.name LIKE 'a%'&lt;br /&gt;   LOOP  &lt;br /&gt;     new = pst.record_set_fields(new, name, -1000);&lt;br /&gt;   END LOOP; &lt;br /&gt;   RETURN new;&lt;br /&gt;END; &lt;br /&gt;$$ LANGUAGE plpgsql;  &lt;br /&gt;&lt;br /&gt;CREATE TRIGGER insert_trg &lt;br /&gt;   BEFORE INSERT ON t &lt;br /&gt;   FOR EACH ROW EXECUTE PROCEDURE insert_trg_func(); &lt;br /&gt; &lt;br /&gt;postgres=# INSERT INTO t(a3,a5) VALUES(100,100);&lt;br /&gt;INSERT 0 1&lt;br /&gt;postgres=# SELECT * FROM t;&lt;br /&gt;  a0   |  a1   |  a2   | a3  |  a4   | a5  &lt;br /&gt;-------+-------+-------+-----+-------+-----&lt;br /&gt; -1000 | -1000 | -1000 | 100 | -1000 | 100&lt;br /&gt;(1 row)&lt;br /&gt;&lt;/pre&gt;Last function is &lt;i&gt;record_get_field&lt;/i&gt;. Its returns a value of entered field.&lt;pre&gt;&lt;br /&gt;CREATE OR REPLACE FUNCTION insert_trg_func() &lt;br /&gt;RETURNS TRIGGER AS $$ &lt;br /&gt;DECLARE name text; &lt;br /&gt;BEGIN&lt;br /&gt;  FOR i IN 0..5 LOOP&lt;br /&gt;    IF pst.record_get_field(new, 'a'||i) IS NULL THEN&lt;br /&gt;      new := pst.record_set_fields(new, 'a'||i, -1000); &lt;br /&gt;    END IF; &lt;br /&gt;  END LOOP; r&lt;br /&gt;  RETURN new; &lt;br /&gt;END; &lt;br /&gt;$$ LANGUAGE plpgsql; &lt;br /&gt;&lt;/pre&gt;These package is available from pgfoundry &lt;a href=&quot;http://pgfoundry.org/frs/shownotes.php?release_id=1749 &quot;&gt;http://pgfoundry.org/frs/shownotes.php?release_id=1749&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8839574367290288724-6626755329414582535?l=okbob.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Pavel Stěhule</name>
			<email>noreply@blogger.com</email>
			<uri>http://okbob.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Pavel Stehule's blog</title>
			<subtitle type="html">Some notes about PostgreSQL</subtitle>
			<link rel="self" href="http://okbob.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-8839574367290288724</id>
			<updated>2011-01-03T17:01:48+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PL/R Part 2: Functions that take arguments and the power of aggregation</title>
		<link href="http://www.postgresonline.com/journal/archives/189-PLR-Part-2-Functions-that-take-arguments-and-the-power-of-aggregation.html"/>
		<id>http://www.postgresonline.com/journal/archives/189-guid.html</id>
		<updated>2010-12-10T06:38:00+00:00</updated>
		<content type="html">&lt;p&gt;In &lt;a href=&quot;http://www.postgresonline.com/journal/archives/188-plr_part1.html&quot; target=&quot;_blank&quot;&gt;Intro to PL/R and R&lt;/a&gt;, we covered how to enable PL/R language in the database and wrote some PL/R functions
that rendered plain text reports using the R environment.  What makes combining R and PostgreSQL in
PL/R most powerful is when you can start writing SQL summary queries that use R functions like any other SQL function. &lt;/p&gt;

&lt;p&gt;In this next example, we'll be using PostGIS test runs from tests we autogenerated from the &lt;a href=&quot;http://www.postgis.org/documentation/manual-svn/&quot; target=&quot;_blank&quot;&gt;Official PostGIS documentation&lt;/a&gt; (Documentation Driven Testing (DDT))
as described in the  &lt;a href=&quot;http://trac.osgeo.org/postgis/wiki/DevWikiGardenTest&quot; target=&quot;_blank&quot;&gt;Garden Test&lt;/a&gt; section of the PostGIS Developer wiki.  
We've also updated some of our logging generator and test patterns so future results may not represent what we demonstrated in the last article. &lt;/p&gt;
&lt;p&gt;On a side note: Among the changes in the tests was to introduce more variants of the &lt;a href=&quot;http://www.postgis.org/pipermail/postgis-devel/2010-December/010776.html&quot; target=&quot;_balnk&quot;&gt;Empty Geometry now supported by PostGIS 2.0&lt;/a&gt;.  
Our beloved PostGIS 2.0 trunk is at the moment somewhat unstable when working with these new forms of emptiness and stuffing geometries in inappropriate places. At the moment it doesn't survive through  the mindless machine gun battery of tests we have mercilessly inflicted.
It's been great fun trying to build a better dummy while watching &lt;a href=&quot;http://blog.cleverelephant.ca/&quot; target=&quot;_blank&quot;&gt;Paul&lt;/a&gt; run around patching holes to make the software more dummy proof as the dummy stumbles across questionable but amusing PostGIS use cases not gracefully handled by his new serialization and empty logic. &lt;/p&gt;

&lt;p&gt;On yet another side note, it's nice to 
see that others are doing similar wonderful things with documentation.  Check out &lt;a href=&quot;http://eulerto.blogspot.com/2010/11/comment-on-catalog-tables.html&quot; target=&quot;_blank&quot;&gt;Euler's comment on catalog tables&lt;/a&gt;
where he uses the PostgreSQL SGML documentation to autogenerate PostgreSQL catalog table comments using &lt;a href=&quot;http://openjade.sourceforge.net/doc/sx.htm&quot;&gt;OpenJade's OSX to convert the SGML to XML&lt;/a&gt; and then XSL similar to what we did with PostGIS documentation to autogenerate PostGIS function/type comments and as a platform
for our test generator.  &lt;/p&gt;

&lt;p&gt;For our next exercises we'll be using the power of aggregation to push data into R instead of &lt;b&gt;pg.spi.execute&lt;/b&gt;. This will make our functions far more reusable and versatile.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/189-PLR-Part-2-Functions-that-take-arguments-and-the-power-of-aggregation.html#extended&quot;&gt;Continue reading &quot;PL/R Part 2: Functions that take arguments and the power of aggregation&quot;&lt;/a&gt;</content>
		<author>
			<name>Leo Hsu and Regina Obe</name>
			<email>nospam@example.com</email>
			<uri>http://www.postgresonline.com/journal/</uri>
		</author>
		<source>
			<title type="html">Postgres OnLine Journal</title>
			<subtitle type="html">an In depth look at the PostgreSQL open source database</subtitle>
			<link rel="self" href="http://www.postgresonline.com/journal/index.php?/feeds/index.rss2"/>
			<id>http://www.postgresonline.com/journal/index.php?/feeds/index.rss2</id>
			<updated>2010-12-31T17:15:11+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Learning by example.</title>
		<link href="http://people.planetpostgresql.org/andrew/index.php?/archives/137-Learning-by-example..html"/>
		<id>http://people.planetpostgresql.org/andrew/index.php?/archives/137-guid.html</id>
		<updated>2010-12-09T16:10:00+00:00</updated>
		<content type="html">I asked someone today not to top-post on the hackers mailing list. He asked privately what that meant, and as I looked around briefly for links, I discovered &lt;a href=&quot;http://idallen.com/topposting.html&quot;&gt;this gem&lt;/a&gt;, which caused me some amusement: &lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
Arguments to support bottom-posting...&lt;br /&gt;
&lt;br /&gt;
    A: Because we read from top to bottom, left to right.&lt;br /&gt;
    Q: Why should I start my reply below the quoted text?&lt;br /&gt;
&lt;br /&gt;
    A: Because it messes up the order in which people normally read text.&lt;br /&gt;
    Q: Why is top-posting such a bad thing?   &lt;br /&gt;
&lt;br /&gt;
    A: The lost context.&lt;br /&gt;
    Q: What makes top-posted replies harder to read than bottom-posted?&lt;br /&gt;
&lt;br /&gt;
    A: Yes.&lt;br /&gt;
    Q: Should I trim down the quoted part of an email to which I'm replying?&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;</content>
		<author>
			<name>Andrew Dunstan</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/andrew/</uri>
		</author>
		<source>
			<title type="html">Andrew's PostgreSQL blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2</id>
			<updated>2010-12-31T09:30:32+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Second day of PGDay.Eu 2010</title>
		<link href="http://andreas.scherbaum.la/blog/archives/764-Second-day-of-PGDay.Eu-2010.html"/>
		<id>http://andreas.scherbaum.la/blog/archives/764-guid.html</id>
		<updated>2010-12-09T07:28:00+00:00</updated>
		<content type="html">&lt;div class=&quot;serendipity_authorpic&quot;&gt;&lt;img src=&quot;http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg&quot; alt=&quot;Author&quot; title=&quot;Andreas 'ads' Scherbaum&quot; /&gt;&lt;br /&gt;&lt;span&gt;Andreas 'ads' Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;font&gt;The second &lt;a href=&quot;http://andreas.scherbaum.la/blog/archives/763-First-day-of-PGDay.Eu-2010.html&quot; target=&quot;_blank&quot;&gt;conference day&lt;/a&gt; started with stress: the schedule was wrong in the booklet, the first talks in the morning were scheduled with 20 minutes instead of 50. This was the reason why so many visitors showed up early ;-) We decided to cut the next talks 5 minutes short and take 5 or 10 minutes from the breaks. After lunch we were back in schedule again.&lt;br /&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font&gt;Because of a PGEU board meeting - originally scheduled before the first talk, but then delayed because of the booklet error - I missed the first talk in the morning. Then I attended Stefan &amp;quot;mastermind&amp;quot; Kaltenbrunner's talk about &amp;quot;&lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8921&amp;amp;entry_id=764&quot; title=&quot;http://www.postgresql.eu/events/schedule/pgday2010/session/79-benchmarking-und-performancetesting-von-und-mit-postgresql/&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;Benchmarking and performance tests for and with PostgreSQL&lt;/em&gt;&lt;/a&gt;&amp;quot; - and yes, I learned something new. The next slot in the same room was reserved for my talk about &amp;quot;&lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8922&amp;amp;entry_id=764&quot; title=&quot;http://www.postgresql.eu/events/schedule/pgday2010/session/83-datenbanken-von-mysql-zu-postgresql-portieren/&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;Porting databases from MySQL to PostgreSQL&lt;/em&gt;&lt;/a&gt;&amp;quot;. Not so many visitors as for my previous talk, but not everyone is interested in this topic anyway. We had some nice discussions and I got the impression that not everybody is aware about the amount of problems which raises such a project.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font&gt;After the excellent lunch I was room host for Gianni Ciolli and his talk about &amp;quot;&lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8923&amp;amp;entry_id=764&quot; title=&quot;http://www.postgresql.eu/events/schedule/pgday2010/session/87-windows-that-work-how-to-use-complex-sql-for-the-greater-good/&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;Windows that Work: How to use complex SQL for the greater good&lt;/em&gt;&lt;/a&gt;&amp;quot; as well as for Dimitri Fontaine and his talk about &amp;quot;&lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8933&amp;amp;entry_id=764&quot; title=&quot;http://www.postgresql.eu/events/schedule/pgday2010/session/91-postgresql-extensions-development/&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;PostgreSQL extension's development&lt;/em&gt;&lt;/a&gt;&amp;quot;. I learned that now it's a good time to rewrite my &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8925&amp;amp;entry_id=764&quot; title=&quot;http://pgfoundry.org/projects/tablelog/&quot; target=&quot;_blank&quot;&gt;table_log extension&lt;/a&gt; and port it to the upcoming extension infrastructure.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font&gt;The last slot of the day was reserved for Ed Boyajian and his presentation about &amp;quot;&lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8934&amp;amp;entry_id=764&quot; title=&quot;http://www.postgresql.eu/events/schedule/pgday2010/session/51-closing-keynote-postgresqls-time-to-shine-the-most-disruptive-force-in-open-source-since-linux/&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;PostgreSQL's time to shine&lt;/em&gt;&lt;/a&gt;&amp;quot;. He included some very interesting numbers, you can find this (and most of the other) slides on the &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8927&amp;amp;entry_id=764&quot; title=&quot;http://wiki.postgresql.org/wiki/PGDay_Europe_2010_Talks&quot; target=&quot;_blank&quot;&gt;PG wiki&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font&gt;&lt;a href=&quot;http://andreas.scherbaum.la/blog/uploads/images/PGDay-Stuttgart-2010/DSC_8788.JPG&quot; target=&quot;_blank&quot;&gt;Dave&lt;/a&gt; and &lt;a href=&quot;http://andreas.scherbaum.la/blog/uploads/images/PGDay-Stuttgart-2010/DSC_8787.JPG&quot; target=&quot;_blank&quot;&gt;Magnus&lt;/a&gt; really &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8930&amp;amp;entry_id=764&quot; title=&quot;http://www.postgresql.eu/events/schedule/pgday2010/session/50-closing/&quot; target=&quot;_blank&quot;&gt;got the last word&lt;/a&gt; ;-) They told us about the success for this year's conference, showed some numbers and then we thanked &lt;a href=&quot;http://andreas.scherbaum.la/blog/uploads/images/PGDay-Stuttgart-2010/DSC_8815.JPG&quot; target=&quot;_blank&quot;&gt;all speakers&lt;/a&gt; and helpers (especially Harald and the guys from imos).&lt;br /&gt;&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://andreas.scherbaum.la/blog/archives/764-Second-day-of-PGDay.Eu-2010.html#extended&quot;&gt;Continue reading &quot;Second day of PGDay.Eu 2010&quot;&lt;/a&gt;</content>
		<author>
			<name>Andreas 'ads' Scherbaum</name>
			<email>nospam@example.com</email>
			<uri>http://andreas.scherbaum.la/blog/</uri>
		</author>
		<source>
			<title type="html">ads' corner - PostgreSQL News</title>
			<subtitle type="html">a place to store my stuff</subtitle>
			<link rel="self" href="http://andreas.scherbaum.la/blog/feeds/categories/17-PostgreSQL-News.rss"/>
			<id>http://andreas.scherbaum.la/blog/feeds/categories/17-PostgreSQL-News.rss</id>
			<updated>2010-12-10T19:30:51+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Looking for an Intermediate Sysadmin + Junior DBA</title>
		<link href="http://www.commandprompt.com/blogs/joshua_drake/2010/12/looking_for_an_intermediate_sysadmin__junior_dba/"/>
		<id>http://www.commandprompt.com/blogs/joshua_drake/2010/12/looking_for_an_intermediate_sysadmin__junior_dba/</id>
		<updated>2010-12-08T20:28:27+00:00</updated>
		<content type="html">Command Prompt, Inc. is looking for an intermediate systems administrator and junior PostgreSQL administrator. 
&lt;p&gt;
Command Prompt has provided PostgreSQL support, development, and hosting since 1997. We are looking for another person to join our stellar group of PostgreSQL systems experts. 
&lt;p&gt;
We seek someone who has a deep knowledge of at least one UNIX-like system, and who knows how to manage heterogeneous systems well. You can demonstrate strong skills in basic systems administration. You have a clear understanding of how to administer several systems that are mostly the same, but that have small local differences. If you do not feel comfortable saying, &quot;I'm not familiar with that in your environment,&quot; then reading the man page, and coming back with a test plan for deployment that will reveal problems with your strategy, this is not a job for you. The ability to imagine, propose, test, and deliver perfectly-integrated and easily-maintained solutions to users' problems is the key to success in this position. You work well in a team: you don't have to work 24 hours a day, because other people can always log into any system you maintain and know where everything is, how it got there, and how to add new things if they're needed. 
&lt;p&gt;
You must know basic PostgreSQL administration, and understand how to set up, operate, and tune Postgres in elementary ways, such as installing from a package manager. You do not have to be a PostgreSQL guru, but if you are, that is a bonus. 
&lt;p&gt;
You have systems administration capability with shell scripts, as well as either Perl or Python. As well as understanding (or quick to pick up) technologies such as DRBD and LVM2. 
&lt;p&gt;
You have an interest in working on varied projects that use varied (and sometimes legacy) technologies. 
&lt;p&gt;
Command Prompt is a professional services company. You will be interfacing with customers, therefore customer service and professionalism is key. 
&lt;p&gt;
Command Prompt employees usually work from their home offices. The position normally requires minimal travel. For this position, the successful candidate will be able to communicate effectively in English. English as a spoken second language is fine as long as the written skills are clear and effective. 
&lt;p&gt;
This is a remote position and does not require residence in the United States. 
&lt;p&gt;
Applicants should send a resume to Joshua D. Drake, jd(at)commandprompt(dot)com, with the words &quot;intermediate administrator&quot; in the Subject line. Please include any text by way of a cover letter in the body of your email and not as a separate attachment.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Joshua D. Drake</name>
			<uri>http://www.commandprompt.com/blogs/joshua_drake/</uri>
		</author>
		<source>
			<title type="html">CMD: Joshua Drake's Blog</title>
			<subtitle type="html">Command Prompt Blog Feed: Joshua Drake's Blog</subtitle>
			<link rel="self" href="http://www.commandprompt.com/rss/blogs/joshua_drake"/>
			<id>http://www.commandprompt.com/rss/blogs/joshua_drake</id>
			<updated>2011-01-04T12:57:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">#PDX11: Conversation about VC, investing and trends in the Portland</title>
		<link href="http://www.chesnok.com/daily/2010/12/08/pdx11-conversation-about-vc-investing-and-trends-in-the-portland/"/>
		<id>http://www.chesnok.com/daily/?p=2346</id>
		<updated>2010-12-08T16:41:42+00:00</updated>
		<content type="html">&lt;div class=&quot;tweetmeme_button&quot;&gt;
			&lt;a href=&quot;http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F08%2Fpdx11-conversation-about-vc-investing-and-trends-in-the-portland%2F&quot;&gt;&lt;br /&gt;
				&lt;img src=&quot;http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F08%2Fpdx11-conversation-about-vc-investing-and-trends-in-the-portland%2F&amp;amp;style=normal&amp;amp;b=2&quot; height=&quot;61&quot; width=&quot;50&quot; /&gt;&lt;br /&gt;
			&lt;/a&gt;
		&lt;/div&gt;
&lt;p&gt;I wanted to continue talking about the perceptions stemming from the &amp;#8220;quality of life&amp;#8221; versus &amp;#8220;financial success&amp;#8221; juxtapositon from this slide:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.chesnok.com/daily/wp-content/uploads/2010/12/Software-Cluster-Presentation-2010-12-02.pdf-page-26-of-34.jpg&quot;&gt;&lt;img src=&quot;http://www.chesnok.com/daily/wp-content/uploads/2010/12/Software-Cluster-Presentation-2010-12-02.pdf-page-26-of-34.jpg&quot; alt=&quot;&quot; title=&quot;Software-Cluster-Presentation-2010-12-02.pdf (page 26 of 34)&quot; width=&quot;500&quot; height=&quot;361&quot; class=&quot;aligncenter size-full wp-image-2344&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A friend pointed out that maybe this issue is being framed in the wrong way for &amp;#8220;outsiders&amp;#8221;. If we&amp;#8217;re going to pitch people on Portland being the best place to build a startup, values are certainly part of the equation, but what do investors want to know?&lt;/p&gt;
&lt;p&gt;Maybe problem is similar to the &lt;a href=&quot;http://www.pbs.org/pov/flagwars/special_gentrification.php&quot;&gt;process of gentrification&lt;/a&gt;&amp;#8230; And as far as Portland&amp;#8217;s software scene is concerned, we&amp;#8217;re out of the blight, well into the &amp;#8220;artists and weirdos make a home&amp;#8221; phase and maybe just about to transition into &amp;#8220;developers buy up a lot of land and artists start moving on&amp;#8221; phase. But capital investment is in companies rather than land.&lt;/p&gt;
&lt;p&gt;Maybe the story we as a city need to tell is that we want early adopter investors and more &amp;#8220;artists and weirdos&amp;#8221; who are passionate about what they do.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s a tough analogy, because we don&amp;#8217;t have the same geographical or physical world indicators. When gentrification occurs, there aren&amp;#8217;t always clear signs in the beginning. But as the process unfolds, people physically move in and out of a tight geographical area. &lt;/p&gt;
&lt;p&gt;To put a spotlight on what&amp;#8217;s going on with the tech industry, we need for some better indicators! Have a look at the employment graphs like the &lt;a href=&quot;http://blog.oregonlive.com/siliconforest/2010/11/oregon_tech_jobs_flat_in_octob.html&quot;&gt;Oregon tech job employment&lt;/a&gt; indicator:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.chesnok.com/daily/wp-content/uploads/2010/12/oregon-tech-job-graph-large.jpg&quot;&gt;&lt;img src=&quot;http://www.chesnok.com/daily/wp-content/uploads/2010/12/oregon-tech-job-graph-large.jpg&quot; alt=&quot;&quot; title=&quot;oregon-tech-job-graph-large&quot; width=&quot;380&quot; height=&quot;285&quot; class=&quot;aligncenter size-full wp-image-2358&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t think it tells the whole story. There are also &lt;a href=&quot;http://blog.oregonlive.com/siliconforest/2010/10/oregon_venture_activity_cooled.html&quot;&gt;indicators about VC&lt;/a&gt;, but again, I don&amp;#8217;t think it is capturing the nature of what is happening in Portland.&lt;/p&gt;
&lt;p&gt;To start, I&amp;#8217;m interested in a finer-grained look at the jobs associated with small software and IT firms. I&amp;#8217;m not sure if there&amp;#8217;s a way to pull that data out of what is typically tracked, but I&amp;#8217;m going to try.&lt;/p&gt;
&lt;p&gt;What indicators do you think we should be tracking? &lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/11/10/pdx11/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: Turning things up a notch for Portland&amp;#8217;s &amp;#8220;software cluster&amp;#8221;&quot;&gt;#PDX11: Turning things up a notch for Portland&amp;#8217;s &amp;#8220;software cluster&amp;#8221;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/02/pdx11-its-alive/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: It&amp;#8217;s alive!&quot;&gt;#PDX11: It&amp;#8217;s alive!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/05/pdx11-mayor-sam-adams-intro-to-the-software-summit/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: Mayor Sam Adams&amp;#8217; intro to the software summit&quot;&gt;#PDX11: Mayor Sam Adams&amp;#8217; intro to the software summit&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content>
		<author>
			<name>selena</name>
			<uri>http://www.chesnok.com/daily</uri>
		</author>
		<source>
			<title type="html">tending the garden</title>
			<subtitle type="html">selena marie deckelmann's blog</subtitle>
			<link rel="self" href="http://www.chesnok.com/daily/feed/atom/"/>
			<id>http://www.chesnok.com/daily/feed/atom/</id>
			<updated>2011-01-04T03:01:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Attention :  9.0.1 **OR** RHEL 6 RPM users</title>
		<link href="http://people.planetpostgresql.org/devrim/index.php?/archives/54-Attention-9.0.1-OR-RHEL-6-RPM-users.html"/>
		<id>http://people.planetpostgresql.org/devrim/index.php?/archives/54-guid.html</id>
		<updated>2010-12-07T13:50:00+00:00</updated>
		<content type="html">I have an important announcement for 9.0 RPM users.&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/devrim/index.php?/archives/54-Attention-9.0.1-OR-RHEL-6-RPM-users.html#extended&quot;&gt;Continue reading &quot;Attention :  9.0.1 **OR** RHEL 6 RPM users&quot;&lt;/a&gt;</content>
		<author>
			<name>Devrim GUNDUZ</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/devrim/</uri>
		</author>
		<source>
			<title type="html">Devrim's PostgreSQL Diary</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/devrim/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/devrim/index.php?/feeds/index.rss2</id>
			<updated>2010-12-10T04:00:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PostgreSQL Clustering with Red Hat Cluster Suite slides are online</title>
		<link href="http://people.planetpostgresql.org/devrim/index.php?/archives/53-PostgreSQL-Clustering-with-Red-Hat-Cluster-Suite-slides-are-online.html"/>
		<id>http://people.planetpostgresql.org/devrim/index.php?/archives/53-guid.html</id>
		<updated>2010-12-07T13:44:53+00:00</updated>
		<content type="html">I presented an updated version of  talk at &lt;a href=&quot;http://2010.pgday.eu&quot;&gt;PGDay.EU 2010&lt;/a&gt;. You can download it &lt;a href=&quot;http://www.gunduz.org/download.php?dlid=184&quot;&gt;here&lt;/a&gt;.</content>
		<author>
			<name>Devrim GUNDUZ</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/devrim/</uri>
		</author>
		<source>
			<title type="html">Devrim's PostgreSQL Diary</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/devrim/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/devrim/index.php?/feeds/index.rss2</id>
			<updated>2010-12-10T04:00:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">First day of PGDay.Eu 2010</title>
		<link href="http://andreas.scherbaum.la/blog/archives/763-First-day-of-PGDay.Eu-2010.html"/>
		<id>http://andreas.scherbaum.la/blog/archives/763-guid.html</id>
		<updated>2010-12-07T13:38:15+00:00</updated>
		<content type="html">&lt;div class=&quot;serendipity_authorpic&quot;&gt;&lt;img src=&quot;http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg&quot; alt=&quot;Author&quot; title=&quot;Andreas 'ads' Scherbaum&quot; /&gt;&lt;br /&gt;&lt;span&gt;Andreas 'ads' Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;font&gt;The first day of PGDay:EU 2010 was cool. All the work &lt;a href=&quot;http://andreas.scherbaum.la/blog/archives/762-Preparing-PGDay.EU-2010-in-Stuttgart.html&quot; target=&quot;_blank&quot;&gt;done yesterday&lt;/a&gt; now paid out: registration for everyone took only seconds and nobody had to wait.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font&gt;The conference started with a welcome from &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8913&amp;amp;entry_id=763&quot; title=&quot;http://www.hagander.net/&quot; target=&quot;_blank&quot;&gt;our president&lt;/a&gt; and then with a keynote given by &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8914&amp;amp;entry_id=763&quot; title=&quot;http://webmink.com/&quot; target=&quot;_blank&quot;&gt;Simon Phipps&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt; &lt;font&gt;After the keynote I was room host for two talks in the german track, and I had the pleasure to announce a &lt;em&gt;&lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8915&amp;amp;entry_id=763&quot; title=&quot;http://www.postgresql.eu/events/schedule/pgday2010/session/57-postgis-das-wo-in-der-datenbank/&quot; target=&quot;_blank&quot;&gt;PostGIS talk&lt;/a&gt;&lt;/em&gt; given by Stefan Keller and Andreas Neumann, and a talk about &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8916&amp;amp;entry_id=763&quot; title=&quot;http://www.postgresql.eu/events/schedule/pgday2010/session/60-postgresql-als-basis-fur-detailhandels-anwendungen/&quot; target=&quot;_blank&quot;&gt;PostgreSQL in Business&lt;/a&gt;, given by Marc Balmer.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font&gt;After a very good lunch, I was scheduled for the last talk on this day on the german track. The talk was about &amp;quot;&lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8917&amp;amp;entry_id=763&quot; title=&quot;http://www.postgresql.eu/events/schedule/pgday2010/session/53-open-source-entscheidungen/&quot; target=&quot;_blank&quot;&gt;Open Source Decisions&lt;/a&gt;&amp;quot;: I asked several companies about the reasons why they are using open or closed source software (and some other related questions) and compiled an advocacy talk from the answers. Thanks to my audience for a very successfull discussion.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font&gt;In the evening, &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8918&amp;amp;entry_id=763&quot; title=&quot;http://www.enterprisedb.com/&quot; target=&quot;_blank&quot;&gt;EnterpriseDB&lt;/a&gt; hosted the usual social event. There was good food and drinks and we had a room just for us. It was a good time to talk with old friends and join others for good discussions.&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</content>
		<author>
			<name>Andreas 'ads' Scherbaum</name>
			<email>nospam@example.com</email>
			<uri>http://andreas.scherbaum.la/blog/</uri>
		</author>
		<source>
			<title type="html">ads' corner - PostgreSQL News</title>
			<subtitle type="html">a place to store my stuff</subtitle>
			<link rel="self" href="http://andreas.scherbaum.la/blog/feeds/categories/17-PostgreSQL-News.rss"/>
			<id>http://andreas.scherbaum.la/blog/feeds/categories/17-PostgreSQL-News.rss</id>
			<updated>2010-12-10T19:30:51+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Preparing PGDay.EU 2010 in Stuttgart</title>
		<link href="http://andreas.scherbaum.la/blog/archives/762-Preparing-PGDay.EU-2010-in-Stuttgart.html"/>
		<id>http://andreas.scherbaum.la/blog/archives/762-guid.html</id>
		<updated>2010-12-06T10:33:44+00:00</updated>
		<content type="html">&lt;div class=&quot;serendipity_authorpic&quot;&gt;&lt;img src=&quot;http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg&quot; alt=&quot;Author&quot; title=&quot;Andreas 'ads' Scherbaum&quot; /&gt;&lt;br /&gt;&lt;span&gt;Andreas 'ads' Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;font&gt;It's this time of the year again: the &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8908&amp;amp;entry_id=762&quot; title=&quot;http://2010.pgday.eu/&quot; target=&quot;_blank&quot;&gt;Annual European PostgreSQL Conference&lt;/a&gt; (&lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8908&amp;amp;entry_id=762&quot; title=&quot;http://2010.pgday.eu/&quot; target=&quot;_blank&quot;&gt;PGDay.EU 2010&lt;/a&gt;) is near.&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font&gt;The last weeks were very busy. We had an online meeting every week, ordered some stuff, told our sponsors where to send the flyers and in general we had a very long todo list to solve. Last saturday and sunday, several team members started arriving in &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8910&amp;amp;entry_id=762&quot; title=&quot;http://en.wikipedia.org/wiki/Stuttgart&quot; target=&quot;_blank&quot;&gt;Stuttgart&lt;/a&gt; and we met up to drink some beers and actually find some time to prepare the conference ;-)&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font&gt;This year we made the decision to have PGDay.EU 2010 in a hotel, not in an university like the previous years. The idea was to make the event more attractive for companies and authorities - and based on the registration numbers the visitors accepted the choice. After some search earlier this year we had chosen the &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=8911&amp;amp;entry_id=762&quot; title=&quot;http://www.si-centrum.de/&quot; target=&quot;_blank&quot;&gt;SI-Center&lt;/a&gt; in Stuttgart for this years conference. The Center&lt;br /&gt;&lt;/font&gt; itself isn't just a building, it's a whole complex. Our rooms for the talks are distributed among two buildings, but luckily the visitors don't have to go outside (it's snowing) to change rooms. In addition the SI-Center is providing food and drinks so we don't have to take care of this part.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://andreas.scherbaum.la/blog/archives/762-Preparing-PGDay.EU-2010-in-Stuttgart.html#extended&quot;&gt;Continue reading &quot;Preparing PGDay.EU 2010 in Stuttgart&quot;&lt;/a&gt;</content>
		<author>
			<name>Andreas 'ads' Scherbaum</name>
			<email>nospam@example.com</email>
			<uri>http://andreas.scherbaum.la/blog/</uri>
		</author>
		<source>
			<title type="html">ads' corner - PostgreSQL News</title>
			<subtitle type="html">a place to store my stuff</subtitle>
			<link rel="self" href="http://andreas.scherbaum.la/blog/feeds/categories/17-PostgreSQL-News.rss"/>
			<id>http://andreas.scherbaum.la/blog/feeds/categories/17-PostgreSQL-News.rss</id>
			<updated>2010-12-10T19:30:51+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">#PDX11: Community as competitive advantage</title>
		<link href="http://www.chesnok.com/daily/2010/12/05/pdx11-community-as-competitive-advantage/"/>
		<id>http://www.chesnok.com/daily/?p=2342</id>
		<updated>2010-12-05T23:57:28+00:00</updated>
		<content type="html">&lt;div class=&quot;tweetmeme_button&quot;&gt;
			&lt;a href=&quot;http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F05%2Fpdx11-community-as-competitive-advantage%2F&quot;&gt;&lt;br /&gt;
				&lt;img src=&quot;http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F05%2Fpdx11-community-as-competitive-advantage%2F&amp;amp;style=normal&amp;amp;b=2&quot; height=&quot;61&quot; width=&quot;50&quot; /&gt;&lt;br /&gt;
			&lt;/a&gt;
		&lt;/div&gt;
&lt;p&gt;Here&amp;#8217;s an edited version of Thompson Morrison&amp;#8217;s presentation about the software industry&amp;#8217;s response to a series of surveys. The original presentation is available &lt;a href=&quot;http://pdxeconomicdevelopment.com/docs/software/Software-Cluster-Presentation-2010-12-02.pdf&quot;&gt;here&lt;/a&gt;.  One of the key slides was about what folks here value: &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.chesnok.com/daily/wp-content/uploads/2010/12/Software-Cluster-Presentation-2010-12-02.pdf-page-26-of-34.jpg&quot;&gt;&lt;img src=&quot;http://www.chesnok.com/daily/wp-content/uploads/2010/12/Software-Cluster-Presentation-2010-12-02.pdf-page-26-of-34.jpg&quot; alt=&quot;&quot; title=&quot;Software-Cluster-Presentation-2010-12-02.pdf (page 26 of 34)&quot; width=&quot;500&quot; height=&quot;361&quot; class=&quot;aligncenter size-full wp-image-2344&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The point I appreciated about this clip is that Portland&amp;#8217;s software community *is* our competitive advantage.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I edited the video most for audio coherence. Sorry about the audio being a little out of sync.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/02/pdx11-the-software-summit-wrapup/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: The software summit wrapup&quot;&gt;#PDX11: The software summit wrapup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/05/pdx11-mayor-sam-adams-intro-to-the-software-summit/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: Mayor Sam Adams&amp;#8217; intro to the software summit&quot;&gt;#PDX11: Mayor Sam Adams&amp;#8217; intro to the software summit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/08/pdx11-conversation-about-vc-investing-and-trends-in-the-portland/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: Conversation about VC, investing and trends in the Portland&quot;&gt;#PDX11: Conversation about VC, investing and trends in the Portland&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content>
		<author>
			<name>selena</name>
			<uri>http://www.chesnok.com/daily</uri>
		</author>
		<source>
			<title type="html">tending the garden</title>
			<subtitle type="html">selena marie deckelmann's blog</subtitle>
			<link rel="self" href="http://www.chesnok.com/daily/feed/atom/"/>
			<id>http://www.chesnok.com/daily/feed/atom/</id>
			<updated>2011-01-04T03:01:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">#PDX11: Mayor Sam Adams&amp;#8217; intro to the software summit</title>
		<link href="http://www.chesnok.com/daily/2010/12/05/pdx11-mayor-sam-adams-intro-to-the-software-summit/"/>
		<id>http://www.chesnok.com/daily/?p=2319</id>
		<updated>2010-12-05T23:17:40+00:00</updated>
		<content type="html">&lt;div class=&quot;tweetmeme_button&quot;&gt;
			&lt;a href=&quot;http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F05%2Fpdx11-mayor-sam-adams-intro-to-the-software-summit%2F&quot;&gt;&lt;br /&gt;
				&lt;img src=&quot;http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F05%2Fpdx11-mayor-sam-adams-intro-to-the-software-summit%2F&amp;amp;style=normal&amp;amp;b=2&quot; height=&quot;61&quot; width=&quot;50&quot; /&gt;&lt;br /&gt;
			&lt;/a&gt;
		&lt;/div&gt;
&lt;p&gt;I am working on editing out the pithier parts of the 1 hour 45 minute video that the city released of the &lt;a href=&quot;http://www.chesnok.com/daily/2010/12/02/pdx11-the-software-summit-wrapup/&quot;&gt;PDX Software Summit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Below is Mayor Sam Adams&amp;#8217; introduction to the process and how the City is engaging the public to make the software strategy happen.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/11/10/pdx11/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: Turning things up a notch for Portland&amp;#8217;s &amp;#8220;software cluster&amp;#8221;&quot;&gt;#PDX11: Turning things up a notch for Portland&amp;#8217;s &amp;#8220;software cluster&amp;#8221;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/02/pdx11-the-software-summit-wrapup/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: The software summit wrapup&quot;&gt;#PDX11: The software summit wrapup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/02/pdx11-its-alive/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: It&amp;#8217;s alive!&quot;&gt;#PDX11: It&amp;#8217;s alive!&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content>
		<author>
			<name>selena</name>
			<uri>http://www.chesnok.com/daily</uri>
		</author>
		<source>
			<title type="html">tending the garden</title>
			<subtitle type="html">selena marie deckelmann's blog</subtitle>
			<link rel="self" href="http://www.chesnok.com/daily/feed/atom/"/>
			<id>http://www.chesnok.com/daily/feed/atom/</id>
			<updated>2011-01-04T03:01:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PostgreSQL Weekly News December 5th 2010</title>
		<link href="http://www.postgresql.org/community/weeklynews/pwn20101205"/>
		<id>http://www.postgresql.org/community/weeklynews/pwn20101205</id>
		<updated>2010-12-05T08:00:00+00:00</updated>
		<content type="html">MicroOLAP Database Designer 1.3.0 for PostgreSQL released.
&lt;a href=&quot;http://microolap.com/products/database/postgresql-designer/&quot;&gt;http://microolap.com/products/database/postgresql-designer/&lt;/a&gt;</content>
		<author>
			<name>PostgreSQL Weekly News</name>
			<uri>http://www.postgresql.org/community/weeklynews/</uri>
		</author>
		<source>
			<title type="html">PostgreSQL Weekly News</title>
			<link rel="self" href="http://wwwmaster.postgresql.org/files/weeklynews.xml"/>
			<id>http://wwwmaster.postgresql.org/files/weeklynews.xml</id>
			<updated>2011-01-03T07:16:13+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Open Data Hackathon Day: ScraperWiki views</title>
		<link href="http://www.chesnok.com/daily/2010/12/04/open-data-hackathon-day-scraperwiki-views/"/>
		<id>http://www.chesnok.com/daily/?p=2324</id>
		<updated>2010-12-05T07:11:11+00:00</updated>
		<content type="html">&lt;div class=&quot;tweetmeme_button&quot;&gt;
			&lt;a href=&quot;http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F04%2Fopen-data-hackathon-day-scraperwiki-views%2F&quot;&gt;&lt;br /&gt;
				&lt;img src=&quot;http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F04%2Fopen-data-hackathon-day-scraperwiki-views%2F&amp;amp;style=normal&amp;amp;b=2&quot; height=&quot;61&quot; width=&quot;50&quot; /&gt;&lt;br /&gt;
			&lt;/a&gt;
		&lt;/div&gt;
&lt;p&gt;Open data is really only as interesting as what we can do with it!&lt;/p&gt;
&lt;p&gt;One sweet thing about ScraperWiki is that it enables quick creation of visualizations called &amp;#8216;views&amp;#8217; from inside the wiki. They&amp;#8217;ve got templates that use Google Visualization to help the process along.&lt;/p&gt;
&lt;p&gt;I &lt;a href=&quot;http://scraperwiki.com/views/licenses-granted-per-year/&quot;&gt;made the following today&lt;/a&gt; (from &lt;a href=&quot;http://scraperwiki.com/scrapers/oregon_business_registry&quot;&gt;this datasource&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.chesnok.com/daily/wp-content/uploads/2010/12/Licenses-granted-per-year-ScraperWiki.png&quot;&gt;&lt;img src=&quot;http://www.chesnok.com/daily/wp-content/uploads/2010/12/Licenses-granted-per-year-ScraperWiki-300x108.png&quot; alt=&quot;&quot; title=&quot;Licenses granted per year | ScraperWiki&quot; width=&quot;300&quot; height=&quot;108&quot; class=&quot;aligncenter size-medium wp-image-2325&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t have the entire data set, but this graph indicates that the recession had a significant negative impact on the creation rate of new businesses in Oregon.&lt;/p&gt;
&lt;p&gt;I just &lt;a href=&quot;http://scraperwiki.com/scrapers/oregon_business_registry/code/?rev=14243&quot;&gt;started a new scraper job&lt;/a&gt; to pull more information about people and the places where the businesses are located. When that job is done, I hope to create a few more fun visualizations with this data.&lt;/p&gt;
&lt;p&gt;UPDATE: I&amp;#8217;m playing around more, and here&amp;#8217;s the embedded version of the graph if you click through (takes a while to load!).&lt;br /&gt;
&lt;span id=&quot;more-2324&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/04/open-data-hackathon-day-oregon-business-license-registry/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Open Data Hackathon Day: Oregon Business License Registry&quot;&gt;Open Data Hackathon Day: Oregon Business License Registry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/08/pdx11-conversation-about-vc-investing-and-trends-in-the-portland/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: Conversation about VC, investing and trends in the Portland&quot;&gt;#PDX11: Conversation about VC, investing and trends in the Portland&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/02/looking-for-a-few-good-opml-files/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Looking for a few good OPML files!&quot;&gt;Looking for a few good OPML files!&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content>
		<author>
			<name>selena</name>
			<uri>http://www.chesnok.com/daily</uri>
		</author>
		<source>
			<title type="html">tending the garden</title>
			<subtitle type="html">selena marie deckelmann's blog</subtitle>
			<link rel="self" href="http://www.chesnok.com/daily/feed/atom/"/>
			<id>http://www.chesnok.com/daily/feed/atom/</id>
			<updated>2011-01-04T03:01:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Open Data Hackathon Day: Oregon Business License Registry</title>
		<link href="http://www.chesnok.com/daily/2010/12/04/open-data-hackathon-day-oregon-business-license-registry/"/>
		<id>http://www.chesnok.com/daily/?p=2287</id>
		<updated>2010-12-05T05:41:57+00:00</updated>
		<content type="html">&lt;div class=&quot;tweetmeme_button&quot;&gt;
			&lt;a href=&quot;http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F04%2Fopen-data-hackathon-day-oregon-business-license-registry%2F&quot;&gt;&lt;br /&gt;
				&lt;img src=&quot;http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F04%2Fopen-data-hackathon-day-oregon-business-license-registry%2F&amp;amp;style=normal&amp;amp;b=2&quot; height=&quot;61&quot; width=&quot;50&quot; /&gt;&lt;br /&gt;
			&lt;/a&gt;
		&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.chesnok.com/daily/wp-content/uploads/2010/12/IMG_0213.jpg&quot;&gt;&lt;img src=&quot;http://www.chesnok.com/daily/wp-content/uploads/2010/12/IMG_0213-300x168.jpg&quot; alt=&quot;&quot; title=&quot;IMG_0213&quot; width=&quot;300&quot; height=&quot;168&quot; class=&quot;aligncenter size-medium wp-image-2320&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;At the &lt;a href=&quot;http://www.chesnok.com/daily/2010/12/02/pdx11-the-software-summit-wrapup/&quot;&gt;Portland Software Summit on Thursday&lt;/a&gt;, a couple people mentioned that it was hard to keep track of new businesses that pop up, and that merger and acquisition activity wasn&amp;#8217;t being sufficiently publicised. &lt;/p&gt;
&lt;p&gt;I thought &amp;#8211; maybe we could get this information in an automated way!&lt;/p&gt;
&lt;p&gt;I started with the &lt;a href=&quot;http://egov.sos.state.or.us/br/pkg_web_name_srch_inq.login&quot;&gt;state of Oregon&amp;#8217;s business registry search site&lt;/a&gt;. Unfortunately, they limit search results for business searches to 1000, and they don&amp;#8217;t paginate their results. So, we kicked ScraperWiki into gear, and wrote a very simple scraper with @&lt;a href=&quot;http://twitter.com/maxogden&quot;&gt;maxogden&lt;/a&gt;: &lt;a href=&quot;http://scraperwiki.com/scrapers/oregon_business_registry/&quot;&gt;http://scraperwiki.com/scrapers/oregon_business_registry/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next, I wanted to find out information about businesses specifically in Portland. The City releases information about this, but in PDF form: &lt;a href=&quot;http://www.portlandonline.com/omf/index.cfm?c=32192&quot;&gt;http://www.portlandonline.com/omf/index.cfm?c=32192&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I wrote a quick and dirty Python script to scrape out information, and am getting probably 250 of the 300+ businesses in the November release. Next, I want to cross reference this data with what&amp;#8217;s in the Oregon site. I&amp;#8217;ll be publishing the Python scripts over the weekend.  Hopefully ScraperWiki will add pyPDF to their Python repo support and I will be able to publish the transform there so it can be easily linked to the Oregon data.&lt;/p&gt;
&lt;p&gt;Two lessons today: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Governments: Please don&amp;#8217;t publish data in PDFs. YUCK.&lt;/li&gt;
&lt;li&gt;Governments: Please paginate results from your site! Hard limits are just kinda lame.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The alternative to scraping the state of Oregon&amp;#8217;s site is to order a CD-ROM for $50. I think this is such a stupid profit center for the state. I&amp;#8217;d be interested to know how much money they&amp;#8217;re really making off of it, and whether they could take a page out of Metro&amp;#8217;s book and find a way to share the data with a different, more useful service.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/04/open-data-hackathon-day-scraperwiki-views/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Open Data Hackathon Day: ScraperWiki views&quot;&gt;Open Data Hackathon Day: ScraperWiki views&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/02/looking-for-a-few-good-opml-files/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Looking for a few good OPML files!&quot;&gt;Looking for a few good OPML files!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/11/10/pdx11/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: Turning things up a notch for Portland&amp;#8217;s &amp;#8220;software cluster&amp;#8221;&quot;&gt;#PDX11: Turning things up a notch for Portland&amp;#8217;s &amp;#8220;software cluster&amp;#8221;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content>
		<author>
			<name>selena</name>
			<uri>http://www.chesnok.com/daily</uri>
		</author>
		<source>
			<title type="html">tending the garden</title>
			<subtitle type="html">selena marie deckelmann's blog</subtitle>
			<link rel="self" href="http://www.chesnok.com/daily/feed/atom/"/>
			<id>http://www.chesnok.com/daily/feed/atom/</id>
			<updated>2011-01-04T03:01:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">RHEL 6 and the Return of wal_sync_method</title>
		<link href="http://it.toolbox.com/blogs/database-soup/rhel-6-and-the-return-of-wal_sync_method-42931?rss=1"/>
		<id>http://rss.ittoolbox.com/rss/42931@http://it.toolbox.com/blogs/database-soup</id>
		<updated>2010-12-04T15:08:32+00:00</updated>
		<content type="html">Red Hat Enterprise Linux 6 came out a couple weeks ago, and with it a new annoyance for PostgreSQL users.  This story starts with PostgreSQL refusing to start up, and moves to with fiddling with a setting which few PostgreSQL DBAs have thought about in years: wal_sync_method.  It ends, hopefully, with a PostgreSQL update release.</content>
		<author>
			<name>Josh Berkus</name>
			<uri>http://it.toolbox.com/blogs/database-soup</uri>
		</author>
		<source>
			<title type="html">Database Soup</title>
			<subtitle type="html">Database Soup ranges over a wide array of issues related to open source and database technology.</subtitle>
			<link rel="self" href="http://rss.ittoolbox.com/rss/database-soup.xml"/>
			<id>http://rss.ittoolbox.com/rss/database-soup.xml</id>
			<updated>2011-01-04T12:16:42+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Foreign Data Wrapper fun</title>
		<link href="http://people.planetpostgresql.org/andrew/index.php?/archives/136-Foreign-Data-Wrapper-fun.html"/>
		<id>http://people.planetpostgresql.org/andrew/index.php?/archives/136-guid.html</id>
		<updated>2010-12-04T13:29:43+00:00</updated>
		<content type="html">I've just started playing with the SQL/MED foreign data wrapper patch, and particularly the file_fdw module. First order of the day has been to get it applied against head, fix the bitrot, and get it building and passing regression tests. That's done so now I'm going to dig deeper and see if I can make it do one or two things I need. People interested in playing along can get the stuff from &lt;a href=&quot;https://github.com/adunstan/postgresql-dev/tree/sqlmed&quot;&gt;the sqlmed branch on my github repo&lt;/a&gt;.</content>
		<author>
			<name>Andrew Dunstan</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/andrew/</uri>
		</author>
		<source>
			<title type="html">Andrew's PostgreSQL blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2</id>
			<updated>2010-12-31T09:30:32+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Auto refreshing password file for pgbouncer</title>
		<link href="http://www.depesz.com/index.php/2010/12/04/auto-refreshing-password-file-for-pgbouncer/"/>
		<id>http://www.depesz.com/?p=1918</id>
		<updated>2010-12-04T10:12:02+00:00</updated>
		<content type="html">As you perhaps know I&amp;#8217;m fan of pgbouncer &amp;#8211; connection pooling solution for PostgreSQL. It can do many really cool things, but has one slight issue. Since it can reuse connections &amp;#8211; it has to provide a way to check if user supplied password is correct without consulting database. And it lately (since 9.0 to [...]</content>
		<author>
			<name>Hubert Lubaczewski</name>
			<uri>http://www.depesz.com</uri>
		</author>
		<source>
			<title type="html">select * from depesz; » postgresql</title>
			<link rel="self" href="http://www.depesz.com/index.php/tag/postgresql/feed/"/>
			<id>http://www.depesz.com/index.php/tag/postgresql/feed/</id>
			<updated>2011-01-03T13:16:31+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Looking for a few good OPML files!</title>
		<link href="http://www.chesnok.com/daily/2010/12/02/looking-for-a-few-good-opml-files/"/>
		<id>http://www.chesnok.com/daily/?p=2282</id>
		<updated>2010-12-03T22:18:06+00:00</updated>
		<content type="html">&lt;div class=&quot;tweetmeme_button&quot;&gt;
			&lt;a href=&quot;http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F02%2Flooking-for-a-few-good-opml-files%2F&quot;&gt;&lt;br /&gt;
				&lt;img src=&quot;http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F02%2Flooking-for-a-few-good-opml-files%2F&amp;amp;style=normal&amp;amp;b=2&quot; height=&quot;61&quot; width=&quot;50&quot; /&gt;&lt;br /&gt;
			&lt;/a&gt;
		&lt;/div&gt;
&lt;p&gt;We&amp;#8217;re looking for a few good OPML files!&lt;/p&gt;
&lt;p&gt;Tell us where you go to find information about tech in Portland!  I&amp;#8217;m interested in software companies, non-profits, developer blogs and culture resources that are relevant to tech businesses. Off the top of my head: &lt;a href=&quot;http://www.siliconflorist.com&quot;&gt;Silicon Florist&lt;/a&gt;, &lt;a href=&quot;http://blog.oregonlive.com/siliconforest/index.html&quot;&gt;Mark Rogoway&amp;#8217;s blog&lt;/a&gt;, &lt;a href=&quot;http://bikeportland.org&quot;&gt;BikePortland&lt;/a&gt; and &lt;a href=&quot;http://twitter.com/sarahmirk&quot;&gt;Sarah Mirk&amp;#8217;s twitter feed&lt;/a&gt; all are relevant. &lt;a href=&quot;http://urbanairship.com&quot;&gt;Urban Airship&lt;/a&gt;, &lt;a href=&quot;http://puppetlabs.com&quot;&gt;Puppet Labs&lt;/a&gt;, &lt;a href=&quot;http://banksimple.com&quot;&gt;Bank Simple&lt;/a&gt;, &lt;a href=&quot;http://smallsociety.com/&quot;&gt;Small Society&lt;/a&gt; and &lt;a href=&quot;http://cloudfour.com&quot;&gt;Cloud Four&lt;/a&gt; are all local businesses and startups I&amp;#8217;m keeping an eye on.&lt;/p&gt;
&lt;p&gt;And what will I do with your contributions? I&amp;#8217;m going to pick the best-of and curate a feed for the pdx11.org site.&lt;/p&gt;
&lt;p&gt;Let me know what&amp;#8217;s in your feed reader below!&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/04/open-data-hackathon-day-oregon-business-license-registry/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: Open Data Hackathon Day: Oregon Business License Registry&quot;&gt;Open Data Hackathon Day: Oregon Business License Registry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/11/10/pdx11/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: Turning things up a notch for Portland&amp;#8217;s &amp;#8220;software cluster&amp;#8221;&quot;&gt;#PDX11: Turning things up a notch for Portland&amp;#8217;s &amp;#8220;software cluster&amp;#8221;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content>
		<author>
			<name>selena</name>
			<uri>http://www.chesnok.com/daily</uri>
		</author>
		<source>
			<title type="html">tending the garden</title>
			<subtitle type="html">selena marie deckelmann's blog</subtitle>
			<link rel="self" href="http://www.chesnok.com/daily/feed/atom/"/>
			<id>http://www.chesnok.com/daily/feed/atom/</id>
			<updated>2011-01-04T03:01:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">#PDX11: The software summit wrapup</title>
		<link href="http://www.chesnok.com/daily/2010/12/02/pdx11-the-software-summit-wrapup/"/>
		<id>http://www.chesnok.com/daily/?p=2294</id>
		<updated>2010-12-03T18:03:07+00:00</updated>
		<content type="html">&lt;div class=&quot;tweetmeme_button&quot;&gt;
			&lt;a href=&quot;http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F02%2Fpdx11-the-software-summit-wrapup%2F&quot;&gt;&lt;br /&gt;
				&lt;img src=&quot;http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F02%2Fpdx11-the-software-summit-wrapup%2F&amp;amp;style=normal&amp;amp;b=2&quot; height=&quot;61&quot; width=&quot;50&quot; /&gt;&lt;br /&gt;
			&lt;/a&gt;
		&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.chesnok.com/daily/wp-content/uploads/2010/12/5227327579_b5164b3901.jpg&quot;&gt;&lt;img src=&quot;http://www.chesnok.com/daily/wp-content/uploads/2010/12/5227327579_b5164b3901-225x300.jpg&quot; alt=&quot;&quot; title=&quot;5227327579_b5164b3901&quot; width=&quot;225&quot; height=&quot;300&quot; class=&quot;aligncenter size-medium wp-image-2301&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So, the software summit happened this evening. Mike Rogoway posted his brief overview here: &lt;a href=&quot;http://blog.oregonlive.com/siliconforest/2010/12/portland_gathers_software_deve.html&quot;&gt;http://blog.oregonlive.com/siliconforest/2010/12/portland_gathers_software_deve.html&lt;/a&gt;. The back of my head, Teyo and Amy are featured on the bottom of the photo &lt;img src=&quot;http://www.chesnok.com/daily/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;I livetweeted the event, so tomorrow there&amp;#8217;ll be a cavalcade of tweets here: &lt;a href=&quot;http://www.chesnok.com/daily/2010/12/03/twittering-on-2010-12-03/&quot;&gt;http://www.chesnok.com/daily/2010/12/03/twittering-on-2010-12-03/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Big ideas: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Portland is about &lt;strong&gt;Community&lt;/strong&gt;. And our competitive advantage is that community.&lt;/li&gt;
&lt;li&gt;Part of what makes us what we are is the fact that we stick with the same companies over time. What can we do to enable collaboration across company boundaries?&lt;/li&gt;
&lt;li&gt;We cultivate enduring wealth.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My takeaway from the Q&amp;#038;A was that we&amp;#8217;ve got this huge biz/developer divide. We have management talent &amp;#8211; but maybe not the big M&amp;#038;A talent that the VC-oriented folks are after. We have loads of developers. We need to make more effort to get those folks connected to one another in a way that makes sense!&lt;/p&gt;
&lt;p&gt;We have tons of events that are advertised on calagator.org, and the city is making an effort to make itself a hub (hosting Lunch 2.0, and now this software summit in the City Council Chambers). Overall, I really think the City is doing a great job, and I can&amp;#8217;t wait to see what the citizen initiatives come up with.&lt;/p&gt;
&lt;p&gt;So if you want to get involved, subscribe to our lists:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://lists.pdx11.org/mailman/listinfo/pdx11-announce&quot;&gt;http://lists.pdx11.org/mailman/listinfo/pdx11-announce&lt;/a&gt; (announce only!)&lt;br /&gt;
&lt;a href=&quot;http://lists.pdx11.org/mailman/listinfo/pdx11-financing&quot;&gt;http://lists.pdx11.org/mailman/listinfo/pdx11-financing&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://lists.pdx11.org/mailman/listinfo/pdx11-mentoring&quot;&gt;http://lists.pdx11.org/mailman/listinfo/pdx11-mentoring&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://lists.pdx11.org/mailman/listinfo/pdx11-knowledge&quot;&gt;http://lists.pdx11.org/mailman/listinfo/pdx11-knowledge&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Find out more at: &lt;a href=&quot;http://pdx11.org&quot;&gt;http://pdx11.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;: &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.bizjournals.com/portland/morning_call/2010/12/software-summit-rallies-entrepreneurs.html&quot;&gt;Portland Business Journal coverage!&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://pdxeconomicdevelopment.com/docs/software/Software-Cluster-Presentation-2010-12-02.pdf&quot;&gt;Slides from the City&amp;#8217;s presentation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.portlandonline.com/index.cfm?c=28260&amp;#038;a=328959&quot;&gt;Video from Software Summit&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/02/pdx11-its-alive/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: It&amp;#8217;s alive!&quot;&gt;#PDX11: It&amp;#8217;s alive!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/05/pdx11-mayor-sam-adams-intro-to-the-software-summit/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: Mayor Sam Adams&amp;#8217; intro to the software summit&quot;&gt;#PDX11: Mayor Sam Adams&amp;#8217; intro to the software summit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/11/10/pdx11/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: Turning things up a notch for Portland&amp;#8217;s &amp;#8220;software cluster&amp;#8221;&quot;&gt;#PDX11: Turning things up a notch for Portland&amp;#8217;s &amp;#8220;software cluster&amp;#8221;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content>
		<author>
			<name>selena</name>
			<uri>http://www.chesnok.com/daily</uri>
		</author>
		<source>
			<title type="html">tending the garden</title>
			<subtitle type="html">selena marie deckelmann's blog</subtitle>
			<link rel="self" href="http://www.chesnok.com/daily/feed/atom/"/>
			<id>http://www.chesnok.com/daily/feed/atom/</id>
			<updated>2011-01-04T03:01:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">My picks for PGDay.EU 2010.</title>
		<link href="http://people.planetpostgresql.org/devrim/index.php?/archives/52-My-picks-for-PGDay.EU-2010..html"/>
		<id>http://people.planetpostgresql.org/devrim/index.php?/archives/52-guid.html</id>
		<updated>2010-12-03T13:00:05+00:00</updated>
		<content type="html">Less than 3 days left for PGDay.EU 2010. &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/devrim/index.php?/archives/52-My-picks-for-PGDay.EU-2010..html#extended&quot;&gt;Continue reading &quot;My picks for PGDay.EU 2010.&quot;&lt;/a&gt;</content>
		<author>
			<name>Devrim GUNDUZ</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/devrim/</uri>
		</author>
		<source>
			<title type="html">Devrim's PostgreSQL Diary</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/devrim/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/devrim/index.php?/feeds/index.rss2</id>
			<updated>2010-12-10T04:00:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Down Memory Lane</title>
		<link href="http://people.planetpostgresql.org/andrew/index.php?/archives/135-Down-Memory-Lane.html"/>
		<id>http://people.planetpostgresql.org/andrew/index.php?/archives/135-guid.html</id>
		<updated>2010-12-03T07:16:00+00:00</updated>
		<content type="html">My first large contribution to Postgres was a complete rewrite of initdb. Back before version 8.0, this was a &lt;a href=&quot;https://github.com/postgres/postgres/blob/REL7_4_STABLE/src/bin/initdb/initdb.sh&quot;&gt;shell script&lt;/a&gt;. But for the Windows port we needed it to be written in C, and without using all the utility commands which are available on Unix systems, like sed and grep. The original; was committed to the source by Bruce just over 7 years ago. Rereading &lt;a href=&quot;https://github.com/postgres/postgres/blob/master/src/bin/initdb/initdb.c&quot;&gt;the current source code&lt;/a&gt; briefly yesterday, I was mildly amazed to see how much of the original code was still there. It seems to have stood the test of time much better than I expected. Some of the comment are probably a bit redundant now, like &lt;blockquote&gt;&lt;pre&gt;
  I have no idea how to handle this. (Strange they call UNIX an application!)
  So this will need some testing on Windows.
&lt;/pre&gt;&lt;/blockquote&gt;I think 7 years is long enough as a testing period &lt;img src=&quot;http://people.planetpostgresql.org/andrew/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;</content>
		<author>
			<name>Andrew Dunstan</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/andrew/</uri>
		</author>
		<source>
			<title type="html">Andrew's PostgreSQL blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2</id>
			<updated>2010-12-31T09:30:32+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Development time</title>
		<link href="http://petereisentraut.blogspot.com/2010/12/development-time.html"/>
		<id>tag:blogger.com,1999:blog-5541296000399974369.post-3366671105011064985</id>
		<updated>2010-12-02T22:05:03+00:00</updated>
		<content type="html">Let's say you want to contribute to PostgreSQL development and want to play by the rules (which are actually not rules, but guidelines or encouragements), such as:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;While a release is in beta, you work on finalizing the release, not on future projects.&lt;/li&gt;&lt;li&gt;During a commitfest, you work on testing and integrating the proposals submitted for the commitfest, not on new features.&lt;/li&gt;&lt;li&gt;Major features should not be submitted for the first time at the last commitfest.&lt;/li&gt;&lt;/ol&gt;The final release of PostgreSQL 9.0.0 was on 2010-09-20. By that time you already missed the first commitfest (2010-07), and the second commitfest (2010-09) was already under way. The second commitfest was actually slightly delayed and ended on 2010-10-26, whereas the third and next-to-last-for-9.1 commitfest (2010-11) started punctually on 2010-11-15.&lt;br /&gt;&lt;br /&gt;That means if, while being a team player on all the community efforts, you wanted to develop a major new feature for PostgreSQL 9.1, you had a total of about 20 days to do it. (That is, if you didn't spend several days in early November at PgWest.) And that is within a one-year release cycle.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5541296000399974369-3366671105011064985?l=petereisentraut.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Peter Eisentraut</name>
			<email>peter@eisentraut.org</email>
			<uri>http://petereisentraut.blogspot.com/search/label/PostgreSQL</uri>
		</author>
		<source>
			<title type="html">Peter Eisentraut's Blog</title>
			<subtitle type="html">on software development, open source, databases, and geek stuff</subtitle>
			<link rel="self" href="http://petereisentraut.blogspot.com/feeds/posts/default/-/PostgreSQL/"/>
			<id>tag:blogger.com,1999:blog-5541296000399974369</id>
			<updated>2011-01-03T22:15:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">#PDX11: It&amp;#8217;s alive!</title>
		<link href="http://www.chesnok.com/daily/2010/12/02/pdx11-its-alive/"/>
		<id>http://www.chesnok.com/daily/?p=2289</id>
		<updated>2010-12-02T21:54:48+00:00</updated>
		<content type="html">&lt;div class=&quot;tweetmeme_button&quot;&gt;
			&lt;a href=&quot;http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F02%2Fpdx11-its-alive%2F&quot;&gt;&lt;br /&gt;
				&lt;img src=&quot;http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.chesnok.com%2Fdaily%2F2010%2F12%2F02%2Fpdx11-its-alive%2F&amp;amp;style=normal&amp;amp;b=2&quot; height=&quot;61&quot; width=&quot;50&quot; /&gt;&lt;br /&gt;
			&lt;/a&gt;
		&lt;/div&gt;
&lt;p&gt;Alright,&lt;a href=&quot;http://pdx11.org&quot;&gt; PDX11 is alive&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Tonight&amp;#8217;s the big software summit!  If you didn&amp;#8217;t already sign up, it&amp;#8217;s going to be live streamed, and I&amp;#8217;m sure there will be tons of tweets and blog posts after.  PDX11 will have followup information, and announcements related to the next steps each group involved will be taking. &lt;/p&gt;
&lt;p&gt;If you want to get a head start &amp;#8212; sign up for the mailing lists!&lt;/p&gt;
&lt;p&gt;For announcements: &lt;a href=&quot;http://lists.pdx11.org/mailman/listinfo/pdx11-announce&quot;&gt;http://lists.pdx11.org/mailman/listinfo/pdx11-announce&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For more information about today&amp;#8217;s meeting (4:30pm at City Hall!) check out Mike Rogoway&amp;#8217;s coverage: &lt;a href=&quot;http://blog.oregonlive.com/siliconforest/2010/12/portland_wants_to_transform_it.html&quot;&gt;Portland wants to transform its software culture into an industry&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What else should we have on the site? Want to help make it better? Leave your thoughts in the comments.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/02/pdx11-the-software-summit-wrapup/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: The software summit wrapup&quot;&gt;#PDX11: The software summit wrapup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/11/10/pdx11/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: Turning things up a notch for Portland&amp;#8217;s &amp;#8220;software cluster&amp;#8221;&quot;&gt;#PDX11: Turning things up a notch for Portland&amp;#8217;s &amp;#8220;software cluster&amp;#8221;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.chesnok.com/daily/2010/12/05/pdx11-mayor-sam-adams-intro-to-the-software-summit/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: #PDX11: Mayor Sam Adams&amp;#8217; intro to the software summit&quot;&gt;#PDX11: Mayor Sam Adams&amp;#8217; intro to the software summit&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content>
		<author>
			<name>selena</name>
			<uri>http://www.chesnok.com/daily</uri>
		</author>
		<source>
			<title type="html">tending the garden</title>
			<subtitle type="html">selena marie deckelmann's blog</subtitle>
			<link rel="self" href="http://www.chesnok.com/daily/feed/atom/"/>
			<id>http://www.chesnok.com/daily/feed/atom/</id>
			<updated>2011-01-04T03:01:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Multi-tenancy done right</title>
		<link href="http://people.planetpostgresql.org/andrew/index.php?/archives/134-Multi-tenancy-done-right.html"/>
		<id>http://people.planetpostgresql.org/andrew/index.php?/archives/134-guid.html</id>
		<updated>2010-12-02T20:29:00+00:00</updated>
		<content type="html">I was slightly surprised today to read the section in &lt;a href=&quot;http://link.packtpub.com/PeCcNY&quot;&gt;PostgreSQL 9.0 Administration Cookbook&lt;/a&gt; on setting up multiple servers on RedHat flavoured systems, and find it didn't mention the nice way this is supported by the init script. Here's how I have done it numbers of times in the past. Let's say your new service will be called &quot;pg_myapp&quot;. First you set up a file with your new service details, in &lt;code&gt;/etc/sysconfig/pgsql/pg_myapp&lt;/code&gt; like this:&lt;blockquote&gt;&lt;pre&gt;PGDATA=/var/lib/pgsql/myapp_data
PGPORT=5436
PGLOG=/var/lib/pgsql/myapp_pg_startup.log
&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
Now you create a link to the init script with the new name, using these commands:&lt;blockquote&gt;&lt;pre&gt;cd /etc/init.d
ln -s postgresql pg_myapp
&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
and finally you initialise the data directory, turn the service on, and set it up to start just like your main postgres server:&lt;blockquote&gt;&lt;pre&gt;service pg_myapp initdb
service pg_myapp start
chkconfig pg_myapp on
&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
For good measure, you might want to define a connection to your new server, by adding a section to &lt;code&gt;/etc/sysconfig/pgsql/pg_service.conf&lt;/code&gt; like this:&lt;blockquote&gt;&lt;pre&gt;[myapp_db]
port=5436
dbname=myapp
&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
Then, after you set up the &lt;code&gt;myapp&lt;/code&gt; database in your new server, you can just connect to it by saying:&lt;blockquote&gt;&lt;pre&gt;psql service=myapp_db
&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
It all works quite smoothly. It might be nice to have something like Debian's utility for this, but really this is just a few minute's work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content>
		<author>
			<name>Andrew Dunstan</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/andrew/</uri>
		</author>
		<source>
			<title type="html">Andrew's PostgreSQL blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2</id>
			<updated>2010-12-31T09:30:32+00:00</updated>
		</source>
	</entry>

</feed>

