Anna (Anna and Mark: Waldeneffect)
Ugly turkey
Turkey slaughtering

Monday was turkey pickup day. Our friends let us drop by early so we'd be sure to get home before dark, which means we got to see the whole butchering operation in action.

Turkey butchering station

The farmers apologized profusely because...the turkeys are too big this year! "That's good, right?" I asked. "More money for you?"

"No," they answered. "We have to give people a discount to get them to take the bigger Cooling a turkeybirds since most folks don't know what to do with leftovers."

"I love leftovers," I replied. "Give me the bird that's going to be the hardest to move."

They hemmed and hawed. "You really don't want that one. We can't really sell it. It has a bit of skin torn on the back due to the plucking process...."

"Looks a lot better than some of our birds," I answered. "Hand it over."

Pig and goat

By way of apology, they offered a pack of last year's bacon. I think I know who got the sweeter end of that deal. Thanks for the awesome pastured meat!

(Moral of the story: If you're buying meat or produce from a real farmer and don't mind a few cosmetic blemishes, you'll make their day if you tell them so. Americans eat with their eyes, and delicious grub can be hard to move if it has a spot. You'll probably get a discount too!)

Anna (Anna and Mark: Waldeneffect)
On the first day of Thanksgiving
Family photo

I wore Mark out driving in a huge loop through multiple big cities today, so I'm stealing his posting spot to make up for it.

Frost-protected figFirst stop --- Thanksgiving feast part one with the Bristol clan. I particularly liked seeing Mom's frost-protected fig tree. Hers produced quite a few more figs than ours this past year, either because of her warmer city location or her impressive insulation job.

Next stop --- stocking up on groceries for our Thursday feast. (More on that in tomorrow's post.)

Then home at last to rest up for the second day of Thanksgiving --- pie day!

Joey git-annex devblog
day 339 smudging out direct mode

I'm considering ways to get rid of direct mode, replacing it with something better implemented using smudge filters.


I started by trying out git-lfs, to see what I can learn from it. My feeling is that git-lfs brings an admirable simplicity to using git with large files. For example, it uses a push-hook to automatically upload file contents before pushing a branch.

But its simplicity comes at the cost of being centralized. You can't make a git-lfs repository locally and clone it onto other drive and have the local repositories interoperate to pass file contents around. Everything has to go back through a centralized server. I'm willing to pay complexity costs for decentralization.

Its simplicity also means that the user doesn't have much control over what files are present in their checkout of a repository. git-lfs downloads all the files in the work tree. It doesn't have facilities for dropping files to free up space, or for configuring a repository to only want to get a subset of files in the first place. Some of this could be added to it I suppose.

I also noticed that git-lfs uses twice the disk space, at least when initially adding files. It keep a copy of the file in .git/lfs/objects/, in addition to the copy in the working tree. That copy seems to be necessary due to the way git smudge filters work, to avoid data loss. Of course, git-annex manages to avoid that duplication when using symlinks, and its direct mode also avoids that duplication (at the cost of some robustness). I'd like to keep git-annex's single local copy feature if possible.

replacing direct mode

Anyway, as smudge/clean filters stand now, they can't be used to set up git-annex symlinks; their interface doesn't allow it. But, I was able to think up a design that uses smudge/clean filters to cover the same use cases that direct mode covers now.

Thanks to the clean filter, adding a file with git add would check in a small file that points to the git-annex object.

In the same repository, you could also use git annex add to check in a git-annex symlink, which would protect the object from modification, in the good old indirect mode way. git annex lock and git annex unlock could switch a file between those two modes.

So this allows mixing directly writable annexed files and locked down annexed files in the same repository. All regular git commands and all git-annex commands can be used on both sorts of files. Workflows could develop where a file starts out unlocked, but once it's done, is locked to prevent accidental edits and archived away or published.

That's much more flexible than the current direct mode, and I think it will be able to be implemented in a simpler, more scalable, and robust way too. I can lose the direct mode merge code, and remove hundreds of lines of other special cases for direct mode.

The downside, perhaps, is that for a repository to be usable on a crippled filesystem, all the files in it will need to be unlocked. A file can't easily be unlocked in one checkout and locked in another checkout.

Anna (Anna and Mark: Waldeneffect)
Goats and cats and rain-barrel pipes
Goat eating honeysuckle

We've been writing a lot about dead animals lately, so I figured you might enjoy seeing some live ones. Here's Artemesia eating honeysuckle...just because.

Goat eating mangels

What was Abigail up to when that picture was taken? Straining to get to a pile of discarded mangels that I'd pulled out of the fridge root cellar when she refused to eat even aged, carefully chopped mangels.

"But you hate mangels!"

"Nope, love 'em."

"But these have been frozen and thawed and frozen and thawed so they're half rotten."

"Yup, love 'em."

I really don't understand goats.

Cat inspecting ditch

Well, I guess I do understand goats. If you think of them as vegetarian cats with hooves, everything becomes much clearer.

Speaking of cats, Huckleberry's inspecting my drainage ditch in the photo above. Summer gardening season hit before I finished burying the overflow pipe for our IBC rain barrel, so I'm just now finishing up the project. Good news is --- our tower handled the weight of the heavy rain barrel with no problems and the ground behind the trailer did become significantly drier as a result. Bad news is...well, there isn't really any bad news, except for me being so slow to finish the overflow pipe.

Anna (Anna and Mark: Waldeneffect)
Deer 6.0
Hunting from the window

I "hunted" our 2015 deer from the couch and shot the button buck through the front window. The hardest part was waiting for the goats to move out of the way so I was positive I wouldn't injure anyone I cared about via friendly fire.

We're finally starting to become old hats at butchering a deer, so there's not much to say other than --- Thank you, Jayne, for the awesome gambrel! Instead, here are some stats for those of you keeping track at home.

Deer gambrelAll-time scores:

  • Mark: 1.5
  • Anna: 4.5

Yearly totals:

  • 2009: 1
  • 2010: 0
  • 2011: 2
  • 2012: 1
  • 2013: 1
  • 2014: 0 (Heavy acorn year; deer barely came into the garden.)
  • 2015: 1

Venison as percent of annual  meat consumption:

  • about 8%

Amount of damage deer do to our garden compared to their food value:

  • Roughly even, trending toward us getting more food from the deer than the deer get from us in recent years

There's still time for us to bag another deer this year, and we certainly wouldn't mind the additional delicious, pastured meat. But I've found that once either-sex rifle season starts in earnest, the critters get much wilier and I can no longer hunt them from the trailer. For example, my neighbors on one side tell me they've already killed five deer so far this year, and I suspect the neighbors on the other side are equally productive. A pretty average year here in deer-central, where hunters fill their freezers in November to feed them all year long.

Maggie also
I must

…relax into what comes naturally to me.
Pursuing a MFA in poetry will not make me a better person.
Poetry is more of an accident.
A good accident.
Pursuing it as career puts pressure on the poetry,
ruining its spirit and whimsy.

Maggie also
Deep in my heart

I wonder if I am going the wrong path trying towards a future in poetry.  I cannot for the rest of my life sustain on the rare possibility that I might make a living teaching poetry or serving of one of like ten possible roles as a resident poet.  I am worried too that I am branching away from some part of myself that is more me when I put all of my career hope in my literary writing.  It is not only impractical seeming to just be a poet, it feels like I to a degree am discarding the world away from words, the computer, and ideas.  You know I once dug my hands in real dirt as the garden intern at Camp Celo?   When I fold linens or garden or talk to human beings in community, I feel I am closer to the person I am.  I believe in the poetry, in that I like the attention it draws to beauty and even social justice.  I however don’t think it is my true calling.  My life is supposed to be that of a Quaker.  I do not even have a Meeting near me that I can regularly attend, but more importantly I need to be a Friend “in daily communion.”  I need to be a “walk cheerfully over the world answering that of God in everyone.”  That is me.  The day to day Quaker is me.  I will find a way to be that Maggie Hess who I am deep in my core.  But I am afraid the poetry is not the right Main Focus.  My main focus needs to be answering that of God in everyone, working for Peace, living simply so that others may simply live, and speaking Truth to power.  I need to contemplate to listen inward and all of these things that I work on when I try to better myself, when I am part of a Friends Meeting.   That is my calling.  That is what I need to do.  

Something is wrong with the idea that I go back to school and I am trying to say no to an opportunity when no single other door is open to me.  But I think the Bennington door, the poetry door, is the wrong door!

I need to put the breaks on the poetry as means of income idea. If nothing else, I have been happy cleaning or gardening for a living and I can find a menial job to sustain me somewhere near a vibrant Quaker Meeting

mark (Anna and Mark: Waldeneffect)
Pulley and gambrel
pulley and gambrel system being used to hold up young buck

This morning I woke up to the sound of gunfire.

Anna shot a small buck just past our blueberry bushes. That's 5 for her to my 1.

We spent the morning butchering which was easier than times in the past thanks to a new pulley and gambrel system. Thank you Mom and Jayne.

It took a few minutes to figure out but really made raising and lowering easy.

Maggie also
Deep in my heart...

I wonder if I am going the wrong path trying towards a future in poetry.  I cannot for the rest of my life sustain on the rare possibility that I might make a living teaching poetry or serving of one of like ten possible roles as a resident poet.  I am worried too that I am branching away from some part of myself that is more me when I put all of my career hope in my literary writing.  It is not only impractical seeming to just be a poet, it feels like I to a degree am discarding the world away from words, the computer, and ideas.  You know I once dug my hands in real dirt as the garden intern at Camp Celo?   When I fold linens or garden or talk to human beings in community, I feel I am closer to the person I am.  I believe in the poetry, in that I like the attention it draws to beauty and even social justice.  I however don’t think it is my true calling.  My life is supposed to be that of a Quaker.  I do not even have a Meeting near me that I can regularly attend, but more importantly I need to be a Friend “in daily communion.”  I need to be a “walk cheerfully over the world answering that of God in everyone.”  That is me.  The day to day Quaker is me.  I will find a way to be that Maggie Hess who I am deep in my core.  But I am afraid the poetry is not the right Main Focus.  My main focus needs to be answering that of God in everyone, working for Peace, living simply so that others may simply live, and speaking Truth to power.  I need to contemplate to listen inward and all of these things that I work on when I try to better myself, when I am part of a Friends Meeting.   That is my calling.  That is what I need to do.  

Something is wrong with the idea that I go back to school and I am trying to say no to an opportunity when no single other door is open to me.  But I think the Bennington door, the poetry door, is the wrong door!

I need to put the breaks on the poetry as means of income idea. If nothing else, I have been happy cleaning or gardening for a living and I can find a menial job to sustain me somewhere near a vibrant Quaker Meeting. 

Anna (Anna and Mark: Waldeneffect)
Praise for the Red Ranger
Butchered Red Ranger

A couple of you asked for more information on Mark's first Red Ranger butchering post. In case you missed it, I commented with lots of stats here.

The only additional bit of information is the final weight after butchering all sixteen birds. The lightest bird was 3 pounds 13.5 ounces, the heaviest bird was 5 pounds 12.8 ounces, and the average weight was 4 pounds 13.3 ounces. Most were so big I had to cut the legs off before packing them away in gallon ziploc bags!

I really enjoyed working with this breed, despite it being a hybrid, and I'm pretty sure we're going to give them another go next year. I think we'll start a few weeks earlier, though, so the birds aren't finishing off after the killing frost. And we might also kill them a couple of weeks younger since I suspect the feed-to-meat ratio got considerably worse during their last few weeks of life. The broilers also got a lot lazier about foraging during that period, meaning they were packing away more bad fats and fewer good fats --- yet another reason to kill them young.

But, all told, I now think Red Rangers are a good compromise between the fast growth and good conversion ratio of the Cornish Cross and the better foraging and survivability of the heirloom bird. Right now, if someone asked me which broiler to raise on pasture next year, I'd feel confident saying "Red Rangers all the way!"

Maggie also
Being the Change means Changing

Learn, My Ears

The way to learning is a simple.
Steep path
up an ancient mountain. 
The slope is gradual.
There are places to stop and sit on the way.

Stop and sit.

Ask a question.

The way to learning takes you through 
narrow paths
lined with rhododendron (two kinds) and laurels,
chickadees dart over the path,
a few squirrels play on branches.

Rise and stretch.

and think deep thoughts.

The way to learning comes with fear. 
Darkness might fall before your return,
fall not these widow making trees
but for natural death.
Listen the coyote.

Allow anger.

Memorize this picture.
Pray peace.

The way to learning is every step.
The sun sets on the view at top.
But we shall not forget
the eroding bank
the dew that keeps the lichens live.

Follow me.

Let your mind fly.
Soak in the last sun.

The way to learning is every creek.
The knees creak.
The house at night you enter creaks.
The coves’ creek.
Listen deep.

This old poem reminds me of my Mountain period. Alas, I have allowed comfort too long and now I am realizing that I need to write with more grit again. Poems induced by virgin oak trees were once my neighbors and friends. My living environment ends up occupying me as a poet and human being, so place is at the heart of my plan. I am at heart an ecofeminist poet but I live among Nascar enthusiasts and Republicans who do not believe things of this Earth are finite. I am being reborn now, in terms of my poetry. Gentle, easy butterfly poems get published, but I am throwing gravel from that road against the corporate window, shattering the glass of my personal hesitations and rising triumphant into a place more honest to who I am. It’s not that I don’t like writing easy poetry about beautiful things of earth and sky, but that I need to write a little louder and more risky to tell the honest truth.

Anna (Anna and Mark: Waldeneffect)
Out of sight, out of mind
Erecting a quick hoop

The obvious purpose of quick hoops is freeze protection. However, I also find it useful to split up the garden into use-now and use-later areas by covering up the latter. Usually, out of sight, out of mind is a bad thing in the garden. But when you're stockpiling food for year-round use, a hidden harvest waiting for you in December can be a plus.

Winter garden

To that end, I covered 1.25 rows of kale, one row of lettuce, then about half a row of parsley and a quarter row of mustard greens Tuesday. If Mark's tri-tunnel works out, that'll sock away another row of kale and most of a row of brussels sprouts. A full winter feast! And we have roughly the same area left uncovered for November harvest. This is such a bountiful time of year.

Joey git-annex devblog
day 338 week in review

Monday: Some finishing touches on the pid locking support, and released 5.20151116. After the release I noticed that concurrent downloads didn't always include a progress meter, and made the necessary changes to fix that.

Wednesday: This was a day of minor bug fixing and responding to questions etc. Message backlog got down below 90, not bad.

Thursday: I've been distracted from coding today with an idea of making some new stickers. Hexagonal this time, and even better, composable... So they can show git-annex getting as big as you want. ;)


The design is done, see stickers, and seems to work well, and even better is easy to modify. May find time to get these printed at some point.

Anna (Anna and Mark: Waldeneffect)
Fig dormancy
Goat eating fig

We live on the edge of the fig-growing region, even if you choose a super hardy variety. So it was no big surprise that both of our trees died back to the ground last year despite being swaddled in leaf-filled tarps.

That said, I got to wondering whether my trees might not be a little more winter hardy if I Covered figsmade 100% sure they hit full dormancy before they were covered. So rather than protecting our figs right around the time of our first frost, I instead waited a solid month until every leaf had drifted to the ground. Then I let Artemesia pluck off all of the baby figs to make sure they wouldn't promote fungal growth where I didn't want it. (Yes, my darling doeling really will eat the figs and not the bark...if I stand there with my hand on her leash and mind her.)

Then, finally, I cut back the trees to a few main trunks, built an enclosure to fill with leaves, and topped the whole thing off with a tarp apiece. It's a long shot, but maybe the top growth will survive this winter and give us the larger, early crop rather than just a few late figs in October.

Anna (Anna and Mark: Waldeneffect)
Personality Tests For Your Soil
Personality Tests for Your Soil"Why do I have to wait eight months for The Ultimate Guide to Soil if you've already sent the finished version to your publisher?"
--- various readers

I know what you mean --- I'm impatient too! Unfortunately, paper books take months to format and print.

On the other hand, ebooks are speedy. So I'm polishing a quarter of my soil book at a time and releasing each volume in ebook format. The first one --- Personality Tests For Your Soil --- goes live January 5...and if you snag it during the first week of preorder, the price will be only 99 cents! Here are the links:

Seven weeks instead of eight months --- sounds like a more feasible wait, doesn't it? And this way you can start putting what you learn into effect in time to improve your yields for the 2016 gardening year. Thanks in advance for giving it a read!

Anna (Anna and Mark: Waldeneffect)
Grow your own salad mixture
Mixed greens

I've played around with mixing salad greens all in the same bed before and wasn't entirely pleased with the results. Black-seeded simpson simply trumps all other lettuces in terms of flavor in my opinion, so mixing in other lettuce varieties wasn't a hit. Meanwhile, trying to interplant spinach was problematic since lettuce and spinach grow quite differently.

But this year I randomly sprinkled a thin line of arugula seeds down the middle of my last lettuce bed before scattering the lettuce seeds across the entire surface. Meanwhile, unbeknownst to me, some of the kale I'd let go to seed in that bed had dropped propagules that were waiting for the proper season in which to grow. The result? A perfect salad-in-a-bed --- 90% lettuce, 3% red Russian kale, and 7% arugula. Yum!

Anna (Anna and Mark: Waldeneffect)
Ensuring dry feet
Boot protector

I've been pretty impressed by how well the Kiwi Boot Protector did at rewaterproofing my Wet bootsold boots. But two coats (the recommendation on the can) didn't seem quite enough after years of neglect.

So after a round of soggy digging, I scrubbed the boots off, set them in the sun for a few hours, and sprayed them again. My goal is dry feet even if I take it into my head to go on another eleven-mile hike in the rain. During that adventure, I brought along two spare pairs of socks and six plastic grocery bags and still came home with wet feet. Next time, my boots will stay dry!

Anna (Anna and Mark: Waldeneffect)
When should I cover fall crops?
Potato onions

Quick hoops over tomatoesThe great thing about row-cover fabric is that it's breathable, so you can cover crops even when you're enjoying beautiful sunny days. But there are always so many tasks involved in putting the garden to bed for the winter that I tend to wait to erect our quick hoops until we absolutely have to. But when exactly is that?

The first time to consider erecting quick hoops is just prior to your first frost. If the forecast says you might get a light freeze followed by a week or more of summer weather, it's often worth protecting at least a few tomatoes and peppers in hopes of extending the harvest. Sometimes you get lucky and can eke out summer crops this way until Thanksgiving! But for the last several years, our first frosts have been killing frosts --- down into the mid twenties. At that temperature, a row cover isn't enough to protect tropical vegetables, so I don't even try to cover them up.

Row cover and lettuce

The next most sensitive crop is baby lettuce. While most fall vegetables require planting so early that they're mature and hearty by frost time, leaf lettuce can be eaten as little as month after planting. So I seed our last bed in early October, then protect those seedlings during even the lightest freezes. As you can see in the photo above, I'm sometimes lazy and simply lay a piece of row-cover fabric over this baby-lettuce bed, turning it into a quick hoop later when the other leafy greens need protection too.

Which brings me to the main event --- erecting the quick hoops that allow us to eat leafy greens all winter some years. In this case, it's not so much a single hard freeze that will harm your crops as extended cold weather. For example, Friday night dropped down to 21, but I only saw very minor damage on a few uncovered lettuce leaves and no other harm in the winter garden. On the other hand, once we begin to see freezes every night, it's time to cover up the older lettuce, the kale, and any other leafy greens you want to be harvesting after the winter solstice. I'll probably put up our quick hoops this week just to be on the safe side.

Brussels sprouts

How about brussels sprouts? In the past, we haven't covered these plants at all since my goal is for the plants to produce through November and December and then be eaten up when deep freezes hit in January and February. Some of our plants are running behind schedule this year, though, so I might cover them up and see if we can extend the season. That's where Mark's tipi-tunnel experiment will come into play.

The fall garden produces so much bounty for so little work that I consider it low-hanging long as you get the timing right. So mark your calendars now --- start planting leafy greens in August, cover them in October or November, and your winter meals will look 100% brighter all winter long.

Anna (Anna and Mark: Waldeneffect)
Drying off goats
Goats and barn

Goat owners often dry off their goats two months before the next kids are due...assuming they feel confident milking that long. Alternatively, you can stop milking when you think your doe is getting too skinny or when your fingers start getting too cold. Or, in our case, when you're sure your other doe isn't pregnant and won't need a backup milk source just in case the worst happens.

Goat udder

Since we're now sure that Artemesia doesn't have a bun in the oven, I socked away a couple of quarts of milk for Thanksgiving pies, then started drying Abigail off. She's currently producing a little less than two cups a day during once-daily milkings, so I felt confident that she'd survive the cold-turkey method.

The scientists say that stopping milking all at once is actually the gentlest on your goat since letting her udder fill up without relieving the pressure halts milk production very quickly. In contrast, if you ease that pressure, you're setting back the dry-off process so she has to go through the discomfort all over again. With a medium-to-low producer like Abigail, I don't worry too much that just stopping milking will do harm to her udder, so cold turkey it is.


Actually, in a perfect world, we would have started drying our goat off two weeks ago by downgrading her food supply to simple hay. But, the weather mostly did that for us when it nipped back all of the happy wild foods and reduced our goats' diet to hay plus a bit of daily oats and honeysuckle. I still give Abigail daily concentrates (about two cups of alfalfa pellets plus a cup of butternut squash, carrots, and/or sweet potatoes), though, so I hope that won't gum up the works of her dry-down.

The other factor I took into account when deciding when to stop milking was Abigail's heat cycle. Her milk production always drops by about a quarter when she's in heat, and she cries like the world is coming to an end during that time. I figured I'd doubly depress her and hope she gets over both discomforts fast.

I'll keep feeling her udder every morning in search of lumps or heat that could mark mastitis, but I have high hopes she'll start reabsorbing the milk soon. We'll miss our homegrown dairy. But like most farm products, it's best to enjoy what's currently in season. More brussels sprouts, kale, and lettuce for us!

Joey git-annex devblog
day 337 who needs POSIX

Got the pid locks working pretty easily, as expected.

But then... Detoured into some truely insane behavior of the Lustre filesystem. It seems that Lustre is perfectly happy to let link() succeed even when there's a file there that it would overwrite. Rather than overwriting the file, Lustre picks an even more crazy way to violate POSIX.. It lets there be 2 files in a directory with the same name, but different contents. Has to be seen to be believed:

hess$ ls pidlock
-r--r--r--  1 hess root    70 Nov 13 15:07 pidlock
-r--r--r--  1 hess root    70 Nov 13 15:07 pidlock
hess$ rm pidlock; ls pidlock
-r--r--r--  1 hess root    74 Nov 13 14:35 pidlock  

git-annex's pid locking code now detects this and seems to work even on Lustre. Eep.

I'm clutching my "NO WARRANTY" disclaimer pretty hard though, if anyone wants to use git-annex on Lustre. When POSIX is being violated this badly, it's hard to anticipate what other strangeness might result.

Anna (Anna and Mark: Waldeneffect)
Building a pear terrace
Waterlogged ground

Two years ago, I started dealing with the half of our core homestead that's severely waterlogged. My solution was simple --- build high raised beds that pull the root zone out of the swamp. In two areas, this technique worked like a charm, but the lowest point (our gully) was simply too damp. As you can see in the photo above, the water table stays about five inches below the top of the beds in this area, and crawdads moved in to build tunnels yet closer to the surface. After two years of watching summer crops perish due to wet feet, I decided to move on to plan B.

Retaining wall

We don't have enough sunny spots that we can waste any, so I decided to move all of the good soil out of the gully beds and into one large terrace along the south-facing bank of the gully. In the past, we've had good luck using fence posts and rotting wood from an old house we tore down to make terraces elsewhere, so I replicated the methodology in this spot. The wood will eventually rot away, but by then tree roots will be holding the soil in place.

Filling a terrace

There was just enough soil in the gully beds above water level to fill the terrace. Actually, there's still quite a bit of rich dirt left behind, but I'll have to wait until the dry season to excavate it. Wet dirt is heavy! Then, once that's done, I'll either plant the denuded gully area in cattails to create a wetland or try to dig it deep enough to make a little pond.

Tree terrace

In the meantime, my focus remained trained on the new terrace. I had a good length of woven, 10-year plastic leftover from summer experiments, so I laid it along the side of the gully behind the new terrace to keep this area weed-free. I suspect if I want the plastic to really repel weeds for a decade, though, I'll need to block the sun somehow. Perhaps creeping phlox (the local choice for this application) or thyme planted in holes in the weed barrier will suffice?

Baby pear tree

For now, though, the terrace is good enough as-is. So I set out three dwarf pear trees that I grafted this past spring, watered them in with black-soldier-fly leachate, then kill mulched the babies with cardboard and straw. Here's hoping the saplings get their feet under them quickly and grow!

Joey git-annex devblog
day 336 pid locks

Been working today on getting git-annex to fall back from nice posix fcntl locks to pid locks when the former are not supported. There will be an annex.pidlock to control this. Mostly useful, I think for networked file systems like NFS and Lustre. While these do support posix locks, I guess it can be hard sometimes to get some big server configured appropriately, especially when you don't admin it and just want to use git-annex there.

Of course, the fun part about pid locks is that it can be pretty hard to tell if one is stale or not. Especialy when using a networked filesystem, because then the pid in question can be running on a different computer.

Even if you do figure out that a pid lock is stale, how do you then take over a stale pid lock, without racing with anther process that also wants to take it over? This was the truely tricky question of the day.

I have a possibly slightly novel approach to solve that: Put a more modern lock file someplace else (eg, /dev/shm) and use that lock file to lock the pid lock file. Then you can tell if a local pid lock file is stale quickly locally, and take it over safely. Of course, if the pid is not locked by a local process, this still has to fall back to the inevitable retry-and-timeout-and-fail.

I hope the result will work pretty well, although git-annex will not support as fine-grained concurrency when using pid locks. Will find out tomorrow when I run today's code! ;)

Anna (Anna and Mark: Waldeneffect)
Humanure experiment
Biochar humanure

Last week, I started dipping into another source of garden fertility --- humanure. During our first application, we applied waste that had been composting for eight months, and I felt it could have been a bit more decomposed. So this time around, we waited a full fifteen months and the humanure was rich and beautiful. In fact, if I hadn't known where it started, I would have been tempted to plunge my fingers into the compost and smell it like any other rich earth.

The other change was that I tossed the year's biochar down the hole last fall too. The idea there is to more perfectly recreate terra preta, which merged human waste, charcoal, and other types of debris. It's hard to tell which part of the terra-preta process produces the near-magical results, but it certainly can't hurt to inoculate my biochar with humanure.

Humanure experiment

This year, I also decided to run a side-by-side experiment to see how the humanure compares to chicken-manure bedding from the broiler coop. To that end, I laid down newspaper and cardboard as a kill layer around three rows of front berries, then sprinkled half of each row with humanure and half with chicken manure. I'll be curious to see which berries taste sweeter come June.

Anna (Anna and Mark: Waldeneffect)
Espaliering for frost protection
Young espalier

Our high-density apple experiment has been 80% successful. The technique has allowed me to grow lots of varieties in a small space, tricking them into blooming at a young age. The only problem? Due to our frost-pocket location, those blooms get nipped most springs, so we don't get any fruit.

So I'm veering off in another direction with my next round of experiments. Espaliered trees are trained to be two-dimensional and relatively short, so it's much more feasible to cover them during late-spring frosts. The only question is --- is MM111 rootstock too vigorous for espaliering? I went ahead and bent last year's graftees down along wires and am prepared to deal with lots of watersprouts if they pop up. Perhaps keeping fertilization to a minimum and summer pruning relentlessly will do the trick.

Joey git-annex devblog
day 335 catching up with the bug reports

Some work today on improving the standalone linux builds and the git-annex-standalone.deb. Also, improved fscks's behavior when asked to fsck a dead repo, and fixed some places in the assistant where configured ssh-options were not used. Backlog is back down to 95.

Anna (Anna and Mark: Waldeneffect)
Late planting in the cold frame
Cold frame

I had big plans when we made our cold frame this spring. But the plans got derailed by realizing that the house-side location makes the bed much shadier than plants like. Plus, I forgot to add the cold-frame to my garden spreadsheet, so its contents didn't get planted when I seeded winter greens in the main garden.

But when I pulled out the tomatoes, I figured I might as well toss down some lettuce, kale, and arugula seeds. So I'll get to see how late-planted greens do in the cold frame as opposed to those planted at a regular time and shielded by quick hoops in the sunny mule garden. Soon we'll see if the glass is enough to let these tender morsels mature during winter's cold.

Anna (Anna and Mark: Waldeneffect)
Lawn cropping
Oats and alfalfa

Colin Seis and Darryl Cluff are the modern experimenters who have revived the concept of pasture cropping in Australia. Basically, the idea is to grow grains in existing pastures without tilling, presumably by first grazing or cutting the pasture grasses very low during their dormant season, followed by drilling grains into the stubble. The annual grain is able to grow faster than the sleepy perennial grasses, but the latter survive well enough to regrow once the grain produces seed and is harvested.

I have neither excess pastures nor a wish to grow vast amounts of grain. However, our goats adore oats as a fall and early winter forage plant. And I also wondered whether planting oats in some unused corners of our core homestead would push back the weeds well enough to let me seed other goat-friendly plants there in later seasons. So in early to mid September, I begged Mark to weedeat some experimental areas to the ground, I sprinkled on oat seeds (along with a bit of alfalfa), then I scattered a thin layer of straw on top to keep birds at bay. Finally, I sat back and I waited.

Three experimental areas

To my surprise, my experiment appears to have worked! Now, granted, the oats have grown at about half the rate of those in well-loved garden beds, which means the goats turn up their noses half the time at the lawn-grown oats. But if we don't get a serious cold spell in the next month, I suspect the slower oats will get stemmy enough to strike Abigail's fancy and that she'll be glad of the late forage. (If I had it to do over again, though, I'd plant the lawn oats a week earlier than the garden oats rather than a week later.)

Chicks eating oats

And we've actually already fed one round of animals via lawn cropping. Our Red Ranger broilers started expanding their foraging runs into the oat pasture by the time they were four or five weeks old, which just happened to coincide with the oats being at their most tender and succulent. As a result, the grains closest to the brooder were pecked down nearly to the ground, although the plants quickly bounced back once the broilers were moved to a grownup coop. I don't know whether its the extra sun this spot gets or the addition of chicken manure, but these oats are growing twice as well as the bed I photographed earlier in a no-chicken, shady spot.

The big question now is --- what will these lawn cropped areas look like come spring? Will the grasses pop back up, or will the ground be bare enough to try seeding some soybeans for soil nitrogen and summer goat protein? I'll keep you posted!

Anna (Anna and Mark: Waldeneffect)
Artemesia's first fall heat

Grazing goats"Which one is supposed to be pregnant?" Mom asked when she came by a week ago.

"Artemesia," I replied, pointing to our plump little doeling.

My mother, who knows very little about goats but plenty about pregnancy smiled indulgently. "No."

Saturday, Mom was proven right when Artemesia finally came into heat. I'd started waving the buck rag in her face every morning four days prior, which may or may not have jumpstarted the estrous cycle. No matter the cause, Artemesia seemed uninterested in grazing Friday, Saturday morning her normal tail wag looked a lot more like flagging when I pressed down on her butt, and Saturday afternoon mucous finally appeared on her vulva. Then she started yelling --- she was raring and ready to go.

With 20/20 hindsight, I'm now thinking that our doeling's loss of fat in late summer was due to a mild parasite infestation rather than to using extra calories to feed an unborn kid. At the time, I knew that was one of the possibilities, so I dosed both girls with garlic and squash seeds and also increased Artemesia's rations a bit. Now she's as plump as ever, verging once again on slightly too fat.

ArtemesiaI expected to be disappointed if no kids came popping out in early November, but I'm actually relieved. The cold spell we experienced a few weeks ago pointed out two things that were probably obvious to the rest of you about winter milking. First, your fingers will freeze, which is a no-no for keeping my carpel tunnel in check. Second, Abigail's milk became considerably less creamy during a rainy week when she was subsisting mostly on hay, suggesting that winter milk might not be the holy grail after all.

But spring milk --- I definitely don't want to miss out on that! So it's time to get back on the ball about tracking down a buck to provide stud service. Since the chances of me finding a mate for Artemesia today are slim to none, that means her sex life is going to complicate my first experience hosting a full family Thanksgiving. I can see the explanations to my grand-niece and -nephew now. "Sorry, Auntie Anna has to go make sure her goat has a good time...."

Anna (Anna and Mark: Waldeneffect)
Cardboard deer
Cardboard deer

Last year, the acorns fell on the hillsides and the deer stayed out of our valley. But we've had lots of deer sightings this fall already. So I'm hoping to snag one of the three does who have been occasionally making their way into the garden.

First step --- pay attention to their patterns. Due to goats, my usual spot (which allowed me to "hunt" from the couch) no longer sees much deer activity. Instead, I've been spotting the nibblers mornings and evenings on the other side of the chicken pastures when I go to check on our flock.

Friday, Mark helped me set up a cardboard deer around where I've been sighting the real ones. Then I blew through a bunch of bullets to remember that I need to aim a little above and to the right of my sight and that I do better if leaning against something solid (like the coop) to brace myself against the gun recoil.

All told, I bagged that cardboard deer a little over half the time. Here's hoping the real event goes as smoothly.

mark (Anna and Mark: Waldeneffect)
Testing a dynamic microphone on a boom pole
testing home made boom pole

I did some tests today to see if a Dynamic microphone could be used in place of a condenser microphone for a boom pole application.

The results say it's a bad idea. Not loud enough for the distance needed even when the levels are boosted.

I'm using a Zoom H4N to record synchronized sound with a classmate's DSLR camera.

Joey git-annex devblog
day 334 too easy

Finally concurrent progress bars are working! After all the groundwork, it was really easy to add, under a dozen lines of code.

I've found several bugs while testing commands in -Jn mode, and the rest of today was spent fixing them. Two of them affected concurrent git annex add; the worst narrowly avoided being a data loss bug.

Anna (Anna and Mark: Waldeneffect)
Cat supervisor
Tethered goats

I always save my very worst, nitpicky weeding jobs for when Kayla's coming over. That bed on her left? I'm growing strawberries there, not chickweed...supposedly.

Mulching strawberries

We chatter away, but still manage to get a lot done...although apparently not enough to keep our feline supervisor happy.

Grumpy cat

"Hey, is this a hen party or a work session?" asks Huckleberry. He cracks the whip...then sits down on the newspaper so we have to expend twice as much energy to work around him.

Thanks for braving the yellow jackets, the ornery cat, and the enthusiastic goats, Kayla! We'll look forward to seeing you again next week.

Joey git-annex devblog
day 333 cylons

Spent my time today porting concurrent-output to Windows, fixing a tricky problem with error handling/thread joining with git-annex -J, and improving the concurrent state handling to support the git command queue. Got add/addurl working in concurrent mode. No concurrent progress bars yet.. maybe tomorrow?

Anna (Anna and Mark: Waldeneffect)
32 critters
Dog in the briers

Red RangersI set out with the goal of taking a photo of each animal on our homestead. But I got sidetracked about halfway through, so no shots of our comatose cats (2), our busy bees (uncountable hundreds), or our happy hens (11).

Our dog usually gets top billing, but she wasn't particularly keen on playing along today. She'd had her head in a brier patch barking at a snake or rodent for about two hours, and she told me she couldn't stop working for the sake of fame. So I'm afraid all you get is a Lucy butt.

Our broilers, though, were more amenable to the idea since they're nearly mature and tend to nap through most of the afternoon. So far, I'd say Red Rangers seem like a good compromise between the scrawny heirloom broiler and the lazy Cornish Cross. They do eat like crazy, with sixteen birds going through about fifty pounds of feed per week. But they're also energetic enough to walk up the hillside away from their coop to scratch through the least from time to time. The real test will come in two weeks when we kill and pluck our first bird, but for now I'm happy with how Red Rangers act on the "hoof."

Goats picking through bedding

Tethered goatMeanwhile, in the goat barn, our ladies were busy picking through the fresh bedding I spread after stealing their soiled straw for the blueberries. Previously, I tethered our herd outside, which is always a bit of a puzzle. Where can I attach their leashes so the goats will have plenty to eat (which at this time of year means oats and honeysuckle), where they can't get too tangled, where they're close enough to see each other but not to get their leashes tied together, where they can't eat my perennials, and where Artemesia doesn't feel like she's so far away from me that she has to be on high alert rather than chowing down? My original hillside option was a dismal failure, so we compromised on the honeysuckle-coated fenceline right beside the blueberry patch.

Not counting the honeybees, that's thirty-two lives depending on our daily attention. Some days, it feels a bit like I'm running a kindergarten.

Joey git-annex devblog
day 332 concurrent output at long last

Got git-annex using concurrent-output today. It works beautifully. Since the library is new, git-annex has to be explicitly configured to use it, so it'll be a while until this is available in regular builds.

There are no progress bars yet in concurrent output mode, but that will change soon.. Probably tomorrow.

Anna (Anna and Mark: Waldeneffect)
Indian Summer is time to mulch perennials
Colored blueberry leaves

Indian Summer is the perfect time to weed, feed, and mulch woody perennials for the year. We've already had a week of killing freezes, so topdressing with compost now won't tempt our bushes and trees to put out new growth that will get nipped by winter cold. On the other hand, perennials' roots are still reputed to be quite active at this time of year...and will stay active even longer if sheltered with some insulative mulch.

Winter berry patch

So while the weather is warm enough to make pushing my fingers into rich, black dirt a pleasure, I'm weeding the perennials as fast as I can. But I spared a moment to spread rye seeds and a light coating of straw in areas where I'd ripped out winterkilled rabbiteye blueberries. The soil there is chockful of organic matter due to years of topdressing, and I haven't quite decided what will eventually fill the empty beds.

What's next? I've still got quite a bit of weeding left to get the perennials in order. But after that I'll block off sprouting weeds with a thin layer of newspaper, then hold that down with deep bedding from the goat or chicken coop. A similar round of kill mulching (anchored by pulled weeds that time) in early summer made the fall weed-and-feed expedition much simpler. Here's hoping the winter round holds up as well.

STM Region contents

concurrent-output released yesterday got a lot of fun features. It now does full curses-style minimization of the output, to redraw updated lines with optimal efficiency. And supports multiline regions/wrapping too long lines. And allows the user to embed ANSI colors in a region. 3 features that are in some tension and were fun to implement all together.

But I have a more interesting feature to blog about... I've added the ability for the content of a Region to be determined by a (STM transaction).

Here, for example, is a region that's a clock:

timeDisplay :: TVar UTCTime -> STM Text
timeDisplay tv = T.pack . show <$> readTVar tv

clockRegion :: IO ConsoleRegionHandle
clockRegion = do
    tv <- atomically . newTVar =<< getCurrentTime
    r <- openConsoleRegion Linear
    setConsoleRegion r (timeDisplay tv)
    async $ forever $ do
        threadDelay 1000000 -- 1 sec
        atomically . (writeTVar tv) =<< getCurrentTime
    return r

There's something magical about this. Whenever a new value is written into the TVar, concurrent-output automatically knows that this region needs to be updated. How does it know how to do that?

Magic of STM. Basically, concurrent-output composes all the STM transactions of Regions, and asks STM to wait until there's something new to display. STM keeps track of whatever TVars might be looked at, and so can put the display thread to sleep until there's a change to display.

Using STM I've gotten extensability for free, due to the nice ways that STM transactions compose.

A few other obvious things to do with this: Compose 2 regions with padding so they display on the same line, left and right aligned. Trim a region's content to the display width. (Handily exported by concurrent-output in a TVar for this kind of thing.)

I'm tempted to write a console spreadsheet using this. Each visible cell of the spreadsheet would have its own region, that uses a STM transaction to display. Plain data Cells would just display their current value. Cells that contain a function would read the current values of other Cells, and use that to calculate what to display. Which means that a Cell containing a function would automatically update whenever any of the Cells that it depends on were updated!

Do you think that a simple interactive spreadsheet built this way would be more than 100 lines of code?

Joey git-annex devblog
day 331 concurrent-output preparations

Today started with getting a release of git-annex out, to deal with a new version of the aws library, which broke the build. That also added support to the S3 remotes for creating Google Nearline buckets, although only when git-annex is built with the newest version of the aws library.

Rest of the day (and most of the past weekend) I've been working on the concurrent-output library. Today I finished making it support multi-line regions, and color, and even fully optimised its console updates to use minimal bandwidth. So, it's got everything git-annex can possibly need to display those troublesome concurrent actions. Will be starting to make git-annex use it soon!


List of feeds:

  • Anna: last checked (25 posts)
  • Anna and Mark: Waldeneffect: last checked (2882 posts)
  • Joey: last checked (101 posts)
  • Joey chatter: last checked (1420 posts)
  • Joey git-annex devblog: last checked (309 posts)
  • Joey: blog: last checked (16 posts)
  • Jay: last checked (25 posts)
  • Dani: last checked (21 posts)
  • Errol: last checked (28 posts)
  • Maggie too: last checked (11 posts)a
  • Maggie also: last checked (27 posts)
  • Tomoko: last checked (74 posts)
  • Jerry: last checked (28 posts)