Categories
Gardening Local reporting Nature

Conifers along Miller Ave at Mack School

In 2021 I helped win a grant from the Washtenaw County Conservation District for planting native trees at Mack School (where my kids attend Ann Arbor Open). We planted the trees in 2022. Some didn’t survive, but the ones that did are looking decent. Here is a row of eastern white pines (pinus strobus) we planted in 2022, seen today in 2024:

A row of pine saplings planted along a busy street
Note the spruce at the end of the row…

They are hanging in there! I didn’t water them at all this year and they survived nonetheless. Some are only two feet tall, the biggest is close to five feet. I’ve read that once established they grow quickly and I look forward to that. Eventually the trees should provide a good visual and sound barrier against car traffic on Miller. In the spring I plan to mulch them again and maybe upsize the protective cages they are outgrowing.

Here’s a picture I took in fall 2022, when I noticed the trees – much smaller then! – were shedding yellow needles:

A one-year-old pine tree with yellow needles on the middle of its trunk and green ones elsewhere

I was concerned at first but learned this is normal behavior. White pines shed their two-year-old needles. These older needles are typically on the inside of the canopy or middle of branches.

I was removing some Glechoma hederacea (“creeping Charlie”) from around one of the little pines at drop-off this morning when a woman approached me and introduced herself as a long-time neighbor of the school. She pointed out the spruce tree at the end of the row of pines and told me that her former neighbor planted it. It had been her neighbor’s Christmas tree that year, I guess with the root ball intact, and she got approval from the school to plant it.

She estimated that her neighbor moved away a dozen years ago and planted the tree four years before that. Now children play in its shade. Look closely at the picture above and you’ll see kids have dragged a variety of sticks and stumps under its canopy to pretend with.

It was a nice reminder as I tended to these saplings of what they may eventually become. Not all of my trees will survive, but some will flourish and be enjoyed by all kinds of creatures. I’m grateful to the former neighbor who gave her Christmas tree another life.

Categories
Biking DIY How-to Making Repair

DIY Upholstered Seat Cushion for Yuba Spicy Curry Cargo Bike

I got my first Yuba Spicy Curry bike in 2017 and have been riding one ever since. It is the long-tail bike seen in many of the photos of Things I’ve carried on a cargo bike and The biggest thing I’ll ever tote on a bike.

This year both of my weathered passenger seat cushions split open (Yuba has entirely changed the seat cushions they sell since I bought mine, and I hear the new ones are more durable). So I undertook my first foray into upholstery, refashioning my old and busted Soft Spots into one double-length cushion, a couch of sorts.

My coworking friends at Workantile have many interesting skills. One of them is a hobbyist upholsterer! With her tools and know-how it only took an hour or two, using materials we already had lying around.

First I measured and cut a piece of plywood to cover the full tail of the bike. It turned out that the foam from the old seats was still in good shape, so we reused it. We stuffed some foam scraps between the two old blocks of foam:

the foam cores of the two seat cushions, laid next to each other
All the foam, resting on the plywood base
Packed tight and held in place by special spray adhesive
Categories
Books

The secret ending of Naomi Alderman’s The Future

I finished reading The Future and for some reason I kept going, even past the second-to-last page at the back describing the book’s fonts … after which was a final page with a cryptic note. I wonder if anyone reading the book on Kindle or audiobook finds it? I was surprised at myself that I’d read the back sections.

The rest of this post contains spoilers for the book.

Categories
Gardening ruminations

The SEO garbage search result that sent me over the edge

This post is a spiritual successor to LLMs are good coders, useless writers.

After getting steadily worse for years, the experience of searching the web just hit a new all-time low. I clicked on the top non-ad search result and encountered the worst word-salad nonsense I’ve ever seen. It was too perfect not to share.

I had let the small patch of lawn in my yard get knee-high. My reel mower can’t cut grass that tall, so I broke out the old weed whacker I got on the cheap at ShareHouse. It immediately ran out of the cutting string that it came with, so I found myself at the hardware store shopping for a refill.

I didn’t know if I should replace only the string or swap out the whole head. So, standing in Lowe’s, I whipped out my phone and searched it up: “restring toro weed trimmer”

(I winced when my kids started saying “search it up,” but I’ve since come to appreciate it. It avoids centering a corporation, unlike “I Googled it.” And I wasn’t using Google: the DuckDuckGo browser on my phone is, sadly, Microsoft Bing in disguise).

The first non-video result was from “Backyard Lord.” I’ve included screenshots in case that link dies, as it sure ought to.

Looking at it now, the “Pro Tips for Easy Trimming” suffix reeks of LLM garbage, as does the domain “Backyard Lord.” But the listed steps seemed like what I wanted. I clicked on it.

The page started off okay:

But that was the end of the plausible content. The next block was just keywords and mentioned a tennis racket??

The next block contained the prompt for the LLM! All highlighting mine:

From there it becomes free-association insanity. There’s a step-by-step guide … but each step discusses a totally different industry! Step 1, preparation, is about starting a business:

Step 2 is about restringing a guitar:

Step 3 is empty and Step 4 drips with irony as it talks about strings in the context of LLMs:

Categories
Local reporting

A three-eyed creature haunts the streets of Ann Arbor

I first met this adorable creature in Ann Arbor in April 2022. It was painted on a post at Packard & Arch at the tiny Forsythe Park. It offered good (albeit saucy) advice:

I’m glad I photographed it because it was soon gone. A week later the creature appeared a few blocks south, on the side of the Argus Farm Stop. This message was purely encouraging:

I didn’t see it again after that. Until this month, when the creature returned to a couple of spots on Madison St.

Here it is beaming on a planter at Madison and Main:

And finally on an electrical box near Washtenaw Dairy, on Madison west of First:

Radiant! Does anyone know what it’s saying? The same red and white paint is used in both pieces a block apart, perhaps they were created in the same evening.

I find these impressive, both creatively and technically. Is that paint? Marker? I know little about street art but I appreciate it when it’s well-done. I’m glad the creator still calls Ann Arbor home – it’s a pricey place to make it as an artist – and continues to share this creature with us.

This kind of thing is ephemeral and feels worth recognizing and documenting. My dad played poker with a guy who made a hobby out of photographing antique ads painted on sides of brick buildings around Chicago. By the time he published a book with his decades of photos (Fading Ads of Chicago), half of them had faded away or been covered up, painted over, knocked down.

If you have seen this creature elsewhere, send in your photos or tip me off to where I can spot it in the wild.

Categories
Climate change Gardening Nature ruminations

Relating to natural life today

In the last month I took a family vacation to the Great Smoky Mountains and read two novels about logging: Ron Rash’s Serena and Annie Proulx’s massive Barkskins. Here are some resulting thoughts about trees, creatures, and the people who inhabit their world.

The natural world in America is nothing like what it was

We fall into the trap of thinking that climate change is unprecedented in its destruction of the natural world. But it has a clear predecessor in the deforestation of the period c. 1600-1960, documented in Barkskins, during which nearly every tree in America was cut down, every forest razed, and most wildlife extirpated. The first two sections of Barkskins start with Europeans trapping all of the beavers, minks, and martens in the northeast. Only after the furs are gone do they move onto logging.

In Serena, the logging barons clear-cut the Smokies before selling the land to the government for a national park. Serena is fiction, but this part of the story is true. In the Smokies, we hiked to Avent Cabin, a structure built around 1850. It contains a picture showing its setting around 1920, when it sat in a clearing: all of the surrounding trees had been logged. Now the cabin is again back in the woods, as the regrown trees approach a century of age.

Of course, letting the land go wild again does not recreate the complex webs of life that existed before Europeans arrived. Keystone species like the American chestnut and the passenger pigeon are extinct and megafauna like moose and bear – characters in both novels – have limited presences. The city nature areas and state parks I visit are a sad joke compared to what they held five hundred years ago. At the end of Barkskins, a character muses about “dark diversity,” the species whose absences from an ecosystem can be measured. There’s a lot of that here.

Both novels do a good job painting the picture of natural splendor that was destroyed forever. As a Michigan resident, I particularly appreciated the Breitsprechers’ trip to survey the endless, towering white pines of this state. My family has stopped at Hartwick Pines State Park on our way up north, a tiny postage stamp of old-growth forest that escaped logging. It’s the closest we can get to experiencing what was once here.

Despite being once despoiled, the trees and wildlife in the Smokies were still beautiful by modern standards. This lifted my spirits. There’s something encouraging about the fact that we’re a hundred years past the low point for trees in the Smokies and moving in the right direction. When it comes to logging, at least.

Categories
Cooking Recipe

Easy Vegan Chili with TVP

This chili is easy to make, healthy, and my kids all like it, so I cook it frequently in the colder months. It’s also vegan and gluten-free.

The recipe evolved over the years (from a mediocre starting point) and I typically just cook it from memory. But a couple of people have asked for this recipe and I’d probably be more consistent if I cooked it to spec each time. I recently took notes as I made a particularly good batch and behold, a recipe.

There’s one lesser-known ingredient: TVP, which stands for textured vegetable protein. This recipe works fine without it but the TVP takes it to the next level. I keep TVP in the pantry but acknowledge it’s a divisive ingredient that some people dislike. Wikipedia notes, “Because of its relatively low cost, high protein content, and long shelf life, TVP is often used in prisons and schools, as well as for disaster preparedness.”

Without further ado, chili. It’s not spicy (unless your chili powder is powerful) so that everyone in my family can enjoy it. I like it hot so I just add hot sauce or chipotle powder to my bowl. This makes a big batch, around 8 servings. It’s good leftover and freezes well.

In short, saute the vegetables and cook a bit longer in tomatoes with spices until everything is soft. Then add beans and broth, cook a while, add TVP, cook a little more. Serve over thick, crumbled-up corn chips (Ann Arbor Tortilla Factory is the best, Fritos is fine too).

As in my lentil soup, smoke gestures at the meat that some might be expecting. Feel free to increase or modify the spices, this is a starting point.

Easy Vegan Chili with TVP

Serves about 8. I’m separating the ingredients and cooking steps so that my recipe software can parse this post correctly.

Ingredients

  • 3 tbsp vegetable oil
  • 1 red onion, diced
  • 1 yellow onion, diced
  • 4 cloves of garlic, diced
  • 2 bell peppers, chopped
  • 1 can (14 oz.) diced tomatoes
  • 1/2 tsp chili powder
  • 1/2 tsp smoked paprika –
  • 1 tsp dried oregano
  • 1 tsp ground coriander
  • 2 tsp ground cumin
  • 4 oz or less tomato paste. If I have an open jar of tomato sauce in the fridge, I use it up here instead of the paste. An entire 6 oz. can will make it too tomato-ey.
  • 5 cups cooked or canned beans. I use a mix of black, kidney, white, and/or pinto beans depending on what’s on hand.
  • 2 quarts vegetable broth
  • 1 cup textured vegetable protein (TVP)

Directions

  • Dice the onions and garlic and saute in oil.
  • Add the peppers and saute another minute or two.
  • Add the can of tomatoes and cook until peppers are soft, between 5-10 minutes.
  • Add the spices and tomato paste, stir.
  • Immediately add the beans and broth, stir.
  • Cook until beans are about done. If they’re already soft, this can be as little as couple minutes after it comes to a boil. Adjust seasoning as needed – it will probably need salt.
  • Add the TVP. TVP sponges up liquid, which makes it a good hack for drying out a too-watery dish. Here that means you may need to add more water or broth if the TVP has soaked up too much liquid after cooking for a few minutes.
  • Check seasoning and acid one last time. It may need a teaspoon of vinegar for brightness.

This is all tolerant to variation. Use different kinds of onions, beans, spices, add bay leaves, etc. Just get the overall consistency and spicing right.

I was recently tempted into making the Serious Eats Chili Paste and I have some cubes of it frozen. I added some to the latest batch of this chili and it turned out very nice. I don’t often have time for such fanciful cooking but if this recipe is too simple for you and you want to work harder for more flavor, that would be a good twist.

Long live the bean soup project!

Categories
ruminations Software Work Writing

LLMs are good coders, useless writers

My writer friends say Large Language Models (LLMs) like ChatGPT and Bard are overhyped and useless. Software developer friends say they’re a valuable tool, so much so that some pay out-of-pocket for ChatGPT Plus. They’re both correct: the writing they spew is pointless at best, pernicious at worst. … and coding with them has become an exciting part of my job as a data analyst.

Here I share a few concrete examples where they’ve shined for me at work and ruminate on why they’re good at coding but of limited use in writing. Compared to the general public, computer programmers are much more convinced of the potential of so-called Generative AI models. Perhaps these examples will help explain that difference.

Example 1: Finding a typo in my code

I was getting a generic error message from running this command, something whose Google results were not helpful. My prompt to Bard:

Bard told me I had a “significant issue”:

Yep! So trivial, but I wasn’t seeing it. It also suggested a styling change and, conveniently, gave me back the fixed code so that I could copy-paste it instead of correcting my typos. Here the LLM was able to work with my unique situation when StackOverflow and web searches were not helping. I like that the LLM can audit my code.

Example 2: Writing a SQL query

Today I started writing a query to check an assumption about my data. I could see that in translating my thoughts directly to code, I was getting long-winded, already on my third CTE (common table expression). There had to be a simpler way. I described my problem to Bard and it delivered.

My prompt:

Bard replied:

Categories
ruminations Writing

Finish The Book, Sam

Another installment in what I’m realizing is a series of book-update blog posts.

In November 2021 I wrote half of a novel. In another six months I’d finished the rough draft. Then in November 2022, I resolved to edit it so that someone could read it. Then I said I would get it done by the end of June. I missed that deadline, but finally “finished” this fall! Two finishes so far.

In October I shared it with a few beta readers. There was good news and bad. The good news: it is not terrible! Most of the readers – my friends, granted – finished and enjoyed it.

It is, of course, rife with problems. Most of them I can chalk up to the ignorance of a beginner. For instance:

  • The book opens with my protagonist, Dani, waking up. I now realize that’s a deadly cliche.
  • Dani’s emotional growth arc needs work. I failed to plan that aspect of the novel before writing it.
  • Beta readers universally disliked my handling of a small romance subplot. They are right.

This is, in one sense, the worst news. Were the manuscript irredeemably bad, I would be done. Actually finished. But I believe there’s a chance it could become a good, solid book … with a lot more work. And it would be a shame to waste that chance. Argh. I was so glad to be “done” and finally hand it to people!

It has been satisfying to discuss the world that only lived in my head with others who have now visited it. They had good questions and ideas for making it better. Now I need to steel myself and commit to re-entering that world, not leaving until I’ve shored up its weaknesses as best I can.

If I buckle down, could I make the changes in … two or three months? The rewrite list isn’t enormous. For instance, I’m not changing the perspective from 1st to 3rd person, a task I would not accept.

Discussing this at Workantile, my friend Anthony reassured me that I do finish things. And I have finished things. Now I need to keep finishing. I hope I can find the focus and willpower to finish until this is actually Finished.

I keep coming back to this quote from an old interview with Andre 3000 about releasing imperfect art:

As an artist you can sit and tinker with stuff forever. You can add and take away but I think that’s kind of the importance of having someone over you saying, “We need this, this is a deadline.” Sometimes those oppositions or those who push and pull are needed because we’ll just sit and tinker forever. There are actually songs on The Love Below that were not finished, but that’s how they are, that’s how it came out.

I just knew I wanted to put that [imperfect song] on there, but it wasn’t done, but it was enough.

The GQ&A: Andre 3000

The worst would be to sit on this book and not keep improving it. It’s not timeless material and I need to wrap it up and move on and stop having it paralyze me. So I think I need to say, February is the deadline. I hope I work hard on it until then and fall back in love with the story and the process. But even if I don’t, or I only complete some of what I hoped to, it might be time to say, it’s enough.

In the meantime, feel free to ask me about the project and encourage and/or shame me depending on how it’s going!

Categories
Local reporting ruminations

Advertising Overload

This post is a tirade against the ever-increasing presence of advertising in my life, prompted by attending a University of Michigan basketball game.

I went to the Crisler Center last night, where Michigan lost an exciting shootout against Long Beach State. It was entertaining. Both teams were very talented and tried hard.

I make it to a couple of Michigan sports events each year and will crown Michigan Athletics the victors and the best… at cramming advertisements into the experience. Always innovating. I’d love to see a photo series showing the interior of the Crisler Center over the decades, documenting the creep of ads.

How many ads would you think can be placed on the basket itself? Let’s count. Here’s the view of the near hoop from my seats:

That’s between four and six ads, depending on how you count: the base pad, the vertical pad (“meijer meijer meijer” lol), the State Farm pad by the rim, and a freaking TV ad mounted up top. Now let’s look to the other hoop and see what’s facing the court:

From this angle we can see there’s also the UMCU ad and the Libman ad. Each basket is adorned with seven corporate logos plus a TV that plays ads for Coke Zero and Jersey Mike’s. I wonder how many ads I saw over the course of the game. Dozens? Hundreds?