Saturday, March 9, 2013

Change of Color Scheme

Based on multiple comments from the intertubes, I've changed the color scheme of the blog.  Hopefully people like the new one better.

Friday, March 8, 2013

NoSQL Partition Obliviousness

Just a quick note to draw people to an excellent blog post about NoSQL databases and "Partition Tolerance".  Emun Sirer points out one of the many reasons why "webscale" doesn't mean what you think it does, and how not all new scalable databases are the same.  He doesn't say which specific new database is marketing features they don't really have, but I think we can guess, can't we?

Wednesday, March 6, 2013

20 Rules of Software Consulting

I'm going to be gradually republishing some of my older content from my prior blogs here so that people can find it again.  I'll also be updating the stuff which needs updating, of course.   Here's a revised and updated favorite: the "rules of software consulting".

  1. Technology Reflects the Business: show me a client with a chronic software problem, and I'll show you a client with a chronic management problem.
  2. Three Things You Will Never See:
    a. A timeline which is too generous;
    b. A client who pays too quickly;
    c. An accurate and complete specification.
  3. Half of Applications Are Immortal: "temporary, one-off" applications often last for years, and there is code from the 1960's which is still running today. Always plan for longevity.
  4. Bad Clients Will Destroy Your Business: half of your success will be built on the ability of recognizing bad clients and avoiding them or terminating their contracts before they suck away all of your time and resources. Always be able to walk away, even if it means giving a refund.
  5. Ask Not What's Possible: the question is not what you can do, the question is how much the client is willing to pay for it and how long they will wait.
  6. Time Substitutes for Money on a Logarithmic Scale: e.g cutting the time by 20% will require doubling the budget. Cutting the budget by 30% will quadruple the amount of time.
  7. All Estimates are Optimistic: new application development will take three times as long as you expect, and cost twice as much. Or vice-versa.
  8. Three Things You Will Never Have Enough Time For:
    a) The specification and prototypes
    b) Documentation
    c) Code maintainability
  9. All Substantial Applications Have Platypuses, which are objects or bits of data which defy all attempts to fit them to well-defined business processes. Platypuses are both why perfect data integrity is unachievable, and the source of at least 30% of troubleshooting.
  10. Don't Call it Refactoring:  clients never pay for cleanup, even if that's what they need.  Figure out a way to call the refactoring something else so you can get it done.
  11. The Longer You Wait to Refactor, the Longer It Will Take. Major template or schema changes at production time are particularly deadly.
  12. Always Have a Contract, even for one-day jobs. Also, use your own contract, and not the client's, and have your contract written by a real attorney. It's worth it.
  13. The Contract-Writing Process Is a Litmus Test for Its Fulfillment. If the client spends a lot of time arguing over the contract, then actually working with them (or getting paid) will be even more difficult. If the client insists on an odd and obscure clause, they're planning to exercise it.
  14. The Client Has Very Poor Memory: no matter what they sign, the client will have forgotten what they agreed to within days, if not hours. Document all requests and changes and keep copies.
  15. Never Agree to a Fixed Bid for anything where you have not done the same exact task at least twice before.
  16. Third Parties are Incompetent: never agree to a fixed bid or success-based payment for any task which is even partially dependent on the speed, documentation or product quality of a third party not under your direct control. This means no fixed bids for data interchange or fixing other people's code, ever.
  17. The Client has No Taste: never allow the client to choose your tools, your subcontractors or your work environment. Or at least charge them a lot extra for the privilege.
  18. Always Bill for Meetings, or you will spend half your life attending them.
  19. A Half-Empty Mailbox Is The Exception: usually, if one client decides to pay unusually late in a month, all of your clients will. Always be able to survive 60 days on your savings.
  20. A Sufficiently Late Project Will Never Be Completed.  In general, any project which is more than 150% past its original deadline has sufficient systemic issues to permanently prevent delivery.

PyPgDay Sold Out

As of yesterday, the first PyPgDay is sold out.  We're expecting between 130 and 140 attendees, which isn't bad at all for a one-day, one-track conference.   If you haven't registered already, sorry!  We've also added a fundraising raffle, thanks to Mark Wong making us another uber-cute elephant, so bring your cash.  Drawing will be held at the Salesforce party.

Too bad PyCon is in Montreal next year; we'll have to find another way to do a Bay Area Postgres event in 2014.

Thursday, February 14, 2013

Speakers, Sponsors chosen for PyPgDay

The PyPgDay committee has selected the speakers and talks for PyPgDay 2013.  We have an awesome program for you, including talks about monitoring, scaling, performance, Python application development, Django and mobile applications, and speakers from Disqus, Apsalar, VMware, 2ndQuadrant and Uber.  While we can't give you everything you want to know about PostgreSQL and Python in one day, we can certainly give you a lot.

You also want to register soon, because registration is already 50% full.

Check out the list of speakers on the draft schedule.  We may reorder them from here, but the talks and speakers are pretty solid.  We still have room for some lightning talks.

PyPgDay is presented by Disqus.

The PyPgDay Party Sponsor is Salesforce.com.  The Wifi Sponsor is Heroku.com.  PyPgDay is sponsored by Urban Mapping, Uber.com, TransLattice, PostgreSQL Experts, Pandora.com, File-Away.UK and Apsalar.

Tuesday, February 12, 2013

Coming up: pgDay LA

For those who missed the memo, on Friday, February 22nd there will be a full day of PostgreSQL talks at Southern California Linux Expo (SCALE)

I will be there, once again doing my "9.2 Grand Prix" talk, hopefully for the last time.  I also plan to do "The Seven Deadly Sins of Software Deployment" for UpScale Friday evening.

Incidentally, I plan to drive down to SCALE, so if anyone from the SF Bay Area wants a ride, please contact me (josh -at- agliodbs.com).

Saturday, February 9, 2013

PostgreSQL Australia Tour



I'm just back from 2 weeks in Australia, promoting PostgreSQL there and trying to crystallize the local community, with some success.  Even though they've been mostly quiet online, there are lots of PostgreSQL users in Australia.  I'm really hoping that this leads to having an active PostgreSQL.AU community again.

Also, since this trip was funded by the PostgreSQL Community Fund at SPI*, I thought y'all deserved a little write-up.

My main reason to be there was  LinuxConf.AU 2013 in Canberra.  I was recruited to speak by my friend Jacinta Richardson, so I came despite it being inland Australia in high summer.  Due to a snafu with accomodations I had to stay in unairconditioned dorms, so don't ever claim I don't pay my dues for the community!

On Monday, I delivered 7 Ways To Crash Postgres to the Sysadmin Miniconf.  This is a humorous 15-minute presentation which gives "recipes" for the most common ways PostgreSQL users down their servers.  Such as #1, "Don't Apply Updates".  Y'all have applied Thursday's update release, haven't you?

There was a bit of shortage of space for the Wednesday Night BOFs, so I improvised by commandeering the dormitory snooker room and holding a Pizza, Pool and Postgres BOF.  In addition to getting to know around 25 of the Australian community,  I explained the various binary replication configurations using pool balls, badge cords and other props.  I'm told there's a photo of this online somewhere, but I haven't seen it.

My actual LCA talk was on Friday, in the last talk slot of the conference.  I delivered my 9.2 Grand Prix talk again (Video here), with demos.  I had some technical issues (wireless, and Unity desktop), but otherwise it went well.  Certainly the room was packed -- standing-room-only in one of the smaller talk rooms.

One thing I was struck by at LCA was how ubiquitous PostgreSQL has become.  While some attendees liked Postgres and some didn't, everyone used it.  I feel like we really are "the default relational database" now.  Of course, I got to see some of my friends from the other popular relational database at LCA: Stuart Smith, Monty Taylor, and Sheeri Cabral.  And, of course, many of the folks from Catalyst IT I met in Wellington in 2010.

Two of the more interesting talks from a "future of Postgres" perspective were Matthew Wilcox's talk on Non-Volatile Memory and Dave Boucher's talk on Transactional Memory.  While both of these technologies are vaporware right now, they'll be reality in a couple years.  One can imagine how Postgres might use the combination; with Transactional Non-Volatile memory we might be able to discard much of the high-overhead machinery of WAL and checkpointing, making PostgreSQL orders of magnitude faster without sacrificing reliability.  I've reached out to Intel about working with our community on some of these technologies; we'll see if anything comes of it.

Then I flew to Melbourne for pgDay.AU 2013.  Jason Godden of Experian Hitwise organized this event with the help of PostgreSQL advocacy superstar Gabriele Bartolini.  Hitwise hosted it and even put me up in a hotel.  As a surprise to Jason, the event was sold out, with almost 60 people in attendance, about half of them from Experian.  Hopefully this will get MelPUG off to a good start!

For the Melbourne crowd, I repeated 9.2 Grand Prix.  I also presented 5 Steps To PostgreSQL Performance, an updated version of an old performance tutorial.  The audience appreciated it (I think it was the best-attended talk of the day), but I kind of feel like I need to give it a total overhaul; the talk is a text-dense brain-dump right now.

Gabriele presented on Barman and 10 Reasons to Use Postgres.  One of the Greenplum guys presented on MADLib, an cool PG-native analytics library more people should know about.  Jason himself presented on PostgreSQL replication options, with demos of several of them, which was pretty impressive.  Overall a great pgDay.

So overall a great PostgreSQL tour of Australia.  Everyone in IT in Australia seems to be using PostgreSQL now, so all it takes to have a more active AU community is a little leadership.  Jason will be pushing MelPUG along, and likely Rob Napier will be kicking off BrisbanePUG as soon as the city dries out.


* The PostgreSQL Project maintains donated funds in several locations.  The fund at Software in the Public Interest is primarily used to fund international travel for advocating PostgreSQL.  If you have the opportunity to speak at an event which otherwise would have no PostgreSQL presence, but need travel funds to do so, please email me to discuss whether the community can fund you.