Skip to content

Hallam Chronicles Posts

A new MacBook (Day 1)

A week ago Monday, just 30 minutes after Apple concluded their Unleashed event, I had filed the requisite paperwork for a replacement work computer. My office manager approved the request nearly immediately, forwarding me the Apple tracking information that I’ve been refreshing daily since.

When I joined Mattermost almost four years ago, I explicitly asked for a 2015 MacBook Pro, wary of the keyboard troubles and general issues from the newer laptops available at that time. Despite being eligible for a replacement for some time now, I’ve been holding off, hoping Apple would get their act together and ship a laptop inspired by the success of that 2015 model instead of the madness of the past half decade.

Today, that laptop arrived: a 16″, 2021 MacBook Pro, with an M1 Pro chip, 32 GB of RAM, and 1TB SSD.

But it’s been so long since I’ve owned a new computer, that I’ve nearly forgotten how I arrived at my custom configuration. This blog post, aimed at the more technical reader, is a summary of just that. Perhaps it will also serve as a useful reference for my future self.

Startup

All new Apple computers have a predictable startup routine, prompting for a language, WiFi password, and how to configure various knobs and permissions No, I don’t want to enable “Hey Siri” on this work laptop. Yes, I’ll allow Apple to glean anonymous information about my computer and share crash reports with other developers. Yes, it’s ok to enable location support. And since I often rely on handoff between my other Apple devices, I opt to configure this computer with my personal Apple ID.

I double check my username conventions on my old work laptop — just the first name — and configure my user account accordingly. I’ll setup a profile picture later.

Crucially, I enable FileVault. This feature transparently encrypts the contents of the hard drive using a key derived from my system password. While unlikely to be stolen, encryption gives me peace of mind knowing that the files therein would remain inaccessible to any would-be-thief.

Homebrew

Before installing anything else — not even my beloved iTerm2 — I begrudgingly launch Terminal and install Homebrew. I rely on this open source package manager for most of the system-wide applications I install on my Mac, including that better terminal experience.

Installing Homebrew automatically install the requisite XCode developer tools, and I smile remembering just how much faster this step is on the impressive M1 Pro chip. Paired with my 1Gbps fibre-to-the-home connection, I think my biggest bottleneck is actually my Ubiquiti equipment. Time to think about a Dream Machine and upgraded WiFi 6 access points.

System Configuration

While in the terminal, I realize my system name is a descriptive but boring BMP16inch2021. I navigate to System Preferences > Sharingand attempt to reuse the same macbook-mattermost name from the old laptop next to me. The two computers realize the conflict, and force me to pick a non-conflicting name for my network. I eventually rename the old computer, knowing it will be erased and kept as a personal device thanks to Mattermost’s generous Hardware Buy Back Policy.

I pause to think about all the other settings I want to configure here — keyboard repetition, trackpad options, sounds — but decide to avoid doing this by hand and see if I can finally codify these settings in a more programmatic fashion.

Thinking the system name requires a reboot to take effect, I restart the computer for the first time — about 15 seconds from start to finish — and realize I haven’t even bothered to plug it in yet. Despite all the background activity from syncing iCloud Photos and Documents, I’m sitting at a comfortable 82%, down from 91% when I first opened it.

Hmm, the system name isn’t changed. After a rabbit-hole of Google searching yielding conflicting advice, I decide to run:

> scutil –-set HostName macbook-mattermost

Voila, no system restart required. Funny how much I’m tripping over the really basic stuff!

Dotfiles

To avoid an excess of manual configuration, I version control a myriad of scripts and config files to share between my devices. I need to get these configuration files onto this machine, but first I need to remember how I configured the custom encryption module I’m using with Git. I think it was gcrypt? Checking the old computer:

> git remote -v
digitalocean	gcrypt::rsync://root@digitalocean:gcrypt/dotfiles (fetch)
digitalocean	gcrypt::rsync://root@digitalocean:gcrypt/dotfiles (push)
origin	keybase://private/lieutdata/dotfiles (fetch)
origin	keybase://private/lieutdata/dotfiles (push)

Aha, yes. There’s the old Keybase configuration using their free, encrypted Git support, but also my custom gcrypt configuration I setup after Zoom bought Keybase.

I copy the upstream URL in hopes that handoff works between Big Sur and Monterey. Oh well, something else to investigate (or probably ignore). I brute force type it instead. I know this won’t work yet — not least of all the custom hostname — but I’m hoping it will give me a clue on what to setup next. Oh, interesting, copying from Monterey to Big Sur works without a charm. Good thing, too, since I haven’t installed 1Password yet and don’t want to type a long password to get into this blog on the new computer.

> gcrypt::rsync://root@digitalocean:gcrypt/dotfiles
Cloning into 'dotfiles'...
git: 'remote-gcrypt' is not a git command. See 'git --help'.

Ah, remote-gcrypt. Homebrew to the rescue? It helpfully suggests git-remote-gcrypt, and a few seconds later I try again to discover my next challenge:

> git clone gcrypt::rsync://root@digitaloean:gcrypt/dotfiles
Cloning into 'dotfiles'...
/opt/homebrew/bin/git-remote-gcrypt: line 403: gpg: command not found
gcrypt: Repository not found: rsync://root@digitaloean:gcrypt/dotfiles
warning: You appear to have cloned an empty repository.

Ah, gpg. Homebrew to the rescue! (You can see why this tool gets installed first!) This one takes a few minutes to download and install all the dependencies, so I launch Apple Music and play a favourite album from The Corner Room. Not expecting much from the built-in speakers, I’m briefly startled by the volume and clarity of the opening guitar strums of Psalms Songs, Vol. 1. Nice! Removing the empty dotfiles from the last failed attempt, I try again:

> git clone gcrypt::rsync://root@digitaloean:gcrypt/dotfiles
Cloning into 'dotfiles'...
gpg: directory '/Users/jesse/.gnupg' created
gpg: keybox '/Users/jesse/.gnupg/pubring.kbx' created
gcrypt: Repository not found: rsync://root@digitaloean:gcrypt/dotfiles
warning: You appear to have cloned an empty repository.

Ok, that’s not… terribly helpful. But I’m guessing it’s the custom .ssh/config hostname? The one configured in the repository I’m trying to clone? Replacing it with the real value prompts for a ED25519 key fingerprint validation, confirming my suspicions. Of course, I don’t expect to be able to authenticate yet without the proper credentials, but gcrypt once again fails to succeed but leaves me with an empty repository. Time to crack the knuckles and just get across this hurdle.

> ssh-keygen -t ed25519 -C "jesse@mattermost.com"

Yay, handoff seems to have started working from Monterey to Big Sur, and I can copy the resulting public key to my old laptop and off to the ~/.ssh/authorized_keys on the host I use for this repository. At this point, I realize I could have probably saved time by just cloning the repository directly from the old machine across the network, but hey: this is fun!

No more issues authenticating to the host, but it looks like there’s something else I need to remember about how to setup gcrypt:

> git clone gcrypt::rsync://root@<the real host name>:gcrypt/dotfiles
Cloning into 'dotfiles'...
gcrypt: Decrypting manifest
gpg: public key decryption failed: No secret key
gpg: decryption failed: No secret key
gcrypt: Failed to decrypt manifest!

Time to read the git-remote-gcrypt documentation. Time to generate a GPG key — mostly using the defaults, but adding a comment to clarify what this key is used for. I copy the key id back to the old laptop, and attempt to authorize that key on the digitaloean host:

> git config remote.digitalocean.gcrypt-participants "<old key id> <new key id>"
> git push digitalocean master
gpg: error reading key: No public key

Ugh, now I’ve broken it locally. Fortunately, it’s easy to revert:

> git config remote.digitalocean.gcrypt-participants "<old key id>"                                                                                                               > git pull
gcrypt: Decrypting manifest
gpg: Signature made Tue  2 Nov 17:10:25 2021 ADT
gpg:                using RSA key <...key...>
gpg: Good signature from "..." [ultimate]
Already up to date.

Ok, so I think I know why I just had a single key configured. Let’s just copy that key to the new machine for now.

> gpg --armor --export <key id> | pbcopy
> gpg --armor --export-secret-key <key id> | pbcopy

After each of the above commands, I imported the public and then private key onto the new machine — magically syncing thanks to Handoff:

> pbpaste | gpg --import

We’re making progress! (Reminder to self to either clean up that newly generate GPG key, or better yet, figure out how to support multiple keys properly.)

> git clone gcrypt::rsync://root@<the real host name>:gcrypt/dotfiles
Cloning into 'dotfiles'...
gcrypt: Decrypting manifest
gpg: Signature made Tue  2 Nov 17:10:25 2021 ADT
gpg:                using RSA key <...key...>
gpg: Good signature from "..." [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: <...key...>
gcrypt: Remote ID is :id:<...remote id...>
gpg: WARNING: "--secret-keyring" is an obsolete option - it has no effect
Receiving objects: 100% (1356/1356), 350.50 KiB | 20.62 MiB/s, done.
Resolving deltas: 100% (735/735), done.
gpg: WARNING: "--secret-keyring" is an obsolete option - it has no effect
Receiving objects: 100% (81/81), 40.87 KiB | 40.87 MiB/s, done.
Resolving deltas: 100% (28/28), done.
gpg: WARNING: "--secret-keyring" is an obsolete option - it has no effect
Receiving objects: 100% (3/3), done.
gpg: WARNING: "--secret-keyring" is an obsolete option - it has no effect
Receiving objects: 100% (9/9), 11.60 KiB | 11.60 MiB/s, done.
ssh: connect to host <the real host name> port 22: Connection refused
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: unexplained error (code 255) at /System/Volumes/Data/SWE/macOS/BuildRoots/6b362bc7f6/Library/Caches/com.apple.xbs/Sources/rsync/rsync-55/rsync/io.c(453) [receiver=2.6.9]
gcrypt: Packfile 4fd09ebb03d8f0a4b27c9ccf6551dd65c728e357f6960d45729e2651ebc04d91 does not match digest!
fatal: early EOF

Hmm, gcryptic again. Especially the part about failing to connect. Maybe I have some rate limiting in place, and since I still don’t have my .ssh/config installed, I’m not setup to persist SSH connections. Lets’ do that by hand for now:

host *
  ControlMaster auto
  ControlPath ~/.ssh/ssh_mux_%h_%p_%r

Interesting, trying to connect in a new terminal shows the same connection issue — definitely rate limiting! Waiting a minute and then connecting succeeds this time:

> git clone ...
> ls dotfiles
Library		autoenv		dsl		fonts		homebrew	infrastructure	setup.sh	synergy.conf	unifi		upgrade.sh	vimgo_setup.sh

Hurrah! Wow, that took almost two hours, and I’ve barely got anything setup.

Let’s move that hand-configured ~/.ssh directory out of the way before I see if setup.sh still works.

> mv ~/.ssh ~/.ssh_manual
> cd ~/dotfiles
> ./setup.sh

Hmm, lots of spurious Git cloning issues:

...
lease make sure you have the correct access rights
and the repository exists.
fatal: clone of 'https://github.com/powerline/fonts' into submodule path '/Users/jesse/dotfiles/fonts' failed
Failed to clone 'fonts'. Retry scheduled
Cloning into '/Users/jesse/dotfiles/.tmux/plugins/tmux-logging'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
...

Hmm, maybe restarting my shell to get the newly installed configurations?

/Users/jesse/.fzf.zsh:source:13: no such file or directory: /usr/local/opt/fzf/shell/key-bindings.zsh
 ~  ls
zsh: no such file or directory: /usr/local/bin/gls

Yikes, I clearly haven’t tested this before. Let’s get brew install coreutils fzf out of the way. Looks like it needs a manual invocation of/opt/homebrew/opt/fzf/install. Yes to fuzzy auto-completion and key bindings. No, I don’t want to update my shell configuration files — I’m assuming those are part of my dotfiles — I hope!

Woot, no errors on starting a new shell! Back to Git — right, I need to import the SSH key into my GitHub profile:

cat ~/.ssh/id_ed25519.pub | pbcopy

Back to the old laptop and over to https://github.com/settings/keys. There we go, setup.sh successful. Is vim working?

> vim
[coc.nvim] "node" is not executable, checkout https://nodejs.org/en/download/
Press ENTER or type command to continue

So, almost. I guess we need to brew install node. No, wait, I think I want brew install nvm so I can juggle multiple versions. Hmm, despite a successful install, I see:

> nvm
zsh: command not found: nvm

I recall setting up some aliases in .zshrc to avoid pre-loading nvm until I needed it. Is ~/.nvm there?

> ls ~/.nvm
zsh: no such file or directory: /usr/local/bin/gls

Hey, I thought I fixed that with brew install coreutils. I guess there’s something in my old laptop’s config that’s not yet here. Weird, looks like I only did this for my old Bash install?

export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"

Oh well, let’s update .zshrc. Nope. Oh, I never modified $PATH before and just hard-coded an old path to /usr/local/bin/gls in an alias. I wonder how long this has been broken? Let’s undo that and keep the $PATH approach, while still customizing ls:

alias ls="ls --color -h --group-directories-first"

Fixed! But nvm is still not found — I’m going to solve this tomorrow. But at this point, the myriad of terminals on mys screen is killing me — brew install tmux to the rescue!

> tmux
[exited]

Ugh, something is failing inside my tmux configuration. I do vaguely recall this failure — brew install reattach-to-user-namespace. Voila!

tmux finally installed and running

Looks like my Powerline shell configuration isn’t working yet, though. I think I need to tell iTerm2 about the configuration settings?

A thing of beauty:

Yes, I’m excited about my terminals.

Battery Checkin

It’s getting late, but I wanted to check on battery performance so far. It’s down to 72% after about 2.5 hours of straight usage, including a brief foray into authorizing Apple TV and testing the HDR playbook and spatial audio of Spies in Disguise. Stunning!

Let’s see what I can accomplish in my spare time on Day 2!

Leave a Comment

The Third Wave

When it comes to Covid-19, it can be hard to discern the truth between the never-ending daily news briefings and the unending avalanche of conspiracy theories.

When measuring the cases, the beginning of the third wave is obvious:

But when measuring deaths, the curve is suspiciously flat:

In the past few months, the case count has been used as a leading indicator of another wave of deaths. But this wave is now three weeks old, and the death counts are still dropping. One explanation might be the (single dose) vaccination of some six million Canadians — mostly seniors:

If this trend continues, it’s hard to see how the government can continue to justify ongoing lockdowns, mask mandates, and social distancing. To all politicians: you have a unique opportunity to squash the conspiracy theories and restore trust with all Canadians by shifting away from the narrative of fear. Case counts alone are insufficient without deaths.

Shall we give it two more weeks — for real this time?

1 Comment

2020 Photoshoot

Far too much time has passed since our last family update. I suspect many of you have found this year as disruptive to your normal routines as we have.

While God, Himself, does not change, we certainly have since our last family photoshoot! A big thanks to our friends here on the island for helping capture this snapshot of our lives.

1 Comment

Operation Chocolate Milk

Hershey. Cocoa. Lindor. Rolo. Chocolates? Yes, but also the names of the various dogs Charity and her family owned in her youth.

Since meeting a breeder last year from Nova Scotia, we have been inching towards purchasing a dog for ourselves — specifically, a Chesapeake Bay Retriever. Earlier this year we paid a deposit against a litter for pickup in April. We began to speak in code around the children: “We need to plan our chocolate run.” “Have you heard from the chocolatier?” Our pup was born on February 28th.

Puppy #3, around 6-7 weeks old.

Then came covid-19. And provincial border restrictions. While we had no trouble ordering everything we needed for the puppy from critterspet.com, it seemed impossible to get to the little guy. Charity and I resigned to the possibility that it may be months out, or simply never happen at all.

All the supplies we would need, but no way to get get the puppy!

I had been working with the breeder through various options when I got an email on April 24th: there was a window of opportunity to deliver the pup to the Confederation Bridge! I decided to keep the news of this opportunity to myself and surprise both Charity and the children. If it fell through, it would be one fewer disappointment.

Our breeder wanted to deliver that Tuesday, April 28th — but we found ourselves in a mandatory 14-day quarantine that prohibited our leaving the property. Why?

Some months back, we made plans with close friends selling their home in another province to move this way to stay with us for a season. In light of covid-19, this was obviously not the ideal time to move: we weren’t even sure they would be allowed to enter the province. Their successful arrival at our home in mid-April was nothing but an act of God — and a great story for another time.

Unfortunately, we all had to hunker down for 14 days after their arrival, precluding us from meeting the breeder at the bridge. Fortunately, we are blessed with many incredible friends already on the island, one of whom kindly agreed to pick up the pup on our behalf and deliver him to our home.

How to explain to Charity why these friends were swinging by? As it turns out, we were running low on goats milk during our isolation, and I asked them if they would be willing to deliver that at the same time. We codenamed the plan, “Operation Chocolate Milk”.

It was a stunning success.

Sheer enthusiasm!

We’ve spent the last two weeks acclimatizing to the latest addition to our family, but everyone is in love with “Professor Friedrich Bhaer” (named after a character from Little Women). Of course, we go about calling the little guy “Bear”.

And then there were 7!

2 Comments

Smelt

For the past several weeks, we have observed an unusual number of seagulls (and eagles) in the area. At first, we thought the slowdown from Covid-19 had driven the seagulls inland from some other source of food. It actually turns out that the West river is full of smelt! If you look carefully, you can see just how densely packed these fish are in the river:

Just before the Conservation Officers shut down fishing access to the river as part of increased social distancing measures, we were able to catch some for ourselves!

But the most exciting part was yet to come! While I fought back slightly queasy feelings at the idea of killing, cleaning, and eating a creature I had just caught, the children had little hesitation getting their hands dirty while we FaceTimed with Pappa.

After chopping off their heads and tails, gutting their insides, and soaking them in milk overnight, we coated them with batter and fried them up for lunch the next day:

I confess that while the food was delicious, it was still a touch unsettling to have only recently held these creatures alive in my hands. Seeing their spines on the pan didn’t help!

I’m grateful that my children will grow up with a unique perspective on the matter!

Leave a Comment

Loss & Faith

Winter is tough. It always seems to be either wet, cold, or downright frigid. Sickness is always around the corner. Overcast and shorter days make summer feel so very far away.

It’s so very easy to feel depressed. Sometimes it’s just coping with the little, day-to-day tasks. Other times, it hits you like a fully loaded transport truck doing 160km/h down the highway! Your whole world appears to be shattered beyond any hope of repair.

February was a tough month. Christopher’s beloved hen, Violet, died unexpectedly. It happened that Jesse fed the hens that evening as we came home from piano lessons. Many tears were shed with Christopher over this loss. Understanding this pain, a kind friend gave Christopher one of her own, older hens as a replacement. We named her Amber Rose, and it seemed like a recovery was in order.

Jesse and I had made arrangements to travel to the Bahamas together as part of his annual work conference. It had been over 10 years since we travelled together without our children, and needless to say: we were both looking forward to the trip! Close friends volunteered to care for our children, and I worked feverishly to plan, pack, and handoff our school schedule for the week. (Ambleside Online is a terrific resource, but it’s a ton of work to teach someone else to take over for three different years of Charlotte Mason-style studies!) Let’s just say, this mamma was looking forward to a wee holiday, even though I hadn’t a clue what I was going to do with myself for the first few days with Jesse in meetings 😉

Five days prior to our departure, the boys become ill: fever, diarrhea, and some vomiting. It seemed like our plans were unravelling. But then their symptoms began to clear up. Our dear friends still offered to take them — risk of sickness and all! Could we still go?

During that same week, the temperatures dipped below -30 (no need for a scale to disambiguate at that temperature). Once again, Jesse was feeding the chickens, and this time discovered Flower and Amber Rose dead. Tulip seemed to be near death herself, but we nurtured her back to health by wrapping her in a blanket and setting her near the pellet stove. (Thank you, James Harriott!) We sought to ease Christopher’s newfound sorrows, but without shielding him from the reality of life with animals. Nature can be a harsh teacher.

The day prior to our planned departure, Anne caught whatever the boys had had. Even though I trusted our friends to care for Anne through this sickness, I simply was not comfortable leaving her in that state. We made the last-minute decision for Jesse to go by himself.

Tulip died the very next day. It was like she had given up the will to live. It felt like so much loss in such a short time. To add insult to injury, two days after Jesse departed, all symptoms of the sickness vanished and everyone felt perfectly well. To say I felt a little gypped at the missed opportunity would be an understatement.

Tears are welling in my eyes as I write this. I don’t fully understand why God prevented us from travelling together. But I do know that He never stopped providing. He sent friends to encourage me and family in Christ to build me up. He reminded me that:

… My grace is sufficient for thee: for my strength is made perfect in weakness …

2 Corinthians 12:9

Jesse and I both had to hold on to God tightly through this time. Not because we were apart — I’m used to being home with the children through his many work trips. Rather we had both set our hearts on going together and reconnecting without the day-to-day responsibilities. But it all fell through. We both felt a deep loss, and frankly a fallen countenance. Yet I was reminded of what Scripture says,

Trust in the LORD with all thine heart; and lean not unto thine own understanding. In all thy ways acknowledge him, and he shall direct thy paths.

Proverbs 3:5-6

This disappointment was tough. Yet in the hardship, we found encouragement by relying on God’s goodness. He is indeed able to bear every burden. (Psalm 55:22, Matthew 11;28-29, Philippians 4:6-7)

We praise God for His blessings despite the circumstances. Instead of having to bear the cost of an unused flight ticket, we found ourselves able to cancel my ticket, reschedule Jesse’s ticket to come home earlier, and cancel our extended hotel stay with a full refund — praise the LORD! I admit to not “feeling” grateful at the time, but looking back: what a blessing!

Two days after celebrating Jesse’s return, we received a phone call that his Pappa had died unexpectedly while wintering in Jamaica. This newfound sadness was compounded by the knowledge that Pappa had actively rejected Jesus Christ throughout his life.

Since his passing, we have found ourselves surprised, saddened, and downright confounded. And we find our potential travel plans to attend his funeral frustrated by none other than this Covid-19 virus. Yet God is good, and allows nothing into our lives that does not work together according to His will.

On the bright side, time change has begun — though the change should be altogether abolished in my humble opinion! With the sunshine starting “earlier”, and the days getting longer, the depression that is winter seems to be thawing.

The long and the short of my tale is this: trouble can seem to be everywhere, and loss and depression can take hold of us unexpectedly. But when these doubts and fears arise, I must choose to look to God and simply cry,

… Thy will be done, in earth as it is in heaven.

Matthew 6:10

Leave a Comment

Even Chickens Disagree Sometimes

Soon after arriving home from our trip to Ontario in October, we picked up our hens from friends who had kindly looked after them for us along with their own. Christopher had so been looking forward to reuniting with his hens, and expressed much joy and delight to have them again!

We took the opportunity to grow our flock of three Bard Plymouth Rocks — named Flower, Tulip, & Violet:

Flower, Tulip & Violet

to include two Ameraucanas. Meet Daisy (white) and Iris (black), each hatched in the spring of 2019.

Daisy
Iris

Iris will probably lay light blue or green eggs, and Daisy the usual brown. Christopher has wanted a hen that lays blue eggs ever since receiving one in our our very first dozen eggs purchased on the island.

In addition to Iris and Daisy, we adopted two older hens. Christopher named the Rhode Island Red hen Poppy, and the black hen of unknown breed Lily. Unfortunately, we never got a photo of these two.

With the winter fast approaching we decided it was a good time to move our hens from their outdoor run into the shed to shelter from the elements. The shed had already been used for this in the past, having a small door by which the hens could wander outdoors, weather permitting.

But with the tools and other supplies in the shed, we needed an inside door to isolate the hens! At first, we used a large cardboard box to keep the doorway blocked off. It worked — sort of — but we often found the hens outside their assigned area. It had to be easy for Christopher to use as he kept up the chores of feeding and watering our feathered ladies.

So, Christopher and Mommy took to getting a plan in place and a door made. It became a sort of handcraft for the term, with his learning how to draw a blueprint with proper measurements, and then follow the blueprint in building the door.

We had previously received a pallet of pellets, and decided to reuse the wood for this project. A trip to Home Depot and some chicken wire and hardware was everything we needed to get going!

Christopher worked to disassembled one side of the pallet. With only a little help required, he used a crowbar and hammer to loosen and lift the boards, and then removed the nails. Anne got involved with the project and helped as well.

After long hours over several days, Christopher was ready to move on to cutting two side braces for the sides of the door. Mamma used the circular and chop saws to help here. Measuring twice, cutting once, and finally assembling, Christopher put it all together! I could see his timidity with using the power tools fade as he gained experience.

Out for a dry fit!

Back to the workshop to add the cross bar, chickenwire, and hardware:

It’s not a perfect match to our blueprint, as we decided to eliminate the brace bars given the strength of the pallet boards… or maybe becaue Christopher was “so tired” of the project.

We’re so proud of Christopher’s determination and willingness to work hard to make a safe place for his hens. He’s looking forward to future opportunities to use the power tools in building things for his hens!

Now, back to the hens themselves.

The pecking order was established quite quickly: Violet ruled the roost, and then came Tulip, Flower, Poppy, Lily, Iris and Daisy. But we began to observe that our youngest hens — Iris and Daisy — were quite literally been hen pecked by everyone else. Lily and Poppy, though, were particularly brutal, as they seemed to be mean spirited about the whole thing.

We made sure they had enough space while feeding to avoid crowding, but still Poppy and Lily would attack Iris and Daisy. We even tried holding them in different places during feeding to keep them apart, but the pecking continued well afterwards.

Maybe it just needed more than a week for everyone to settle in, so we decided to try holding out. But one Saturday morning Anne came running into the house frantic and saying, “Iris is bleeding!! She has blood down her beak and on her comb!” Mamma and Christopher ran out quickly.

Sure enough: Iris’s comb was bleeding, courtesy of Lily and Poppy. Christopher was so upset.

We took Iris inside and wrapped her in a towel to help keep her calm and immobile. We used a cold compress to stop the bleeding — doing this multiple times that day — all the while googling to figure out what in the world we were supposed to be doing.

We learned that the best thing to do was to separate the “bad hens”, as Alfred and Christopher had started to call them. While waiting for Iris’s comb to heal before bringing them back, we identified Lily as the primary aggressor. Even with twice the space and just one other hen, Lily had plucked the feathers off of Poppy’s neck and would chase her away from their feed and water.

We decided to return the two adopted hens to their owners. There really wasn’t much sadness saying goodbye to those hens, even though we knew they’d end up as broth soon after!

Since reducing our flock back to five, Iris’s comb has healed completely, and we haven’t had an issue with our Plymouths and Ameraucanas. Christopher is looking forward to the spring and the longer daylight hours and the first of hopefully many more eggs this year.

Moral of the story? We’re likely to avoid older hens as we continue to grow our flock.

Leave a Comment