Rain Harvest

I’ve been working on a new project to collect rainwater. Call me crazy, but getting huge plastic tanks for this is a long-time dream come true. Here’s what I did:

  • Identify an appropriate spot for a 300-gallon IBC tote (a cube container with 3.5-feet long sides). It should be under a rain gutter downspout that gets good flow, and somewhat out of view to reduce the eyesore (ie do not block windows).
  • Obtain two IBC totes from Craigslist. Request delivery (these won’t fit in an SUV). Make sure they are food-grade/food-safe and did not formerly contain toxic chemicals. Water collected in these totes will be used to irrigate vegetable gardens and provide drinking water for chickens. Seller confirmed they are from a dishwashing business and are safe to use.
  • Clean the inside of an IBC tote (or ask seller to do so) with a pressure washer. Empty out the water. Make sure the spout works.
  • Obtain & use a T30 star driver bit to unscrew and remove the top two metal bars of the cage. DeWalt bits are good quality. T30 star bolts are standard on IBC totes. You can look for the letter “T” on the bolt to check.
T30 bolts on tote & T30 driver bit (largest 6-pointed star bit in most bit sets)
  • Remove plastic tote from the metal cage.
  • Set newspaper or cardboard under the plastic tote. Wear a mask to reduce inhalation of paint fumes. Paint the plastic tote so that it is opaque, which will inhibit algae growth. Look for lighter areas & thoroughly coat with paint until light doesn’t shine through. Using “Rustoleum Comfort Grip” or a similar product is optional but makes extended spray paint sessions significantly more comfortable for the hands.

    I used 3 spray paint cans of “Rustoleum 2x Satin Finish” in color Colonial Red to fully coat one tote, and the red color will make the tote blend in slightly with the red brick of the house. I also got the same spray paint in “Claret Wine” (a slightly darker, purpler tone) for the second tote. This one requires 5 cans to fully coat. Who knew some colors take more quantity to cover a surface than others.
  • Let the opaque painted tote cure and dry under a covered, sheltered area for 3-4 days. The longer the better.
  • Set up cinder blocks around the base of the IBC tote’s designated location. 6 blocks set edgewise (so holes are facing up, not the sides) sufficiently form the perimeter. The IBC tote spout is very low so raising it up on blocks will give height clearance to fill a jug and let water flow down hose by gravity better.
  • Insert plastic tote inside of tote cage. Set up tote on top of cinder blocks. Even with 2 people, the tote is heavy!
  • Cut wire mesh screen (the kind used for window screens) and place over the top opening of the tote. Cut a little bigger than needed. Secure with the ring-lid or bands. This screen is fine enough for most debris, and mosquitos cannot enter through the holes and lay eggs in the collected water. (The biggest enemy will be algae. An occasional pressure wash inside will help).
The screen would be better under the black cap, not temporarily secured with rubber bands which will get brittle from the summer sun. The black cap was too tight to unscrew for the time being.
  • Set up rain gutter downspout to flow into the tank through the screen. Pour a jug of water down the spout to test that the downspout is positioned well, secure, and water flows into the screen.
  • Set up an overflow system in case the tote fills up. For example, drill a ~1″ hole on the side, near the top, with a hose through this hole that goes out several feet away from the home and foundation.
  • The IBC spigot is very large and does not fit standard hoses. Set up a coupler and standard hose-size brass spigot.
  • Enjoy collecting and using rainwater! It’s better than city-treated water for watering plants because it has dissolved oxygen and is not treated with chemicals like chlorine and fluoride. This is better for the garden. Total cost including tools was about ~$336 and there are city rebates available. After the initial set up, it also means a free supply of water!
Rainbow after a downpour. Fort Knox Chicken Box in construction in the background.

Nuggies

Before I met my hens, I decided that one would be named Nugget. The most golden-brown one of the flock was a natural fit. I later realized she is the alpha-hen: Top of the pecking order, grunts when someone gets too close while she’s eating, and is by far the largest, fattest, and grandest of them all. She quickly teaches hens their place and hers. Her walk is a sort of waddle, perhaps due to her grandiose size. I started to feel another name arise: Big Nugget, who is now Nuggo.

The Trader Joe’s “Incredi-Sauce” sign reminds me that a more endearing version of “Nugget” exists. Nuggo…how do you feel about “Nuggies”?

Wriggling Grub

“One of my favorite unexpected perks in keeping chickens is the daily lessons they offer in mindfulness.

Chickens live in the moment, thrilling in the conquest of a wriggling grub, squawking in triumph at the delivery of an egg, resting contentedly in a dust bath. They don’t worry about whether they spent too much time in that dust bath, or if they squawked too loudly about that egg, or if they ought to have squirreled away that grub for another day.

They rise with the sun and get to the business of living with a vivaciousness, curiosity, and deliberation we could all learn from. While you may be setting out on your own chicken-raising adventure seeking nourishment for your body, I predict you just might find some for your soul, too.”

from “Keeping Chickens” by Ashley English

This expresses well why I feel content digging trenches and unearthing worms these days!

Stop immediately, not after

Something in that boggles me is why range(a, b) in Python includes the a value, but not b. In math, range(a, b) implies neither a nor b are included – the parentheses are exclusive. Square brackets – range[a, b] – are inclusive. So why is Python’s range(a, b) part inclusive, part exclusive? It doesn’t follow the math rules I’d expect.

I did some research and came across this snippet:

Python range is inclusive because it starts with the first argument of the range() method, but it does not end with the second argument of the range() method; it ends with the end – 1 index. The reason is zero-based indexing.

https://appdividend.com/2021/03/24/python-range-inclusive/

Now I have a lead, but still want to understand: How does zero-based indexing affect range inclusion? Here’s an explanation that made things *click* for me.

I think it may help to add some simple ‘real life’ reasoning as to why it works this way, which I have found useful when introducing the subject to young newcomers:

With something like ‘range(1,10)’ confusion can arise from thinking that pair of parameters represents the “start and end”.

It is actually start and “stop”.

Now, if it were the “end” value then, yes, you might expect that number would be included as the final entry in the sequence. But it is not the “end”.

Others mistakenly call that parameter “count” because if you only ever use ‘range(n)’ then it does, of course, iterate ‘n’ times. This logic breaks down when you add the start parameter.

So the key point is to remember its name: “stop“. That means it is the point at which, when reached, iteration will stop immediately. Not after that point.

So, while “start” does indeed represent the first value to be included, on reaching the “stop” value it ‘breaks’ rather than continuing to process ‘that one as well’ before stopping.

One analogy that I have used in explaining this to kids is that, ironically, it is better behaved than kids! It doesn’t stop after it supposed to – it stops immediately without finishing what it was doing. (They get this 😉 )

Another analogy – when you drive a car you don’t pass a stop/yield/’give way’ sign and end up with it sitting somewhere next to, or behind, your car. Technically you still haven’t reached it when you do stop. It is not included in the ‘things you passed on your journey’.

User dingles – https://stackoverflow.com/questions/4504662/why-does-rangestart-end-not-include-end

It makes more sense now. Python’s range(a, b) starts iterating at a and stops at b – right when it hits b, so that it does not include it.

Onward with learning, kids!

Where the Hobbies Happen

“You may have a lot on your to-do list and you may have a list of goals, but they are not the same thing.

Everything can be separated into three layers.

Layer 1 is the necessities. You breathe. You eat. You sleep. (think Life Below Zero)

Layer 2 includes the actions you perform over and over again to sustain a normal life. …from putting gas in the car to showering to taking out the trash to going to work. I would consider these the chores or habits that happen over and over again. Many of these things are so integral to your routine that you do them once a day or when they are needed without thinking much about them.

Layers 1 and 2 include everything that must be accomplished by you or someone in your household. They are not exciting, but they are, for the most part, necessary.

Layer 3 is the bonus stuff. It’s the more creative, more life-enriching (as opposed to life-sustaining) stuff that we choose to add to layers 1 and 2. For the most part, goal-setting and the majority of goals you will probably set will fall into the layer 3 category.

Layer 3 is where the creative experiments, challenging work projects, and magic are made. These are the things that come after the day-to-day activities, things that you want to add to your life because they make you feel happier and give you something to look forward to. Layer 3 is where the hobbies happen. You don’t have to do the layer 3 items, and that’s what makes them exciting goals to work around.

So how do goals and to-do-list items relate?

Layer 3 (the goal-setting portion of your activities) is made up of to-do-list items. All of your big goals can be broken down into smaller, more manageable steps, and this is an essential part of the goal-setting process. If you don’t break big goals up into actionable items [things you can cross off after an hour or less of working], they serve as nothing more than wishes and will not be accomplished.

From “Big Dreams, Daily Joys” by Elise Blaha Cripe (pages 21-22).

Stop that mail!

Do you like getting mail advertisements? I do not. I seek to minimize the amount of time spent and paper wasted in the form of grocery flyers, Valpak coupons, and insurance or credit cards offers. That means stopping it from flowing in through the mail.

Here are a few free resources to stop receiving marketing mail in Seattle-area. I used these at my previous address and it considerably reduced ads mailed to me to almost zero. I’ll be using these again each time I move:

Say I receive a Macy’s catalogue for the previous resident, I look up the company’s customer service online contact form or email. I write that I do not wish to receive mail anymore to the address. It’s tedious, but it’s like combing lice – at first there’s a lot, but there’s less and less with each pass of the fine-toothed comb. It’s worth it.

Fort Knox Chicken Box

Last night I watched Life Below Zero, where subsistence fishers and hunters carve out life in Alaska. Just one episode makes my upcoming project of building an enclosed, walk-in chicken run and secured coop seem much less daunting than it did two days ago. This coop run in this video is my model. I call this project “Fort Knox Chicken Box”.

A pigeon-sized hawk attacked my littlest hen last week and severed her neck. I grieved, then resolved to secure the roofless chicken run. I’m chipping away at the daunting fear with the passage of time, research, watching run build videos, procuring tools, and exploring our premises to see what tools and scrap wood the previous resident left behind. I’m one shovel and YouTube video in. Measurement and wood to come. 50-foot hardware cloth roll and pneumatic staple gun on the way.

I noticed that people with an unenclosed, open-air (roofless) chicken run:
i) often have a dog trained to guard the chickens during the day from hawks, weasels, etc.
ii) accept a non-zero mortality rate of their flock. One book says 5% each year.

In the mean time, I am that guard dog, supervising the hens’ free ranging until it’s their bed time.

This is an ambitious project, but I want the hens to roam safely, and to learn construction along the way rather than getting on Carolina Coop’s 4-month-long wait list for someone else to do this.

Steps I will take:

  1. Measure desired perimeter of enclosed run. Divide border into about 6-8 sections. Mark corners with stones or upright sticks. Mark where door will be positioned.
  2. Measure each section length. These will determine the lengths needed for 2×4 horizontal beams to go about 3-feet up the side and around the top (to hold the roof).
  3. Set up string line around border, anchored beyond stone markers so they don’t interfere when digging holes at the markers. Use extra cotton twine on hand. (Optional: Use leveler to ensure string line is flat.)
  4. Obtain wooden posts. 4″x4″, about 7 feet tall. They will be buried 1 feet and make a 6 foot walk-in height.
    Obtain “quick mix” concrete and a large tray for mixing.
  5. Obtain or find 2×4″ wood pieces around the premises, and cut to correct length in step 2.
  6. Mark depth on wooden posts that they will be buried.
  7. Apply waterproof stain or primer + stain/paint to all wooden posts and side pieces.
  8. Dig holes where there are markers.
  9. Set posts into holes. Check that horizontal section length still matches step 2.
  10. Mix concrete in tub. Can use rake.
  11. Shovel/scoop concrete into holes. Line up posts against the string line.
  12. Check vertical alignment with a leveler.
  13. Use string line and visually check that they are aligned.
  14. Let the concrete dry and set according to instructions.
  15. Install horizontal wood mounts on the posts along top and middle. Mount on corner sides for the corner posts, and on opposite sides for the side posts.

Next steps will involve hardware cloth on the walls and along the floor, choosing roof type and installation, and the entry door. Stay tuned.

To cluck or not to cluck

I’ve been coding! Like the slow erosion of a river forming a canyon, I am steadily pecking away at Python to become a better programmer. Here is a lil project I did today. Why chickens? I’ll explain in a future post. Stay tuned! Bok bok bok!

# Magic 8 Ball - Ask a question, reveal an answer.

import random

name = "Heeju"

question = "Should I get hens this weekend?"

answer = ""
answer_2 = ""

# First question random answer generation
random_number = random.randint(1,10)

if random_number == 1:
  answer = "Yes - definitely."
elif random_number == 2:
  answer = "It is decidedly so."
elif random_number == 3:
  answer = "Without a doubt."
elif random_number == 4:
  answer = "Reply hazy, try again."
elif random_number == 5:
  answer = "Ask again later."
elif random_number == 6:
  answer = "Better not to tell you now."
elif random_number == 7:
  answer = "My sources say no."
elif random_number == 8:
  answer = "Outlook not so good."
elif random_number == 9:
  answer = "Very doubtful."
elif random_number == 10:
  answer = "Don't rush it. Give it some time."
else:
  answer = "Error (number outside of range)"

# Second question random answer generation

random_number_2 = random.randint(1,9)
if random_number_2 == 1:
  answer_2 = "Yes - definitely."
elif random_number_2 == 2:
  answer_2 = "It is decidedly so."
elif random_number_2 == 3:
  answer_2 = "Without a doubt."
elif random_number_2 == 4:
  answer_2 = "Reply hazy, try again."
elif random_number_2 == 5:
  answer_2 = "Ask again later."
elif random_number_2 == 6:
  answer_2 = "Better not to tell you now."
elif random_number_2 == 7:
  answer_2 = "My sources say no."
elif random_number_2 == 8:
  answer_2 = "Outlook not so good."
elif random_number_2 == 9:
  answer_2 = "Very doubtful."
else:
  answer_2 = "Error (number outside of range)"


if question == "":
  print("You didn't ask a question. Please ask one!")
elif name == "":
  print(question)
elif name != "":
  print(name,"asks:", question)
else:
  print(name,"asks:", question)


print("Magic 8-ball's answer:", answer)

print("Is this truly random?", answer_2)

The great reveal:

The Gift of Litigation

With the shipping fiasco and all, it may be hard to get your hands on hard goods. Wouldn’t it be nice to get something made in the good ol’ USA? Well, the United States is by and large a service economy. And services don’t have to make an overseas trip on a cargo ship.

You’ve heard about spa treatments. But that’s kinda played out. This holiday, how about a law treatment? Lawyers provide all sorts of services that people want. They can draft wills. They can help you close on a home. They can help you sue people you don’t like. Give the gift of litigation this holiday season.

From good ol’ Planet Money by NPR:
https://www.npr.org/2021/12/13/1063733799/planet-moneys-supply-chain-holiday-extravaganza

“Unfortunately almost 20, 30 years”

The other day, I needed a taxi ride home. I wait in line at the airport taxi queue.

A yellow Prius pulls up. The driver is a large, quiet man who offers to stow my luggage in the trunk and closes the passenger door.

As I settle in, I notice the shotgun seat is pushed all the way up and angled to give maximum legroom for the back-right seat passenger. This reminds me of Hatim, the taxi driver from Sudan who drove me to Chicago airports in wee hours for many years to catch Monday red-eye flights. The muscles around my eyes still cringe upon recalling those ungodly 4:30am Monday wake-up alarms.

Back to the yellow Prius.

I tell the taxi driver my address and a nearby landmark and he sets out. No GPS, no phone. In fact his phone is tucked face-down into a cup holder, not mounted by the dashboard like most drivers do.

The ride down the highway is quiet.

It’s midnight and the city is asleep, string lights twinkling by buildings and no one walking outside. Once we near the landmark, I ask him to turn right on the next block.

“Taylor Avenue?” he asks.
Somehow, he knows the name of this residential street without referencing a map. I’m intrigued.

“How long have you been taxi driving?”

Unfortunately, almost 20, 30 years.”

It’s the start of an interesting story that doesn’t finish this ride, but I hope continues in the future. He gives me his card and says to text him for future rides, any time of day or night.

A reliable, courteous driver who can give rides like Hatim “any time at all — 2am, 3am, 4am, any time OK!” and who knows the city like the back of his hand — now that’s a driver worth treasuring.