Reading time: 15 minutes
PostgreSQL is the World’s most advanced Open Source Relational Database. The interview series “PostgreSQL Person of the Week” presents the people who make the project what it is today. Read all interviews here.
Please tell us about yourself, and where you are from.
So, I’m Chris, I grew up near Wolverhampton on the Shropshire border, not too far from The Iron Bridge. These days I have been living in London for the last few years, running a software consulting company along with some friends.
I’m a computing jack of all trades, master of none, but often better than a master of one. My knowledge and skills go properly full stack from hardware to frontend. PostgreSQL, Devops, Java are my strongest areas, but I’m just as comfortable fiddling with Ceph clusters, networking and web frontend.
I often find the problem I’m solving more interesting than the specific technology I’m using, as long as it’s Open Source.
How do you spend your free time? What are your hobbies?
I enjoy making things, sometimes it’s working on software projects other times it’s electronics or other physical things. Sadly space and tools can be a little limited in London. Maybe at times it blurs a little too much with work like stuff.
Recently I’ve built some random cool little LED badges, inspired by an Art Deco fused glass objet d’art. I’m working on a couple of other little ideas along the same lines, maybe even a PostgreSQL inspired version.
The bigger project I’ve been working on the last 18 months has been a server cluster based on the Raspberry Pi CM4 modules. This has a complete power management and system management side band. It’s a bit of a recreation of my university project and it’s been super fun to play with some semi-advanced electronics again. Definitely been pushing the limit of what I can hand assemble at home, when you are working with 0.4mm pitch SMD components.
Any Social Media channels of yours we should be aware of?
Last book you read? Or a book you want to recommend to readers?
I’ve never really been into novels, mostly reading non-fiction, and these days a lot of that comes from online sources. Being dyslexic I’m a slow reader, so I often have a stack of half read books I’m dipping in and out of, the current stack is: Failure Is Not An Option, Programmed Inequality, Poles Apart, How To Be A Liberal.
I also just got Open Circuits, which is full of amazing photography of the inner beauty of electronic components.
Any favourite movie, or show?
The Matrix and the 3 sequels are definitely my favourite movies, I love all the philosophical angles and lots of the ideas. Tinker Tailor Soldier Spy is probably next on the list and shows like: Yes Minister, Red Dwarf, The Thick Of It, The Big Bang Theory, etc. I tend to go for more light hearted / comedy shows.
I probably get more enjoyment from music and have some eclectic choices, which I do enjoy listening to alot of them on vinyl. You’ll often find me listening to: Pink Floyd, Steven Wilson, Porcupine Tree, London Grammar, Led Zeppelin, Black Sabbath, Evanescence, Greta Van Fleet, Jean-Michel Jarre, Alan Parsons Project, Shostakovich.
What does your ideal weekend look like?
Maybe visiting a museum or similar, the small community run ones are often far more passionate about their interests. I grew up near the RAF Cosford museum, which has a great collection of cold war era aircraft and a lot of experimental planes. I always enjoyed seeing the BOAC Comet, as my mum’s dad worked for BOAC and BA.
Most recently I had a great time visiting the Isokon building in north London just before PGConf.EU 2022, a fascinating modernist concept of minimalist living, with notable residents including Agatha Christie, Walter Gropius, Marcel Breuer.
A nice chilled day with friends watching some Cricket is definitely up there, especially in the early summer sun. I regularly go to watch County Cricket matches at the Oval, usually with a couple of good friends, enjoying the longer formats just as much as the shorter formats.
Or working on one of my many projects, be it software, electronics or having some beers and food with some friends. In general just being a bit chilled and enjoying life.
What’s still on your bucket list?
I’m never good at these kinds of questions and I don’t have a well thought out list of things. Definitely in the medium term I’d like to try to learn another (human) language, I always feel bad going away somewhere and only being able to speak English.
What is the best advice you ever got?
“I like simple, don’t you” - was the comment a lecturer left on one of my university projects.
I’ve always been a fan of Keep It Simple Stupid, it’s something I try to strive for in what I build and work on. I often think that the IT industry is great at building complicated solutions and not enough time is spent finding the simplest solution to problems.
I feel this is getting increasingly true with our ever growing layers of abstraction and not enough developers knowing enough about the layers below them. I’ve worked with too many developers who only see a database through the lens of the ORM they are using or think that the network is reliable, infinitely scalable and low latency.
When did you start using PostgreSQL, and why?
I started when I was 18 with PostgreSQL 8.0, just using it for some personal projects. At the time I had a less pragmatic Free Software stance, someone mentioned that PostgreSQL was more free (as in freedom) than MySQL, so I tried it, and have loved it ever since.
My first big professional project with PostgreSQL was building a website / intranet / document search engine for the local government, using PostgreSQL 8.2 + TSearch2 + PostGIS. It did some pretty cool things, I’m always sad I never successfully persuaded them to Open Source it.
I find it pretty mad that I’ve used PostgreSQL for half my life now and it’s truly amazing how PostgreSQL has grown and evolved.
Do you remember which version of PostgreSQL you started with?
Have you studied at a university? If yes, was it related to computers? Did your study help you with your current job?
I studied Electronic Engineering at university, which while related to Computer Science, I think focuses on very different areas and skills, we had very little content which overlapped with my friends studying Computer Science. In reality I was drawn more to engineering from the practical side of it, I always struggled with some of the Maths involved in Electronics.
I was lucky enough to land a job as a junior developer just before I started university and I kept working there during my university holidays. I was lucky to get this start and to be helped and mentored by some really great people I worked with.
My degree helped at box checking early in the career, but the reality is literally all my day to day skills have been self taught. I like to think it’s staying curious, always being interested in how things work and how things can be done, has been the biggest key to success.
What other databases are you using? Which one is your favourite?
In general I manage to keep very PostgreSQL centric. It’s not uncommon that I have to deal with some of the cloud forks like Aurora etc, but I try to stick with just PostgreSQL where I can.
Now and then I have to use or deploy MySQL / MariaDB and typically get frustrated very quickly.
I did a fair amount of stuff over the last few years with Kafka and Kinesis, some people certainly think it’s a database. They are useful for some use cases, but I think they are often overblown.
I’m always surprised how much PostgreSQL is capable of and how a general purpose database can often beat specialist solutions.
On which PostgreSQL-related projects are you currently working?
I did a talk on streaming data out of PostgreSQL using logical decoding earlier in the year at Postgres London. I had some interest from a few people afterwards. I’ve been slowly working on trying to build more of a framework and to publish that as a project. Other work pressures have meant I’ve not done as much as I’d like. But I’m trying to push forward more on it and see if other people are interested: pgstreaming.org
How do you contribute to PostgreSQL?
My current contributions to PostgreSQL are solely around the user / community side at the moment. I’ve spoken at a number of events now including PGConf.EU twice and Postgres London three times as well as to a number of Linux User Groups. I try to actively submit talks where I can and I evangelise PostgreSQL at every opportunity and event I can.
I’m aiming to try and get more engaged with the community side and you never know I might contribute code at some point in the future.
What is your favourite PostgreSQL extension?
I don’t think it’s fair to pick a favourite, there are so many great extensions for a whole variety of use cases.
Over the years PostGIS has been the one extension I’ve used time and time again, it’s truly amazing. I’ve also used PL/Proxy a fair bit in the past. There are also a huge number of FDW extensions I’ve used and some logical decoding plugins. It really depends on what problems I’m trying to solve.
What is the most annoying PostgreSQL thing you can think of? And any chance to fix it?
I’d say our strategy and approach around upgrades. I’m not sure if we’ve got the balance right here. We inflict a lot of pain and stress on users, but I don’t think we take enough advantage of it. We argue that the on-disk format can change between major releases, but very rarely do it.
I think we need to tip this balance more towards making life easier for users. I’d like to see support for physical replication across major versions as part of that. For failing that, iterating the on-disk format more in releases.
What is the feature you like most in the latest PostgreSQL version?
Probably MERGE, I think that could be pretty handy in some data loading use cases. Some of the logical replication improvements look very interesting too. I was a little saddened that we had to drop the upcoming JSON features in the end.
I suspect all the sorting improvements are what I’ll see most benefit from though.
Adding to that, what feature/mechanism would you like to see in PostgreSQL? And why?
I think one that stands out at the moment is around incremental / realtime materialised views. It would be great to take this as far as streamable views and queries, where the changes to a query / view could be pushed to a client when the underlying data changes.
There have been a couple of extensions trying to do similar and Timescale has a similar option. So it probably indicates that not enough other people are interested.
Should PostgreSQL have a built-in connection pooler?
I think this question often comes from how we can incorporate what already exists, rather than what we really need to improve. I certainly support having more hooks around protocol / connection handling.
I see the fundamental question as: will we change the process model. I think the only easy answer here is that we’ll likely stick with the status quo. PostgreSQL’s process model could be called out dated, on the flip side it could also be called tried and tested.
I think it will come down to how we trade off reliability / stability with performance and it always seems that we side with reliability, something that PostgreSQL is exceptionally trusted for.
Should PostgreSQL have built-in multi-primary replication?
I don’t think PostgreSQL should have these features out of the box. I do think PostgreSQL should offer the underlying infrastructure and extension points to make these kinds of solutions more feasible. I see this more as extending some of the replication / FDW fundamentals we have.
There have been a number of forks trying to do this, which have come and gone. I think this demonstrates that the money is not where the mouth is to push this in PostgreSQL.
I think people often rush to these kinds of solutions, thinking they can magically solve all of their application problems, however rarely is this true. Distributed data stores come with a whole bunch of trade offs, fundamental laws of physics which cannot be broken. If you expect magic solutions to your problems, then reality will eventually hit and it won’t be fun.
Could you describe your PostgreSQL development toolbox?
These days I tend to find myself using psql more and more. I never really managed to get on with pgAdmin4 and I tried OmniDB for a bit. Lætitia Avrot’s talk from the other year on psql tips was a good push to learn it better and just get on with it. Whereas before I’d mostly only used psql when SSHing to a server.
Kate is my goto text editor, which I often use to write / edit schema’s I have stored in Git. My main language is Java so I spend a lot of time in Eclipse, been using that for years and it’s still my preferred Java IDE.
Which skills are a must have for a PostgreSQL developer/user?
Curiosity! If you don’t try you will never learn.
SQL is one of the best languages to play around with, you can even ROLLBACK your damage. Find a project you are passionate about and start to play around. I always enjoy reading Vik Fearing’s advent of code entries to show just how powerful SQL is.
For developers I think the hardest part of SQL is letting go of control. With SQL you need to declare your problem, and not tell it the solution. You need to see it from the perspective of declaring what you want and not how to get there. This can take a bit of getting used to when you don’t regularly write SQL.
Do you use any git best practices, which makes working with PostgreSQL easier?
My main rule is one file per entity (table, view, function, etc) in a directory per schema. Write any migrations as dedicated scripts as needed. This is really easy to then build into a deployment file and store it all in Git. Really easy to review DB changes too.
I built a simple bash build system and a plpgsql function to apply migrations a while back that I’ve used on some pretty complex large databases to great success. I’ve released a version of it: pgSchemata.
Which PostgreSQL conferences do you visit? Do you submit talks?
I try to go to as many conferences in Europe as possible, regularly attending PGConf.EU, FOSDEM PGDay and Postgres London. I hope to add another couple of pgdays to the list in 2023.
I try to submit talks and tend to try and talk about my experiences with PostgreSQL in a very practical way. I’ve been honoured to speak at pgconf.eu and Postgres London a few times now.
Do you think PostgreSQL has a high entry barrier?
I don’t think so, but I don’t think I’m a good judge of that.
Over the years I’ve certainly heard a lot of bad things about the ease of use of psql, and I really do think we should have human readable pretty aliases for a lot of the backslash commands.
I’ve also seen lots of users putting their application into the postgres database. Typically they don’t understand that a PostgreSQL server can have more than one database. I think renaming the postgres database to system (or similar) would be sensible and creating a default database / user upon initdb for people to put their application in. Also as a step to preventing people running their applications as superuser too.
I think there is also room for improving some of the default configuration settings. Thankfully there has been progress on this over the years.
Do you think PostgreSQL will be here for many years in the future?
Yes, I mean COBOL is still going.
I tend to find the IT industry is very cyclic. It wasn’t that long ago everyone was saying SQL was dead and NoSQL was the future, yet PostgreSQL is still here and a bunch of NoSQL things are long gone. It feels like SQL is cool again for the moment.
PostgreSQL is one of the more adaptable and forward thinking Open Source communities I’ve been involved with. PostgreSQL’s community has a constant ability to innovate, adapt and listen to our users, this is why it will survive.
Plus I think the community has shown it is not owned or controlled by any single entity and has proven to be pretty robust and stable, another key feature for survivability.
Would you recommend PostgreSQL for business, or for side projects?
I constantly recommend PostgreSQL for business projects. In a lot of teams I’ve seen PostgreSQL is the default go to database of choice for developers.
I also recommend making it part of your application. Don’t just treat your database as some lowest common denominator via an ORM or similar. That path only leads to mediocre solutions, with poor design tradeoffs. Use PostgreSQL and make your database choice count, it’s free at the end of the day.
Are you reading the -hackers mailinglist? Any other list?
I do sit and read the -hackers and -general list when I can, but often time limits that. I try to reply and help people when I can.
I always find the number of exceptionally smart people discussing deeply technical problems on the hackers list very interesting.
What other places do you hang out?
I dip in and out of the Mailinglists, IRC now and then, so tend to be a little sporadic there. I was fairly active on Twitter and now moving over to Mastodon for that kind of interaction.
Which other Open Source projects are you involved or interested in?
I’m a big fan of openSUSE and try to contribute a little where I can. I also try to keep up to date with what is going into Linux, Ceph, KiCAD, FreeCAD.
Anything else you like to add?
Just use PostgreSQL!