Skip Navigation
Nov 18 2019

When Worlds Collide - Gardening Programmer or Programming Gardener?

As a passionate gardener who just got her first garden in over 20 years, I was happy to start digging and get dirty. But, 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 poor in terms of free garden planning solutions.

Shrug ASCII emoji.

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 also came 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 trees (Fagus sylvatica) for a privacy fence. This hedge is also the area with the most summer shade, thanks to the small forest starting right at the edge of the property and the across-the-street neighbor’s giant conifer trees. Therefore, any vegetable garden should go in the front yard with plenty of sunlight from mid-spring through mid-autumn. 

Because it’s in the front yard, I firmly believe the vegetable garden should be beautiful. From the varieties selected to the layout, it should be lovely to look at for the neighbors and us 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 who aren’t into gardening, this approach gets complicated really fast because it requires crop rotation and companion planting. One must implement these concepts perfectly, all in a gorgeous layout. 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 neophytes

*Crop rotation—never plant the same family of plants in the same place for consecutive years to protect plants from 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

Garden Layout - built with The Farmer's Almanac garden planner.


Let’s skip the part where I haven’t done any gardening in nearly two decades. Or the financial challenge of buying the materials for making the beds, the soil, and putting everything on the ground.

I need not only to reconcile crop rotation and companion planting but also 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?

Moreover, 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 item of that variety or plant many in rows/patches. These distances can change by variety—and there are many for every significant group—try seeing how many kinds of beans or tomatoes you can buy at a decently supplied shop for seeds. 

With a limited area to plant on, these distances become bastards. They will 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? 


The best tool I found so far

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

They have announced a non-Flash version for (some time 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. Regardless… It’s a good tool, but it’s glitchy. And more than once, Flash crashed, and I lost a good amount of work. I hope the new version will:

  1. Not require a new subscription, but I can use the one I already have, and

  2. Improve (or rather build a product with good) UX.

It is a good enough product, especially considering the scarcity of such tools. I used it for 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 primarily on pet projects, every seed counts!


Now, hopefully, you understand my perspective. I want to tailor my tool to my needs, where the user stories focus on my persona. I mean, I have the skills, the time (for now), and the will and the interest. So, what’s stopping me? Right! Here’s what!

There is an insufficient number of APIs for plant databases for something as important as the friggin’ plants on our planet. 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. Later update: they did drop it!

So, using Trefle and a few other APIs out there, I hope to be able to create my 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 work, where I assemble some galvanized 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 or Quasar Framework), Vuex, Vue Router, Express, Node, Jest, SCSS. 

PPPS: Writing this, I think, hmm, maybe Firebase Firestore isn’t a suitable database for this… I might just have to learn Neo4J, as plants 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 for another pet project.

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