TL;DR
It’s week 10 of a 20 week CSA and onions are everywhere. Garlic is drying, carrots are diminishing (but we’re seeding more every week or so), and tomatoes are flourishing.
On a tech note, the new process I worked on last weekend to consolidate blog automation steps is working well, with a few minor tweaks. This allows me to focus on the human writing for about 30 minutes max (the original goal) while image processing and metadata extraction work in the background. This feels like a good milestone to celebrate, but there’s still a lot of work to do.
Pulling Onions Almost Every Day
On May 13th (about 3 months ago) we finished planting the last of the onions. While we’ve been pulling early ‘green’ onions from the main field for about a month now, we are in the dry fields pulling red storage onions almost every day now.
These onions are drying in the shed and the barn on wooden sawhorses with horizontal ladders, the same ones used in the nursery greenhouse during heavy seedling production earlier in the year. They will start to be handed out to customers in a few weeks once they’re dried enough, but some of them we use as fresh onions that are peeled and available to customers now. The peeling goes as fast as it can but is time-consuming none the less.
An honest onion is worth it’s weight in…well…however much you can sell organic onions for. They are sweet, earthy but still crisp, not bitter or overly pungent like the vedalia onions you might find at the supermarket, and slightly smaller than bagged ones. There is no dish in my house that wouldn’t benefit from one form or another of these kinds of fresh onions.
Done with This Generation of Carrots, On to the Next One
Today we finished harvesting the last of the carrots from the multiple rows in the main field which were seeded between May and June. At the same time, there are carrot beds seeded about two months ago in the top part of the field that are not yet ready to harvest. Still more rows up there and in the middle of the field were just seeded this week.
The mature beds are all but spent, so Jamie mowed over them (and many weeds) then tractor-dug them with a three-point cultivator after we had gone through to try to shovel the best of them out. We gave up on trying to use the pitchfork last week after many occurrences where we had to stop to bend a tine back into shape. Even a fist-sized rock 6 inches deep can screw up a pitchfork tine, and there are plenty of those in these beds.
The rows seeded last month will likely be ready in about a few weeks again, and the Boleros we used the manual seeder to lay down rows of this week will be ready in about two months or so.
Why all the carrots? Because they are delicious, that’s why. Just about every customer loves them, and my family is no exception to this natural rule. Last Friday on my weekly day off from the farm to do tech stuff, errands, home projects and summer time with my son, he and I drove to the farm to ‘glean’ leftover carrots. It was 15 minutes of mosquito hell, but it was worth it. This is how much we love fresh, seasonal carrots.
Unfortunately, carrots are a lossy crop when you factor in pest damage and human labor costs. So you just have to seed a lot of them often and not waste time on sub-optimal patches, often assessing first which areas in rows are worth digging through rather than starting from one end of a row to another. From my limited experience on farms, with any kind of pests and factoring in marginal extraction issues, you see up to 50% of the crop lost.
The Tomatoes Are About to Take Over
The investments in a new greenhouse specifically for tomatoes this year are starting to pay off in the form of trays of big beefsteaks just waiting to be taken to market this week.
If you wait to harvest tomatoes until they are fully ripe, even within a matter of days they will become overripe and lose their flavor. What we do for our CSA members is to pick them every day just a few clicks before they’re ready to eat, then customers have a little bit of time to let them sit at home to ripen up to their optimal or desired ripeness.
There is very little blossom end rot or splitting on these vertically trellised plants because we took the time to set up the greenhouse properly in April and then had the patience to plant the tomatoes in May.
Testing New Automation with Yesterday’s Notes
This past weekend, I finally got to pulling together already-automated parts of the blog publishing process into a single cohesive workflow. Until now, I’ve been running pre-writing steps from my local machine to make sure that they are thoroughly tested before expecting them all to work together in a production environment. Many of these steps are POSIX shell scripts which depend on services I’ve hand-crafted.
Today was the first day where I was able to use my new super-process (I call ‘Cataloger’) to group potential source data indicating which stages daily blog posts are in, then propose actions still required to complete the entire blog post workflow. These stages are:
- PUBLISHED: what’s already published to the site (fast)
- SUMMARIZED: gdrivenotes query based on parent folder id and name ends with ‘_recording.summary.md’ (fast)
- DRAFTED: ‘farm-notes-site’ github repo branches based on naming pattern
- VISUALIZED: Immich media in ‘Farm Blog’ album per date
- MEDIAMETA: descriptions and tags applied to media
- WRITTEN: .md contains non-default writing
- WRITINGMETA: topics applied as content classifications
- PULL_REQUESTED: PR created in ‘farm-notes-site’ github repo
Identifying the facts from which blog post sources indicate what stage of the workflow they are in (and also importantly which stages they are NOT) was the first step, and from a unit testing perspective the easiest. Once I had these, it was much easier to create ‘proposed actions’, such as:
- new_post: (SUMMARIZED and not DRAFTED) -> DRAFTED
- immich_extract: DRAFTED and VISUALIZED -> _media -> S3
- tag_by_vision: VISUALIZED and not MEDIAMETA <- S3 -> MEDIAMETA
- sections_by_topic: WRITTEN
- create_pr: not PULL_REQUESTED AND MEDIAMETA AND WRITINGMETA
There are a few intermediate steps not expressed above such as uploading images to S3 both before tagging and after, as well as creating the PR proactively before I apply the human writing. This is because these are compound activities that do not require a stage of their own, strictly speaking.
Prototyping Uncovers the Features You Need
While user feedback is of course necessary in larger motions like formal products, I’ve found over many years writing software and automating technical processes that prototyping is a great way to uncover key features and architectural boundaries that are needed. This is because prototyping allows you to quickly iterate and test your ideas. It also allows you to get feedback from the earliest user(s), hopefully the people building it, especially if you’re technical and on-point with your problem-solution space to be one yourself.
My work on this blog, to drive down the time-cost of capturing and sharing agricultural learnings, has been a great way to prototype and test my ideas about not just farm innovations but also information worker productivity in an age where every vendor feels the need to rebrand their products into AI-first platforms for ‘X’, ‘Y’, or ‘Z’. Many great questions come up such as:
- Which activities can stay micro-processes?
- Which ones need to be transitioned to microservices?
- What data contracts between these services and processes are needed?
- How can each part of the larger workflow be optimized for efficiency and accuracy?
- What data must remain private and what can be shared?
Not surprisingly, the work I did early last month to create a proxy service called LLMBO for clients (such as other services like Notesum and shell scripts), is analogous to the new OpenAI ‘Router’ platform. Architecturally, whether you’re a prototyper like me or a massive conglomerate like OpenAI, it makes sense for clients (developers and agents) to interact with a non-local, centralized service that can route requests to the appropriate backend AI services. Wow, some random dude that’s been writing software for 30 years comes up with the same idea as OpenAI in his homelab over the weekend, though the two scopes and scale are very different for sure.
Similarly, retrofitting the LLM service with API endpoints mirroring the undocumented Ollama server allowed me to quickly short-cut rewrites of specific prototypes that use Ollama-specific client libraries (such as Autoscribe’s Langchain summary process), not to mention extending the same services to packaged apps I run in-house like Karakeep (which currently has experimental support for Ollama) and Open Web UI for research chats. Though this is a kind of ‘backwards compatibility’ step, it allows me to field multiple levels of abstraction and data-driven use cases for clients to interact with.
I’m also excited to start working on some agentic stuff soon which will retroactively augment a sort of Quality of Service (QoS) layer for all this process and blog content. This will almost certainly drive some work to add additional capabilities to all of my componentized services to act as Model Context Protocol (MCP) ‘servers’ so that later on, I can start combining them in more autonomous ways and workflows. Part of this work will require me to address the problem space of how to granularly inject autonomous research queries and findings into longer-running summarization processes, but that’s not for the immediate future. “One milestone at a time” and all that jazz.
AI Summary from Field Notes
I’ve been working on trying to stick to facts and observations in my audio notes which are used for transcription…which is used for the LLM-driven summarization below. Just like a chef’s ingredients, quality input is required for high quality outputs, and this process is just like that.
Looking at today’s summary, it gets pretty much all the activities correct, however asking a generic off-the-shelf AI for suggested actions has always been…faulty. This is why, every day I do this, I’m more and more convinced that an LLM fitted with embeddings specific to organic agricultural terms, practices, and source material would be able to provide more accurate and relevant suggestions.
Summary
Consolidated Summary:
Main Themes:
- Agricultural Crop Management: Planting, harvesting, and post-harvest processing of crops (basil, peppers, tomatoes, carrots, onions, cabbage).
- Post-Harvest Handling: Washing, drying, and storage of produce (e.g., onions in a shed, cabbage freshening).
- Irrigation and Field Maintenance: Adjusting irrigation systems and field tasks.
- Animal Care: Watering pigs and chickens.
- Crop Storage and Quality Management: Managing storage conditions for crops (e.g., onions in sheds, cabbage in the fridge).
Activities Performed:
- Planted basil.
- Harvested peppers, tomatoes, carrots, and onions.
- Washed peppers and vegetables.
- Peeled onions, dried them in a shed with sawhorses, and stored them in blue bins.
- Freshened cabbage by removing outer leaves.
- Watered pigs and chickens.
- Closed the barn.
New Things Not Encountered:
- Drying Onions in a Shed: Using wooden sawhorses for drying.
- Cabbage Freshening: Removing outer leaves after prolonged fridge storage.
- Blue Bins for Onions: A specific storage method in the shed.
- Sawhorse Setup for Drying: A unique organization method for onion trays.
Questions for Future Research:
- How effective is the shed’s sawhorse setup for drying onions?
- Does removing outer leaves restore cabbage quality, or are there other factors affecting its shelf life?
- How do long-term fridge storage times impact other crops?
- What is the optimal irrigation schedule for different crops?
- Are blue bins beneficial for onion storage, or is this just an organizational practice?
Suggested Actions:
- Document Drying Process: Record details of the shed’s sawhorse setup and drying timeline.
- Test Cabbage Freshening: Compare quality of cabbage with and without outer leaves removed.
- Investigate Storage Methods: Explore alternative storage solutions for crops affected by long-term storage.
- Analyze Irrigation Needs: Assess how irrigation adjustments affect crop health and yield.
- Monitor Onion Storage: Track onion quality over time to evaluate the drying method’s effectiveness.
Part 1
Main Themes:
- Agricultural Crop Management: Planting, harvesting, and post-harvest processing of various crops (basil, shishito peppers, tomatoes, carrots, onions, cabbage).
- Post-Harvest Handling: Washing, drying, and storage of harvested produce (e.g., onions in a shed, cabbage freshening).
- Irrigation and Field Maintenance: Adjusting irrigation systems and field tasks.
- Animal Care: Watering pigs and chickens.
- Crop Storage and Quality Management: Managing storage conditions for crops (e.g., onions in a shed, cabbage in the fridge).
Activities Performed by the Intern:
- Planted basil.
- Harvested shishito peppers, tomatoes, and carrots.
- Washed harvested peppers and vegetables.
- Peeled onions (in between tasks).
- Harvested red onions and brought them to a shed for drying.
- Moved onions to the main barn.
- Worked on irrigation in the field.
- Freshened up cabbage by removing outer leaves.
- Watered pigs and chickens.
- Closed the barn at the end of the day.
New Things Not Yet Encountered:
- Drying Onions in a Shed: Using a shed equipped with wooden sawhorses to dry onions.
- Cabbage Freshening Process: Removing outer leaves from cabbage after prolonged fridge storage.
- Blue Bins for Onions: The use of blue bins to store onions in the shed.
- Sawhorse Setup for Drying: A specific method for organizing onion trays in the shed.
Questions and Future Research Areas:
- Efficiency of Drying Method: How effective is the shed with sawhorses for drying onions? Could alternative drying methods be tested?
- Cabbage Quality Post-Fridge Storage: Does removing outer leaves fully restore cabbage quality, or are there other factors affecting its shelf life?
- Impact of Long-Term Storage on Crops: How do extended fridge storage times affect other crops (e.g., leafy greens)?
- Irrigation System Optimization: What is the best way to adjust irrigation for different crops?
- Blue Bin Usage: Are there benefits to using blue bins for onions, or is this just a labeling/organization practice?
Suggested Actions:
- Document Drying Process: Record details of the shed’s sawhorse setup and the drying timeline for onions.
- Test Cabbage Freshening: Compare the quality of cabbage with and without outer leaves removed.
- Investigate Storage Methods: Explore alternative storage solutions for crops that may be affected by long-term fridge storage.
- Analyze Irrigation Needs: Assess how irrigation adjustments affect crop health and yield.
- Monitor Onion Storage: Track the quality of onions over time to determine if the drying method is optimal.
[end of post]
Enjoy Reading This Article?
Here are some more articles you might like to read next: