Thoughts on Grace Hopper

I’ve been at Grace Hopper Celebration of Women in Computing for the past two days – soaking in the presence of over 2000 women in computing at a sprawling conference here in Atlanta.

The interesting thing about this conference is how much the same it feels to me as any other large conference I attend, and a couple small ways that it is very different. I realized while I was here how I have spent the last few years surrounding myself with accomplished, amazing women like Jen Redman, Leslie Hawthorn, Claire McCabe and Sarah Sharp. What’s funny is that we’re connected by Portland (although Claire is down in Oakland… for now…), and we’re all at Grace Hopper this week. They, among many others, made me feel right at home.

I feel the dislocation of being at a conference comprised 95% (or more) of women. There’s an odd politeness that I’m not used to. There are a lot of people who are in academia or industry who wear suits and use words like ‘leverage’ without irony. There were tons of students – over 900 of them, and an incredible job fair. And I was shocked at the number of people who asked me: What exactly is free and open source software?

As congratulatory as those of us who are “in” the free software world about having essentially won out over proprietary software, there is a huge, mainstream portion of the computing world who are not aware. I’m not saying that a person needs to understand the minutia of license differences, or have even read one. But wow, there is an incredible missed opportunity when a computer science student can graduate without knowing what open source even *is*.

So, congratulations to the women who put the first ever Open Source Track at Grace Hopper together: Jen Redman, Cat Allman, Sandra Covington, Sara Ford, Jenny Han Donnelly, Leslie Hawthorn, Avni Khatri, Stormy Peters, Hilary Pike, and Natalia Vinnik. I was very happy to participate in the “getting started in open source” panel. And many thanks to the NSA for sponsoring the hackathon with Sahana, a very worthy project, and one that I hope is infused with new excitement and contribution from the 200 people who signed up to participate. I hear that we’ll be having a hackathon again next year in Portland — when Grace Hopper comes to our very own city!

CouchCamp 2010: yay!


Max in a tree! Talking about GeoCouch

I was at CouchCamp last week out at the Walker Creek Ranch – a bit disconnected (no cel service, and spotty internet), but fully immersed in the CouchDB community.

I was there to give a talk on MVCC in PostgreSQL. I forgot to mention it during my talk, but it was a fitting topic given that I first talked with JChris after a talk he gave in Portland, where I basically trolled him about compaction and MVCC in CouchDB. My goal was to show people the benefits of CouchDB’s built-in MVCC, to point out some places where core developers can learn from PostgreSQL and avoid some of the traps we’ve fallen into over the years. I’ve got more to say about the talk some other day, but I wanted to just reflect on CouchCamp for a moment.

One comment a friend made was, “Wow, these people are just so nice!” And it’s true. Every hacker meetup I attend is full of people who are overwhelmingly kind and thoughtful, and CouchCamp was more of the same.

CouchDB is at a critical point in their development – 1.0 is out the door, and developers are already building cool apps on top of it. CouchApps + Evently are an interesting and fun way to get started building things on top of a couch. And replication parties – seriously awesome. Ward Cunningham is rumored to be considering a CouchDB wiki to drive the patterns repository wiki (And here it is! Thanks, Max!), and CouchCamp was overflowing with ideas and implementations (distributed social, a replacement for email, UbuntuOne).

So what did I learn at CouchCamp? I learned how to hack on a CouchApp (Thanks for the help, JChris!). I learned about what Max Ogden is up to, and am so excited for him and the lucky folks that get to work with him. (and he’s running a hack/project night next weekend you should TOTALLY GO TO!)

I heard about the success and tribulations of running CouchDB on the desktop, and the launch of UbuntuOne from Stuart Langridge. During his talk, Stuart brought up the idea of a general replication API – something that I also believe is important to the growth of open source databases and is critical to enabling data freedom. I met a real, live Pick user/admin/developer, and talked about the inability to move to another system but the possibility of interfacing something like CouchDB to it. I got to chat with Rebecca Murphey about Javascript, MVCC and quality booze. I saw bunnies, foxes, deer, raccoons, and tons of bright stars late at night. And, I saw Damien Katz perform a brief interpretive dance.

I also was pointed to a retrospective on Couch 1.0 development by Ted Leung. I don’t know Noah Slater, but wow, what a testimonial. Noah’s comments about why he continues to contribute to CouchDB mirror a recent thread about PostgreSQL contribution — we work on these open source projects because of the incredible community that develops around them.

Thanks, Mikael, JChris, Jan and Damien, and all the CouchDB folks for creating a community that so many people want to contribute and become a part of. I certainly want to be a part of it, and look forward to finding ways of contributing more.

And thanks for bringing us all together in person. From the squirt guns in the welcome bag, to the campfire and sing-alongs, to the very late night Android libc storytelling by Aaron… These are the moments that glue us all together, and make all that work we do to connect up with one another through software completely worth it.

Explaining MVCC in Postgres: system defined columns

I’m playing around with some diagrams for explaining MVCC that I’ll be posting here over the next few days. Not sure if I’ll end up giving up on slides and just use a whiteboard for the talk. I made an illustrated shared buffers deck to go along with Greg Smith’s excellent talk on shared buffers a while back. This is the beginning of a talk that I hope will emulate that.

Here are my first few slides, showing the system-defined columns. The next few slides will describe optimizations PostgreSQL has for managing the side effects of our pessimistic rollback strategy, and reducing IO during vacuuming and index updates.

Customizing the RPMs from pgrpms.org

To pick up where Devrim left off in customizing RPMs, here are some more tips for getting your very own RPMs built:

  • Create a VM with your favorite operating system (I’m using versions of CentOS). I need both 32-bit OS and 64-bit OS. This is much easier to manage with separate, local VMs.
  • Install spectool (available here), and SVN
  • The other dependancies were: gcc glibc-devel bison flex python-devel tcl-devel readline-devel zlib-devel openssl-devel krb5-devel e2fsprocs-devel libxml2-devel libxslt-devel pam-devel
  • Edit the postgresql-$VERSION.spec file to your liking: If you’re adding patches, you need to add them in TWO places – first in the Patch#: group, and then again below where the %patch# series starts. Finally, if you’re adding an entirely new package (say in 8.2, pg_standby in contrib), you’ll need to also add the binary (or library, or whatever) to the appropriate %files clause later in the spec file. It’s also a good idea to modify ‘Release’. Here’s a sample diff of my spec file:


--- postgresql-8.2.spec (revision 188)
+++ postgresql-8.2.spec (working copy)
@@ -74,7 +74,7 @@
Summary: PostgreSQL client programs and libraries
Name: postgresql
Version: 8.2.17
-Release: 1PGDG%{?dist}
+Release: 1test%{?dist}
License: BSD
Group: Applications/Databases
Url: http://www.postgresql.org/
@@ -95,7 +95,9 @@
Patch4: postgresql-test.patch
Patch6: postgresql-perl-rpath.patch
Patch8: postgresql-prefer-ncurses.patch
+Patch7: postgresql-pgstat-dir.patch
Patch9: postgresql-use-zoneinfo.patch
+Patch10: pg_standby.patch

Buildrequires: perl glibc-devel bison flex
Requires: /sbin/ldconfig initscripts
@@ -282,7 +284,9 @@
%patch4 -p1
%patch6 -p1
%patch8 -p1
+%patch7 -p1
%patch9 -p1
+%patch10 -p1

pushd doc
tar -zcf postgres.tar.gz *.html stylesheet.css
@@ -604,6 +608,7 @@
%{_bindir}/pg_controldata
%{_bindir}/pg_ctl
%{_bindir}/pg_resetxlog
+%{_bindir}/pg_standby
%{_bindir}/postgres
%{_bindir}/postmaster
%{_mandir}/man1/initdb.*

How have you customized RPMs using this repo? Share your .spec files!

PDXPUG Day 2010: 9.0 and all sorts of good stuff

I’m nearly ready for PDXPUG Day 2010.

We’ve got some fun talks lined up from leaders in the Postgres community in town for OSCON. It’s free to attend. We’ll at the Oregon Convention Center, room D131.

Stop by sometime during the day if you’re in town!

Here’s our schedule:

10am: What’s new in 9.0 – Selena Deckelmann
11am: ORMs and Their Discontents – Christophe Pettus
1:30pm: Mining Your Logs For Fun and Profit – Josh Berkus
2:30pm: PORTAL – Dan Colish
3:30pm: An Introduction to Managing and Troubleshooting PostgreSQL on Windows – Tim Bruce
4:30pm: PostgreSQL in Brazilian Army and Air Force – Luis Dosso

6pm-10pm: Party at the Gotham Tavern!

Setting up a PDXAPI instance

Today I spent a little time setting up a PDXAPI instance of the CivicApps data. There are a few different tools out there for grabbing the data and loading it up, and so I’m documenting the basic steps here for setting up a spatial SQLite using @lokkju’s python projects.

hg clone https://pyspatialite.googlecode.com/hg/ pyspatialite

cd pyspatialite
mv setup.cfg.OSX setup.cfg
python setup.py build
sudo python setup.py install

cd ..
cd pyod

hg clone https://pyod.googlecode.com/hg/ pyod

# unsatisfied dependency!
sudo easy_install pyyaml

pypython fetcher.py

This creates a 1 GB sqlite database called ‘test.sqlite’.

Next, I’ll be testing out loading this into a CouchDB instance and maybe playing with Max Ogden’s initial PostGIS export.

Need reviewers – preparing for the first commitfest for 9.1

Now is the perfect time to get involved in Postgres development!

Starting June 15, we’re going to have a “reviewfest”, as a prelude to the first commitfest in July. We’ve already got 28 patches in the queue, and all need reviewers.

Think you’re not qualified to review patches? Think again!

From the Reviewing a Patch documentation:

If you can apply a patch and you can use the new feature, you’re already qualified to start reviewing it.

We will formally kick off a reviewfest on June 15.

We will assign reviewers and get all the patches that are queued up for 9.1 reviewed while the final touches are being applied to the 9.0 release. Have a look at Review A Patch guidelines for information about how to conduct your review. We also have a mailing list to track and recruit reviewers – pgsql-rrreviewers. (The extra R’s are for ’round-robin’)

Please subscribe to the list, and post if there is a particular patch you are interested in reviewing!

Change in the air

On Tuesday, I’m headed off to PgCon, for three days of intense PostgreSQL conferencing. This conference is PostgreSQL’s major developer (and end user!) conference of the year, held in Ottawa. I’m looking forward to seeing old and new colleagues, spending a day in the developer’s meeting, and hopefully sharing some new projects.

I’m also leading the charge on the lightning talks! If you’d like to give one, find me at the conference, and we’ll see what we can do.

Finally, if you want up-to-date info about what’s happening at the conference, have a look at my twitter list for Postgres. (Right now, looks like we’re trying to track down Oleg and Teodor in the #ashcloud!)

Also, today is my last day at End Point. I’ve really enjoyed my time working for a fantastic PostgreSQL support company. I highly recommend their services – and two members of the team will be presenting at PgCon – Greg Sabino Mullane and Josh Tolley.

I’ll be taking a new position next month, and really looking forward to a few new challenges. I’m definitely staying in Portland, and continuing to work with Postgres.

If you’re headed to PgCon, find me in Ottawa and I’ll tell you all about it!

IRC hangouts in Portland, OR

Updated!

A big part of the thriving tech scene in Portland is made up of IRC channels that many groups and projects use to coordinate real-time activity.

Some of the popular channels can be found at the following locations:

Freenode:

#pdxpug
#pdxpython
#pdxpug
#osbridge
#techcoffee
#dorkbotpdx
#pdxfunc
#pdxdjango
##pdxbeer
#pdxwebdev
#pdxscala
#brainsilo

irc.perl.org:
#pdx.pm

irc.personaltelco.net:
#pdxfiber

Tell me about others in the comments!

PDX tech scene community facilitation

I was just thinking about this today, because I went to Last Thursday on Alberta street on April 29th. (that picture of a cookie is from an awesome vendor at Last Thursday)

I didn’t realize that the vendors there are primarily self-organizing until about two weeks ago. I had always thought there was a central committee (But there is this ning…). But the vendors just show up, set up tents and hang out.

People would probably make more money and not have to work so hard if things were a bit more organized, but they need more of a light form of administrative assistance, rather than a bunch of top-down organizing. Creating a contact point and information hub, making sure there are portapotties, figuring out ways of providing power, and making sure that business owners and locals are (mostly) happy with what is going on would do wonders. And really, it seems like Magnus Johannesson is working toward that.

This is how I feel about tech community facilitation – we should be making incremental, measurable progress in our tech community on goals that most see the value in and in ways that continue to make organizers and participants feel empowered to act on their own.