Ahead of Schedule
Have you ever tricked yourself into thinking you were ahead of schedule? I sure have. And I seem to be pretty good at it, too. Like right now, for example.
It all started with the lettuce. The "Salad Bowl" and "Outredious" lettuce heads had been heroic long into winter. They were bred for this, and born cross-country skiing 10 miles uphill each way. In a blizzard.
My guys were growing under low tunnels, plastic sheeting over hoops, to moderate the dropping temperatures. Moreover, I had been uncharacteristically diligent this year in covering them up each night, to protect against freezing, and uncovering them in the morning, to prevent against condensation, mold, and overheating.
By Christmas time, however, they were obviously clinically depressed, pining for distant sunlight and forgotten warmth. A condition with which we can all identify, at one February or another I suspect. So I harvested the last lettuce standing, and – as an experiment – I started new seedlings, early, indoors. This was mid-December. I don't usually start lettuce seedlings until late January. Hurray! I was way ahead of schedule.
It was a delusion.
Last year I tried to improve my garden green-eyeshade bean counting.
Up to that point, my planning had relied on scribbled notes, instructions, planting dates, etc., all put down in late January on paper calendars. For example, the little calendar box for May 24 would say:
"Plant beans, Provider, 3 rows."
This was a very cost-effective approach. The calendars were sent to me for free by various organizations in an effort to gain obligation and leverage, and thus break my procrastination, shaming me into sending money by which to join their board of directors. This I never did for fear that, having joined, they would no longer send the calendars. And then where would I be? Scribbling plans on paper napkins in Ben and Jerry's?
I always felt particularly virtuous after compiling these plans. There was an accompanying sense that I was now way ahead of schedule. Furthermore, the plan was there, written in stone, paper actually, and so I would be on (or ahead) of schedule for the rest of the year.
There was just one problem.
In order to execute the plan on the calendar pages, you have to make the effort to actually look at the calendar and read the runes you scribbled in the little boxes. The problem was that most days, the vast majority of days, there is nothing marked on the calendar. There are 365 days, give or take, and only a few dozen crops. And so it was silly easy to get in the habit of not looking at the calendar on any particular day because chances are there would be nothing there to look at.
Planting days would come and go, unobserved, until a chance perusal of the calendar induced a panic attack and a flurry of tardy activity in the garden and shed. The spinach eventually in the ground had to wonder what the heck they were doing out there in 85°F heat, the 2"-tall lettuce seedlings why it was December, dark, and 12°F, and the winter squash seeds why they didn't get planted at all this year. Was it something they said?
There had to be a better solution.

First I tried the digital calendar apps that come with Android and iPhone devices. But, no offense to the calendar coding engineers, the experience is super ugly. It appears that digital calendar designers have been evolving their apps for decades to suit other apps. Not humans.
Get a text with a load of Zoom session dates created by a back-end app? It only takes a couple of clicks (usually) and your front-end app makes sure 10 weeks of Zoom meetings magically show up in the calendar, complete with a tall latte.
Need to enter a single dentist appointment? As a humble human? Well, it's only mildly painful; about 6 steps required, unless you forget to "Save" the time of the appointment you selected – as I do inevitably – after setting the start of the appointment as 1 PM and erroneously setting the end of appointment as 2 AM. Calendar apps evidently believe we can all travel backwards in time.
But what if you, as our hypothetical human, need to enter lots of data? Lots of planting instructions? Forget about it. It will be Christmas before you are finished. Here's the typical calendar app flow: Navigate the user interface by finger swiping, left or right multiple times, to move to the desired month, select the right day and get a vertical time slot view, open a new entry in some time slot, type the entry, close the entry, fix the entry as a task instead of an appointment, save the entry, proceed to "GO". Do not collect $200.
Seed packets and tasks aren't naturally arranged chronologically. Or even unnaturally chronologically. Writing down plans for "Arugula," "Beans," "Carrots" definitely does not collate one-to-one with February, March, April. Besides, many crops have sowing times in both the Spring and again in the Fall. Dealing with several dozen crops means dealing with a gaggle of dates all over the calendar.
Then there is always, "Did I do the Zucchini crop already? I can't remember." Put on the tea kettle because it will take forever to find out. Especially if you didn't. Deadly boring. And more to the point, prone to errors. Yup, calendar apps proved to be over-the-top overkill.
So I coded my own app.
The design is simplicity itself. The data are contained in a plain text file, with each task entered as a line containing the date, the crop, and the task. The lines can be in any order; I can enter a line for Spring carrots followed by a line for Fall carrots, followed by a line for Summer corn. It looks like this:
2025-05-24,Beans,Plant Provider
2025-08-24,Spinach,Sow Bloomsdale
2025-02-17, Lettuce,Sets for Salad Bowl
The file is edited with any ol' text editor. If I need to duplicate a task on some other date, I can just copy and paste it and change the date for the copy. If I have multiple varieties of a crop, I only need to duplicate the entry and change the variety name. It is very simple, very easy, and the raw data are readable by actual humans.
To serve the data, I coded a simple program in Python, a computer scripting language, to send email. Each night the program gets the current date. Then it scans the data file for lines that have a matching date. Finally, it parses the lines and enters the crop and the text into a message, sending that message to my email address.
Thus, each morning I get an email with a reminder of what needs to be done that day. Actually, I coded the app to grab items for both the current day and the next. That way, procrastinator-me gets reminded twice. Furthermore, on Sunday I get an email that lists everything needing to be done over the coming week.
As a side benefit, the email reminders are legal permanent residents. With calendar notifications, once the time for an event has passed, well, the notification vaporizes. Just like Mission Impossible. But unless I deliberately delete them, the email reminders are there forever; a quick scan turns up any actionable garden tasks that might have been accidentally overlooked.
So last year was a year in which I was pretty good at being pretty much on schedule. With the coming of Winter, I put the garden beds to bed and relaxed.
"Pride goeth before a Spring," they say.
As I said, I was way ahead of schedule this year. Indeed, the experimental lettuce seedlings were already sprouting. I settled in with the seed catalogs, dreaming of the perfect sweet pepper variety. One of the usual catalogs hadn't arrived yet but, no worries, I can wait. There was plenty of time.
The weather compounded my complacency. Early February brought several weeks of below freezing temperatures. Temperatures in the single digits Fahrenheit. One morning we awoke up with no Fahrenheit at all. Zero. Then the dread Polar Vortex brought with it 5 inches of sleet and buried the garden in a crystalline blanket having something of the texture of styrofoam. Only way into colder. You can see the results in the banner image at the top of this post.
There's not much you can do, I told myself, when Winter is at its depths. Anyway, I'm way ahead of schedule.
Of course, when I finally sat down to begin planning the 2026 garden I discovered the truth. The record showed that last year the date on which I began cabbage and Asian greens seedlings was fast approaching, just two days hence. And there was me, having not even ordered seeds yet.
I am not ahead of schedule.
The after-action report is easy enough. I failed the feed-forward test. Feed-forward control loops are unusually useful things for a reason: they ensure continuity. All I needed was a single line in my garden text file:
2026-01-07, New Season, Order seeds
That line wasn't there because I was thinking short term, focused on just the current season. Now Garden 2026 is starting life with a handicap. All because of a missing line of text. That, and my superlative ability to trick myself into thinking I am way ahead of schedule.
A few weeks ago I waxed poetic about spinach and the crop I carry through the Winter. These amazing beasts have laughed at the cold and the covering of packed sleet. Have a look with the low tunnel covering lifted back.

Never fear! Spring is on the way, no matter the groundhog. A closed loop is the cleanest implementation of feed forward control, and Mother Earth in her orbit hasn't forgotten to add the all important text line to her plan in, oh, about 4 billion years.