<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1627862762561597244</id><updated>2012-02-10T13:54:09.995-06:00</updated><category term='postgresql'/><category term='pgbouncer'/><category term='ha'/><category term='python'/><category term='howto'/><category term='tutorial'/><category term='pgcon'/><category term='css list html'/><category term='drupal'/><category term='connection pooler'/><category term='testing'/><category term='conference'/><category term='pgpool'/><category term='talks'/><title type='text'>&lt;/digicon&gt;</title><subtitle type='html'>Thoughts, Tips, and Examples for Web Developers, HTML, CSS, PHP, PostgreSQL</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://digicondev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://digicondev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Zach</name><uri>http://www.blogger.com/profile/16453210270399162932</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://photos1.blogger.com/blogger/7646/3148/1600/160x160%20fun%20shot.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1627862762561597244.post-6075365822336453856</id><published>2010-05-20T15:45:00.001-05:00</published><updated>2010-05-20T15:46:55.995-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pgcon'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Slides from PGCon 2010 Tutorial</title><content type='html'>Just wanted everyone to know the &lt;a href="http://www.pgcon.org/2010/schedule/events/213.en.html"&gt;slides&lt;/a&gt; were up...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627862762561597244-6075365822336453856?l=digicondev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digicondev.blogspot.com/feeds/6075365822336453856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1627862762561597244&amp;postID=6075365822336453856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/6075365822336453856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/6075365822336453856'/><link rel='alternate' type='text/html' href='http://digicondev.blogspot.com/2010/05/slides-from-pgcon-2010-tutorial.html' title='Slides from PGCon 2010 Tutorial'/><author><name>Zach</name><uri>http://www.blogger.com/profile/16453210270399162932</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://photos1.blogger.com/blogger/7646/3148/1600/160x160%20fun%20shot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1627862762561597244.post-1610492454689837127</id><published>2010-03-28T20:03:00.005-05:00</published><updated>2010-03-28T20:22:04.087-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pgcon'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Drupal 7 and PostgreSQL</title><content type='html'>I am in the midst of preparing for my tutorial, &lt;a href="http://www.pgcon.org/2010/schedule/events/213.en.html"&gt;Realistic Load Testing&lt;/a&gt;, at &lt;a href="http://www.pgcon.org/2010/"&gt;PGCon 2010&lt;/a&gt;. After talking with a number of folks at my favorite &lt;a href="irc://chat.freenode.net/#postgresql"&gt;IRC channel&lt;/a&gt;, I decided to use the &lt;a href="http://www.drupal.org/"&gt;Drupal 7 Project&lt;/a&gt; as my test case.&lt;br /&gt;For years, Drupal worked best with &lt;a href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt;. Not that I harbor ill will against the database, it is just my experience with databases has led me to &lt;a href="http://www.postgresql.org"&gt;PostgreSQL&lt;/a&gt; as a superior engine. That said, MySQL works great for these types of applications. The types of applications we do at &lt;a href="http://www.digitecinc.com"&gt;Digitec&lt;/a&gt; tend to need a much more robust solution.&lt;br /&gt;With Drupal 7, there has been a more concerted effort in giving PostgreSQL a chance at being a valid alternative to MySQL. The code changes and the model the Drupal development team has made have helped.&lt;br /&gt;My hope is that by using Drupal, I will not only give a good "real world" example application, but also give back to the Open Source community through the tests and tools that will be created for the tutorial. As Drupal 7 is still in beta development, I hope these tests can help the developers look into solutions for any problems that occur. I also hope that it will help in showing that PostgreSQL is a great fit for Drupal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627862762561597244-1610492454689837127?l=digicondev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digicondev.blogspot.com/feeds/1610492454689837127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1627862762561597244&amp;postID=1610492454689837127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/1610492454689837127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/1610492454689837127'/><link rel='alternate' type='text/html' href='http://digicondev.blogspot.com/2010/03/drupal-7-and-postgresql.html' title='Drupal 7 and PostgreSQL'/><author><name>Zach</name><uri>http://www.blogger.com/profile/16453210270399162932</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://photos1.blogger.com/blogger/7646/3148/1600/160x160%20fun%20shot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1627862762561597244.post-3853689244311590748</id><published>2010-03-26T08:27:00.005-05:00</published><updated>2010-03-26T08:53:58.894-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='pgbouncer'/><category scheme='http://www.blogger.com/atom/ns#' term='connection pooler'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>HOWTO setup pgBouncer on Debian Part 1</title><content type='html'>When looking to provide database connections under a steady (or heavy) load, you will likely need to look into a database connection pooler. There are a number of good options for PostgreSQL such as &lt;a href="https://developer.skype.com/SkypeGarage/DbProjects/PgBouncer"&gt;pgBouncer&lt;/a&gt;, &lt;a href="http://pgpool.projects.postgresql.org/"&gt;pgpool-II&lt;/a&gt;, &lt;a href="http://sqlrelay.sourceforge.net/"&gt;SQL Relay&lt;/a&gt;, and a few others.&lt;br /&gt;My personal favorite as of late is pgBouncer. Here's a few reasons why I like it:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;a lightweight connection pooler--it is designed solely for pooling&lt;/li&gt;&lt;li&gt;low resource requirement&lt;br /&gt;&lt;/li&gt;&lt;li&gt;written with Python (a lot of our inernal apps use Python, so interoperability is great to have)&lt;/li&gt;&lt;li class="gap"&gt;supports online restart/upgrade without dropping client connections&lt;/li&gt;&lt;/ul&gt;When setting up a pooler, you will want to have a separate server just for the pooler. Adding a pooler to the same server as the database only degrades the performance of PostgreSQL, so make sure you don't.&lt;br /&gt;&lt;br /&gt;I use &lt;a href="http://www.debian.org/"&gt;Debian&lt;/a&gt; as my choice of Linux distro. Unfortunately, there isn't an official package to install on Lenny. However, thanks to good ol' &lt;a href="http://www.backports.org/"&gt;backports&lt;/a&gt;, we can find an up-to-date package. First things first, add backports to your /etc/apt/sources.list by adding the following source:&lt;br /&gt;&lt;code&gt;deb http://www.backports.org/debian lenny-backports main contrib non-free&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Next, you will want to do &lt;code&gt;aptitude update&lt;/code&gt; (or &lt;code&gt;apt-get update&lt;/code&gt;)&lt;br /&gt;&lt;br /&gt;You can learn more about how to use backports on their &lt;a href="http://www.backports.org/dokuwiki/doku.php?id=instructions"&gt;instructions page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Finally, here's how to do an install of pgBouncer:&lt;br /&gt;&lt;code&gt;$ aptitude -t lenny_backports install pgbouncer&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627862762561597244-3853689244311590748?l=digicondev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digicondev.blogspot.com/feeds/3853689244311590748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1627862762561597244&amp;postID=3853689244311590748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/3853689244311590748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/3853689244311590748'/><link rel='alternate' type='text/html' href='http://digicondev.blogspot.com/2010/03/howto-setup-pgbouncer-on-debian-part-1.html' title='HOWTO setup pgBouncer on Debian Part 1'/><author><name>Zach</name><uri>http://www.blogger.com/profile/16453210270399162932</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://photos1.blogger.com/blogger/7646/3148/1600/160x160%20fun%20shot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1627862762561597244.post-9023766208046904858</id><published>2010-03-06T22:50:00.003-06:00</published><updated>2010-03-08T22:13:51.595-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>EXPLAIN ANALYZE is Your Friend</title><content type='html'>&lt;a href="http://www.postgresql.org/docs/current/static/using-explain.html"&gt;EXPLAIN ANALYZE&lt;/a&gt; is a useful tool to help see what query plan the planner creates for any query. One tool that I have found useful for some time is &lt;a href="http://www.depesz.com/"&gt;depesz&lt;/a&gt;'s online tool, &lt;a href="http://explain.depesz.com/"&gt;http://explain.depesz.com/&lt;/a&gt;. Simply "paste your explain analyze plan, and see the output."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627862762561597244-9023766208046904858?l=digicondev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digicondev.blogspot.com/feeds/9023766208046904858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1627862762561597244&amp;postID=9023766208046904858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/9023766208046904858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/9023766208046904858'/><link rel='alternate' type='text/html' href='http://digicondev.blogspot.com/2010/03/explain-analyze-is-your-friend.html' title='EXPLAIN ANALYZE is Your Friend'/><author><name>Zach</name><uri>http://www.blogger.com/profile/16453210270399162932</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://photos1.blogger.com/blogger/7646/3148/1600/160x160%20fun%20shot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1627862762561597244.post-624729451768677727</id><published>2010-03-06T22:37:00.004-06:00</published><updated>2010-03-06T22:55:29.070-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='pgcon'/><category scheme='http://www.blogger.com/atom/ns#' term='talks'/><title type='text'>PGCon 2010 Schedule and Registration Now Open!</title><content type='html'>According to &lt;a href="http://dan.langille.org/2010/03/04/pgcon-2010-schedule/trackback/"&gt;Dan Langille's blog&lt;/a&gt;, the schedule and  registration page is now up for &lt;a href="http://www.pgcon.org/2010/"&gt;PGCon 2010&lt;/a&gt; held in Ottowa, Canada! I will be giving a tutorial on "&lt;a href="http://www.pgcon.org/2010/schedule/events/213.en.html"&gt;Realistic Load Testing&lt;/a&gt;." I hope to see you there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627862762561597244-624729451768677727?l=digicondev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digicondev.blogspot.com/feeds/624729451768677727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1627862762561597244&amp;postID=624729451768677727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/624729451768677727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/624729451768677727'/><link rel='alternate' type='text/html' href='http://digicondev.blogspot.com/2010/03/pgcon-2010-schedule-and-registration.html' title='PGCon 2010 Schedule and Registration Now Open!'/><author><name>Zach</name><uri>http://www.blogger.com/profile/16453210270399162932</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://photos1.blogger.com/blogger/7646/3148/1600/160x160%20fun%20shot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1627862762561597244.post-1111831520664231957</id><published>2010-03-06T22:03:00.003-06:00</published><updated>2010-03-06T22:45:59.415-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ha'/><category scheme='http://www.blogger.com/atom/ns#' term='pgpool'/><category scheme='http://www.blogger.com/atom/ns#' term='pgbouncer'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>PGBouncer or PGPool II? That is the question!</title><content type='html'>We have been trying out both &lt;a href="https://developer.skype.com/SkypeGarage/DbProjects/PgBouncer"&gt;PgBouncer&lt;/a&gt; and &lt;a href="http://pgpool.projects.postgresql.org/"&gt;pgpool II&lt;/a&gt; for connection pooling in front of our &lt;a href="http://www.postgresql.org/"&gt;Postgresql&lt;/a&gt; database servers. One of the issues we are trying to tackle is how to make PgBouncer HA (High Availability) and if it matters.&lt;br /&gt;pgpool II already has the ability to be HA using pgpool-HA, but pgpool is also a more featureful application that does much more than simple connection pooling.&lt;br /&gt;On the other hand, PgBouncer is a nice, lightweight connection pooler that we have found to fit the bill rather well. Our question is, if we have auto-failover set up in our private cloud for PgBouncer, is there a need to be HA? What would need to be done? If we forgo making the pooler HA, what risks do we pose?&lt;br /&gt;All these and other questions are going through my head. Any suggestions?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627862762561597244-1111831520664231957?l=digicondev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digicondev.blogspot.com/feeds/1111831520664231957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1627862762561597244&amp;postID=1111831520664231957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/1111831520664231957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/1111831520664231957'/><link rel='alternate' type='text/html' href='http://digicondev.blogspot.com/2010/03/pgbouncer-or-pgpool-ii-that-is-question.html' title='PGBouncer or PGPool II? That is the question!'/><author><name>Zach</name><uri>http://www.blogger.com/profile/16453210270399162932</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://photos1.blogger.com/blogger/7646/3148/1600/160x160%20fun%20shot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1627862762561597244.post-7241484427680005506</id><published>2010-03-04T23:25:00.004-06:00</published><updated>2010-03-04T23:32:11.160-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pgbouncer'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>PGBouncer and Database Updates</title><content type='html'>I have been using &lt;a href="https://developer.skype.com/SkypeGarage/DbProjects/PgBouncer"&gt;pgBouncer&lt;/a&gt; for a while and have run into a need in our development server to drop and recreate a database. I have had issues in the past with trying to PAUSE, but that ends up stopping &lt;span style="font-style: italic;"&gt;all&lt;/span&gt; connections, which isn't always a feasible option. I have found that simply commenting out the database in question in the pgbouncer.ini file and simply doing a RELOAD. This will also kill any clients currently connected to that database and allow you to drop/recreate. After making changes, simply uncomment and RELOAD again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627862762561597244-7241484427680005506?l=digicondev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digicondev.blogspot.com/feeds/7241484427680005506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1627862762561597244&amp;postID=7241484427680005506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/7241484427680005506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/7241484427680005506'/><link rel='alternate' type='text/html' href='http://digicondev.blogspot.com/2010/03/pgbouncer-and-database-updates.html' title='PGBouncer and Database Updates'/><author><name>Zach</name><uri>http://www.blogger.com/profile/16453210270399162932</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://photos1.blogger.com/blogger/7646/3148/1600/160x160%20fun%20shot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1627862762561597244.post-2957563008964020590</id><published>2010-02-26T09:41:00.004-06:00</published><updated>2010-02-26T09:54:48.747-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='pgcon'/><category scheme='http://www.blogger.com/atom/ns#' term='talks'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Realistic Load Testing</title><content type='html'>I just got word that I will be speaking at &lt;a href="http://www.pgcon.org/2010/"&gt;PGCon 2010&lt;/a&gt;. PGCon is a PostgreSQL Conference for Users and Developers held May 20-21, 2010  at &lt;a href="http://www.uottawa.ca/"&gt;University of Ottawa&lt;/a&gt;, with two days of Tutorials on May 18-19, 2010.&lt;br /&gt;&lt;br /&gt;I will be leading a tutorial on &lt;span style="font-weight: bold;"&gt;Realistic Load Testing&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;Applications and databases need testing. But how can you get valid results for a fully integrated system Flight-Check test at realistic loads? This tutorial addresses the many challenges that arise in an application or database development to give confidence to you and your customers in presenting a production-ready product.&lt;br /&gt;&lt;br /&gt;After running into many obstacles in proving a recent enterprise product launch could handle the expected loads of our customers, Digitec, Inc. invested time in writing realistic Flight-Check tests using PostgreSQL functions and Python. The results of these tests gave confidence to the engineers, developers, and our customers that the entire system would be able to perform as designed.&lt;br /&gt;&lt;br /&gt;Topics covered during this tutorial include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Shortfalls of FLOSS benchmark tests&lt;/li&gt;&lt;li&gt;Identifying the Project Test Components&lt;/li&gt;&lt;li&gt;Identifying Realistic Loads&lt;/li&gt;&lt;li&gt;Identifying Historical Data&lt;/li&gt;&lt;li&gt;Developing Tests and Procedures&lt;/li&gt;&lt;li&gt;PostgreSQL Functions for Tests&lt;/li&gt;&lt;li&gt;Python Scripts for Tests&lt;/li&gt;&lt;li&gt;Helpful Tools&lt;/li&gt;&lt;/ul&gt;PGCon is the place to meet, discuss, build relationships, learn valuable insights, and generally chat about the work you are doing with PostgreSQL. If you want to learn why so many people are moving to PostgreSQL, PGCon will be the place to find out why. Whether you are a casual user or you've been working with PostgreSQL for years, PGCon will have something for you.&lt;br /&gt;&lt;br /&gt;Come join me and many others and maybe we can hang out. I look forward to seeing many of my IRC friends there!&lt;br /&gt;&lt;br /&gt;View the &lt;a href="http://www.pgcon.org/2010/schedule/"&gt;PGCon Schedule&lt;/a&gt; and &lt;a href="http://www.pgcon.org/2010/registration.php"&gt;register&lt;/a&gt; today!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627862762561597244-2957563008964020590?l=digicondev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digicondev.blogspot.com/feeds/2957563008964020590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1627862762561597244&amp;postID=2957563008964020590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/2957563008964020590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/2957563008964020590'/><link rel='alternate' type='text/html' href='http://digicondev.blogspot.com/2010/02/realistic-load-testing.html' title='Realistic Load Testing'/><author><name>Zach</name><uri>http://www.blogger.com/profile/16453210270399162932</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://photos1.blogger.com/blogger/7646/3148/1600/160x160%20fun%20shot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1627862762561597244.post-4823606451169056808</id><published>2009-06-10T08:44:00.002-05:00</published><updated>2009-06-10T08:48:41.990-05:00</updated><title type='text'>WaveRoute Enterprise unveiled at Sensors Expo. www.waveroute.com</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.waveroute.com/i/sensorsexpo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 240px; height: 241px;" src="http://www.waveroute.com/i/sensorsexpo.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Machine to Machine (M2M) communications is increasingly important to the success and viability of businesses today. Our WaveRoute products allow for devices and sensors to be connected and available for data communications. WaveRoute Enterprise is a hosted, web-based M2M application for managing, monitoring, and controlling these devices and sensors remotely. Easily add devices and receive data in under a few minutes, create powerful rules and alerts, and visually know what is happening anytime, anywhere.&lt;br /&gt;&lt;br /&gt;If you are looking for a solution to bridge the gap between your sensors, devices, and existing data to your end users, WaveRoute Enterprise can bring it all together.&lt;br /&gt;&lt;br /&gt;Come Visit Us at &lt;a href="http://www.sensorsexpo.com/"&gt;Sensors Expo&lt;/a&gt; Booth 603! Speak one-on-one with Digitec engineers, grab some mints, and learn more about WaveRoute Enterprise first hand. You can also visit our website, &lt;a href="http://www.waveroute.com/"&gt;http://www.waveroute.com&lt;/a&gt; , to request a live demonstration.&lt;br /&gt;&lt;br /&gt;WaveRoute is a division of &lt;a href="http://www.digitecinc.com/"&gt;Digitec, Inc&lt;/a&gt;. The WaveRoute product line offers drop-in M2M network hotspots. &lt;a href="http://www.waveroute.com/"&gt;WaveRoute Enterprise&lt;/a&gt; is a hosted, web-based M2M application for remote monitoring and control. Established in 1982, Digitec is an electronics research, development, and manufacturing company in Milford, Nebraska.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627862762561597244-4823606451169056808?l=digicondev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digicondev.blogspot.com/feeds/4823606451169056808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1627862762561597244&amp;postID=4823606451169056808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/4823606451169056808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/4823606451169056808'/><link rel='alternate' type='text/html' href='http://digicondev.blogspot.com/2009/06/waveroute-enterprise-unveiled-at.html' title='WaveRoute Enterprise unveiled at Sensors Expo. www.waveroute.com'/><author><name>Zach</name><uri>http://www.blogger.com/profile/16453210270399162932</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://photos1.blogger.com/blogger/7646/3148/1600/160x160%20fun%20shot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1627862762561597244.post-1817146429478980654</id><published>2009-04-14T22:27:00.003-05:00</published><updated>2009-06-10T08:50:31.650-05:00</updated><title type='text'>M2M Expo</title><content type='html'>We are getting things ready for our booth at the &lt;a href="http://www.m2mexpo.com/2009/"&gt;M2M Expo&lt;/a&gt;. If you have done trade shows and have some tips, I would be thankful for the advice!&lt;br /&gt;&lt;br /&gt;Update: We are no longer going to the M2M Expo in favor of going to &lt;a href="http://www.sensorsexpo.com/"&gt;Sensors Expo&lt;/a&gt;. Look for details soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627862762561597244-1817146429478980654?l=digicondev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digicondev.blogspot.com/feeds/1817146429478980654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1627862762561597244&amp;postID=1817146429478980654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/1817146429478980654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/1817146429478980654'/><link rel='alternate' type='text/html' href='http://digicondev.blogspot.com/2009/04/m2m-expo.html' title='M2M Expo'/><author><name>Zach</name><uri>http://www.blogger.com/profile/16453210270399162932</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://photos1.blogger.com/blogger/7646/3148/1600/160x160%20fun%20shot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1627862762561597244.post-837132026898409484</id><published>2009-04-14T10:17:00.003-05:00</published><updated>2009-04-14T10:33:09.476-05:00</updated><title type='text'>Trying to Make EAV Work</title><content type='html'>I heart &lt;a href="http://postgresql.org"&gt;PostgreSQL&lt;/a&gt;. I heart data. I heart challenges. So when my friend &lt;a href="http://fetter.org"&gt;David Fetter &lt;/a&gt;challenged me recently on a db design that stored data using the &lt;a href="http://en.wikipedia.org/wiki/Entity-Attribute-Value_model"&gt;EAV&lt;/a&gt; model, I felt a bit cornered and not sure how to tackle the downsides of EAV.&lt;br /&gt;&lt;br /&gt;There seems to be a &lt;a href="http://www.google.com/search?q=eav+postgres"&gt;lot&lt;/a&gt; of &lt;a href="http://honours.eddiewould.com/index.php?entry=entry070312-181753"&gt;interesting &lt;/a&gt; &lt;a href="http://pugs.postgresql.org/files/Hierarchial.pdf"&gt;discussions&lt;/a&gt; &lt;a href="http://everywherepostgresql.blogspot.com/"&gt;out&lt;/a&gt; &lt;a href="http://www.pgcon.org/2008/schedule/events/97.en.html"&gt;there&lt;/a&gt; for and against EAV. The project I am currently working on requires flexibility as we, the developers, don't know what we need to add to the system. We have a fairly rigid set of requirements about the data and have metadata tables to help in the process. &lt;br /&gt;&lt;br /&gt;Our application will be responsible for making sure that the data is stored properly. Secondly, all data is stored as NUMERIC, not as VARCHAR/TEXT as what most EAV systems seem to use. Thirdly, we assign what kind of data is being stored and  use a lookup table for finite textual data.&lt;br /&gt;&lt;br /&gt;So, now the question is, are we setting ourselves up for disaster going with EAV? I hope not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627862762561597244-837132026898409484?l=digicondev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digicondev.blogspot.com/feeds/837132026898409484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1627862762561597244&amp;postID=837132026898409484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/837132026898409484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/837132026898409484'/><link rel='alternate' type='text/html' href='http://digicondev.blogspot.com/2009/04/trying-to-make-eav-work.html' title='Trying to Make EAV Work'/><author><name>Zach</name><uri>http://www.blogger.com/profile/16453210270399162932</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://photos1.blogger.com/blogger/7646/3148/1600/160x160%20fun%20shot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1627862762561597244.post-4141844518737443827</id><published>2008-03-12T15:47:00.003-05:00</published><updated>2008-03-12T16:29:24.542-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='css list html'/><title type='text'>List with Timestamp as Bullet</title><content type='html'>I was trying to come up with a way to create an Unordered List with a timestamp as the "bullet" and come up with the following:&lt;br /&gt;&lt;br /&gt;CSS&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ul.timestamp {&lt;br /&gt;    margin: 0;&lt;br /&gt;    padding: 0;&lt;br /&gt;    list-style: none;&lt;br /&gt;    }&lt;br /&gt;ul.timestamp li span {&lt;br /&gt;    float: left;&lt;br /&gt;    display: block;&lt;br /&gt;    width: 125px;&lt;br /&gt;    margin: 0 8px 0 -133px;&lt;br /&gt;    padding: 0;&lt;br /&gt;    text-align: right;&lt;br /&gt;    color: #444;&lt;br /&gt;    font-weight: bold;&lt;br /&gt;    text-indent: -133px;&lt;br /&gt;    }&lt;br /&gt;ul.timestamp li {&lt;br /&gt;    padding-left: 133px;&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;HTML&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;ul class="timestamp"&amp;gt;&lt;br /&gt;    &amp;lt;li&amp;gt;&amp;lt;span&amp;gt;3/9/2008 11:15:02 AM&amp;lt;/span&amp;gt;This is a list item with a longer copy text so to check the wrapping of this and make sure it stays in line with the timestamp and the margins set up in the CSS.&amp;lt;/li&amp;gt;&lt;br /&gt;    &amp;lt;li&amp;gt;&amp;lt;span&amp;gt;3/7/2008 11:15:02 AM&amp;lt;/span&amp;gt;Bullet item #2&amp;lt;/li&amp;gt;&lt;br /&gt;    &amp;lt;li&amp;gt;&amp;lt;span&amp;gt;3/7/2008 11:15:02 AM&amp;lt;/span&amp;gt;Bullet item #3&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;EXAMPLE&lt;br /&gt;&lt;br /&gt;&lt;ul style="margin: 0pt; padding: 0pt; list-style-type: none; list-style-image: none; list-style-position: outside;"&gt;&lt;br /&gt; &lt;li style="padding-left: 150px;"&gt;&lt;span style="margin: 0pt 8px 0pt -150px; padding: 0pt; float: left; display: block; width: 142px; text-align: right; color: rgb(68, 68, 68); font-weight: bold; text-indent: -150px;"&gt;3/9/2008 11:15:02 AM&lt;/span&gt;This is a list item with a longer copy text so to check the wrapping of this and make sure it stays in line with the timestamp and the margins set up in the CSS.&lt;/li&gt;&lt;br /&gt; &lt;li style="padding-left: 150px;"&gt;&lt;span style="margin: 0pt 8px 0pt -150px; padding: 0pt; float: left; display: block; width: 142px; text-align: right; color: rgb(68, 68, 68); font-weight: bold; text-indent: -150px;"&gt;3/7/2008 11:15:02 AM&lt;/span&gt;Bullet item #2&lt;/li&gt;&lt;br /&gt; &lt;li style="padding-left: 150px;"&gt;&lt;span style="margin: 0pt 8px 0pt -150px; padding: 0pt; float: left; display: block; width: 142px; text-align: right; color: rgb(68, 68, 68); font-weight: bold; text-indent: -150px;"&gt;3/7/2008 11:15:02 AM&lt;/span&gt;Bullet item #3&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;This works pretty slick!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627862762561597244-4141844518737443827?l=digicondev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digicondev.blogspot.com/feeds/4141844518737443827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1627862762561597244&amp;postID=4141844518737443827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/4141844518737443827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1627862762561597244/posts/default/4141844518737443827'/><link rel='alternate' type='text/html' href='http://digicondev.blogspot.com/2008/03/list-with-timestamp-as-bullet.html' title='List with Timestamp as Bullet'/><author><name>Zach</name><uri>http://www.blogger.com/profile/16453210270399162932</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://photos1.blogger.com/blogger/7646/3148/1600/160x160%20fun%20shot.jpg'/></author><thr:total>0</thr:total></entry></feed>
