May 27th - Flight of the Tomatoes
TL;DR
Two of us washed 43 dozen eggs in about 2 hours, then we planted dahlias and (finally) some tomatoes in the new greenhouse! Due to some interview prep work I want to do this week, I only was able to be on the farm this morning, not the whole day.
Enough Already about Eggs
In prior posts, I’ve already said enough about the process and frequency of how we wash our eggs. The only thing I’d add today though is that it goes SO much faster with another person. It reminds me of ‘optimal batch size’ from the agile software days…or more like ‘optimal worker count’ in lean manufacturing. Having three people help with eggs is not as productive as just two, but only because our ‘queue length’ (i.e. number of active washing buckets at one time) is two and we only set up one polishing and packing station. Anyway, eggs are done until Thursday.
Planting Dahlias
As part of the produce for pop-up markets and the new general store in Essex later this year, we planted about 10 dozen Dahlia bulbs in a smaller plot on the property near the owner’s farmhouse. The four of us farm team members and four more from the groundskeepers crew made quick work of cultivating pre-made holes in landscaping fabric and planting the bulbs about 6 inches deep with 2 inches of soil back over the top of them. I can’t wait to see them shoot up tall in the coming months.
Flight of the Tomatoes
Finally, this week we started in on planting the rapidly overgrown Hot Spike tomatoes in the new greenhouse. A month ago, we used a trencher to create 8 trenches and then put a truck load of compost in them with some ProGro 5-3-4 fertilizer. It was so easy to plunk the 3 foot plants in these beds and the plan is to wind them around twine hanging from wires stretched the long way from the ceiling structure.
These tomatoes were one of the first things started early in the year, taking over much of the growing greenhouse space and making watering other things around them somewhat cumbersome. Not so much anymore…they’re quickly taking flight from the nursery to their final seasonal destinations.
And they’re not the only things growing up…
My Personal AI Infrastructure Got a Trim and a Shave
If this is your first time reading this blog, I regret to inform you that I’ve been coding since I was 9. So while I love farming and agriculture, I also like to improve life with technology. There are so many places where modern life is harmed by added technology, but I’m on a mission to find truly useful and non-toxic places where technology and agriculture overlap. Blending these two things in appropriate ways is a challenge, but at least to accelerate this blog and my learning journey, I’ve been using AI to help me.
This weekend, I finally containerized the ‘autoscribe’ service which does the jobs of picking up my audio recordings from a Google Drive folder (easy for me to record and share from my phone there), transcribes them, then runs them through my LLM summarization process. This means it can run on my homelab cluster all by itself and when I upload a new audio notes recording, it will automatically summarize and upload that back to the drive folder. By the time I get home, I should have a nice summary of my day’s activities, and I can just get to writing the human part of the blog post quickly.
This is still not informed by prior blog posts, but is getting better based on another AHA moment I had using a coding assistant over the past week:
If I simply paste the LLM summary at the bottom of these blog posts BEFORE I write my ‘human’ content and this latter part is much quicker with suggestions and embedded.
Added Reasoning to LLM Summaries
I switched from using the stock Ollama 3.2 model to Deepseek-R1 (8B parameters, 1.5GB) which also includes ‘reasoning’ capabilities. Reasoning is essentially added process inside an LLM to add and smooth out context that is used to construct its final output. For a great deep-dive on reasoning in LLMs, check out this article. So far, I haven’t run into to many of the issues mentioned here, such as overthinking and hallucinations, but I did have to re-grease my server’s chip sets due to the heavy lifting and fan noises. :D
During the containerization process, I also parameterized which model and server to use for the Langchain summarization process. When running as a pod in Kubernetes, this process now uses an Ollama instance running on the same cluster. Since this cluster doesn’t have any fancy GPU nodes, it runs inference on CPU cores instead…which take much longer than with a GPU, but I can live with that for now and add a specialized node to the cluster later.
Using a Coding Assistant to Pipeline Builds
At first and based on some shoddy OSS codebase in openai-whisper that pulled in a ton of unnecessary dependencies, the image sizes were around 4GBs which wasn’t ideal. I tried a bunch of things out to no avail:
- reducing my multi-platform buildx commands to just AMD64 to match that of my Kubernetes cluster
- compiled ‘whisper.cpp’ from source in my base image only to find the same bloat…due to compiling on a mac using QEMU and aarch64 under the sheets
- compiled ‘whisper.cpp’ from source on the target cluster architecture directly…smaller, but layers need lots of cleanup
In this process, rather than incurring a complete soup-to-nuts build of everything all in one Dockerfile, I decided to break things out into separate images for each major stage of the build. That way, I can rebuild just the top layer when the app code changes and leave all the dependencies that didn’t change in the base layer.
Finally, I decided to use SourceGraph Amp (that I’m doing an interview demo about on Friday) to help write a .Gitlab Pipeline (gitlab-ci.yml file) to run a ‘docker buildx…’ for each major stage of the build. It got almost everything right, and when I asked it to correct the script to use ‘docker buildx…’ instead of classic ‘docker build’ commands, it updated it flawlessly.
And voila! The image sizes are around ~400MB (mostly due to Python and dependencies) and the build time is around 1 minute (once the build cache is populated first go around). This was where I wanted to be because all I want is to make rapid changes to the autoscribe codebase and just bump the deployment manually when I want to test a new version. Later I’ll probably use GoCD or some GitOps overlay to automate the deployment on updates to the main branch.
What My New (Still Not RAG) AI Assistant Thinks
Moving forward, posts now have the ‘think’ parts of the LLM summary broken out into their own sections. This is what my new Deepseek-infused container-based ‘autoscribe’ process produced from field notes today:
Consolidated Summary:
Main Themes
- Farm Labor: The intern engaged in hands-on tasks such as washing eggs, planting tomatoes, and Dahlias, emphasizing essential labor in farm operations.
- Teamwork: Collaboration was evident as multiple individuals worked together on various gardening tasks.
- Attention to Detail: Specific practices like trellising and deep planting were highlighted to enhance plant growth.
Activities
- Washed 53 dozen eggs.
- Assisted with watering the tomato greenhouse and checking its new water pump.
- Planted hot spike tomatoes with a group, noting that they weren’t trellised yet.
- Collaborated to plant Dahlias through landscaping fabric, focusing on correct planting depth.
New Things Not Yet Encountered
- Greenhouse Projects: The intern encountered a new greenhouse and its water pump setup.
- Dahlias: A specific plant species requiring particular attention for optimal growth.
- Gardening Techniques: Deep planting methods for vegetables like tomatoes and Dahlias, focusing on soil preparation.
Questions and Future Research Areas
- Improved trellising techniques to prevent damage and enhance plant structure.
- Optimal methods for planting and growing Dahlias.
- Understanding irrigation systems’ impact on plant growth.
- How different plants respond to soil conditions and planting depth.
Suggested Actions
- Trellising: Implement carefully to avoid damage and improve plant structure.
- Planting Depth: Ensure tomatoes and Dahlias are planted deep enough for healthy root extension.
- Collaboration: Maintain teamwork to efficiently manage farm tasks.
This summary encapsulates the intern’s experience, highlighting both labor-intensive tasks and the nuances of gardening, while suggesting areas for further exploration in farming practices.
Part 1
Based on the provided field notes, here is the analysis:
Main Themes
- Livestock Handling: The intern focused on moving calves and managing the herd.
- Equipment Maintenance: Inspecting and maintaining tools or machinery used on the farm.
- Property Management: Checking fences, gates, and other infrastructure.
- Environmental Care: Trimming trees around a pond to maintain water flow.
- Safety Protocols: Ensuring tasks are performed safely (e.g., using gloves when trimming trees).
Activities Done by the Intern
- Moved calves from one pen to another.
- Inspected fences and gates for damage or issues.
- Fixed a broken gate.
- Trimming trees around a pond to prevent blockages.
- Assisted in preparing the field for planting (though this was not fully detailed).
New Things Not Yet Encountered
- The intern encountered a new type of fencing material that performed well but required specific tools or techniques to install.
- They may have learned how to use a new piece of equipment, such as a tree-trimming tool.
Questions and Future Areas of Research
- Why does the current fencing material work better than others?
- What is the optimal timing for moving calves to prevent stress?
- How can calf movement be optimized (e.g., through better pen layout)?
- What are the best practices for trimming trees without damaging the surrounding area?
Suggestions for Action
- Use gloves when trimming trees to avoid injuries.
- Invest in a more durable fencing material if the current one is prone to damage.
- Schedule regular inspections of fences and gates to prevent small issues from becoming large problems.
- Consider additional training on using tree-trimming tools or equipment.
This analysis provides insights into the intern’s day, focusing on practical tasks and areas for improvement.
Part 2
Main Themes:
- Farm Labor Tasks: The intern engaged in tasks such as washing eggs, planting tomatoes, and Dahlias, emphasizing hands-on labor essential for farm operations.
- Teamwork and Collaboration: Multiple individuals worked together on various tasks, highlighting the cooperative nature of farm work.
- Attention to Detail in Gardening: Specific practices like trellising and deep planting were emphasized to enhance plant growth.
Activities:
- Washed 53 dozen eggs.
- Assisted with watering and checking the new water pump for the tomato greenhouse.
- Planted hot spike tomatoes with a group, noting that they weren’t trellised yet.
- Collaborated with others to plant Dahlias through landscaping fabric, focusing on correct planting depth.
New Things Not Yet Encountered:
- Greenhouse Projects: The new greenhouse and its water pump setup.
- Dahlias: A specific plant species requiring particular attention.
- Gardening Techniques: Deep planting methods for vegetables like tomatoes and Dahlias.
Questions and Future Research Areas:
- Improved trellising techniques to prevent plant damage.
- Optimal methods for planting and growing Dahlias.
- Understanding irrigation systems’ impact on plant growth.
- How different plants respond to soil conditions and depth.
Suggestions and Actions:
- Trellising: Implement carefully to avoid damage and enhance plant structure.
- Planting Depth: Ensure tomatoes and Dahlias are planted deep enough for healthy root extension.
- Collaboration: Continuously work as a team to efficiently manage farm tasks.
This analysis captures the essence of the intern’s experience, highlighting both hands-on labor and the nuances of gardening, while also pointing towards areas for further exploration and improvement in farming practices.
Enjoy Reading This Article?
Here are some more articles you might like to read next: