When worlds collide - Gardening programmer or programming gardener?

As a passionate gardener that just got her first garden in over 20 years, I was very happy to start digging and get dirty. But, just like when you build software, when building a garden, you need a plan, you must find solutions for all kinds of problems. The www is terribly poor in terms of proper and free garden planning solutions. There are some adequate ones, but they're built in Flash - a problem in itself. So when you're a "arrogant" programmer, you think you can do better. Better than Flash, anyway. So, here's part one of the journey to build my own (virtual) gardening tool.

Context

My adventure started on the 1st of July, when, finally, we officially moved into our new home - a lovely "bondehus" (Danish "peasant's house"). Don't be fooled by the name - the house is lovely and spacious, having been extended and modernized over the years by the previous owner.

With this gem of a home came also a generous yard. The house sits in the middle of the property, splitting the area into a front- and back-garden. Lovely! Sun-bathing & outdoor dining shall happen in the backyard, where I already planted 99 small beech (Fagus Sylvatica) trees for a privacy fence. This is also the area with most shade in the summers, thanks to the small forest starting right at the edge of the property and the across-the-street-neighbor's giant conifer trees. Which means, any vegetable garden should go on the frontyard, where there's plenty of sun and light spring through mid-autumn.

Being on the frontyard, my strong opinion is that the vegetable garden should be beautiful. From the varieties selected to the layout, it should be lovely to look at for us and the neighbors, without sacrificing its purpose: growing food (and flowers, heh!). And I also wish to prevent the need for pesticides, fungicides, and other such things. Those of you with a green thumb can already smell the challenges I am facing. For those that aren't into gardening, the reason this approach gets complicated really fast is because it requires crop rotation and companion planting. These two concepts must be implemented to near perfection, all in a gorgeous layout. Ah, did I mention this is also supposed to be a no-dig garden? But I digress. Let's move on, with some definitions.

Glossary for gardening neophites

crop rotation - never plant the same family of plants in the same place for consecutive years. This protects plants from any diseases that may have developed and remained in the soil from prior generations.

companion planting - instead of using chemicals, use plants that assist the cultures of interest in some way. For example, plant Nasturtium flowers close to anything that might be attacked by aphids (or ants for that matter, as ants like to eat aphid poo - gross, I know!)

The layout I want to achieve

My Garden Layout

Challenges

Let's skip the part where I haven't done any gardening in close to two decades... Or the financial challenge to buy the materials for making the beds, the soil, and actually putting everything on the ground.

I need not only reconcile crop rotation and companion planting, but I have to do it in the context of must-have crops, and some decent amount of experimenting. Did I mention I haven't done any gardening in two decades? Oh, yes, I did. Did I mention that I now want to do this in another country, with a different climate? On top of that, every plant needs to have some room to grow and a buffer zone for diseases. These distances can vary, depending on whether you plant a single one of the sort or plant in rows / patch. These distances can vary by variety - and there are many for every major group - try seeing how many kinds of beans or tomatoes you can buy at a decently supplied shop for seeds.

Having a limited area to plant on, these distances become bastards. They will essentially determine how many plants you can have in each planting area.

So, the challenge is that, for a given layout / surface, I must find out:

  1. the ideal number of plants and their positioning
  2. their ideal companions and their positioning (and number)

in the context of crop rotation. Easy, right?

...

NO!

The best tool I found so far

... is the Garden Planner from The Old Farmer's Almanac. It comes with a lot of goodies, to be fair. The only downsides to it are: it's made in Flash and it costs money.

They have announced a non-Flash version for (sometime in) 2020. Until then, the only tools out there worth mentioning are just the same thing under a different name. I think it's some white-label product, by the looks of it, that companies can buy and stamp their brand on. Regardless... It's a nice tool, but it's glitchy. And more than once, Flash crashed and I lost a good amount of work. Plus, it's clunky to work with. I hope the new version will:

  1. not require a new subscription, but that I can use the one I already have, and
  2. they will improve (or rather build a product with good) UX.

It is a good enough product, especially considering the scarcity of such products out there. I mean, I used it for many many hours to figure out what to do and how in this garden of mine. It has been invaluable, and I am sure it saved me a lot of frustration later. However, I am unlikely to renew my subscription until the new version is out. At that time, I will take it for a spin and reconsider. It's not a lot of money, but it's at least the equivalent of some more broccoli on the table. And when you work mostly on pet-projects, every seed counts!

Resolution

Now, hopefully, you understand where I am coming from. I want to make my own tool, geared to my needs, where the user stories are centered around my persona. I mean, I have the skills, at this time I also have the time, I have the will and the interest. So what's stopping me? Right! Here's what!

For something as important as the friggin' plants on our planet, there is a ridiculously low number of APIs for plant databases. Either this, or I was not proficient enough at googling after them. I did find one though! And I danced at my keyboard when I did. It's called Trefle. Bless the creators of it, what a brilliant idea. I hope they keep it free for a while and they don't drop development.

So, using Trefle, and a few other APIs out there, I hope to be able to create my own garden management tool. For now, I've successfully authenticated and made the first requests. A small victory for today. Now, I'm off to do the other kind of work, where I assemble some galvanised steel "planks" into raised beds. Until next time!

PS: They say that, when you start a hobby project, you should make sure you avoid procrastination by having someone to hold you accountable. This is that! I am officially starting a project that will blend the two worlds I migrated between recently - gardening and programming.

PPS: The stack: Firebase, Trefle, Vue.js (with Nuxt and / or Quasar Framework), Vuex, Vue Router, Express, Node, Jest, SCSS.

PPPS: Writing this, I think hmmm, maybe Firebase Firestore isn't the right database for this... I might just have to learn Neo4J, as plats will need to connect with their companions, wouldn't they? Well, great! Then I can be of more help than building the front-end app in another pet-project!

It's just lovely when things connect and make sense.

Care to share?