I am a feminist hacker: Reflections on the first AdaCamp

I had a wonderful time at the first AdaCamp, held in Melbourne, Australia on January 14, 2012.

I didn’t take notes during most of the sessions, and spent a lot of time listening and thinking.

The two important things I took away from the first AdaCamp were about context – my context, and the camp itself.
Continue reading

Day 2 at PgConf.EU: hallway track and the marketing of Postgres

The hallway track is always my favorite part of the conference. I had to give a full-length and a lightning talk today, so much of my time was spent making sure I was really prepared and then giving the talks!

But between talks, I got to chat with Heroku, 2ndQuadrant and EnterpriseDB folks about what they think is coming next in the world of enterprise development and Postgres.

One topic that I touched on in those conversations and my lightning talk (Postgres needs an aircraft carrier) was that our plan for world domination needs to get quite a bit more specific and actionable.

For the open source community, the right question is not “are we ready to tackle the enterprise?” — the right question is: Which market segment and customer group are we going to target for complete market domination?

One area that we definitely already dominate is online poker. We have had a few blog posts about it, but not a whole lot else. Another is GIS through PostGIS.

I created a survey to try and capture some scenarios from the developers who work with customers every day solving problems. We need to know more about the people using Postgres and the way that they use the database.

If we can get 30 responses, I’ll publish the results. It’s a bit long, and requires some thought, so I imagine it will take some time to get them all.

If you have a customer that you think represents a good target market for Postgres, take 10 minutes and fill out the survey for us!

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!

My thoughts about community management

David Eaves wrote about open source contributions recently, and how community managers fit into the picture.

He remixed a graph from Angie Byron, and I wasn’t completely happy with the results. A fairly long twitter thread ensued, between myself, Jeffrey McManus, Emma Jane Hogbin and Peter Krenesky. In the end, David piped up and asked if I’d comment on his blog. So I did. :)

Hi!

I commented via a long twitter thread that I “disagree with putting comm mgmt between user/dev. like @webchick’s ideas better.:)

To flesh that out a bit — my gut reaction to the ultimate diagram you created is that it puts community managers *between* users and developers.. This is a convenient way to demonstrate a process, but ultimately, I have to disagree with the premise behind it.

I work to break down barriers between “users” and “developers”. My ideal world is one where the two overlap to a very large extent. I dislike models of open source community development which seem to promote the idea that there needs to be an intermediary.

I agree that most communities require an interface — it is rarely self-evident how one goes about joining a community if you were on the outside. Many times it is an organic process — your friends invite you, or you run into someone at a conference or bar, or you have to use or work on a piece of software for work. For those who, for whatever reason, are not already on the inside, having a single point of contact (a “community manager”, or in the amusing case of the open source developer group I primarily work with – a “liaison”) can be an invaluable tool.

However, I do not see that role as one that ultimately should belong to just one person. If I do my job right, eventually, people won’t even come to me any more. They will go directly to the individuals inside the community they most want to connect with — because I have managed to open up our community interfaces to the point that they are self-documenting, or easily found with a few clicks on our website.

Possibly, this vision is a bit unrealistic in the near term. But I’ll paraphrase my friend Audrey — it’s way more fun to craft your reality, than it is to passively experience it.

PgCon 2009: Lighning Talks! Call for participation

Ottawa is almost as pretty as Portland this time of year.

Ottawa is almost as pretty as Portland this time of year.

Can you believe it? PgCon 2009 is nearly here!

We need lightning talks for our Lightning Talks session at PgCon in Ottawa, Ontario next week!

I have a few talks lined up (there’s really only time for about 10 of them!), but we need MORE! Lightning talks are FIVE MINUTE presentations. If you’ve never given a talk before, this is a great way to get your feet wet. If you have a last minute awesome thing to share, now is your time to do it!

Anything PostgreSQL related – code, stories, announcements — just send your topics to me! Comment below or email me: selena -at- postgresql -dot- org.

I’ll post talks as they are confirmed here: http://wiki.postgresql.org/wiki/PgCon_2009_Lightning_talks

Hope to see you at PgCon!

Manufacturing Participation

I want to talk about a couple things today during my unfortunately named “architecting participation” session at BarCampPortland. My goals for participation are to get people to an event or be part of an open source group and then to get them to keep coming back.

The three things I’m going to touch on are: inviting in and making people feel welcome, making people feel useful, and making things fun.

With the ultimate goal being world domination of free and open source software.

We’ll see how it goes :)

What’s changed? Portland as an example of increasing women’s participation.

Code from @christiekoehler's presentation. #cns

At Code-n-Splode last night, we first heard Christie Koehler give a great talk on CodeIgniter, the one PHP web framework endorsed by Rasmus Lerdorf, original author of PHP. She went over the pros/cons, details of how you go about installing and then using CodeIgniter, and then showed a very detailed example from her recent work. I hope she posts the slides soon – they were great. (If you want to see our tweets – per Gabrielle’s suggestion, we’re tagging with #cns now.)

After the talk (nearly 9pm!) we all went over to the Green Dragon for our #afterhours chat. Audrey led off by explaining the recent controversy she’d written about, and the Ruby/Rails community response to her posts.

Some of the things she shared I was shocked by – specifically some very personal attacks in comments that she’d decided to save (in Skitch), but remove from her posts. Her standard was: “is this something that would cause my mom to stop reading.” And, if the comment met that standard, she archived and removed it.

I learned about threads in the local ruby community about the topic of women’s participation, and some very positive comments on Hacker News and Digg, and _why’s posts that seem to be expanding perceptions and opening people’s minds to ways that may ultimately be more inclusive of women and minorities.

All told, we had 15 people at the meeting, 13 of which were women. Our first Code-n-Splode meetings started with about five people. Our largest meeting (thanks to the clever, rocket-building Sarah Sharp) had somewhere around 30 people.

Among the many things that the Code-n-Splode crew discussed last night was “what made portland different”. And I thought I’d let you in on our secret.

We ask women to participate.

When we have code sprints for Calagator, Open Source Bridge or we have the Agile development meetups dedicated to coding – there are always women there. From what I understand, having women show up regularly to code sprints is unusual in other cities.

When I am responsible for these meetups, I contact the people that I want to attend directly – and I ask them to come. This is a mix of women and men (I no longer have to explicitly think about inviting women, because so many are already in the community). But when I was first asking people, I *did* have to contact women who were just dipping a toe into the community — to convince them that yes, joining us would be fun, educational and sometimes good for their careers.

When I first started attending user groups regularly about nine years ago, I often was the only woman. Now, it is extremely rare for me to be the only one. Particularly in groups that span multiple technologies (Web Innovators, Open Source Bridge, Extreme/Agile developers, Functional programming, and BarCampPortland come to mind) or are largely social opportunities for geeks to mix (Lunch 2.0, Beer and Blog). More geeky women (and women that I don’t already know) seem to attend these types of events.

I don’t think there is a single magic formula for transforming your city’s geek scene. But I think it is worth asking questions of the Portland tech community leaders, finding out how our groups work and trying out our techniques in your home town.

The future of free and open source support models

I attended the MySQL Conference all last week, and am feeling very excited about the future of open source databases. I had many interesting discussions and met a ton of Drizzle hackers I was lucky enough to spend Friday with, digging through code.

I was talking with Paul VallĂ©e of the Pythian Group Thursday about Postgres and the future of enterprise support. And he showed me this great graph from indeed.com. It’s acceleration here, not the raw numbers – but still, a neat graph :)

We discussed the issues that enterprise customers with certain types of regulatory obligations encounter — such as contractual obligations for PCI-compliant credit card storage or outsourced management of sensitive data. The standard response developers might give for this is “read the spec, and make sure you implement it properly”. But the truth is, for larger companies, that may not be enough.

So, assuming for a moment that the Postgres community would even want to address this problem as a group — could it be possible for the Postgres community to provide the legal and financial assurances that an incredibly huge corporation (ahem – Sun/Oracle) can?

The short answer for Postgres right now is “no”.

Originally, I had thought just in term of liability, but Paul clarified:

The liability is just one component of what gives the guarantee meaning because there is a consequence to failed delivery. An SLA can also do this. As can a simple lucrative contract that can be lost, or canceled early if delivery does no take place. The key here is to ensure that the technology adopter can legitimately be confident that they are provably being responsible by adopting the platform. “I trusted” doesn’t cut it for many.

My view was that this type of agreement helps to determine who exactly is to blame (and who can be sued) in the event of a software failure. But, Paul said, “It’s more about assurance (with evidence) that obligations realistically will be met.”

I sometimes think that this system of liability and assurances is just ultimately broken. But it is a reality. So, would it be possible for us to come up with a new legal framework for community-driven software?

Paul brought up the idea of a cooperative, and that maybe such a legal entity could provide protection for individuals involved in supporting Postgres, and also shoulder some or all of the liability that a corporation using Postgres would want. I’m not sure that core developers of Postgres would join such a thing, or whether they would be allowed to given existing agreements they have with their own companies. But it is an interesting idea.

Creating a blueprint for this type of organization – hackers cooperatives – could be a way for truly community software to be developed across companies and among individuals in a sustainable, and “trustable” way. Maybe?

Continuing this train of thought – maybe these are non-governmental organizations, whose main purpose is to create and maintain infrastructure software for the good of the world.

Funding for mid-sized free and open source projects seems to be a consistent problem. Perhaps NGOs are a fair model for us.

I am curious about what effort may have already been made in this direction. My next step will be to contact Bradley Kuhn and see if there’s something out there that might address this.

FSM, visibility map and new VACUUM awesomeness


Heikki Linnakangas, listening as Simon Riggs sketches on the chalkboard.

Update: Heikki’s slides are here!

Heikki Linnakangas gave a presentation this past Sunday at FOSDEM about the improved free space map (FSM), which tracks unused space inside the database, and new visibility map, a bitmap which will indicate which data pages can be skipped during a partial VACUUM. This performance enhancement will affect all users of the upcoming 8.4 software release. You can see what the new FSM implementation looked like back in October from depesz’s blog.

Despite Heikki’s modest claim during the talk that the performance tests were inconclusive, the consensus among Postgres contributors is that this feature will result a substantial improvement in the performance of VACUUM for tables that are large, but have few UPDATEs.

The new free space map and Visibility map (in 8.4) and autovacuum (enabled by default starting in version 8.2) are huge administrative usability improvements to version 8 of Postgres. Prior to version 8.1, VACUUM had to be scheduled outside of database system. Autovacuum has been part of the core Postgres distribution for over two years, and is tunable via several global configuration parameters.

The visibility map enables partial VACUUMs — meaning that VACUUM no longer has to examine every tuple to update the FSM. The new FSM implementation eliminates two configuration parameters, effectively automating a formerly manual configuration process.

The new FSM is stored on disk in seperate files inside of $PGDATA/base/, and is cached in shared_buffers. The result is that the max_fsm_* configuration parameters are no longer in 8.4 — Postgres is able to track and adjust this data structure without user intervention.

A few critical features of the new FSM are:

* Now a binary tree structure
* Constructed using 1 byte per heap page
* The top level shows the maximum amount of contiguous space available
* The data structure is auto-repairing and can be reconstructed from the bottom

Previously, every time that VACUUM was run, the free space map had to be reconstructed from scratch. Now, individual nodes in the map may be updated (aka “retail” updates).

Visibility map is a bitmap of heap pages which tracks which tuples on pages are visible to transactions, and therefore not available for VACUUMing.

Previously, when VACUUM ran, it *had* to look at every tuple in a table, because there was no information about which pages may not have been updated since the last VACUUM. With the visibility map, VACUUM will now be able to perform partial scans of table data, skipping pages which are marked as fully visible. Partial scans means fewer I/O operations for VACUUM, and happier database administrators.