Baby Naming Project

tl;dr: you can get a new person/car/pet/whatever naming app now at https://github.com/eskibars/lentil-namer

As a first-time dad-to-be, one of the things I’ve noticed is that the first thing anyone asks you about your baby is if you know the gender. The second thing they ask you is if you have names picked out. The first one is kind of easy: you’ve either decided to learn about the baby via e.g. an ultrasound or you’ve chosen to not — but ultimately it’s not really up to you. The second one is harder: you’re given a choice to name someone that’s going to be something they probably will live with for the rest of their life.

One of the things I’ve learned in my time as a product manager is that naming things is the hardest thing in virtually any profession. Naming a human is doubly so. Agreeing on a name for a human between 2 separate humans… that’s the hardest: you have no chance for quorum without unanimity; the number of reasonable options for you to both agree on is virtually limitless; and it’s difficult to feel you actually each had an “equal” part in the name given that one of you is likely to propose some name first. This is where new baby naming apps like this have come up: swipe left/right to suggest you like a name and your partner will be able to swipe as well. If it’s a match, ta-da! You’ve found one you both like. No bias, no judgement on proposing “silly” names, and no feeling bad about shooting down your partners’ name idea that you think is silly.

However, I got frustrated with the options that were out there for this problem. They all require some application installation with sign-ups and unknown data sharing practices for what I felt like was a pretty simple problem. They also often didn’t work well either with iOS or Android or didn’t allow you to participate across the two. And finally, many didn’t give you a lot of options like choosing the origins of the name or showing you the meaning. Perhaps most importantly, I was interested in trying my hand at writing a small application that took advantage of the block-max weak-and (WAND) that we released as part of Elasticsearch 7. It’s quite nifty in that it lets you bias certain results and return them with speeds that can be orders of magnitude faster than 6.x or earlier as long as you don’t need a total count of hits at result time. (In fact, there is no bound as to how much faster this algorithm can be.)

So with a baby on the way I set about to try my hand at creating something useful with block-max WAND: a way for my wife and I to name our future child without bias between ourselves!

“Hey Michelle, I’ve got the best name for our child’s name!” – me

The software

I wrote a bit of software which attempts to overcome some of the limitations I’ve seen in these apps. It:

  1. Runs as a web application which means you can load it in any browser (including mobile) and swipe left/right. No app install / you can control your own data
  2. There’s no sign-up required. You start it up, start a project, and you’re good to go. No data-sharing with unknown 3rd party companies. You can host it yourself.
  3. Lets you bias the origin and the gender of the baby
  4. Lets you review and edit any of your past answers

The flow looks something like this:

Then, you can set the settings you like and share the project with your significant other
Finally, you get to swiping: swipe left if you dislike the name and right if you like it!

Once you swipe left/right, you’ll find the names in the the answer review / mutual matches and can switch your answers if you so please. If you find them in the mutual matches, that may be a good one to discuss with your partner!

The primary things that makes this stand out to previous applications I’ve written using Elasticsearch is that it

  1. Uses rank_feature fields, which are new to Elasticsearch 7 and really make the performance scream
  2. Is built on flask, which I have no experience with until now. I also have virtually no Python experience, so that was maybe even a more extreme difference
  3. I’ve licensed it as AGPL and released it on GitHub

What’s in a name?

The name for this comes from yet another thing we found: apps that tell you the size of your baby as it progresses. For example, “this week, your baby is the size of a grape” or “this week, your baby’s foot is the size of a raspberry.” I came up with the idea for this right around the time we found out that our baby was the size of a lentil. So it’s a lentil namer, and hence the GitHub project name 🙂

What’s next?

We’ve used this (and some old fashioned suggestions) to decide on a number of names that we both like and now we’re down to picking our name. We don’t plan to reveal until after it’s born. Sorry friends & family 🙂