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.
I live in Boston, Massachusetts (USA). I was born in Lagos, Nigeria in 1971 and spent the first 7 years of my life there. My father is Nigerian and mother is American. I moved to the US at age of 7ish when my mother started her medical residency. I think I’m still considered a dual citizen though I haven’t been back to Nigeria since.
From age 7 to 18 I lived in the New York area - first the Bronx, then Long Island, then Staten Island, and finally settling in Brooklyn (deciding to stay back when my mother moved to NJ) where I attended Brooklyn Technical Highschool and rented a room from a nice Russian lady (a friend of one of my mother’s friends) in the Brighton Beach area. I regret not putting in any effort to learn Russian.
I came to the Boston area for university and lived in a Co-ed Fraternity where I met my husband. I’ve been here since with my husband except for a stint in Palo Alto, CA when my husband was working on his masters.
How do you spend your free time? What are your hobbies?
I love trying new foods and can probably down more hot peppers than any one I know outside of my family… I used to like drawing, painting, and dancing but have lost interest over the years. I enjoy technical writing as it gives me time to explore new ways of doing things and experiment with new tools.
Any Social Media channels of yours we should be aware of?
Last book you read? Or a book you want to recommend to readers?
Do mine count? I don’t have much patience for books aside from writing them and can’t remember the last one I read that wasn’t mine. I mostly read short-articles. I recommend all my books which are listed on postgis.us.
Any favorite movie, or show?
I like watching cartoons like Talking Tom and Friends. I also like South Park and Simpsons and Stand-up comedy.
How would your ideal weekend look like?
Watch lots of cartoons and maybe a little book writing.
What’s still on your bucket list?
Finishing books I’m writing.
What is the best advice you ever got?
College is not as important as you think it is. Learn what you want and don’t focus so much on grades.
When did you start using PostgreSQL, and why?
I started using PostgreSQL circa 2001 when working for City of Boston, Department of Neighborhood Development.
We had a mapping and research unit that needed to aggregate project data onto maps. Those were the glory days of plotters and big gigantic maps you plastered on your walls.
I managed most of the departmental databases at the time and they were constantly asking me for extracts or getting data from other departments.
I discovered they went through some pain-staking exercise to join this with map data and convert them into ESRI Shapefiles (basically a dbase file alongside a blob of binary data representing spatial data) and were being asked to make web applications to expose these. I started looking for tools that would automate this process. First I started with MapServer, a long standing project of osgeo.org. Then later announcement on the list came of this thing called PostGIS. A way of having this quirky map data live in a relational database and query spatial data like any other with SQL.
I immediately fell in love with the idea and how it could solve all my current problems and downloaded the code. At the time I was already pretty good at SQL but used mostly MS SQL Server (the government approved server), MS Access, and some MySQL. This was before MS introduced spatial into their SQL Server.
The PostGIS project had decided on building their spatial engine on top of PostgreSQL because it seemed the most extensible open source database.
At the time PostgreSQL did not run natively on windows and by extension neither did PostGIS. You had to use Cygwin. So I learned to setup Cygwin and compile PostgreSQL and PostGIS and MapServer.
Do you remember which version of PostgreSQL you started with?
7.1 or 7.2
Have you studied at a university? If yes, was it related to computers? Did your study help you with your current job?
Yes. I have a bachelors from Massachusetts Institute of Technology conferred by the Mechanical Engineering department. It was a make your own major kind of thing so I didn’t have to follow the standard Mech E path. I took a lot of classes in Electric Engineering, Bioelectrical Engineering, and one CS class called 6.001 which was taught in Scheme. My thesis was a C program for simulation. In the end I don’t think my university study helped that much. Most of the stuff I did apply was stuff I learned programming on my VIC-20 when I was much much younger and reading computer magazine books like K-Power Magazine or additional stuff I learned by trial/error and casual reading. The talk of parallel processing in 6.001 was useful and did give me a basic understanding of how all that would work. The thesis did force me to learn some C.
What other databases are you using? Which one is your favorite?
My favorite is PostgreSQL hands down. I also work on SQL Server, MySQL, and on few occasions Oracle. I’m always cursing when I have to use any other database because I think “Why don’t they have this function or feature that PostgreSQL has?” Interestingly I noticed SQL Server started implementing things like string_agg, lead, lag. So I would accidentally start typing these things wishing I was in PostgreSQL and suddenly they’d start working in newer versions of SQL Server.
On which PostgreSQL-related projects are you currently working?
I’m probably best known for my work on PostGIS.
I’m knee deep in writing 4 books related to PostgreSQL and sadly had to give up blogging as not enough time to do both. I plan to resume blogging sometime in near future, though maybe slowly.
How do you contribute to PostgreSQL?
I mostly contribute via extension of the extensions I work on. I contribute the most with PostGIS. I blog and write books about PostgreSQL, PostGIS, and pgRouting. I also find bugs when PostGIS crashes that I can blame on PostgreSQL and report on pg-bugs
Any contributions to PostgreSQL which do not involve writing code?
I package PostGIS, pgRouting and some other PostGIS related extensions for windows. A long time ago I used to answer questions on pg mailing lists but there was a flood of too much going on there I couldn’t keep up. I have also co-authored several books about PostgreSQL and PostGIS with my husband Leo Hsu. Almost finished with PostGIS In Action (3rd). I’ve given talks at many PG conferences over the years too.
What is your favorite PostgreSQL extension?
Most people would expect me to say PostGIS here, but I won’t. PostGIS is second. I love ogr_fdw - ogr Spatial Foreign Data Wrapper more. The reason is PostGIS helps me with only part of my work, ogr_fdw helps me more and not just the spatial part. Though it’s a “spatial” foreign data wrapper, I use it more for wrangling spreadsheets, csv files, and other relational databases than I do for geometry/geography data.
What is the most annoying PostgreSQL thing you can think of? And any chance to fix it?
The fact that I can’t change the data type of a column that is referenced in a view without dropping the view. I think I asked once and it sounded like a major undertaking.
What is the feature you like most in the latest PostgreSQL version?
Deduplication in btree index in PostgreSQL 13 I think will be the feature I most like, but haven’t tested it yet.
Adding to that, what feature/mechanism would you like to see in PostgreSQL? And why?
More parallelism and partition enhancements. I really would like to see a feature where the primary key does not require the partition key to be part of it. That restriction makes the primary key feature in partitioning much less useful. There are still many cases where parallel plans can’t be used that can make PostgreSQL much faster.
Could you describe your PostgreSQL development toolbox?
I still do most of my work on windows. For PostGIS/PostgreSQL work I use Msys2/Mingw64 and Visual Studio Code. I manage databases mostly with pgAdmin4 and use psql on occasion mostly for scripting. I never really warmed up to Visual Studio so only use it for some web development stuff because of its better intellisense.
Which skills are a must have for a PostgreSQL developer/user?
As a user, a good comfort-level with SQL is probably the most important. To get into the nuts and bolts of the code base, having knowledge of C helps. However I think the PostgreSQL code base has enough helper functions that it’s a language unto itself. Studying the code base how things are laid out and where things are is probably more important than mastering C.
Do you use any git best practices, which makes working with PostgreSQL easier?
I have many git worst practices like wiping out my git folder and doing a git clone when I don’t want to figure out git conflicts. I’ve slowly warmed up to the idea of using git feature branches for work. I still often don’t bother though as I quickly forget what feature I was working on. I’m constantly switching branches, I discovered only recently about:
git clean -fd
Before that I was immensely frustrated as stuff from new branches would be there when I did a checkout of an older branch and my compiles or checks would fail with weird errors. That cleans up all that stuff nicely.
Which PostgreSQL conferences do you visit? Do you submit talks?
I try to stick close to home, so usually PGConf.US in NY, PostgresVision (always in Boston), and PGOpen if it’s not too far. I always talk when I go to conferences and sometimes give workshops too. FOSS4G conferences when they are close I go to also. FOSS4G events have a lot of PostgreSQL content because of the intersection of PostgreSQL with PostGIS and pgRouting.
Do you think Postgres has a high entry barrier?
Yes but really not any more than any other relational database. It’s gotten much better over the years. Before it was harder to install than something like MySQL, but now I find it about the same effort. I think upgrades are still scarier than say MySQL.
How would you reduce the entry barrier?
I think if we can make the upgrades smoother that would help. We’ve tried to improve that a bit with PostGIS by not changing the lib file for each minor version. As I think the upgrade story is much scarier for PostGIS users. I have had to hold too many peoples hands on that. I hope the change in 3.0 helps but I think still too early to tell.
What is your advice for people who want to start PostgreSQL developing - as in, contributing to the project. Where and how should they start?
I’m probably not the best person to ask as I don’t directly contribute to PostgreSQL. I imagine reading the manual, reading the code, and hanging out on hackers would help.
Do you think PostgreSQL will be here for many years in the future?
Yes and I’m counting on it. I find it to be more useful than any other database I have ever worked with. A lot of logic I used to do outside of the database I now do in the database cause it’s so much quicker and often better performance and Postgres makes it so easy.
Would you recommend Postgres for business, or for side projects?
Both. I like that it’s so ANSI compliant that much of what you learned can be applied to other databases. I like that it leads in innovations - e.g. the JSON/PATH, the FDW, the extension model. It’s one of those databases you can easily grow with cause it can work on a small Rasberry Pi or beefed up server.
Are you reading the -hackers mailinglist? Any other list?
I only read -hackers list when I submit bug reports or there is a feature I’m really jazzed about being talked about. Aside from that the traffic on -hackers I find too overwhelming. I read PostGIS mailing list a lot but don’t have as much time as I used to to respond to questions.
What other places do you hang out?
I hang around on IRC a lot (using Matrix client these days) talking on #postgis and lurking on #postgresql. The volume on #postgresql is too high to stay focused on it. How RhodiumToad fields all those questions and still has time to honor us with his presence on #postgis - he must be some kind of super creature. I am also on PostGIS, GEOS, pgRouting OSGeo mailing lists. I use Slack for some of my clients but don’t use it for Open Source work.
Which other Open Source projects are you involved or interested in?
I’m a team member on GEOS (the engine that powers PostGIS) and on pgRouting team (another PostgreSQL extension). I’ve developed a recent interest in MobilityDB which is another PostgreSQL extension that builds on PostGIS and pgRouting (but for geospatial trajectories and other temporal analysis) (still trying to fine-tune the compile so it works well on windows) and can compile cleanly. I’m hoping in the future I can package that as part of the Windows PostGIS bundle I manage.
Anything else you like to add?
Thanks for the interview. Always fun to learn about community members and how different and alike we are.